From c0870325efb8836543affcc8be68eabf1aa72545 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Mon, 9 Feb 2026 14:23:32 +0530 Subject: [PATCH 01/56] doc updates --- chat-apis.json | 2982 ++++++++++++++++------------------------- data-import-apis.json | 1347 ++++++++----------- 2 files changed, 1699 insertions(+), 2630 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 5ee42939e..0cbe93b6a 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Chat APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API.", + "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build real-time chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", "version": "3.0" }, "servers": [ @@ -32,8 +32,7 @@ "API Keys" ], "summary": "Create", - "description": "Creates a new API key", - "operationId": "create-apikey", + "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.\n *\n * **Scope Types:**\n * - **authOnly**: Limited scope for user authentication only. Use this for client-side SDKs where you only need to authenticate users. Cannot access admin endpoints.\n * - **fullAccess**: Full administrative access to all API endpoints. Use this for server-side integrations that need to manage users, groups, messages, and settings. Keep this key secure and never expose it in client-side code.\n *\n * **Side Effects:**\n * - The new API key is immediately active and can be used for authentication\n * - API key usage is tracked for billing and analytics\n *\n * **Limitations:**\n * - API key name max length: 100 characters\n * - Maximum API keys per app: 10\n * - Requires an existing API key with fullAccess scope to create new keys", "requestBody": { "content": { "application/json": { @@ -44,11 +43,11 @@ ], "properties": { "name": { - "description": "Friendly name for the API key.", + "description": "A descriptive name to identify this API key's purpose. Use names like 'iOS App Key', 'Backend Server Key', or 'Analytics Integration'. Max 100 characters.", "type": "string" }, "scope": { - "description": "Scope for the API key. Possible values: fullAccess, authOnly.", + "description": "Permission level for the API key. 'authOnly' for client-side user authentication only (SDK initialization). 'fullAccess' for complete API access including admin operations (server-side only).", "type": "string", "default": "authOnly", "enum": [ @@ -64,7 +63,7 @@ }, "responses": { "200": { - "description": "Created API key", + "description": "API key created successfully. Store the apiKey value securely - it cannot be retrieved again after creation.", "content": { "application/json": { "schema": { @@ -98,13 +97,12 @@ "API Keys" ], "summary": "List", - "description": "Lists API keys", - "operationId": "list-apikeys", + "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.\n *\n * **Use Cases:**\n * - Audit which API keys exist and their permission levels\n * - Find API keys by name when you need to update or delete them\n * - Verify API key scopes before using them in integrations\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - API key values are partially masked for security", "parameters": [ { "name": "scope", "in": "query", - "description": "Scope of the apikey. Available values: fullAccess, authOnly", + "description": "Filter API keys by permission scope. Use 'fullAccess' to find admin keys or 'authOnly' to find client authentication keys.", "schema": { "type": "string", "enum": [ @@ -116,7 +114,7 @@ { "name": "searchKey", "in": "query", - "description": "Searches for specified keyword in name", + "description": "Search term to filter API keys by name. Use this to find specific keys when you have many configured. Case-insensitive partial match.", "schema": { "type": "string" } @@ -124,7 +122,7 @@ ], "responses": { "200": { - "description": "Lists API keys", + "description": "List of API keys with their names, scopes, and creation timestamps. Use the apiKey value for authentication in API requests.", "content": { "application/json": { "schema": { @@ -187,13 +185,12 @@ "API Keys" ], "summary": "Get", - "description": "Retrieves API key", - "operationId": "get-apikey", + "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if the API key does not exist", "parameters": [ { "name": "apiKey", "in": "path", - "description": "An apikey to retrieve.", + "description": "The API key string to retrieve details for. This is the 40-character hexadecimal key value.", "required": true, "schema": { "type": "string" @@ -202,7 +199,7 @@ ], "responses": { "200": { - "description": "Retrieves API key", + "description": "API key details retrieved successfully. Shows the key's name, permission scope, and when it was created.", "content": { "application/json": { "schema": { @@ -236,13 +233,12 @@ "API Keys" ], "summary": "Update", - "description": "Updates an API key", - "operationId": "update-apikey", + "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.\n *\n * **Important:** Changing the scope from 'fullAccess' to 'authOnly' will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.\n *\n * **Side Effects:**\n * - Scope changes take effect immediately\n * - Existing sessions using this key are not affected until the next API call\n *\n * **Limitations:**\n * - The API key value itself cannot be changed (create a new key instead)\n * - API key name max length: 100 characters\n * - Requires API key with fullAccess scope", "parameters": [ { "name": "apiKey", "in": "path", - "description": "An apikey to update.", + "description": "The API key string to update. This is the 40-character hexadecimal key value.", "required": true, "schema": { "type": "string" @@ -255,11 +251,11 @@ "schema": { "properties": { "name": { - "description": "Friendly name for the API key.", + "description": "Updated display name for the API key. Use descriptive names to identify the key's purpose. Max 100 characters.", "type": "string" }, "scope": { - "description": "Scope for the API key. Possible values: fullAccess, authOnly.", + "description": "Updated permission scope. 'authOnly' restricts to user authentication only. 'fullAccess' grants complete API access. Changing scope takes effect immediately.", "type": "string", "enum": [ "fullAccess", @@ -274,7 +270,7 @@ }, "responses": { "200": { - "description": "Updated API Key", + "description": "API key updated successfully. Returns the complete updated key configuration.", "content": { "application/json": { "schema": { @@ -308,28 +304,27 @@ "API Keys" ], "summary": "Delete", - "description": "Deletes an API key", - "operationId": "delete-apikey", + "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.\n *\n * **Side Effects:**\n * - All API requests using this key will immediately start failing with authentication errors\n * - SDK instances initialized with this key will need to be re-initialized with a new key\n * - This action cannot be undone - you must create a new key if needed\n *\n * **Limitations:**\n * - Cannot delete the last fullAccess API key (at least one must remain)\n * - Requires API key with fullAccess scope\n * - Returns 404 if the API key does not exist", "parameters": [ { "name": "apiKey", "in": "path", - "description": "An apikey to delete.", + "description": "The API key string to delete. This is the 40-character hexadecimal key value. Ensure you have a replacement key ready before deleting.", "required": true, "schema": { "type": "string" }, "examples": { "string": { - "summary": "API Key.", - "value": "" + "summary": "API Key", + "value": "fcf32d085482db7ef10e971967d70a91cdb6677a" } } } ], "responses": { "200": { - "description": "A list of api keys", + "description": "API key deleted successfully. All integrations using this key will immediately lose access.", "content": { "application/json": { "schema": { @@ -363,8 +358,7 @@ "Users" ], "summary": "Create", - "description": "Creates a new user", - "operationId": "creates-user", + "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.\n *\n * **When to use:**\n * - During user registration in your application\n * - When migrating users from another chat platform\n * - When creating bot or system users\n *\n * **Side Effects:**\n * - Triggers `user.created` webhook if configured\n * - User appears in user lists immediately after creation\n * - User can be searched and messaged by other users\n *\n * **Limitations:**\n * - UID must be unique across your app (case-insensitive)\n * - UID max length: 100 characters (alphanumeric, underscore, hyphen allowed)\n * - Name max length: 100 characters\n * - Metadata max size: 100KB\n * - Avatar URL max length: 2048 characters\n * - Link URL max length: 2048 characters\n * - Maximum 25 tags per user\n * - Each tag max length: 100 characters\n * - Requires API key with `fullAccess` or `authOnly` scope", "requestBody": { "content": { "application/json": { @@ -375,38 +369,41 @@ ], "properties": { "uid": { - "description": "Unique identifier of the user. Please refer to https://prodocs.cometchat.com/docs/concepts#uid", + "description": "Unique identifier for the user within your app. This ID is used to identify the user across all CometChat operations. Must be unique (case-insensitive), contain only alphanumeric characters, underscores, or hyphens, and be between 1-100 characters. Cannot be changed after creation.", "type": "string" }, "name": { - "description": "Display name of the user.", + "description": "Display name shown to other users in chat interfaces, user lists, and notifications. Can be updated later. Maximum 100 characters.", "type": "string" }, "avatar": { - "description": "URL to profile picture of the user.", + "description": "URL to the user's profile picture. Must be a valid, publicly accessible URL. Displayed in chat bubbles, user lists, and notifications. Recommended size: 200x200 pixels. Maximum URL length: 2048 characters.", "type": "string" }, "link": { - "description": "URL to profile page.", + "description": "URL to the user's profile page in your application. Can be used to link back to your app's user profile. Maximum URL length: 2048 characters.", "type": "string" }, "role": { - "description": "User role of the user for role based access control.", + "description": "Role assigned to the user for role-based access control (RBAC). Determines which features the user can access. If not specified, defaults to 'default' role. Must match an existing role in your app.", "type": "string" }, "statusMessage": { - "description": "A message providing context related to the user's current status or mood.", + "description": "Custom status message displayed alongside the user's presence status. Use this for mood messages, availability notes, or custom status indicators.", "type": "string" }, "metadata": { - "description": "Additional information about the user as JSON. If you plan to use [Email Notification](doc:android-extensions-email-notification#section-configure-your-backend-to-store-emails) or [SMS Notification](doc:android-extensions-sms-notification#section-configure-your-backend-to-store-phone-number) extensions, Please add the private metadata here.", + "description": "Custom JSON object for storing additional user information. Use the `@private` key for sensitive data (email, phone) that should not be visible to other users. Private metadata is only returned to the user themselves or via admin APIs. Maximum size: 100KB.", "properties": { "@private": { + "description": "Private metadata not visible to other users. Ideal for storing email addresses and phone numbers for notification extensions.", "properties": { "email": { + "description": "User's email address for email notifications.", "type": "string" }, "contactNumber": { + "description": "User's phone number for SMS notifications.", "type": "string" } }, @@ -422,7 +419,7 @@ } }, "tags": { - "description": "A list of tags to identify specific users.", + "description": "Array of tags for categorizing and filtering users. Useful for segmenting users by department, location, or custom criteria. Maximum 25 tags, each up to 100 characters.", "type": "array", "items": { "type": "string" @@ -430,7 +427,7 @@ "default": [] }, "withAuthToken": { - "description": "Includes authToken of created user in response.", + "description": "When set to true, includes an authentication token in the response. Use this to immediately log in the user after creation without making a separate auth token request.", "type": "boolean" } }, @@ -441,12 +438,13 @@ }, "responses": { "200": { - "description": "Create User", + "description": "User created successfully. Returns the complete user object with all properties including system-generated fields like createdAt and status.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "The created user object containing all user properties.", "type": "object" } }, @@ -486,13 +484,12 @@ "Users" ], "summary": "List", - "description": "Lists all the users of an app", - "operationId": "list-users", + "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.\n *\n * **When to use:**\n * - Building user directories or contact lists\n * - Searching for users by name or UID\n * - Filtering users by role or tags for admin dashboards\n * - Syncing user data with your backend\n *\n * **Pagination:**\n * - Results are paginated with configurable page size (default: 100, max: 1000)\n * - Use `page` parameter to navigate through results\n * - Response includes `meta.pagination` with total count and page info\n * - Use `cursor` for efficient real-time sync of user updates\n *\n * **Limitations:**\n * - Maximum 1000 users per request (perPage)\n * - Default page size: 100 users\n * - Search performs prefix matching (LIKE%) on UID and name\n * - Requires API key with `fullAccess` scope for full user data\n * - Rate limit applies based on your subscription plan", "parameters": [ { "name": "searchKey", "in": "query", - "description": "The searchKey query parameter work for both name and uid:\nIt performs a LIKE% query, searching for uid/name values starting with the specified characters.", + "description": "Search keyword for filtering users. Performs prefix matching (LIKE%) on UID and/or name fields based on the searchIn parameter. For example, 'john' matches 'john_doe', 'johnny', etc.", "schema": { "type": "string" } @@ -500,7 +497,7 @@ { "name": "searchIn", "in": "query", - "description": "Searches for specified keyword in name,UID or both.", + "description": "Specifies which fields to search in when using searchKey. Can search in 'name', 'uid', or both. If not specified, searches in both fields.", "schema": { "type": "array", "items": { @@ -515,7 +512,7 @@ { "name": "status", "in": "query", - "description": "User list can be fetched depending on the user status. (available,offline).", + "description": "Filter users by their online/offline status. 'available' returns users currently online, 'offline' returns users not currently connected.", "schema": { "type": "string", "enum": [ @@ -527,7 +524,7 @@ { "name": "count", "in": "query", - "description": "Fetches users count.", + "description": "When set to true, returns only the total count of users matching the filter criteria instead of the full user list. Useful for displaying user counts in dashboards.", "schema": { "type": "boolean" } @@ -535,7 +532,7 @@ { "name": "perPage", "in": "query", - "description": "Number of users to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "description": "Number of users to return per page. Use smaller values for faster responses, larger values to reduce API calls. Default: 100, Maximum: 1000.", "schema": { "type": "integer", "default": "100" @@ -544,7 +541,7 @@ { "name": "page", "in": "query", - "description": "Page Number.", + "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through large user lists.", "schema": { "type": "integer", "default": "1" @@ -553,7 +550,7 @@ { "name": "role", "in": "query", - "description": "Retrieves user list based on role.", + "description": "Filter users by a single role. Returns only users assigned to the specified role. Use 'roles' parameter to filter by multiple roles.", "schema": { "type": "string" } @@ -561,7 +558,7 @@ { "name": "withTags", "in": "query", - "description": "Includes tags in the response.", + "description": "When set to true, includes the tags array in each user object in the response. Tags are excluded by default to reduce response size.", "schema": { "type": "boolean" } @@ -569,7 +566,7 @@ { "name": "tags", "in": "query", - "description": "Fetches only those users that have these tags.", + "description": "Filter users by tags. Returns only users that have ALL specified tags. Useful for finding users in specific departments, locations, or custom categories.", "style": "form", "explode": false, "schema": { @@ -582,7 +579,7 @@ { "name": "roles", "in": "query", - "description": "Fetches users based on multiple roles.", + "description": "Filter users by multiple roles. Returns users assigned to ANY of the specified roles. Use this instead of 'role' when filtering by multiple roles.", "schema": { "type": "array", "items": { @@ -593,7 +590,7 @@ { "name": "onlyDeactivated", "in": "query", - "description": "Fetches all the deactivated users of an app.", + "description": "When set to true, returns ONLY deactivated users. Deactivated users cannot log in but their data is preserved. Mutually exclusive with withDeactivated.", "schema": { "type": "boolean" } @@ -601,7 +598,7 @@ { "name": "withDeactivated", "in": "query", - "description": "Fetches all the users including deactivated users.", + "description": "When set to true, includes deactivated users in the results alongside active users. By default, deactivated users are excluded from the list.", "schema": { "type": "boolean" } @@ -609,16 +606,18 @@ ], "responses": { "200": { - "description": "A list of users", + "description": "Returns a paginated list of users matching the filter criteria. Each user object contains profile information, status, and metadata. The response includes pagination metadata and an optional cursor for real-time sync.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Array of user objects matching the filter criteria.", "type": "array", "items": {} }, "meta": { + "description": "Pagination metadata including total count, current page, and total pages.", "type": "object" } }, @@ -698,21 +697,21 @@ "Users" ], "summary": "Reactivate", - "description": "Reactivates users for the specified UIDs", - "operationId": "reactivate-users", + "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.\n *\n * **When to use:**\n * - Restoring user access after a temporary suspension\n * - Reactivating users who return to your platform\n * - Bulk reactivation of users after a policy change\n * - Account recovery workflows\n *\n * **What happens on reactivation:**\n * - User can log in and create auth tokens again\n * - User appears in user lists and search results\n * - User can send and receive messages\n * - Previous group memberships remain intact\n * - Message history is preserved and accessible\n *\n * **Side Effects:**\n * - Triggers `user.reactivated` webhook if configured\n * - User becomes visible in user lists immediately\n * - User can be messaged by other users\n *\n * **Limitations:**\n * - Only works on deactivated users (not deleted users)\n * - Users must have been previously deactivated via the Deactivate API\n * - Maximum batch size depends on your subscription plan\n * - Requires API key with `fullAccess` scope", "requestBody": { "content": { "application/json": { "schema": { "properties": { "uidsToActivate": { - "description": "UIDs that needs to reactivated.", + "description": "Array of UIDs to reactivate. Each UID must belong to a currently deactivated user. Users that are not deactivated will be listed in the nonDeactivatedUids response field.", "type": "array", "items": { "type": "string" }, "default": [ - "tag1" + "user1", + "user2" ] } }, @@ -723,14 +722,16 @@ }, "responses": { "200": { - "description": "re-activated users", + "description": "Returns the result of the reactivation operation. Lists any UIDs that were not deactivated (and therefore could not be reactivated). Successfully reactivated users are not explicitly listed.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Result object containing UIDs that could not be reactivated because they were not deactivated.", "properties": { "nonDeactivatedUids": { + "description": "Array of UIDs that were not deactivated and therefore could not be reactivated. If empty, all requested users were successfully reactivated.", "type": "array", "items": {} } @@ -763,15 +764,14 @@ "Users" ], "summary": "Deactivate", - "description": "Deactivates users for the specified UIDs", - "operationId": "deactivate-users", + "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.\n *\n * **When to use:**\n * - Temporarily suspending user accounts\n * - Implementing account lockout policies\n * - Disabling inactive users while preserving data\n * - Compliance with temporary access restrictions\n *\n * **What happens on deactivation:**\n * - User cannot log in or create new auth tokens\n * - Existing auth tokens are invalidated\n * - User is hidden from user lists and search results\n * - User cannot send or receive new messages\n * - All user data (messages, groups, metadata) is preserved\n * - User can be reactivated later using the Reactivate API\n *\n * **Difference from Delete:**\n * - Deactivation is reversible; deletion is permanent\n * - Deactivated users retain all their data\n * - Deactivated users can be reactivated at any time\n * - UID remains reserved and cannot be reused\n *\n * **Side Effects:**\n * - Triggers `user.deactivated` webhook if configured\n * - Active sessions are terminated immediately\n * - User is removed from online user lists\n * - Push notification tokens are preserved but inactive\n *\n * **Limitations:**\n * - Users must exist (non-existent UIDs are ignored)\n * - Already deactivated users are skipped\n * - Maximum batch size depends on your subscription plan\n * - Requires API key with `fullAccess` scope", "requestBody": { "content": { "application/json": { "schema": { "properties": { "uidsToDeactivate": { - "description": "UIDs that needs to deactivated.", + "description": "Array of UIDs to deactivate. Each UID should belong to an active user. Already deactivated or non-existent users are skipped.", "type": "array", "items": { "type": "string" @@ -785,14 +785,16 @@ }, "responses": { "200": { - "description": "Deactivated Users", + "description": "Returns the list of UIDs that were successfully deactivated. UIDs that were already deactivated or don't exist are not included in the response.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Result object containing the list of successfully deactivated UIDs.", "properties": { "deactivatedUids": { + "description": "Array of UIDs that were successfully deactivated by this request.", "type": "array", "items": {} } @@ -827,13 +829,12 @@ "Users" ], "summary": "Get", - "description": "Retrieves user details for a specified UID.", - "operationId": "get-user", + "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.\n *\n * **When to use:**\n * - Displaying user profile information\n * - Verifying a user exists before sending messages\n * - Checking user's online/offline status\n * - Fetching user metadata for your application\n *\n * **Response includes:**\n * - Basic profile info (name, avatar, link)\n * - Current online/offline status\n * - Role and metadata\n * - Timestamps (createdAt, updatedAt)\n * - Block status if using onBehalfOf parameter\n *\n * **Limitations:**\n * - UID must exist in your app\n * - Private metadata (@private) is only visible via admin API\n * - Requires API key with `fullAccess` scope for complete data\n * - Deactivated users return 404 unless accessed via admin API", "parameters": [ { "name": "uid", "in": "path", - "description": "UID of the user on whose behalf the action is performed.", + "description": "The unique identifier (UID) of the user to retrieve. This is the same UID used when creating the user. Case-insensitive.", "required": true, "schema": { "type": "string" @@ -851,12 +852,13 @@ ], "responses": { "200": { - "description": "Fetched User", + "description": "Returns the complete user object with all profile information, status, and metadata. If onBehalfOf is specified, includes block status relative to that user.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "The user object containing all profile and status information.", "type": "object" } }, @@ -888,13 +890,12 @@ "Users" ], "summary": "Update", - "description": "Updates a user with the provided UID", - "operationId": "update-user", + "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.\n *\n * **When to use:**\n * - Updating user profile information (name, avatar)\n * - Changing user roles for access control\n * - Adding or modifying user metadata\n * - Updating tags for user categorization\n * - Removing optional fields using the `unset` parameter\n *\n * **Side Effects:**\n * - Triggers `user.updated` webhook if configured\n * - Updated information reflects immediately in user lists and chat interfaces\n * - Role changes take effect immediately for access control\n *\n * **Limitations:**\n * - UID cannot be changed after user creation\n * - User must exist (returns 404 if not found)\n * - Name max length: 100 characters\n * - Metadata max size: 100KB\n * - Avatar URL max length: 2048 characters\n * - Link URL max length: 2048 characters\n * - Maximum 25 tags per user\n * - Each tag max length: 100 characters\n * - Requires API key with `fullAccess` or `authOnly` scope", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier (UID) of the user to update. This is the same UID used when creating the user. Case-insensitive.", "required": true, "schema": { "type": "string" @@ -913,34 +914,37 @@ "schema": { "properties": { "name": { - "description": "Display name of the user.", + "description": "Updated display name for the user. Shown in chat interfaces and user lists. Maximum 100 characters.", "type": "string" }, "avatar": { - "description": "URL to profile picture of the user.", + "description": "Updated URL to the user's profile picture. Must be a valid, publicly accessible URL. Maximum 2048 characters.", "type": "string" }, "link": { - "description": "URL to profile page.", + "description": "Updated URL to the user's profile page in your application. Maximum 2048 characters.", "type": "string" }, "role": { - "description": "User role of the user for role based access control.", + "description": "Updated role for the user. Changes take effect immediately for role-based access control. Must match an existing role in your app.", "type": "string" }, "statusMessage": { - "description": "A message providing context related to the user's current status or mood.", + "description": "Updated status message displayed alongside the user's presence status.", "type": "string" }, "metadata": { - "description": "Additional information about the user as JSON. If you plan to use [Email Notification](doc:android-extensions-email-notification#section-configure-your-backend-to-store-emails) or [SMS Notification](doc:android-extensions-sms-notification#section-configure-your-backend-to-store-phone-number) extensions, Please add the private metadata here.", + "description": "Updated custom JSON object for storing additional user information. This replaces the entire metadata object. Use `@private` key for sensitive data. Maximum size: 100KB.", "properties": { "@private": { + "description": "Private metadata not visible to other users.", "properties": { "email": { + "description": "User's email address for email notifications.", "type": "string" }, "contactNumber": { + "description": "User's phone number for SMS notifications.", "type": "string" } }, @@ -956,7 +960,7 @@ } }, "tags": { - "description": "A list of tags to identify specific users.", + "description": "Updated array of tags for the user. This replaces all existing tags. Maximum 25 tags, each up to 100 characters.", "type": "array", "items": { "type": "string" @@ -966,7 +970,7 @@ ] }, "unset": { - "description": "The unsettable user attributes are avatar, link and metadata.", + "description": "Array of optional fields to remove from the user. Use this to clear avatar, link, or metadata without setting them to empty values.", "type": "array", "items": { "type": "string", @@ -988,12 +992,13 @@ }, "responses": { "200": { - "description": "Updated user", + "description": "Returns the updated user object with all current profile information. The response reflects all changes made by this request.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "The updated user object containing all current profile and status information.", "type": "object" } }, @@ -1033,13 +1038,12 @@ "Users" ], "summary": "Delete", - "description": "Deletes a user for the specified UID", - "operationId": "delete-user", + "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the `permanent` flag for complete removal of all user data.\n *\n * **When to use:**\n * - Removing users who have left your platform\n * - Cleaning up test or spam accounts\n * - GDPR/data deletion compliance (use permanent=true)\n * - Freeing up UIDs for reuse (permanent delete only)\n *\n * **Soft Delete (default):**\n * - User cannot log in or be searched\n * - Message history is preserved\n * - User data can potentially be recovered\n * - UID cannot be reused\n *\n * **Permanent Delete (permanent=true):**\n * - All user data is permanently removed\n * - All messages sent by user are deleted\n * - All conversations involving user are removed\n * - Group memberships are removed\n * - UID becomes available for reuse\n * - This action is IRREVERSIBLE\n *\n * **Side Effects:**\n * - Triggers `user.deleted` webhook if configured\n * - User is removed from all groups\n * - Active sessions are terminated\n * - Auth tokens are invalidated\n * - With permanent=true: all messages and conversations are deleted\n *\n * **Limitations:**\n * - User must exist (returns 404 if not found)\n * - Permanent deletion cannot be undone\n * - Requires API key with `fullAccess` scope", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier (UID) of the user to delete. This is the same UID used when creating the user. Case-insensitive.", "required": true, "schema": { "type": "string" @@ -1058,7 +1062,7 @@ "schema": { "properties": { "permanent": { - "description": "Permanently deletes the user along with all the messages, conversations, etc.", + "description": "When set to true, permanently deletes the user along with ALL associated data including messages, conversations, group memberships, and metadata. This action is IRREVERSIBLE. When false (default), performs a soft delete that preserves message history.", "type": "boolean", "default": "false" } @@ -1070,12 +1074,13 @@ }, "responses": { "200": { - "description": "Deleted User", + "description": "Confirms successful deletion of the user. Returns a success message with the deleted user's UID.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Deletion confirmation object with success status and message.", "type": "object" } }, @@ -1104,8 +1109,7 @@ "Groups" ], "summary": "Create", - "description": "Creates a group.", - "operationId": "create-group", + "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.\n *\n * **Use Cases:**\n * - Creating team channels for project collaboration\n * - Setting up public chat rooms for community discussions\n * - Creating private groups for confidential conversations\n * - Building password-protected groups for controlled access\n *\n * **Side Effects:**\n * - Triggers `group.created` webhook if configured\n * - If owner is specified, that user is automatically added as admin\n * - If members are specified, they are added with their respective scopes\n * - A conversation is automatically created with ID format `group_{guid}`\n *\n * **Limitations:**\n * - GUID must be unique across your app (case-sensitive)\n * - GUID max length: 100 characters (alphanumeric, underscore, hyphen allowed)\n * - Name max length: 100 characters\n * - Description max length: 500 characters\n * - Metadata max size: 100KB (JSON object)\n * - Tags: Maximum 10 tags per group, each tag max 50 characters\n * - Members: Maximum 100 members can be added during creation\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1122,15 +1126,15 @@ ], "properties": { "guid": { - "description": "A unique identifier for a group.", + "description": "A unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore (_), and hyphen (-). Max length: 100 characters. This cannot be changed after creation.", "type": "string" }, "name": { - "description": "Name of the group.", + "description": "Display name of the group shown to users in the UI. Max length: 100 characters. Can be updated later.", "type": "string" }, "type": { - "description": "Type of the group. Can be public, password or private.", + "description": "Access control type for the group. 'public': Anyone can join without approval. 'password': Users must provide correct password to join. 'private': Users can only join via invitation or admin action.", "type": "string", "enum": [ "public", @@ -1139,27 +1143,27 @@ ] }, "password": { - "description": "A password required to join the the group with type password", + "description": "Required when type is 'password'. The password users must enter to join the group. Not returned in API responses for security.", "type": "string" }, "icon": { - "description": "An URL for a group icon.", + "description": "URL to the group's avatar/icon image. Must be a valid HTTP/HTTPS URL. Recommended size: 256x256 pixels.", "type": "string" }, "description": { - "description": "Description about the group", + "description": "A brief description of the group's purpose. Max length: 500 characters. Displayed to users when viewing group details.", "type": "string" }, "metadata": { - "description": "Additional data for the group.", + "description": "Custom JSON object for storing additional group data (e.g., settings, preferences, custom fields). Max size: 100KB. Useful for app-specific configurations.", "type": "object" }, "owner": { - "description": "The UID that you wish to make owner of the group", + "description": "UID of the user to be set as group owner. The owner has full admin privileges and cannot be removed from the group. If not specified, no owner is set.", "type": "string" }, "tags": { - "description": "List of tags to identify specific groups.", + "description": "Array of tags for categorizing and filtering groups. Max 10 tags, each up to 50 characters. Useful for organizing groups by topic, department, or custom categories.", "type": "array", "items": { "type": "string" @@ -1169,10 +1173,10 @@ ] }, "members": { - "description": "Add members to a group with scope admins,moderators and participants.", + "description": "Object containing arrays of UIDs to add as members with different permission levels during group creation. Max 100 total members.", "properties": { "admins": { - "description": "UIDs of users to be made admins.", + "description": "Array of UIDs to add as admins. Admins can manage members, change settings, and moderate content.", "type": "array", "items": { "type": "string" @@ -1180,7 +1184,7 @@ "default": [] }, "moderators": { - "description": "UIDs of users to be made moderators.", + "description": "Array of UIDs to add as moderators. Moderators can kick/ban participants and delete messages.", "type": "array", "items": { "type": "string" @@ -1188,7 +1192,7 @@ "default": [] }, "usersToBan": { - "description": "UIDs of the users to be banned from the group.", + "description": "Array of UIDs to ban from the group. Banned users cannot join or view group content.", "type": "array", "items": { "type": "string" @@ -1196,7 +1200,7 @@ "default": [] }, "participants": { - "description": "UIDs of users to be made participants.", + "description": "Array of UIDs to add as regular participants. Participants can send messages and view content but cannot manage the group.", "type": "array", "items": { "type": "string" @@ -1212,8 +1216,8 @@ "type": "object" }, "examples": { - "Send Moderation Message": { - "summary": "Send Moderation Message", + "Create Public Group": { + "summary": "Create Public Group", "value": { "guid": "testgroup", "name": "Test Group", @@ -1226,7 +1230,7 @@ }, "responses": { "200": { - "description": "Create Group", + "description": "Group created successfully. Returns the complete group object with all properties including auto-generated fields like createdAt and conversationId.", "content": { "application/json": { "schema": { @@ -1272,8 +1276,7 @@ "Groups" ], "summary": "List", - "description": "Lists the groups.", - "operationId": "list-groups", + "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.\n *\n * **Use Cases:**\n * - Building a group discovery/browse interface\n * - Searching for groups by name or tags\n * - Syncing group data with your backend using cursor pagination\n * - Listing groups a specific user has joined\n *\n * **Pagination:**\n * - Offset-based: Use `page` and `perPage` parameters\n * - Cursor-based: Use `updatedAt` and `affix` parameters for efficient syncing\n *\n * **Limitations:**\n * - Maximum 1000 groups per request (perPage)\n * - Default returns 100 groups per page\n * - Search is case-insensitive but may have slight delays on large datasets\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1281,7 +1284,7 @@ { "name": "searchKey", "in": "query", - "description": "Searches for given keyword in group's list (either GUID, name or email).", + "description": "Search term to filter groups. Searches across GUID, name, and description fields. Case-insensitive partial matching.", "schema": { "type": "string" } @@ -1289,7 +1292,7 @@ { "name": "searchIn", "in": "query", - "description": "Searches for specified keyword in name,GUID or both.", + "description": "Specify which fields to search in. Options: 'name', 'guid'. If not specified, searches all searchable fields.", "schema": { "type": "array", "items": { @@ -1300,7 +1303,7 @@ { "name": "sortBy", "in": "query", - "description": "Sorts the group list by either Name,Guid or Created at . Available values: name, guid, createdAt", + "description": "Field to sort results by. 'name': alphabetical by group name. 'guid': alphabetical by group identifier. 'createdAt': chronological by creation time.", "schema": { "type": "string", "enum": [ @@ -1313,7 +1316,7 @@ { "name": "sortOrder", "in": "query", - "description": "Sorts the group list in ascending or descending order. Available values: asc, desc", + "description": "Sort direction. 'asc': ascending order (A-Z, oldest first). 'desc': descending order (Z-A, newest first).", "schema": { "type": "string", "enum": [ @@ -1325,7 +1328,7 @@ { "name": "perPage", "in": "query", - "description": "Number of groups to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "description": "Number of groups to return per page. Use for pagination. Default: 100, Maximum: 1000. Higher values may increase response time.", "schema": { "type": "integer", "default": "100" @@ -1334,7 +1337,7 @@ { "name": "affix", "in": "query", - "description": "Determines whether to fetch the groups either before or after createdAt/updatedAt timestamp. Possible values are append(after) and prepend(before).", + "description": "Pagination direction relative to the cursor timestamp. 'append': fetch groups created/updated after the timestamp. 'prepend': fetch groups created/updated before the timestamp.", "schema": { "type": "string", "enum": [ @@ -1346,7 +1349,7 @@ { "name": "updatedAt", "in": "query", - "description": "Fetches the groups list after a particular updatedAt timestamp.", + "description": "Unix timestamp (seconds) to filter groups by last update time. Use with 'affix' parameter for cursor-based pagination. Returns groups updated after/before this timestamp.", "schema": { "type": "integer" } @@ -1354,7 +1357,7 @@ { "name": "withTags", "in": "query", - "description": "Includes those groups that have tags.", + "description": "When true, includes the tags array in each group response. Set to false to reduce response size if tags are not needed.", "schema": { "type": "boolean" } @@ -1362,7 +1365,7 @@ { "name": "tags", "in": "query", - "description": "Fetches only those groups that have these tags.", + "description": "Filter groups by specific tags. Returns only groups that have ALL specified tags. Comma-separated list of tag values.", "style": "form", "explode": false, "schema": { @@ -1375,7 +1378,7 @@ { "name": "type", "in": "query", - "description": "Fetches groups based on group type(public, protected, password).", + "description": "Filter by single group type. 'public': open groups anyone can join. 'private': invitation-only groups. 'protected'/'password': groups requiring a password to join.", "schema": { "type": "string", "enum": [ @@ -1388,7 +1391,7 @@ { "name": "types", "in": "query", - "description": "Fetches groups based on multiple types.", + "description": "Filter by multiple group types. Comma-separated list. Returns groups matching ANY of the specified types.", "style": "form", "explode": false, "schema": { @@ -1401,7 +1404,7 @@ { "name": "page", "in": "query", - "description": "Page number.", + "description": "Page number for offset-based pagination. Starts at 1. Use with perPage to navigate through results.", "schema": { "type": "integer" } @@ -1409,7 +1412,7 @@ { "name": "hasJoined", "in": "query", - "description": "Fetches all the joined groups of a user. This will work only with onBehalfOf parameter in header. It accepts only true as a value, setting it as false simply removes this filter.", + "description": "When true, returns only groups the onBehalfOf user has joined. Requires onBehalfOf header. Setting to false removes this filter entirely.", "schema": { "type": "boolean" } @@ -1417,7 +1420,7 @@ ], "responses": { "200": { - "description": "A list of groups", + "description": "Returns an array of group objects with pagination metadata. Each group includes its properties, member count, and conversation ID.", "content": { "application/json": { "schema": { @@ -1513,8 +1516,7 @@ "Groups" ], "summary": "Get", - "description": "Retrieves details of a group for a given GUID.", - "operationId": "get-group", + "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.\n *\n * **Use Cases:**\n * - Displaying group profile/details page\n * - Checking if a group exists before performing operations\n * - Fetching current group settings and metadata\n * - Getting member count and owner information\n *\n * **Response includes:**\n * - Basic info: name, description, icon, type\n * - Membership: membersCount, owner, hasJoined (if onBehalfOf used)\n * - Metadata: custom data, tags, timestamps\n * - Conversation: conversationId for messaging\n *\n * **Limitations:**\n * - GUID must exist; returns 404 if not found\n * - Private group details visible only to members (when using onBehalfOf)\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1525,7 +1527,7 @@ ], "responses": { "200": { - "description": "Get group", + "description": "Returns the complete group object with all properties including membership status if onBehalfOf header is provided.", "content": { "application/json": { "schema": { @@ -1571,8 +1573,7 @@ "Groups" ], "summary": "Update", - "description": "Updates the group details for a given GUID.", - "operationId": "update-group", + "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.\n *\n * **Use Cases:**\n * - Changing group name or description\n * - Updating group icon/avatar\n * - Changing group type (public/private/password)\n * - Transferring ownership to another user\n * - Updating custom metadata or tags\n * - Removing optional fields using the 'unset' parameter\n *\n * **Side Effects:**\n * - Triggers `group.updated` webhook if configured\n * - Changing type to 'password' requires providing a password\n * - Changing owner transfers all admin privileges\n * - Members are notified of significant changes via real-time events\n *\n * **Limitations:**\n * - GUID cannot be changed after creation\n * - Name max length: 100 characters\n * - Description max length: 500 characters\n * - Metadata max size: 100KB\n * - Tags: Maximum 10 tags, each up to 50 characters\n * - Owner field ignored when onBehalfOf header is present\n * - Only admins can update group (when using onBehalfOf)\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1587,11 +1588,11 @@ "schema": { "properties": { "name": { - "description": "Name of the group.", + "description": "New display name for the group. Max length: 100 characters. Leave empty to keep current name.", "type": "string" }, "type": { - "description": "The type of the group. The available values are: public, password and private.", + "description": "Change the group's access type. 'public': anyone can join. 'password': requires password to join (must provide password field). 'private': invitation only.", "type": "string", "enum": [ "public", @@ -1600,27 +1601,27 @@ ] }, "password": { - "description": "A password required to join the the group with type password", + "description": "New password for the group. Required when changing type to 'password'. Provide to update existing password. Not returned in responses.", "type": "string" }, "icon": { - "description": "An URL for a group icon.", + "description": "New URL for the group's avatar/icon. Must be a valid HTTP/HTTPS URL. Use 'unset' parameter to remove.", "type": "string" }, "description": { - "description": "Description about the group", + "description": "New description for the group. Max length: 500 characters. Use 'unset' parameter to remove.", "type": "string" }, "metadata": { - "description": "Additional group data.", + "description": "New custom metadata object. Replaces existing metadata entirely. Max size: 100KB. Use 'unset' parameter to remove.", "type": "object" }, "owner": { - "description": "The UID that you wish to make the owner of the group.This field will be ignored if onBehalfOf parameter in the header is present in the request.", + "description": "UID of the new owner. Transfers ownership and full admin privileges. Ignored if onBehalfOf header is present. New owner must be an existing user.", "type": "string" }, "tags": { - "description": "Updates tags of a group.", + "description": "New array of tags. Replaces all existing tags. Max 10 tags, each up to 50 characters. Pass empty array to remove all tags.", "type": "array", "items": { "type": "string" @@ -1630,7 +1631,7 @@ ] }, "unset": { - "description": "The unsettable user attributes are icon, description and metadata.", + "description": "Array of optional fields to remove/clear. Supported fields: 'icon', 'description', 'metadata'. Removes the field value entirely from the group.", "type": "array", "items": { "type": "string", @@ -1649,7 +1650,7 @@ }, "responses": { "200": { - "description": "Get group", + "description": "Returns the updated group object with all current properties reflecting the changes made.", "content": { "application/json": { "schema": { @@ -1695,8 +1696,7 @@ "Groups" ], "summary": "Delete", - "description": "Deletes a group with a given GUID.", - "operationId": "delete-group", + "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.\n *\n * **Use Cases:**\n * - Removing inactive or abandoned groups\n * - Cleaning up test/development groups\n * - Deleting groups that violate policies\n * - User-initiated group deletion (with onBehalfOf)\n *\n * **Side Effects:**\n * - Triggers `group.deleted` webhook if configured\n * - All group messages are permanently deleted\n * - All member associations are removed\n * - Group conversation is deleted\n * - Banned user list is cleared\n * - Group no longer appears in any user's group list\n *\n * **What gets deleted:**\n * - Group metadata and settings\n * - All messages in the group\n * - Member list and roles\n * - Banned users list\n * - Associated conversation\n *\n * **Limitations:**\n * - Action is irreversible - data cannot be recovered\n * - Only group owner or admin can delete (when using onBehalfOf)\n * - GUID must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1707,7 +1707,7 @@ ], "responses": { "200": { - "description": "Deleted Group", + "description": "Returns a success confirmation with the deleted group's GUID. The group and all associated data have been permanently removed.", "content": { "application/json": { "schema": { @@ -1741,8 +1741,7 @@ "Messages" ], "summary": "Send Message", - "description": "Sends Message on behalf of a user.", - "operationId": "send-message", + "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 100KB.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1756,7 +1755,6 @@ "propertyName": "category", "mapping": { "message": "#/components/schemas/messageCategorySchema", - "interactive": "#/components/schemas/interactiveCategorySchema", "custom": "#/components/schemas/customCategorySchema" } }, @@ -1766,9 +1764,6 @@ }, { "$ref": "#/components/schemas/customCategorySchema" - }, - { - "$ref": "#/components/schemas/interactiveCategorySchema" } ] }, @@ -1858,8 +1853,7 @@ "Messages" ], "summary": "List Messages", - "description": "Fetches the messages list.", - "operationId": "list-all-messages", + "description": "Retrieves a paginated list of messages across all conversations. Filter by sender, receiver, message type, time range, or category (message/action/call/custom). Response includes message content, metadata, delivery/read receipts, and pagination cursor.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2231,8 +2225,7 @@ "Messages" ], "summary": "Get Message", - "description": "Fetches the details of a message.", - "operationId": "get-message-details", + "description": "Retrieves complete details of a specific message including content, metadata, delivery status, read receipts, and sender/receiver information.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2325,8 +2318,7 @@ "Messages" ], "summary": "Update Message", - "description": "Edits the message on behalf of a user.", - "operationId": "update-message", + "description": "Edits an existing message on behalf of the original sender. Requires 'onBehalfOf' header. Only the original sender can edit. Edit history is preserved (editedAt, editedBy fields). Cannot change message type or receiver.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2495,8 +2487,7 @@ "Messages" ], "summary": "Delete Message", - "description": "Deletes the message.", - "operationId": "deletes-message", + "description": "Deletes a message from the conversation. By default, soft-deletes showing 'message deleted' placeholder. Use 'permanent=true' query param for complete removal. Triggers real-time events to update connected clients.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2648,8 +2639,7 @@ "Messages" ], "summary": "Mark message as Interacted", - "description": "Mark message as Interacted on behalf of a user.", - "operationId": "mark-message-as-interacted", + "description": "Marks a message as interacted by a user. Requires 'onBehalfOf' header. Use to track engagement with interactive messages like polls, buttons, or cards for analytics.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -2729,8 +2719,7 @@ "Messages" ], "summary": "List all reactions", - "description": "Lists all the reactions for a message", - "operationId": "list-all-reactions", + "description": "Retrieves all reactions on a message, grouped by emoji/unicode. Shows which users reacted with each emoji and reaction timestamps.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2854,8 +2843,7 @@ "Messages" ], "summary": "List reactions with a specific emoji/unicodes", - "description": "List reactions with a specific emoji/unicodes for a message", - "operationId": "get-message-reactions", + "description": "Retrieves users who reacted with a specific emoji. Use URL-encoded emoji in the path (e.g., %F0%9F%91%8D for thumbs up).", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2965,8 +2953,7 @@ "Messages" ], "summary": "Add reaction", - "description": "Adds a reaction to a message.", - "operationId": "add-message-reactions", + "description": "Adds a reaction to a message on behalf of a user. Requires 'onBehalfOf' header. Supports any emoji or unicode. Users can add multiple different reactions to the same message.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -3092,8 +3079,7 @@ "Messages" ], "summary": "Remove reaction", - "description": "Removes a reaction from a message", - "operationId": "remove-message-reactions", + "description": "Removes a specific reaction from a message on behalf of a user. Requires 'onBehalfOf' header.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -3216,13 +3202,12 @@ "Conversations" ], "summary": "List conversations", - "description": "Fetching all the conversations", - "operationId": "list-all-conversations", + "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details.\n\nUse this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.\n\n **Limitations:**\n- perPage: Default 100, maximum 1000 conversations per request\n- Rate limit: Standard API rate limits apply\n- Requires API key with fullAccess or restrictedAccess scope\n- Large conversation lists should use cursor-based pagination (useCursoredIndex=1) for better performance", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.\n\n\nIf onBehalfOf header is not passed,then list Conversations API will be ordered based on `uid`, `updatedAt` and then `conversationWith`\n\nIf onBehalfOf header is passed, then list Conversations API will be ordered based on `updatedAt` and then `conversationWith`.", + "description": "UID of the user on whose behalf the action is performed. When provided, returns conversations specific to that user with their unread counts and conversation state. Without this header, returns all conversations across the app ordered by uid, updatedAt, and conversationWith. With this header, conversations are ordered by updatedAt and conversationWith.", "required": false, "schema": { "type": "string" @@ -3231,7 +3216,7 @@ { "name": "searchKey", "in": "query", - "description": "Fetches conversations that include the specified searchKey, allowing you to search for conversations based on the name of a User or Group.", + "description": "Search term to filter conversations by the name of the user or group. Performs a partial match search on conversation participant names.", "schema": { "type": "string" } @@ -3239,15 +3224,19 @@ { "name": "conversationType", "in": "query", - "description": "Retrieves only the specified conversation type (user and group) while fetching conversations list.", + "description": "Filter by conversation type. Use 'user' for one-on-one conversations or 'group' for group conversations. Omit to retrieve both types.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "user", + "group" + ] } }, { "name": "withTags", "in": "query", - "description": "Includes those groups that have tags.", + "description": "When true, includes tag information for groups in the response. Useful for filtering or categorizing conversations by group tags.", "schema": { "type": "boolean" } @@ -3255,7 +3244,7 @@ { "name": "tags", "in": "query", - "description": "Fetches only those groups that have these tags.", + "description": "Filter conversations to only include groups that have all of the specified tags. Pass multiple tags as comma-separated values.", "style": "form", "explode": false, "schema": { @@ -3268,7 +3257,7 @@ { "name": "withUserAndGroupTags", "in": "query", - "description": "Retrieves conversations with tags", + "description": "When true, includes tag information for both users and groups in the conversationWith object. Enables client-side filtering by participant tags.", "schema": { "type": "boolean" } @@ -3276,7 +3265,7 @@ { "name": "includeBlockedUsers", "in": "query", - "description": "Set to true to include conversations with blocked users in the response.", + "description": "When true, includes conversations with users that the onBehalfOf user has blocked. By default, blocked user conversations are excluded.", "schema": { "type": "boolean", "default": false @@ -3285,7 +3274,7 @@ { "name": "withBlockedInfo", "in": "query", - "description": "Set to true to include block status details of users in each conversation.", + "description": "When true, includes blocking relationship details (hasBlockedMe, blockedByMe) for user conversations. Useful for displaying block status in the UI.", "schema": { "type": "boolean", "default": false @@ -3294,7 +3283,7 @@ { "name": "userTags", "in": "query", - "description": "Filters conversations by tags associated with the user entity in the conversationWith property.", + "description": "Filter conversations to only include users that have all of the specified tags. Pass multiple tags as comma-separated values.", "style": "form", "explode": false, "schema": { @@ -3307,7 +3296,7 @@ { "name": "groupTags", "in": "query", - "description": "Filters conversations by tags associated with the group entity in the conversationWith property.", + "description": "Filter conversations to only include groups that have all of the specified tags. Pass multiple tags as comma-separated values.", "style": "form", "explode": false, "schema": { @@ -3320,7 +3309,7 @@ { "name": "unread", "in": "query", - "description": "Lists only unread conversations by excluding the conversations with conversation.unreadMessageCount=0", + "description": "When true, returns only conversations with unread messages (unreadMessageCount > 0). Useful for building an unread conversations view.", "schema": { "type": "boolean" } @@ -3328,7 +3317,7 @@ { "name": "perPage", "in": "query", - "description": "Number of conversations to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "description": "Number of conversations to return per page. Use with the page parameter for pagination through large conversation lists.", "schema": { "type": "integer", "default": "100" @@ -3337,7 +3326,7 @@ { "name": "page", "in": "query", - "description": "Page number.", + "description": "Page number for paginated results. Use with perPage to navigate through conversation lists. First page is 1.", "schema": { "type": "integer", "default": "1" @@ -3346,7 +3335,7 @@ { "name": "hideAgentic", "in": "query", - "description": "Hides agentic conversations from the list.", + "description": "When true, excludes AI agent conversations from the results. Use this to show only human-to-human conversations.", "schema": { "type": "boolean" } @@ -3354,7 +3343,7 @@ { "name": "onlyAgentic", "in": "query", - "description": "Shows only agentic conversations in the list.", + "description": "When true, returns only AI agent conversations. Use this to build a dedicated AI chat interface.", "schema": { "type": "boolean" } @@ -3362,7 +3351,7 @@ { "name": "useCursoredIndex", "in": "query", - "description": "Enables cursor-based pagination for more efficient conversations listing.", + "description": "Enable cursor-based pagination for better performance with large datasets. Set to 1 (enabled) or 0 (disabled). Cursor pagination is recommended for apps with many conversations.", "schema": { "type": "integer", "default": 1, @@ -3375,7 +3364,7 @@ ], "responses": { "200": { - "description": "Get Conversations", + "description": "Returns a paginated list of conversations with metadata including unread counts, last message details, and conversation participant information.", "content": { "application/json": { "schema": { @@ -3505,13 +3494,12 @@ "Conversations" ], "summary": "Get conversation", - "description": "This API is deprecated please use Get User/Group ConversationAPI", - "operationId": "get-conversation", + "description": "**DEPRECATED:** This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.\n\nRetrieves details of a specific conversation including the last message, unread count, and participant information.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- conversationId format: 'user_{uid}' for one-on-one or 'group_{guid}' for group conversations", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + "description": "UID of the user on whose behalf the action is performed. Required to retrieve user-specific conversation data like unread counts.", "required": true, "schema": { "type": "string" @@ -3523,7 +3511,7 @@ ], "responses": { "200": { - "description": "Get Conversations", + "description": "Returns the conversation details including last message, unread count, and the user or group the conversation is with.", "content": { "application/json": { "schema": { @@ -3639,13 +3627,12 @@ "Conversations" ], "summary": "Delete Conversation", - "description": "This API is deprecated please use Reset User/GroupConversation API", - "operationId": "deletes-conversation", + "description": "**DEPRECATED:** This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.\n\nDeletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.\n\n **Side Effects:**\n- Conversation is removed from the user's conversation list\n- Unread count for this conversation is reset\n- Messages remain accessible through message APIs\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- conversationId format: 'user_{uid}' for one-on-one or 'group_{guid}' for group conversations\n- This action cannot be undone", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + "description": "UID of the user on whose behalf the conversation is being deleted. The conversation will be removed from this user's conversation list.", "required": true, "schema": { "type": "string" @@ -3657,7 +3644,7 @@ ], "responses": { "200": { - "description": "Deleted Conversations", + "description": "Returns a success confirmation with the deleted conversation ID.", "content": { "application/json": { "schema": { @@ -3692,13 +3679,12 @@ "Conversations" ], "summary": "Get User Conversation", - "description": "Getting user conversation", - "operationId": "get-user-conversations", + "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.\n\nUse this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the viewing user\n- Requires API key with fullAccess or restrictedAccess scope\n- Both users must exist in the app\n- Returns 404 if no conversation exists between the users", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + "description": "UID of the user whose perspective is used to retrieve the conversation. This determines the unread count and conversation state returned.", "required": true, "schema": { "type": "string" @@ -3710,7 +3696,7 @@ ], "responses": { "200": { - "description": "Get user Conversations", + "description": "Returns the user conversation details including last message, unread count, and the other user's profile information.", "content": { "application/json": { "schema": { @@ -3820,8 +3806,7 @@ "Conversations" ], "summary": "Update User Conversation", - "description": "Updating User Conversation", - "operationId": "updates-user-conversation", + "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.\n\nUse this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- Tags are user-specific and do not affect the other participant's view\n- Maximum 10 tags per conversation\n- Each tag maximum length: 100 characters", "parameters": [ { "$ref": "#/components/parameters/uid--conversation" @@ -3829,7 +3814,7 @@ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + "description": "UID of the user whose conversation is being updated. The tags will be associated with this user's view of the conversation.", "required": true, "schema": { "type": "string" @@ -3842,7 +3827,7 @@ "schema": { "properties": { "tags": { - "description": "List of tags to identify specific conversation.", + "description": "Array of string tags to associate with this conversation. Tags help organize and filter conversations. Pass an empty array to remove all tags.", "type": "array", "items": { "type": "string" @@ -3856,7 +3841,7 @@ }, "responses": { "200": { - "description": "Updated user Conversations", + "description": "Returns the updated conversation details with the new tags applied.", "content": { "application/json": { "schema": { @@ -3971,13 +3956,12 @@ "Conversations" ], "summary": "Reset User Conversation", - "description": "Resetting User Conversation", - "operationId": "resets-user-conversation", + "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.\n\nUse this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.\n\n **Side Effects:**\n- Conversation is removed from the onBehalfOf user's list\n- Unread count is reset to 0\n- If deleteMessagesPermanently is true, messages are permanently deleted for both users\n- Triggers conversation.deleted webhook if configured\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- Permanent deletion cannot be undone\n- preserveOrder maintains conversation position in list after reset", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + "description": "UID of the user whose conversation view is being reset. The conversation will be removed from this user's list.", "required": true, "schema": { "type": "string" @@ -3993,15 +3977,15 @@ "schema": { "properties": { "conversationWith": { - "description": "UID of a user", + "description": "UID of the other user in the conversation. Specifies which conversation to reset.", "type": "string" }, "deleteMessagesPermanently": { - "description": "Permanently deletes messages in that particular conversation", + "description": "When true, permanently deletes all messages in the conversation for both users. This action cannot be undone. Default is false.", "type": "boolean" }, "preserveOrder": { - "description": "When set to true, maintains the conversation's position in the user's conversation list after reset.", + "description": "When true, maintains the conversation's position in the user's conversation list after reset. Useful for keeping important conversations visible.", "type": "boolean", "default": false } @@ -4013,7 +3997,7 @@ }, "responses": { "200": { - "description": "Resetted user Conversations", + "description": "Returns a success confirmation with the reset conversation ID.", "content": { "application/json": { "schema": { @@ -4047,13 +4031,12 @@ "Conversations" ], "summary": "Mark User Conversation As Delivered", - "description": "This API will mark the user conversation as delivered.", - "operationId": "mark-conversation-as-delivered", + "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.\n\nUse this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.\n\n **Side Effects:**\n- Updates delivery timestamps for affected messages\n- Triggers message.delivered webhook if configured\n- Sender sees updated delivery status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the receiving user\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Cannot mark messages as delivered for other users", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the receiver of the message", + "description": "UID of the user who received the messages. Delivery receipts will be recorded for this user.", "required": true, "schema": { "type": "string" @@ -4069,7 +4052,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as delivered.", + "description": "The ID of the message up to which all messages should be marked as delivered. All messages with ID less than or equal to this value will be marked.", "type": "integer" } }, @@ -4080,7 +4063,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as delivered", + "description": "Returns a success confirmation indicating messages have been marked as delivered.", "content": { "application/json": { "schema": { @@ -4114,13 +4097,12 @@ "Conversations" ], "summary": "Mark User Conversation As Read", - "description": "This API will mark the user conversation as read.", - "operationId": "mark-conversation-as-read", + "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.\n\nUse this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.\n\n **Side Effects:**\n- Updates read timestamps for affected messages\n- Resets unread count for the conversation\n- Triggers message.read webhook if configured\n- Sender sees updated read status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the reading user\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Cannot mark messages as read for other users", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the receiver of the message", + "description": "UID of the user who read the messages. Read receipts will be recorded for this user.", "required": true, "schema": { "type": "string" @@ -4136,7 +4118,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as read.", + "description": "The ID of the message up to which all messages should be marked as read. All messages with ID less than or equal to this value will be marked.", "type": "integer" } }, @@ -4147,7 +4129,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as read", + "description": "Returns a success confirmation indicating messages have been marked as read.", "content": { "application/json": { "schema": { @@ -4179,13 +4161,12 @@ "Conversations" ], "summary": "Mark conversation messages as unread", - "description": "Allows you to mark messages within a conversation as unread", - "operationId": "mark-conversation-as-unread", + "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.\n\nUse this endpoint to implement 'mark as unread' functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.\n\n **Side Effects:**\n- Updates unread count for the conversation\n- Messages after messageId appear as unread in the user's conversation list\n- Does not affect the sender's read receipts\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Only affects the onBehalfOf user's view of the conversation", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the receiver of the message", + "description": "UID of the user who wants to mark messages as unread. The unread status will be updated for this user's view of the conversation.", "required": true, "schema": { "type": "string" @@ -4201,7 +4182,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as unread.", + "description": "The ID of the message from which subsequent messages should be marked as unread. Messages after this ID will appear as unread.", "type": "integer" } }, @@ -4212,7 +4193,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as unread", + "description": "Returns a success confirmation indicating messages have been marked as unread.", "content": { "application/json": { "schema": { @@ -4246,8 +4227,7 @@ "Conversations" ], "summary": "Get Group Conversation", - "description": "Getting group conversation", - "operationId": "get-group-conversations", + "description": "Retrieves the group conversation details for the authenticated user. Requires 'onBehalfOf' header. Response includes group metadata, last message, and unread count.", "parameters": [ { "name": "onBehalfOf", @@ -4374,8 +4354,7 @@ "Conversations" ], "summary": "Update Group Conversation", - "description": "Updating Group Conversation", - "operationId": "updates-group-conversation", + "description": "Updates conversation settings like tags or custom metadata for a group conversation. Requires 'onBehalfOf' header.", "parameters": [ { "$ref": "#/components/parameters/guid--conversation" @@ -4525,8 +4504,7 @@ "Conversations" ], "summary": "Reset Group Conversation", - "description": "Resetting Group Conversation", - "operationId": "resets-group-conversation", + "description": "Clears the group conversation history for a specific user. Messages remain visible to other group members. Requires 'onBehalfOf' header.", "parameters": [ { "name": "onBehalfOf", @@ -4593,13 +4571,12 @@ "Conversations" ], "summary": "Mark Group Conversation As Delivered", - "description": "This API will mark the group conversation as delivered.", - "operationId": "mark-group-conversation-as-delivered", + "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.\n\nUse this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.\n\n **Side Effects:**\n- Updates delivery timestamps for affected messages for this user\n- Triggers message.delivered webhook if configured\n- Senders see updated delivery status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the receiving user\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the receiver of the message", + "description": "UID of the group member who received the messages. Delivery receipts will be recorded for this user.", "required": true, "schema": { "type": "string" @@ -4615,7 +4592,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as delivered.", + "description": "The ID of the message up to which all messages should be marked as delivered. All messages with ID less than or equal to this value will be marked.", "type": "integer" } }, @@ -4626,7 +4603,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as delivered", + "description": "Returns a success confirmation indicating group messages have been marked as delivered.", "content": { "application/json": { "schema": { @@ -4660,13 +4637,12 @@ "Conversations" ], "summary": "Mark Group Conversation As Read", - "description": "This API will mark the group conversation as read.", - "operationId": "mark-group-conversation-as-read", + "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.\n\nUse this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.\n\n **Side Effects:**\n- Updates read timestamps for affected messages for this user\n- Resets unread count for the group conversation\n- Triggers message.read webhook if configured\n- Senders see updated read status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the reading user\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the receiver of the message", + "description": "UID of the group member who read the messages. Read receipts will be recorded for this user.", "required": true, "schema": { "type": "string" @@ -4682,7 +4658,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as read.", + "description": "The ID of the message up to which all messages should be marked as read. All messages with ID less than or equal to this value will be marked.", "type": "integer" } }, @@ -4693,7 +4669,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as read", + "description": "Returns a success confirmation indicating group messages have been marked as read.", "content": { "application/json": { "schema": { @@ -4725,13 +4701,12 @@ "Conversations" ], "summary": "Mark Group Conversation As unread", - "description": "This API will mark the group conversation as unread.", - "operationId": "mark-group-conversation-as-unread", + "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.\n\nUse this endpoint to implement 'mark as unread' functionality for group chats, allowing users to flag group conversations for follow-up.\n\n **Side Effects:**\n- Updates unread count for the group conversation\n- Messages after messageId appear as unread in the user's conversation list\n- Does not affect other group members' read status\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation\n- Only affects the onBehalfOf user's view of the conversation", "parameters": [ { "name": "onBehalfOf", "in": "header", - "description": "UID of the group member marking the messages as unread.", + "description": "UID of the group member who wants to mark messages as unread. The unread status will be updated for this user's view of the group conversation.", "required": true, "schema": { "type": "string" @@ -4747,7 +4722,7 @@ "schema": { "properties": { "messageId": { - "description": "The id of the message upto which the conversation needs to be marked as unread.", + "description": "The ID of the message from which subsequent messages should be marked as unread. Messages after this ID will appear as unread.", "type": "integer" } }, @@ -4758,7 +4733,7 @@ }, "responses": { "200": { - "description": "Marking Conversation as unread", + "description": "Returns a success confirmation indicating group messages have been marked as unread.", "content": { "application/json": { "schema": { @@ -4792,13 +4767,12 @@ "Auth Tokens" ], "summary": "Create", - "description": "Creates auth token for a user with the specified UID.", - "operationId": "create-authtoken", + "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.\n *\n * **Use Cases:**\n * - Server-side user authentication: Generate tokens on your backend and pass them to your client app\n * - Multi-device login: Create separate tokens for each device a user logs in from\n * - Session management: Track and manage user sessions across devices\n *\n * **Token Behavior:**\n * - By default, if a valid token already exists for the user, it will be returned instead of creating a new one\n * - Use the 'force' parameter to always generate a new token, invalidating the previous one\n * - Tokens do not expire automatically but can be deleted manually\n *\n * **Side Effects:**\n * - When force=true, any existing token for this user is invalidated\n * - SDK instances using the old token will need to re-authenticate\n *\n * **Limitations:**\n * - User must exist before creating an auth token\n * - Requires API key with fullAccess scope\n * - Maximum 10 active auth tokens per user", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user to create an auth token for. The user must exist in your CometChat app.", "required": true, "schema": { "type": "string" @@ -4806,7 +4780,7 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } } @@ -4817,7 +4791,7 @@ "schema": { "properties": { "force": { - "description": "Generates new auth token forcefully.", + "description": "When true, generates a new auth token even if a valid one exists, invalidating the previous token. Use this when you need to force re-authentication or rotate tokens for security. Default: false.", "type": "boolean" } }, @@ -4828,7 +4802,7 @@ }, "responses": { "200": { - "description": "Created auth token", + "description": "Auth token created or retrieved successfully. Use the authToken value to authenticate the user in the CometChat SDK.", "content": { "application/json": { "schema": { @@ -4856,13 +4830,12 @@ "Auth Tokens" ], "summary": "List", - "description": "Lists auth tokens for a user with the specified UID.", - "operationId": "list-authtokens", + "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.\n *\n * **Use Cases:**\n * - Session auditing: See all active sessions for a user\n * - Security review: Identify potentially compromised tokens\n * - Multi-device management: Track which devices a user is logged into\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user does not exist", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user whose auth tokens you want to list.", "required": true, "schema": { "type": "string" @@ -4870,14 +4843,14 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } } ], "responses": { "200": { - "description": "A list of auth tokens", + "description": "List of all active auth tokens for the user. Each token represents an active session or device.", "content": { "application/json": { "schema": { @@ -4925,13 +4898,12 @@ "Auth Tokens" ], "summary": "Flush", - "description": "Deletes all the auth tokens for the specified UID.", - "operationId": "flush-authtokens", + "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.\n *\n * **Use Cases:**\n * - Security incident: Force logout when account may be compromised\n * - Password change: Invalidate all sessions after password reset\n * - Account suspension: Immediately revoke all access for a user\n * - User request: Allow users to log out of all devices\n *\n * **Side Effects:**\n * - All SDK instances using any of this user's tokens will immediately lose authentication\n * - Users will need to re-authenticate on all devices\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user does not exist", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user whose auth tokens should be deleted. All tokens for this user will be invalidated.", "required": true, "schema": { "type": "string" @@ -4939,14 +4911,14 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } } ], "responses": { "200": { - "description": "A list of api keys", + "description": "All auth tokens for the user have been deleted. The user is now logged out of all devices.", "content": { "application/json": { "schema": { @@ -4980,13 +4952,12 @@ "Auth Tokens" ], "summary": "Get", - "description": "Retrieves details of an auth token for the specified UID andauth token.", - "operationId": "get-authtoken", + "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.\n *\n * **Use Cases:**\n * - Token validation: Verify if a specific token is still active\n * - Session lookup: Get details about a specific user session\n * - Debugging: Troubleshoot authentication issues\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user who owns the auth token.", "required": true, "schema": { "type": "string" @@ -4994,7 +4965,7 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } }, @@ -5004,7 +4975,7 @@ ], "responses": { "200": { - "description": "Retrieve Auth Token", + "description": "Auth token details retrieved successfully. Shows the token value and when it was created.", "content": { "application/json": { "schema": { @@ -5037,13 +5008,12 @@ "Auth Tokens" ], "summary": "Update", - "description": "Updates the details of an auth token for the specified UID andauth token.", - "operationId": "update-authtoken", + "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.\n *\n * **Use Cases:**\n * - Device tracking: Record which device/platform is using each token\n * - App analytics: Track which app versions are in use\n * - Session management: Store custom session metadata\n *\n * **Limitations:**\n * - Cannot change the token value itself\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user who owns the auth token.", "required": true, "schema": { "type": "string" @@ -5051,14 +5021,14 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } }, { "name": "authToken", "in": "path", - "description": "An auth token of a user.", + "description": "The auth token string to update. This is the full token value returned when the token was created.", "required": true, "schema": { "type": "string" @@ -5066,7 +5036,7 @@ "examples": { "string": { "summary": "Auth Token", - "value": "" + "value": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8" } } } @@ -5078,15 +5048,15 @@ "schema": { "properties": { "platform": { - "description": "The platform on which the auth token is being used.", + "description": "The platform or operating system where this token is being used. Examples: 'ios', 'android', 'web', 'react-native'. Useful for tracking device types.", "type": "string" }, "userAgent": { - "description": "userAgent from which the auth token is used.", + "description": "The user agent string from the client application. Helps identify browser/app versions and device information.", "type": "string" }, "appInfo": { - "description": "JSON data containing app information.", + "description": "Custom JSON object containing additional app information such as app version, build number, or other metadata relevant to your application.", "type": "object" } }, @@ -5097,7 +5067,7 @@ }, "responses": { "200": { - "description": "Updated Auth Token", + "description": "Auth token updated successfully with the new metadata.", "content": { "application/json": { "schema": { @@ -5130,13 +5100,12 @@ "Auth Tokens" ], "summary": "Delete", - "description": "Deletes an auth token for the specified UID.", - "operationId": "delete-authtoken", + "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.\n *\n * **Use Cases:**\n * - Single device logout: Log out from one device while staying logged in on others\n * - Session cleanup: Remove old or unused tokens\n * - Security: Revoke a specific compromised token\n *\n * **Side Effects:**\n * - The SDK instance using this token will immediately lose authentication\n * - Other tokens for the same user remain valid\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The unique identifier of the user who owns the auth token.", "required": true, "schema": { "type": "string" @@ -5144,14 +5113,14 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "superhero1" } } }, { "name": "authToken", "in": "path", - "description": "An auth token of a user.", + "description": "The specific auth token to delete. This will invalidate only this token, not other tokens for the same user.", "required": true, "schema": { "type": "string" @@ -5159,14 +5128,14 @@ "examples": { "string": { "summary": "Auth Token", - "value": "" + "value": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8" } } } ], "responses": { "200": { - "description": "Deleted Auth token", + "description": "Auth token deleted successfully. The session using this token is now invalid.", "content": { "application/json": { "schema": { @@ -5180,7 +5149,7 @@ "example": { "data": { "success": true, - "message": "User with superhero6 has been deleted successfully." + "message": "Auth token has been deleted successfully." } } } @@ -5200,8 +5169,7 @@ "Group Members" ], "summary": "Add members", - "description": "Adds multiple users as per the scope.", - "operationId": "add-group-members", + "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.\n *\n * **Use Cases:**\n * - Adding team members to a project group\n * - Inviting users to a private group\n * - Setting up group admins and moderators\n * - Pre-banning problematic users from joining\n *\n * **Member Scopes:**\n * - `admin`: Full control - can manage members, settings, and content\n * - `moderator`: Can kick/ban participants and delete messages\n * - `participant`: Standard member - can send messages and view content\n *\n * **Side Effects:**\n * - Triggers `group.member.added` webhook for each added member\n * - Action messages are sent to the group for each addition\n * - Added members receive real-time notification\n * - Group's membersCount is updated\n *\n * **Limitations:**\n * - Maximum 100 users can be added per request (across all scope arrays)\n * - Users must exist; non-existent UIDs are skipped with error in response\n * - Cannot add users who are already members (returns error for that UID)\n * - Cannot add banned users as members (unban first)\n * - When using onBehalfOf, the acting user must be admin or moderator\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5216,7 +5184,7 @@ "schema": { "properties": { "admins": { - "description": "UIDs of users to be made admins.", + "description": "Array of UIDs to add as group admins. Admins have full control: manage members, change settings, delete messages, and modify group properties.", "type": "array", "items": { "type": "string" @@ -5224,7 +5192,7 @@ "minItems": 1 }, "moderators": { - "description": "UIDs of users to be made moderators.", + "description": "Array of UIDs to add as group moderators. Moderators can kick/ban participants, delete messages, but cannot change group settings or manage admins.", "type": "array", "items": { "type": "string" @@ -5232,7 +5200,7 @@ "minItems": 1 }, "participants": { - "description": "UIDs of users to be made participants.", + "description": "Array of UIDs to add as regular participants. Participants can send messages and view content but have no management permissions.", "type": "array", "items": { "type": "string" @@ -5240,7 +5208,7 @@ "minItems": 1 }, "usersToBan": { - "description": "UIDs of the users to be banned from the group.", + "description": "Array of UIDs to ban from the group. Banned users cannot join, view content, or send messages to this group.", "type": "array", "items": { "type": "string" @@ -5265,7 +5233,7 @@ }, "responses": { "200": { - "description": "Create Group Members", + "description": "Returns the result for each user organized by scope. Each entry shows success status and, for successful additions, includes the action message that was sent to the group.", "content": { "application/json": { "schema": { @@ -5542,8 +5510,7 @@ "Group Members" ], "summary": "List", - "description": "List the members of a group for a given GUID", - "operationId": "list-group-members", + "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.\n *\n * **Use Cases:**\n * - Displaying group member list in UI\n * - Checking who is in a group before sending messages\n * - Building member management interfaces\n * - Filtering members by online status or role\n *\n * **Response includes for each member:**\n * - User details: uid, name, avatar, status\n * - Group-specific: scope (admin/moderator/participant), joinedAt\n * - Conversation ID for direct messaging\n *\n * **Limitations:**\n * - Maximum 1000 members per request (perPage)\n * - Default returns 100 members per page\n * - Group must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5551,7 +5518,7 @@ { "name": "perPage", "in": "query", - "description": "Number of users to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "description": "Number of members to return per page. Use for pagination. Default: 100, Maximum: 1000.", "schema": { "type": "integer", "default": "100" @@ -5560,7 +5527,7 @@ { "name": "status", "in": "query", - "description": "Group members list can be fetched depending on the user status. (available,offline).", + "description": "Filter members by online status. 'available': currently online users. 'offline': users not currently connected.", "schema": { "type": "string", "enum": [ @@ -5572,7 +5539,7 @@ { "name": "page", "in": "query", - "description": "Page Number.", + "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through member list.", "schema": { "type": "integer", "default": "1" @@ -5581,7 +5548,7 @@ { "name": "scopes", "in": "query", - "description": "Fetches group members based on multiple scope.", + "description": "Filter members by permission scope. Comma-separated list of scopes: 'admin', 'moderator', 'participant'. Returns members matching ANY of the specified scopes.", "style": "form", "explode": false, "schema": { @@ -5592,7 +5559,7 @@ ], "responses": { "200": { - "description": "Create Group Members", + "description": "Returns an array of member objects with user details and group-specific information like scope and join date. Includes pagination metadata.", "content": { "application/json": { "schema": { @@ -5686,8 +5653,7 @@ "Group Members" ], "summary": "Change Scope", - "description": "Change scope of a member to the group for a given GUID and UID", - "operationId": "change-group-member-scope", + "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.\n *\n * **Use Cases:**\n * - Promoting a participant to moderator or admin\n * - Demoting an admin to participant\n * - Adjusting team roles as responsibilities change\n * - Building member management interfaces\n *\n * **Available Scopes:**\n * - `admin`: Full control over group settings, members, and content\n * - `moderator`: Can kick/ban participants and delete messages\n * - `participant`: Standard member with messaging permissions only\n *\n * **Side Effects:**\n * - Triggers `group.member.scope.changed` webhook if configured\n * - Action message is sent to the group announcing the change\n * - Member receives real-time notification of scope change\n *\n * **Limitations:**\n * - User must be an existing member of the group\n * - Cannot change scope of the group owner\n * - When using onBehalfOf, acting user must be admin\n * - Admins cannot demote other admins (only owner can)\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5705,7 +5671,7 @@ "schema": { "properties": { "scope": { - "description": "A scope for the user.", + "description": "New permission level for the member. Options: 'admin' (full control), 'moderator' (can manage participants), 'participant' (standard member).", "type": "string", "default": "participant" } @@ -5717,7 +5683,7 @@ }, "responses": { "200": { - "description": "Changed Scope of Group Members", + "description": "Returns the updated membership details including the new scope and join timestamp.", "content": { "application/json": { "schema": { @@ -5725,15 +5691,19 @@ "data": { "properties": { "guid": { + "description": "The group's unique identifier", "type": "string" }, "uid": { + "description": "The member's unique identifier", "type": "string" }, "scope": { + "description": "The member's new permission level (admin, moderator, or participant)", "type": "string" }, "joinedAt": { + "description": "Unix timestamp when the user joined the group", "type": "integer" } }, @@ -5765,8 +5735,7 @@ "Group Members" ], "summary": "Kick", - "description": "Removes a member with given UID from a group for a given GUID.", - "operationId": "kick-group-member", + "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.\n *\n * **Use Cases:**\n * - Removing inactive members from a group\n * - Enforcing group rules by removing violators\n * - Cleaning up group membership\n * - User-initiated removal (with onBehalfOf)\n *\n * **Difference from Ban:**\n * - Kick: User is removed but can rejoin public groups or be re-added\n * - Ban: User is permanently blocked from the group until unbanned\n *\n * **Side Effects:**\n * - Triggers `group.member.kicked` webhook if configured\n * - Action message is sent to the group announcing the removal\n * - Kicked user receives real-time notification\n * - Group's membersCount is decremented\n * - User's group conversation is updated\n *\n * **Limitations:**\n * - Cannot kick the group owner\n * - Cannot kick yourself (use leave group instead)\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Moderators cannot kick admins\n * - User must be a current member; returns error if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5780,7 +5749,7 @@ ], "responses": { "200": { - "description": "Kicked Group Members", + "description": "Returns a success confirmation with details about the kicked member and group.", "content": { "application/json": { "schema": { @@ -5814,8 +5783,7 @@ "Banned Users" ], "summary": "Ban", - "description": "Bans a member from a group for a given GUID and UID.", - "operationId": "ban-group-user", + "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.\n *\n * **Use Cases:**\n * - Permanently removing users who violate group rules\n * - Blocking spammers or abusive users\n * - Preventing specific users from accessing private groups\n * - Enforcing moderation policies\n *\n * **Difference from Kick:**\n * - Kick: User is removed but can rejoin public groups or be re-added\n * - Ban: User is permanently blocked until explicitly unbanned\n *\n * **Side Effects:**\n * - Triggers `group.member.banned` webhook if configured\n * - Action message is sent to the group announcing the ban\n * - User is immediately removed from the group if they were a member\n * - User receives real-time notification of the ban\n * - Group's membersCount is decremented if user was a member\n *\n * **Limitations:**\n * - Cannot ban the group owner\n * - Cannot ban yourself\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Moderators cannot ban admins\n * - User must exist; returns error if UID not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5829,7 +5797,7 @@ ], "responses": { "200": { - "description": "Create Group", + "description": "Returns a success confirmation with details about the banned user and group.", "content": { "application/json": { "schema": { @@ -5861,8 +5829,7 @@ "Banned Users" ], "summary": "Unban", - "description": "Unban a member with given UID from a group for a given GUID.", - "operationId": "unban-group-user", + "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.\n *\n * **Use Cases:**\n * - Restoring access after a temporary ban period\n * - Reversing accidental bans\n * - Giving users a second chance after policy violations\n * - Implementing ban appeal processes\n *\n * **What happens after unban:**\n * - User can join public groups immediately\n * - User can be added to private groups by admins\n * - User can request to join password-protected groups\n * - User is NOT automatically re-added to the group\n *\n * **Side Effects:**\n * - Triggers `group.member.unbanned` webhook if configured\n * - User receives real-time notification of the unban\n * - User is removed from the banned users list\n *\n * **Limitations:**\n * - User must be currently banned; returns error if not banned\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5876,7 +5843,7 @@ ], "responses": { "200": { - "description": "Create Group", + "description": "Returns a success confirmation with details about the unbanned user and group.", "content": { "application/json": { "schema": { @@ -5890,7 +5857,7 @@ "example": { "data": { "success": true, - "message": "The user with uid superhero3 has been banned from the Group with supergroup." + "message": "The user with uid superhero3 has been unbanned from the Group with supergroup." } } } @@ -5910,8 +5877,7 @@ "Banned Users" ], "summary": "List", - "description": "Lists banned users from a group for a given GUID.", - "operationId": "list-banned-group-users", + "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.\n *\n * **Use Cases:**\n * - Displaying banned users list in admin panel\n * - Reviewing bans for potential appeals\n * - Auditing group moderation actions\n * - Building ban management interfaces\n *\n * **Response includes for each banned user:**\n * - User details: uid, name, avatar, status, role\n * - Timestamps: createdAt, updatedAt\n * - Conversation ID for reference\n *\n * **Limitations:**\n * - Maximum 100 banned users per request (default)\n * - Group must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5919,7 +5885,7 @@ ], "responses": { "200": { - "description": "get Banned User", + "description": "Returns an array of banned user objects with their details and pagination metadata.", "content": { "application/json": { "schema": { @@ -6016,8 +5982,7 @@ "Friends" ], "summary": "Add Friends", - "description": "The API allows to add multiple friends for a given UID.", - "operationId": "add-friend", + "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.\n *\n * **When to use:**\n * - Implementing friend/contact list features\n * - Syncing friend relationships from your application\n * - Creating mutual connections between users\n * - Building social networking features\n *\n * **What happens when friends are added:**\n * - Bidirectional friendship is created (both users become friends)\n * - Friends appear in each other's friend lists\n * - Optionally creates conversations between friends (addToConversations=true)\n * - Friend status is reflected in user queries\n *\n * **Side Effects:**\n * - Triggers `friend.added` webhook if configured\n * - When addToConversations=true, creates 1-on-1 conversation entries\n * - Real-time events notify connected clients of new friendships\n *\n * **Limitations:**\n * - Cannot add yourself as a friend\n * - All friend UIDs must exist in your app\n * - Friendship is automatically bidirectional\n * - Requires API key with `fullAccess` scope", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6029,14 +5994,14 @@ "schema": { "properties": { "accepted": { - "description": "The array of UIDs of the friends.", + "description": "Array of UIDs to add as friends. Each UID must belong to an existing user. The friendship will be created as 'accepted' status immediately (no pending state).", "type": "array", "items": { "type": "string" } }, "addToConversations": { - "description": "When enabled, automatically creates chat conversations between users when they become friends.", + "description": "When set to true, automatically creates 1-on-1 conversation entries between the user and each new friend. This makes the friends appear in the conversations list immediately. Default is false.", "type": "boolean", "default": false } @@ -6048,17 +6013,22 @@ }, "responses": { "200": { - "description": "Added Friend", + "description": "Returns the result of the friend addition operation for each requested UID. Each entry indicates whether the friendship was successfully created.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Result object containing the outcome for each friend addition request.", "properties": { - "": { - "type": "object" - }, - "": { + "accepted": { + "description": "Object containing results for each UID. Keys are the friend UIDs.", + "properties": { + "": { + "description": "Result object for each friend containing success status and message.", + "type": "object" + } + }, "type": "object" } }, @@ -6096,8 +6066,7 @@ "Friends" ], "summary": "List Friends", - "description": "The API allows to fetch friends for a given UID.", - "operationId": "list-all-friends", + "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.\n *\n * **When to use:**\n * - Displaying a user's friend/contact list\n * - Searching for specific friends by name or UID\n * - Building friend suggestion features\n * - Syncing friend lists with your application\n *\n * **Response includes:**\n * - Full user profile for each friend\n * - Online/offline status\n * - Block status if applicable\n * - Conversation ID for direct messaging\n * - Pagination metadata for large friend lists\n *\n * **Limitations:**\n * - Maximum 1000 friends per page\n * - Default page size: 100 friends\n * - Search performs prefix matching on UID and name\n * - Requires API key with `fullAccess` scope", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6105,7 +6074,7 @@ { "name": "searchKey", "in": "query", - "description": "Searches for given keyword in friends list (either UID or name).", + "description": "Search keyword for filtering friends. Performs prefix matching (LIKE%) on both UID and name fields. For example, 'john' matches 'john_doe', 'johnny', etc.", "schema": { "type": "string" } @@ -6113,7 +6082,7 @@ { "name": "perPage", "in": "query", - "description": "Number of friends to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "description": "Number of friends to return per page. Use smaller values for faster responses, larger values to reduce API calls. Default: 100, Maximum: 1000.", "schema": { "type": "integer", "default": "100" @@ -6122,7 +6091,7 @@ { "name": "page", "in": "query", - "description": "Page Number.", + "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through large friend lists.", "schema": { "type": "integer", "default": "1" @@ -6131,16 +6100,18 @@ ], "responses": { "200": { - "description": "A list of friends.", + "description": "Returns a paginated list of friends with their full profile information, status, and conversation IDs.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Array of friend user objects with full profile information.", "type": "array", "items": {} }, "meta": { + "description": "Pagination metadata including total count, current page, and cursor for real-time sync.", "type": "object" } }, @@ -6220,8 +6191,7 @@ "Friends" ], "summary": "Remove Friends", - "description": "The API removes friends for a given UID.", - "operationId": "remove-friend", + "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.\n *\n * **When to use:**\n * - Implementing unfriend/remove contact features\n * - Syncing friend removals from your application\n * - Admin-initiated friend relationship cleanup\n * - Bulk removal of friend connections\n *\n * **What happens when friends are removed:**\n * - Bidirectional friendship is removed (both users are no longer friends)\n * - Users no longer appear in each other's friend lists\n * - Existing conversations are preserved (not deleted)\n * - Users can still message each other (unless blocked)\n *\n * **Side Effects:**\n * - Triggers `friend.removed` webhook if configured\n * - Real-time events notify connected clients of the removal\n * - Friend lists are updated immediately\n *\n * **Limitations:**\n * - Can only remove existing friendships\n * - Removal is automatically bidirectional\n * - Conversations are not deleted (use conversation APIs separately)\n * - Requires API key with `fullAccess` scope", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6233,7 +6203,7 @@ "schema": { "properties": { "friends": { - "description": "The array of friends to remove.", + "description": "Array of friend UIDs to remove. Each UID must belong to a user who is currently a friend of the specified user.", "type": "array", "items": { "type": "string" @@ -6247,12 +6217,13 @@ }, "responses": { "200": { - "description": "A list of api keys", + "description": "Confirms successful removal of the friend relationships. Returns a success message indicating the friendships were deleted.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Result object confirming the friend removal operation.", "type": "object" } }, @@ -6261,7 +6232,7 @@ "example": { "data": { "success": true, - "message": "Deleted the friend relations succussfully" + "message": "Deleted the friend relations successfully" } } } @@ -6281,12 +6252,12 @@ "Blocked Users" ], "summary": "Block User", - "description": "Blocks the specified user", + "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.\n *\n * **When to use:**\n * - Implementing user blocking features\n * - Preventing harassment or unwanted contact\n * - Admin-initiated blocking for policy enforcement\n * - Bulk blocking of spam accounts\n *\n * **What happens when a user is blocked:**\n * - Blocked user cannot send direct messages to the blocking user\n * - Blocked user's messages in groups are still visible\n * - Blocking user won't see blocked user in their user list (depending on client implementation)\n * - Block status is reflected in user objects (blockedByMe, blockedAt fields)\n * - Existing conversations are preserved but new messages are blocked\n *\n * **Side Effects:**\n * - Triggers `user.blocked` webhook if configured\n * - Block status is immediately reflected in API responses\n * - Real-time events notify connected clients of the block\n *\n * **Limitations:**\n * - Cannot block yourself\n * - Both users must exist in your app\n * - Blocking is one-directional (A blocks B doesn't mean B blocks A)\n * - Requires API key with `fullAccess` scope", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The UID of the user who is blocking other users. This user will no longer receive messages from the blocked users.", "required": true, "schema": { "type": "string" @@ -6308,7 +6279,7 @@ ], "properties": { "blockedUids": { - "description": "UIDs of the users to be blocked", + "description": "Array of UIDs to block. Each UID must belong to an existing user. Users already blocked will be skipped.", "type": "array", "items": { "type": "string" @@ -6322,14 +6293,16 @@ }, "responses": { "200": { - "description": "Blocked user", + "description": "Returns the result of the block operation for each requested UID. Each entry indicates whether the block was successful.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Object containing the result for each blocked UID. Keys are the blocked UIDs.", "properties": { "": { + "description": "Result object for each blocked user containing success status and message.", "type": "object" } }, @@ -6361,12 +6334,12 @@ "Blocked Users" ], "summary": "Unblock User", - "description": "Unblocks the specified user", + "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.\n *\n * **When to use:**\n * - Allowing users to unblock others they previously blocked\n * - Admin-initiated unblocking for dispute resolution\n * - Bulk unblocking after policy changes\n * - Restoring communication after temporary blocks\n *\n * **What happens when a user is unblocked:**\n * - Unblocked user can send direct messages again\n * - Block status fields (blockedByMe, blockedAt) are removed from user objects\n * - Communication is restored immediately\n * - Previous conversation history remains intact\n *\n * **Side Effects:**\n * - Triggers `user.unblocked` webhook if configured\n * - Unblock status is immediately reflected in API responses\n * - Real-time events notify connected clients of the unblock\n *\n * **Limitations:**\n * - Can only unblock users that were previously blocked\n * - Both users must exist in your app\n * - Unblocking is one-directional (if both users blocked each other, both must unblock)\n * - Requires API key with `fullAccess` scope", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The UID of the user who is unblocking other users. This user will start receiving messages from the unblocked users again.", "required": true, "schema": { "type": "string" @@ -6388,7 +6361,7 @@ ], "properties": { "blockedUids": { - "description": "UIDs of the users to be unblock", + "description": "Array of UIDs to unblock. Each UID must belong to a user that was previously blocked by the specified user.", "type": "array", "items": { "type": "string" @@ -6402,14 +6375,16 @@ }, "responses": { "200": { - "description": "Blocked user", + "description": "Returns the result of the unblock operation for each requested UID. Each entry indicates whether the unblock was successful.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Object containing the result for each unblocked UID. Keys are the unblocked UIDs.", "properties": { "": { + "description": "Result object for each unblocked user containing success status and message.", "type": "object" } }, @@ -6422,7 +6397,7 @@ "data": { "superhero4": { "success": true, - "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." + "message": "The user with UID superhero1 has unblocked user with UID superhero3 successfully." } } } @@ -6441,12 +6416,12 @@ "Blocked Users" ], "summary": "List Blocked Users", - "description": "Retrieves the blocked users", + "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.\n *\n * **When to use:**\n * - Displaying a user's blocked users list in settings\n * - Checking block status before initiating communication\n * - Admin review of user blocking patterns\n * - Syncing block lists with your application\n *\n * **Response includes:**\n * - Full user profile for each blocked user\n * - Block timestamp (blockedAt, blockedByMeAt)\n * - Block status flags (blockedByMe)\n * - Pagination metadata for large block lists\n *\n * **Limitations:**\n * - Only returns users blocked BY the specified user\n * - Does not show users who have blocked the specified user\n * - Maximum 100 users per page (default)\n * - Requires API key with `fullAccess` scope", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of a user.", + "description": "The UID of the user whose blocked users list you want to retrieve.", "required": true, "schema": { "type": "string" @@ -6461,12 +6436,13 @@ ], "responses": { "200": { - "description": "Blocked user", + "description": "Returns a paginated list of blocked users with their full profile information and block timestamps.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "Array of blocked user objects with full profile information and block status.", "type": "array", "items": { "allOf": [ @@ -6480,6 +6456,7 @@ } }, "meta": { + "description": "Pagination metadata including total count, current page, and cursor for real-time sync.", "type": "object" } }, @@ -6553,8 +6530,7 @@ "Roles" ], "summary": "Create", - "description": "Creates a new user role", - "operationId": "create-role", + "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.\n *\n * **Use Cases:**\n * - Create different permission levels (admin, moderator, member, guest)\n * - Restrict messaging to friends only for certain user types\n * - Control which users can see other users in the user list\n * - Implement tiered access for freemium apps\n *\n * **Role Settings:**\n * - **listUsers**: Controls who appears in user lists. 'all' shows everyone, 'friendsOnly' shows only friends\n * - **sendMessagesTo**: Controls who can receive messages. 'all' allows messaging anyone, 'friendsOnly' restricts to friends\n *\n * **Limitations:**\n * - Role identifier max length: 100 characters\n * - Role name max length: 100 characters\n * - Role identifier must be unique within your app\n * - Role identifier cannot be changed after creation\n * - Requires API key with fullAccess scope", "requestBody": { "content": { "application/json": { @@ -6565,26 +6541,26 @@ ], "properties": { "role": { - "description": "A unique identifier for the role.", + "description": "Unique identifier for the role. Use lowercase alphanumeric characters and underscores. Examples: 'admin', 'moderator', 'premium_user'. Cannot be changed after creation.", "type": "string", "default": "" }, "name": { - "description": "Friendly name of the role.", + "description": "Human-readable display name for the role. Shown in the dashboard and can be used in your UI. Examples: 'Administrator', 'Premium Member'.", "type": "string", "default": "" }, "description": { - "description": "Description of the role.", + "description": "Optional description explaining the role's purpose and permissions. Useful for documentation and admin reference.", "type": "string", "default": "" }, "metadata": { - "description": "Addition information about the role as JSON.", + "description": "Custom JSON object for storing additional role information. Use for app-specific data like permission flags, tier levels, or contact information.", "type": "object" }, "settings": { - "description": "Role settings that is used for restricting list users/send message. Possible values for listUsers & sendMessagesTo are all and friendsOnly", + "description": "Role behavior settings. 'listUsers' controls user visibility ('all' or 'friendsOnly'). 'sendMessagesTo' controls messaging permissions ('all' or 'friendsOnly').", "type": "object" } }, @@ -6595,7 +6571,7 @@ }, "responses": { "200": { - "description": "Created a new Role", + "description": "Role created successfully. Users assigned this role will inherit its permissions.", "content": { "application/json": { "schema": { @@ -6636,11 +6612,10 @@ "Roles" ], "summary": "List", - "description": "Lists the user roles", - "operationId": "list-roles", + "description": "Retrieves all roles configured in your CometChat app. Use this endpoint to audit role configurations, build role management interfaces, or verify role settings.\n *\n * **Default Role:**\n * Every app has a 'default' role that is automatically assigned to new users if no role is specified during user creation.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope", "responses": { "200": { - "description": "Lists the user roles", + "description": "List of all roles with their configurations, settings, and metadata.", "content": { "application/json": { "schema": { @@ -6705,13 +6680,12 @@ "Roles" ], "summary": "Get", - "description": "Retrieves role details for a given role.", - "operationId": "get-role", + "description": "Retrieves the complete configuration for a specific role including its settings, metadata, and description. Use this endpoint to verify role permissions before assigning users.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", "parameters": [ { "name": "role", "in": "path", - "description": "A role to get.", + "description": "The unique identifier of the role to retrieve. This is the role ID specified when the role was created.", "required": true, "schema": { "type": "string" @@ -6719,14 +6693,14 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "manager" } } } ], "responses": { "200": { - "description": "Fetched the role", + "description": "Role configuration retrieved successfully with all settings and metadata.", "content": { "application/json": { "schema": { @@ -6767,13 +6741,12 @@ "Roles" ], "summary": "Update", - "description": "Updates a given role.", - "operationId": "update-role", + "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n *\n * **Side Effects:**\n * - Changes take effect immediately for all users with this role\n * - Existing user sessions will use the new permissions on their next API call\n *\n * **Limitations:**\n * - Role identifier cannot be changed (create a new role instead)\n * - Role name max length: 100 characters\n * - Cannot update the 'default' role's core settings\n * - Requires API key with fullAccess scope", "parameters": [ { "name": "role", "in": "path", - "description": "A role to update.", + "description": "The unique identifier of the role to update. The role ID cannot be changed.", "required": true, "schema": { "type": "string" @@ -6781,7 +6754,7 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "manager" } } } @@ -6792,24 +6765,24 @@ "schema": { "properties": { "name": { - "description": "Friendly name of the role.", + "description": "Updated display name for the role.", "type": "string", "default": "" }, "description": { - "description": "Description of the role.", + "description": "Updated description explaining the role's purpose.", "type": "string", "default": "" }, "metadata": { - "description": "Additional information about the role.", + "description": "Updated custom metadata. This replaces the existing metadata entirely.", "type": "object", "default": { "email": "dummy@example.com" } }, "unset": { - "description": "The unsettable role attributes are settings, description and metadata.", + "description": "Array of fields to remove from the role. Use this to clear settings, description, or metadata without providing replacement values.", "type": "array", "items": { "type": "string", @@ -6822,7 +6795,7 @@ "default": [] }, "settings": { - "description": "Role settings that is used for restricting list users/send message. Possible values for listUsers & sendMessagesTo are all and friendsOnly", + "description": "Updated role behavior settings. 'listUsers' controls user visibility ('all' or 'friendsOnly'). 'sendMessagesTo' controls messaging permissions ('all' or 'friendsOnly').", "type": "object", "default": [] } @@ -6834,7 +6807,7 @@ }, "responses": { "200": { - "description": "Updated Role", + "description": "Role updated successfully. All users with this role now have the updated permissions.", "content": { "application/json": { "schema": { @@ -6875,13 +6848,12 @@ "Roles" ], "summary": "Delete", - "description": "Deletes a role.", - "operationId": "delete-role", + "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the 'default' role.\n *\n * **Side Effects:**\n * - All users with this role are reassigned to the 'default' role\n * - Feature restrictions associated with this role are removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Cannot delete the 'default' role\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", "parameters": [ { "name": "role", "in": "path", - "description": "A role to delete.", + "description": "The unique identifier of the role to delete. Users with this role will be reassigned to the default role.", "required": true, "schema": { "type": "string" @@ -6889,14 +6861,14 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "manager" } } } ], "responses": { "200": { - "description": "Deleted Role", + "description": "Role deleted successfully. Users previously assigned this role now have the default role.", "content": { "application/json": { "schema": { @@ -6930,13 +6902,12 @@ "Restrict Features" ], "summary": "Restrict Features", - "description": "Restrict Features for a given role.", - "operationId": "restrict-features", + "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.\n *\n * **Common Use Cases:**\n * - Prevent guest users from deleting groups\n * - Block free-tier users from accessing premium features\n * - Restrict moderators from certain admin operations\n *\n * **Feature Keys:**\n * Feature keys follow the pattern 'u.featureName' for user-facing features. Examples:\n * - 'u.listUsers': List users endpoint\n * - 'u.deleteGroup': Delete group endpoint\n * - 'u.createGroup': Create group endpoint\n *\n * **Side Effects:**\n * - Restrictions take effect immediately for all users with this role\n * - Users attempting restricted operations will receive a 403 Forbidden error\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot restrict features for the 'default' role\n * - Returns 404 if role does not exist", "parameters": [ { "name": "role", "in": "path", - "description": "A role to which features to be restricted.", + "description": "The role identifier to add feature restrictions to. Users with this role will be blocked from using the specified features.", "required": true, "schema": { "type": "string" @@ -6944,7 +6915,7 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "guest" } } } @@ -6958,7 +6929,7 @@ ], "properties": { "featuresToRestrict": { - "description": "Keys of the features to be restricted.", + "description": "Array of feature keys to restrict for this role. Use the List Restricted Features endpoint to see available feature keys. Example: ['u.listUsers', 'u.deleteGroup']", "type": "array", "items": { "type": "string" @@ -6973,7 +6944,7 @@ }, "responses": { "200": { - "description": "Restricts Features", + "description": "Features restricted successfully. Returns the status for each feature key.", "content": { "application/json": { "schema": { @@ -7012,13 +6983,12 @@ "Restrict Features" ], "summary": "List Restricted Features", - "description": "List all restricted features for a given role.", - "operationId": "get-restrictedfeatures", + "description": "Retrieves all features that are currently restricted for a specific role. Use this endpoint to audit role permissions or build a feature management interface.\n *\n * Each restricted feature includes:\n * - **title**: Human-readable feature name\n * - **description**: What the feature allows users to do\n * - **key**: The feature key used when restricting/allowing features\n * - **path**: The API endpoint path associated with this feature\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", "parameters": [ { "name": "role", "in": "path", - "description": "A role for which features are restricted.", + "description": "The role identifier to list restricted features for.", "required": true, "schema": { "type": "string" @@ -7026,14 +6996,14 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "guest" } } } ], "responses": { "200": { - "description": "Lists Restricted Features", + "description": "List of features currently restricted for this role. Users with this role cannot access these features.", "content": { "application/json": { "schema": { @@ -7109,13 +7079,12 @@ "Restrict Features" ], "summary": "Allow Features", - "description": "Allow features access for a given role.", - "operationId": "allow-features", + "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n *\n * **Options:**\n * - Specify individual features to allow using 'featuresToAllow'\n * - Use 'allowAll: true' to remove all restrictions at once\n *\n * **Side Effects:**\n * - Changes take effect immediately for all users with this role\n * - Users can immediately access the allowed features\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist\n * - Allowing a feature that isn't restricted has no effect (idempotent)", "parameters": [ { "name": "role", "in": "path", - "description": "A role to which allow features.", + "description": "The role identifier to remove feature restrictions from.", "required": true, "schema": { "type": "string" @@ -7123,7 +7092,7 @@ "examples": { "string": { "summary": "Role", - "value": "" + "value": "guest" } } } @@ -7134,7 +7103,7 @@ "schema": { "properties": { "featuresToAllow": { - "description": "keys of the features to be allowed.", + "description": "Array of feature keys to allow (remove restrictions). Example: ['u.listUsers', 'u.deleteGroup']. Use the List Restricted Features endpoint to see currently restricted features.", "type": "array", "items": { "type": "string" @@ -7142,7 +7111,7 @@ "default": "" }, "allowAll": { - "description": "All features to be allowed.", + "description": "Set to true to remove all feature restrictions for this role at once. When true, 'featuresToAllow' is ignored.", "type": "boolean", "default": "" } @@ -7154,7 +7123,7 @@ }, "responses": { "200": { - "description": "Allows Restricted Features", + "description": "Feature restrictions removed successfully. Users with this role can now access the allowed features.", "content": { "application/json": { "schema": { @@ -7188,8 +7157,7 @@ "Messages" ], "summary": "Send Threaded Message", - "description": "Sends Threaded Message on behalf of a user.", - "operationId": "send-thread-message", + "description": "Sends a reply to a message, creating a thread. Requires 'onBehalfOf' header. Threaded messages are linked to the parent message and can be fetched separately.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -7374,8 +7342,7 @@ "Messages" ], "summary": "List Threaded Messages", - "description": "Fetches the messages list of a thread.", - "operationId": "list-all-thread-messages", + "description": "Retrieves all replies in a message thread. Returns paginated list of messages linked to the parent message ID.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -7502,8 +7469,7 @@ "Messages" ], "summary": "List User Messages", - "description": "Fetches messages between onBehalfOfuid and an uid from path param.", - "operationId": "user-list-user-messages", + "description": "Retrieves messages between two users in a 1-on-1 conversation. Requires 'onBehalfOf' header. Returns paginated message history with filtering options.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -7981,8 +7947,7 @@ "Messages" ], "summary": "List Group Messages", - "description": "Fetches the group message list for a user.", - "operationId": "user-list-group-messages", + "description": "Retrieves messages from a group conversation. Requires 'onBehalfOf' header with a group member's UID. Returns paginated message history with filtering options.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -8326,26 +8291,30 @@ "Messages" ], "summary": "Send Bot Message", - "description": "Sends Message from a Bot.", - "operationId": "sends-bot-message", + "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.\n *\n * The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.\n *\n * **Use Cases:**\n * - Automated welcome messages when users join\n * - Customer support bot responses\n * - AI chatbot integrations (e.g., ChatGPT, custom AI models)\n * - Scheduled notifications and reminders\n * - System announcements to users or groups\n *\n * **Side Effects:**\n * - Triggers message.sent webhook if configured\n * - Updates conversation's lastMessage for the recipient\n * - Increments unread message count for the recipient\n * - Sends push notification to recipient if enabled\n * - Real-time delivery via WebSocket to online recipients\n *\n * **Limitations:**\n * - Bot UID must exist and have the 'bot' role\n * - Message text max length: 65535 characters\n * - Metadata max size: 100KB\n * - Custom data max size: 100KB\n * - Maximum 25 tags per message\n * - Tag max length: 100 characters each\n * - Receiver must be a valid user UID or group GUID\n * - Requires API key with fullAccess scope\n * - Rate limit: 30 requests per second per app", "parameters": [ { "name": "uid", "in": "path", - "description": "An UID of the Bot.", + "description": "The unique identifier (UID) of the bot user sending the message. The bot must be created beforehand with the 'bot' role. Example: 'support_bot', 'welcome_bot', 'ai_assistant'", "required": true, "schema": { "type": "string" }, "examples": { - "string": { - "summary": "Message ID", - "value": "" + "support_bot": { + "summary": "Support Bot UID", + "value": "support_bot" + }, + "ai_assistant": { + "summary": "AI Assistant Bot UID", + "value": "ai_assistant" } } } ], "requestBody": { + "description": "The message payload to send from the bot. Supports text messages, media messages, and custom message types. The message will be delivered to the specified receiver (user or group).", "content": { "application/json": { "schema": { @@ -8353,7 +8322,6 @@ "propertyName": "category", "mapping": { "message": "#/components/schemas/messageCategorySchema", - "interactive": "#/components/schemas/interactiveCategorySchema", "custom": "#/components/schemas/customCategorySchema" } }, @@ -8363,340 +8331,68 @@ }, { "$ref": "#/components/schemas/customCategorySchema" - }, - { - "$ref": "#/components/schemas/interactiveCategorySchema" } ] }, "examples": { - "form-interactive": { - "summary": "Interactive form example", + "text-message-to-user": { + "summary": "Text message to a user", "value": { + "category": "message", + "type": "text", "receiverType": "user", + "receiver": "user123", "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "superhero2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "superhero1", - "tags": [ - "tag1" - ] + "text": "Hello! How can I help you today?" + } + } + }, + "text-message-to-group": { + "summary": "Text message to a group", + "value": { + "category": "message", + "type": "text", + "receiverType": "group", + "receiver": "support_group", + "data": { + "text": "Welcome to the support channel!" + } } }, - "card-interactive": { - "summary": "Interactive card example", + "text-message-with-metadata": { + "summary": "Text message with metadata", "value": { + "category": "message", + "type": "text", "receiverType": "user", + "receiver": "user123", "data": { - "interactionGoal": { - "type": "none" - }, - "allowSenderInteraction": true, - "interactiveData": { - "imageUrl": "https://upload.wikimedia.org/wikipedia/en/e/e1/Thomas_D._Baird_%28low-resolution%29.jpg", - "text": "Thanks For filling the Form!.\n\nWant to make your gifts more special? Now its easy with our personalized card messages!\n\nOur new feature lets you add a custom message on a beautifully designed card, making your gift-giving extra personal and memorable.\nWhether its for a birthday , anniversary , or just because , our card messages will express your feelings perfectly.\n\nTo start creating your own card message:\nChoose the gift\nWrite your heartfelt message\nWell print it on a high-quality card and include it with your gift\nAdd a touch of your own sentiments with our personalized card messages. Make every gift unforgettable. Start creating your card message today!\nVisit our website Website Link or download our app App Link.\n\nExpress more than just words with our Personalized Card Messages.Because its not just a gift, its your feelings.\n", - "cardActions": [ - { - "elementType": "button", - "elementId": "element8", - "buttonText": "Buy now", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application\\/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "Navigate", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - }, - { - "elementType": "button", - "elementId": "element10", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - } - ] + "text": "Your order #12345 has been shipped!", + "metadata": { + "orderId": "12345", + "trackingUrl": "https://tracking.example.com/12345", + "estimatedDelivery": "2024-01-15" } }, - "category": "interactive", - "type": "card", - "receiver": "superhero1", "tags": [ - "tag1" + "order_notification", + "shipping" ] } }, - "scheduler-interactive": { - "summary": "Interactive scheduler example", + "custom-message": { + "summary": "Custom message type", "value": { + "category": "custom", + "type": "product_recommendation", "receiverType": "user", - "receiver": "superhero2", - "category": "interactive", - "type": "scheduler", + "receiver": "user123", "data": { - "receiverType": "user", - "receiver": "superhero2", - "muid": "16Jan3:41423PM", - "interactionGoal": { - "type": "anyAction", - "elementIds": [] - }, - "allowSenderInteraction": false, - "interactiveData": { - "title": "Meet with Dr. Jacob", - "avatarUrl": "https: //data-us.cometchat.io/assets/images/avatars/ironman.png", - "bufferTime": 15, - "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", - "availability": { - "friday": [ - { - "to": "2359", - "from": "0000" - } - ], - "monday": [ - { - "to": "1700", - "from": "0600" - } - ], - "tuesday": [ - { - "to": "1400", - "from": "1000" - }, - { - "to": "2000", - "from": "1700" - } - ], - "thursday": [ - { - "to": "2359", - "from": "0000" - } - ], - "wednesday": [ - { - "to": "0800", - "from": "0600" - }, - { - "to": "1700", - "from": "1200" - } - ] - }, - "timezoneCode": "Asia/Kolkata", - "duration": 60, - "scheduleElement": { - "action": { - "url": "https://802bba5ae13a7.api-us.cometchat-staging.com/v3.0/messages", - "actionType": "apiAction", - "method": "post", - "dataKey": "", - "headers": { - "accept": "application/json", - "apiKey": "62a32b5140e6b630dab38e2e690d88de9c69d416", - "onBehalfOf": "suryansh1", - "content-type": "application/json" - }, - "payload": { - "data": { - "text": "Meeting Scheduled Successfully!" - }, - "type": "text", - "category": "message", - "receiver": "demo1", - "receiverType": "group" - } - }, - "elementId": "1", - "buttonText": "Schedule", - "elementType": "button", - "disableAfterInteracted": true - }, - "goalCompletionText": "Your meeting has been Scheduled", - "dateRangeStart": "2024-06-09", - "dateRangeEnd": "2024-06-09" + "customData": { + "productId": "prod_456", + "productName": "Wireless Headphones", + "price": 99.99, + "imageUrl": "https://example.com/headphones.jpg" } } } @@ -8707,12 +8403,13 @@ }, "responses": { "200": { - "description": "Send Bot Message", + "description": "Message sent successfully. Returns the complete message object including server-generated fields like message ID, conversation ID, and timestamps. The message is immediately delivered to online recipients via WebSocket and queued for push notification delivery.", "content": { "application/json": { "schema": { "properties": { "data": { + "description": "The sent message object containing all message details including sender/receiver entities", "type": "object" } }, @@ -8720,39 +8417,35 @@ }, "example": { "data": { - "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "id": "12345", + "conversationId": "support_bot_user_user123", + "sender": "support_bot", "receiverType": "user", - "receiver": "superhero5", + "receiver": "user123", "category": "message", "type": "text", "data": { - "text": "test hello", - "metadata": { - "key1": "val1" - }, + "text": "Hello! How can I help you today?", "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "role": "default", + "uid": "support_bot", + "name": "Support Bot", + "avatar": "https://example.com/bot-avatar.png", + "status": "available", + "role": "bot", "createdAt": 1638361550 }, "entityType": "user" }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", + "uid": "user123", + "name": "John Doe", + "status": "online", "role": "default", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "support_bot_user_user123" }, "entityType": "user" } @@ -8779,8 +8472,7 @@ "Notifications" ], "summary": "List Settings", - "description": "List preferences, templates and sounds for the given app.", - "operationId": "notifications-push-list-settings", + "description": "Retrieves the complete push notification configuration for your app, including notification preferences, message templates, and sound settings. Use this endpoint to understand your current notification setup before making changes.\n *\n * The response includes:\n * - **preferences**: Controls which events trigger notifications (messages, reactions, member actions, calls) and whether users can override these settings\n * - **templates**: Customizable notification content templates for different message types (text, media, custom) with support for privacy-focused alternatives\n * - **sound**: Default notification sounds for chat and call events\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns app-level settings only; use List Preferences endpoint for user-specific settings\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -8972,46 +8664,6 @@ "body": "New message", "body_fallback": "New message" }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, "emailSubjectTemplateDefault": { "subjectGroup": "New messages in {{groupDetails.name}}", "subjectOneOnOne": "New messages from {{senderDetails.name}}" @@ -9046,8 +8698,7 @@ "Notifications" ], "summary": "Update Settings", - "description": "Update preferences, templates and sounds for the given app.", - "operationId": "notifications-push-update-settings", + "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n *\n * **Configurable Settings:**\n * - **preferences.group**: Control notifications for group events (messages, reactions, member joins/leaves/kicks/bans)\n * - **preferences.oneOnOne**: Control notifications for 1-on-1 chat events\n * - **preferences.call**: Control notifications for call events (initiated, ongoing, ended, etc.)\n * - **preferences.mute**: Configure Do Not Disturb and schedule-based muting\n * - **preferences.email/sms/push**: Configure channel-specific settings like intervals and metadata inclusion\n * - **templates**: Customize notification content with template variables like {{message.data.text}}\n * - **sound**: Set notification sounds for chat and call events\n *\n * **Side Effects:**\n * - Changes apply immediately to all new notifications\n * - Existing queued notifications are not affected\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Template variables must follow the supported format (see examples)\n * - Rate limit: 50 requests per minute\n * - Maximum request body size: 100KB", "requestBody": { "content": { "application/json": { @@ -9091,8 +8742,7 @@ "Notifications" ], "summary": "Reset Settings", - "description": "Reset preferences, templates and sounds to default values for the given app.", - "operationId": "notifications-push-reset-settings", + "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n *\n * **Side Effects:**\n * - All custom notification templates will be replaced with defaults\n * - User override permissions will be reset to default values\n * - Sound settings will revert to 'default'\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Does not affect user-specific preferences (use Reset Preferences endpoint for that)\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -9129,8 +8779,7 @@ "Notifications" ], "summary": "List FCM Providers", - "description": "List the configured FCM providers for the given app.", - "operationId": "notifications-push-list-fcm-providers", + "description": "Retrieves all configured Firebase Cloud Messaging (FCM) providers for your app. FCM is used to send push notifications to Android devices and web browsers. Use this endpoint to view your current FCM configuration.\n *\n * The response includes:\n * - **pushProviders**: Object containing all configured FCM providers\n * - Each provider includes its ID, name, and whether it's the default provider\n * - Credentials are partially masked for security\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -9168,8 +8817,7 @@ "Notifications" ], "summary": "Add FCM Provider", - "description": "Add new FCM provider for the given app.", - "operationId": "notifications-push-add-fcm-provider", + "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n *\n * **Required Credentials:**\n * - **serviceAccountKey**: Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts)\n *\n * **How to Get FCM Credentials:**\n * 1. Go to Firebase Console (console.firebase.google.com)\n * 2. Select your project\n * 3. Navigate to Project Settings > Service Accounts\n * 4. Click 'Generate new private key'\n * 5. Use the downloaded JSON file content as serviceAccountKey\n *\n * **Side Effects:**\n * - If this is the first FCM provider, it becomes the default automatically\n * - Push notifications to Android devices will use this provider once set as default\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Maximum 5 FCM providers per app\n * - Service account key must be valid JSON\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -9216,8 +8864,7 @@ "Notifications" ], "summary": "Update FCM Provider", - "description": "Update existing FCM provider for the given app.", - "operationId": "notifications-push-update-fcm-provider", + "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n *\n * **Updatable Fields:**\n * - **name**: Display name for the provider\n * - **serviceAccountKey**: New Firebase service account JSON key\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Notifications already in queue continue with previous credentials\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist\n * - Service account key must be valid JSON\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -9226,6 +8873,7 @@ { "properties": { "providerId": { + "description": "The unique identifier of the FCM provider to update", "type": "string" } }, @@ -9278,8 +8926,7 @@ "Notifications" ], "summary": "Delete FCM Provider", - "description": "Delete an FCM provider for the given app.", - "operationId": "notifications-push-delete-fcm-provider", + "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n *\n * **Side Effects:**\n * - If deleting the default provider, you must set another provider as default first\n * - Push notifications to Android devices will fail if no FCM provider remains\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot delete the default provider (change default first)\n * - Provider must exist\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9324,8 +8971,7 @@ "Notifications" ], "summary": "Change default FCM Provider", - "description": "Change the default FCM provider for the given app.", - "operationId": "notifications-push-default-fcm-provider", + "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n *\n * **Side Effects:**\n * - All new Android push notifications will use this provider\n * - Previous default provider remains available but inactive\n * - Changes take effect immediately\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist and be properly configured\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9370,8 +9016,7 @@ "Notifications" ], "summary": "List APNS Providers", - "description": "List the configured APNS providers for the given app.", - "operationId": "notifications-push-list-apns-providers", + "description": "Retrieves all configured Apple Push Notification service (APNS) providers for your app. APNS is required to send push notifications to iOS devices. Use this endpoint to view your current APNS configuration.\n *\n * The response includes:\n * - **pushProviders**: Object containing all configured APNS providers\n * - Each provider includes its ID, name, bundle ID, and whether it's the default\n * - Credentials are partially masked for security\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -9403,8 +9048,7 @@ "Notifications" ], "summary": "Update APNS Providers", - "description": "Update existing APNS provider for the given app.", - "operationId": "notifications-push-update-apns-provider", + "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n *\n * **Updatable Fields:**\n * - **name**: Display name for the provider\n * - **bundleId**: iOS app bundle identifier\n * - **teamId**: Apple Developer Team ID\n * - **keyId**: APNS authentication key ID\n * - **authKey**: New .p8 authentication key content\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Notifications already in queue continue with previous credentials\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist\n * - Auth key must be valid .p8 format\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -9457,8 +9101,7 @@ "Notifications" ], "summary": "Add APNS Provider", - "description": "Add new APNS provider for the given app.", - "operationId": "notifications-push-add-apns-provider", + "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n *\n * **Required Credentials:**\n * - **bundleId**: Your iOS app's bundle identifier (e.g., 'com.yourcompany.yourapp')\n * - **teamId**: Your Apple Developer Team ID (10-character string)\n * - **keyId**: The Key ID for your APNS authentication key\n * - **authKey**: The .p8 authentication key file content from Apple Developer Portal\n *\n * **How to Get APNS Credentials:**\n * 1. Go to Apple Developer Portal (developer.apple.com)\n * 2. Navigate to Certificates, Identifiers & Profiles > Keys\n * 3. Create a new key with Apple Push Notifications service (APNs) enabled\n * 4. Download the .p8 key file (only available once)\n * 5. Note the Key ID shown after creation\n * 6. Find your Team ID in Membership details\n *\n * **Side Effects:**\n * - If this is the first APNS provider, it becomes the default automatically\n * - Push notifications to iOS devices will use this provider once set as default\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Maximum 5 APNS providers per app\n * - Auth key must be valid .p8 format\n * - Bundle ID must match your iOS app configuration\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -9501,8 +9144,7 @@ "Notifications" ], "summary": "Delete APNS Providers", - "description": "Delete an APNS provider for the given app.", - "operationId": "notifications-push-delete-apns-provider", + "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n *\n * **Side Effects:**\n * - If deleting the default provider, you must set another provider as default first\n * - Push notifications to iOS devices will fail if no APNS provider remains\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot delete the default provider (change default first)\n * - Provider must exist\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9541,8 +9183,7 @@ "Notifications" ], "summary": "Change default APNS Provider", - "description": "Change the default APNS provider for the given app.", - "operationId": "notifications-push-default-apns-provider", + "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n *\n * **Side Effects:**\n * - All new iOS push notifications will use this provider\n * - Previous default provider remains available but inactive\n * - Changes take effect immediately\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist and be properly configured\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9581,8 +9222,7 @@ "Notifications" ], "summary": "List Preferences", - "description": "List the configured preferences for the given user.", - "operationId": "notifications-push-list-preferences", + "description": "Retrieves the notification preferences for a specific user. These preferences determine which events trigger notifications and how they are displayed. User preferences can override app-level settings where allowed.\n *\n * The response includes:\n * - **preferences.group**: User's notification settings for group events (messages, reactions, member actions)\n * - **preferences.oneOnOne**: User's notification settings for 1-on-1 chat events\n * - **preferences.mute**: Do Not Disturb settings and schedule-based muting configuration\n * - **sound**: User's preferred notification sounds for chat and call events\n * - **templates**: User's notification content templates (if customized)\n *\n * **Setting Values:**\n * - 1 = Disabled (no notification)\n * - 2 = Enabled (send notification)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9726,46 +9366,6 @@ "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", "body": "{{message.data.text}}", "body_fallback": "New message" - }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" } } } @@ -9785,8 +9385,7 @@ "Notifications" ], "summary": "Update Preferences", - "description": "Update the preference for the given user.", - "operationId": "notifications-push-update-preferences", + "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n *\n * **Configurable Preferences:**\n * - **preferences.group**: Control notifications for group messages, reactions, and member events\n * - **preferences.oneOnOne**: Control notifications for 1-on-1 chat messages and reactions\n * - **preferences.mute**: Configure Do Not Disturb mode and schedule-based muting\n * - **sound**: Set custom notification sounds for chat and call events\n * - **templates**: Customize notification content templates\n *\n * **Setting Values:**\n * - 1 = Disabled (no notification)\n * - 2 = Enabled (send notification)\n *\n * **Side Effects:**\n * - Changes apply immediately to all new notifications for this user\n * - Overrides app-level settings where the Override flag is true\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Can only override settings where the app-level Override flag is enabled\n * - Rate limit: 50 requests per minute\n * - Maximum request body size: 50KB", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9939,46 +9538,6 @@ "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", "body": "{{message.data.text}}", "body_fallback": "New message" - }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" } } } @@ -9998,8 +9557,7 @@ "Notifications" ], "summary": "Reset Preferences", - "description": "Reset the preferences for the given user.", - "operationId": "notifications-push-reset-preferences", + "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n *\n * **Side Effects:**\n * - All user-specific notification preferences are deleted\n * - User will receive notifications based on app-level settings\n * - Custom notification templates for this user are removed\n * - Sound preferences are reset to defaults\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Does not affect muted conversations (use Unmute Conversations endpoint)\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10101,8 +9659,7 @@ "Notifications" ], "summary": "Register push token", - "description": "Register a push token for the given auth token.", - "operationId": "notifications-push-register-token", + "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.\n *\n * **Token Types:**\n * - **fcm_android**: Firebase Cloud Messaging token for Android devices\n * - **fcm_web**: Firebase Cloud Messaging token for web browsers\n * - **apns**: Apple Push Notification service token for iOS devices\n * - **apns_voip**: Apple VoIP push token for call notifications on iOS\n *\n * **Side Effects:**\n * - User will start receiving push notifications on the registered device\n * - Multiple tokens can be registered for the same user (multi-device support)\n * - Old tokens for the same device are automatically replaced\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token must be valid and not expired\n * - Push token must be obtained from FCM or APNS\n * - Maximum 10 active tokens per user\n * - Rate limit: 50 requests per minute", "requestBody": { "content": { "application/json": { @@ -10149,13 +9706,12 @@ "Notifications" ], "summary": "List push tokens", - "description": "List push tokens for the given auth token.", - "operationId": "notifications-push-list-tokens", + "description": "Retrieves registered push tokens for a user session. Use this endpoint to see which devices are registered to receive push notifications for a specific auth token.\n *\n * The response includes:\n * - **pushTokens**: Array of registered device tokens\n * - Each token includes platform type, provider ID, creation date, and last update\n *\n * **Query Options:**\n * - **authToken** (required): The user's auth token to query tokens for\n * - **all**: When true, returns all tokens for the user across all sessions\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token parameter is required\n * - Rate limit: 100 requests per minute", "parameters": [ { "name": "all", "in": "query", - "description": "Displays all the tokens", + "description": "When true, returns all push tokens for the user across all auth tokens/sessions", "schema": { "type": "boolean" } @@ -10163,7 +9719,7 @@ { "name": "authToken", "in": "query", - "description": "Fetches the results based on the auth Tokens", + "description": "The user's auth token to retrieve push tokens for", "required": true, "schema": { "type": "string" @@ -10218,13 +9774,12 @@ "Notifications" ], "summary": "Unregister push tokens for authToken", - "description": "Unregister push token(s) registered for the given auth token.", - "operationId": "notifications-push-unregister-tokens", + "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n *\n * **Unregister Options:**\n * - **all=true**: Removes all push tokens for the user across all sessions (useful for account-wide logout)\n * - **all=false**: Removes only the push token for the current auth token (single device logout)\n *\n * **Side Effects:**\n * - User will stop receiving push notifications on unregistered devices\n * - Notifications already in queue may still be delivered\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token in request body must be valid\n * - Rate limit: 50 requests per minute", "parameters": [ { "name": "all", "in": "query", - "description": "all=true: Deletes all the registered Push tokens for the user.\nall=false: Deletes the Push token registered for the current authToken.", + "description": "When true, deletes all push tokens for the user across all sessions. When false, deletes only the token for the specified auth token.", "schema": { "type": "boolean" } @@ -10289,8 +9844,7 @@ "Notifications" ], "summary": "Delete the given push token", - "description": "Deletes the given push token", - "operationId": "notifications-push-delete-token", + "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.\n *\n * **Use Cases:**\n * - Removing invalid or expired device tokens\n * - Cleaning up tokens that are no longer in use\n * - Administrative token management\n *\n * **Side Effects:**\n * - The device will stop receiving push notifications\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Push token must exist in the system\n * - Rate limit: 50 requests per minute", "parameters": [ { "$ref": "#/components/parameters/pushToken" @@ -10355,8 +9909,7 @@ "Notifications" ], "summary": "List muted conversations", - "description": "List the conversations where notifications have been muted on behalf of the user.", - "operationId": "notifications-push-list-muted", + "description": "Retrieves the list of conversations where notifications have been muted for a specific user. Use this endpoint to see which 1-on-1 chats and groups the user has silenced.\n *\n * The response includes:\n * - **mutedConversations**: Object containing muted conversation IDs with their mute settings\n * - Each muted conversation may have an optional expiration time for temporary mutes\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10399,8 +9952,7 @@ "Notifications" ], "summary": "Mute notifications for conversations", - "description": "Mute notifications for the conversations on behalf of the given user.", - "operationId": "notifications-push-mute-conversations", + "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n *\n * **Mute Options:**\n * - Permanent mute: Notifications are silenced until explicitly unmuted\n * - Temporary mute: Set an expiration time for automatic unmuting\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Side Effects:**\n * - User will not receive push notifications for messages in muted conversations\n * - Muted conversations still appear in conversation lists\n * - Unread counts continue to increment\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Maximum 100 conversations per request\n * - Rate limit: 50 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10462,8 +10014,7 @@ "Notifications" ], "summary": "Unmute notifications for conversations", - "description": "Unmute notifications for the conversations on behalf of the given user.", - "operationId": "notifications-push-unmute-conversations", + "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Side Effects:**\n * - User will start receiving push notifications for messages in unmuted conversations\n * - Takes effect immediately for new messages\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Maximum 100 conversations per request\n * - Rate limit: 50 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10527,8 +10078,7 @@ "Notifications" ], "summary": "Get timezone", - "description": "Get the timezone on behalf of the user.", - "operationId": "notifications-get-timezone", + "description": "Retrieves the timezone setting for a specific user. The timezone is used to apply schedule-based notification preferences correctly, ensuring Do Not Disturb and quiet hours work according to the user's local time.\n *\n * **Timezone Format:**\n * - Uses IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo')\n * - If not set, defaults to UTC\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10571,8 +10121,7 @@ "Notifications" ], "summary": "Update timezone", - "description": "Update the timezone on behalf of the user.", - "operationId": "notifications-update-timezone", + "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n *\n * **Timezone Format:**\n * - Must be a valid IANA timezone identifier\n * - Examples: 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'Australia/Sydney'\n * - Full list available at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n *\n * **Side Effects:**\n * - Schedule-based preferences will immediately use the new timezone\n * - Affects when quiet hours and DND periods are applied\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Timezone must be a valid IANA identifier\n * - Rate limit: 50 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10634,8 +10183,7 @@ "Notifications" ], "summary": "Get contact details", - "description": "Fetches the contact details like Email ID and Phone number for a given user.", - "operationId": "notifications-get-contact-details", + "description": "Retrieves the contact details (email and phone number) stored for a user. These contact details are used to send email and SMS notifications when configured.\n *\n * **Response Fields:**\n * - **email**: The user's email address for email notifications\n * - **phno**: The user's phone number with country code for SMS notifications\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10679,8 +10227,7 @@ "Notifications" ], "summary": "Update contact details", - "description": "Updates the contact details like Email ID and Phone number for a given user.", - "operationId": "notifications-update-contact-details", + "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n *\n * **Contact Format Requirements:**\n * - **email**: Must be a valid email address format\n * - **phno**: Must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India)\n *\n * **Side Effects:**\n * - User will start receiving email/SMS notifications if the respective channel is enabled\n * - Changes take effect immediately for new notifications\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Email must be valid format\n * - Phone number must include country code\n * - Rate limit: 50 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10746,8 +10293,7 @@ "Notifications" ], "summary": "Delete contact details", - "description": "Deletes the stored contact details for a given user.", - "operationId": "notifications-delete-contact-details", + "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n *\n * **Side Effects:**\n * - User will stop receiving email notifications (MISSING_EMAIL reason in logs)\n * - User will stop receiving SMS notifications (MISSING_PHNO reason in logs)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Rate limit: 10 requests per minute", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10792,8 +10338,7 @@ "Notifications" ], "summary": "Get Twilio credentials", - "description": "Fetches the Twilio credentials stored for the app.", - "operationId": "notifications-sms-list-twilio-details", + "description": "Retrieves the Twilio SMS provider configuration for your app. Twilio is used to send SMS notifications to users when they have unread messages.\n *\n * **Response Fields:**\n * - **twilioAccountSID**: Your Twilio Account SID (partially masked)\n * - **twilioAuthToken**: Your Twilio Auth Token (partially masked)\n * - **twilioSenderPhoneNumber**: The phone number used to send SMS\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Credentials are partially masked in response for security\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -10833,8 +10378,7 @@ "Notifications" ], "summary": "Save Twilio credentials", - "description": "Store the Twilio credentials for the given app.", - "operationId": "notifications-sms-save-twilio-details", + "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n *\n * **Required Setup in Twilio:**\n * 1. Create a Twilio account at twilio.com\n * 2. Get your Account SID and Auth Token from the Twilio Console\n * 3. Purchase or use a Twilio phone number for sending SMS\n *\n * **Configuration Fields:**\n * - **twilioAccountSID**: Found in your Twilio Console dashboard (starts with 'AC')\n * - **twilioAuthToken**: Found in your Twilio Console dashboard\n * - **twilioSenderPhoneNumber**: Must be a Twilio phone number in E.164 format (e.g., +1234567890)\n * - **isEnabled**: Set to true to activate SMS notifications\n *\n * **Side Effects:**\n * - Users with stored phone numbers will receive SMS notifications\n * - SMS are sent based on notification preferences and intervals\n * - SMS costs apply based on your Twilio plan\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Phone number must be a valid Twilio number\n * - Account must have sufficient Twilio balance\n * - Rate limit: 10 requests per minute", "requestBody": { "required": true, "content": { @@ -10910,8 +10454,7 @@ "Notifications" ], "summary": "Update Twilio credentials", - "description": "Updates the Twilio credentials for the given app.", - "operationId": "notifications-sms-update-twilio-details", + "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n *\n * **Updatable Fields:**\n * - **twilioAccountSID**: Update to a different Twilio account\n * - **twilioAuthToken**: Rotate to a new auth token\n * - **twilioSenderPhoneNumber**: Change the sender phone number\n * - **isEnabled**: Enable or disable SMS notifications\n *\n * **Side Effects:**\n * - Changes take effect immediately for new SMS notifications\n * - SMS already queued continue with previous settings\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - New phone number must be a valid Twilio number\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -10981,8 +10524,7 @@ "Notifications" ], "summary": "Delete Twilio credentials", - "description": "Deletes the stored Twilio credentials for the given app.", - "operationId": "notifications-sms-delete-twilio-details", + "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n *\n * **Side Effects:**\n * - Users will stop receiving SMS notifications\n * - Stored credentials are permanently removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -11022,8 +10564,7 @@ "Notifications" ], "summary": "Get SendGrid credentials", - "description": "Fetches the SendGrid credentials stored for the app.", - "operationId": "notifications-email-list-sendgrid-details", + "description": "Retrieves the SendGrid email provider configuration for your app. SendGrid is used to send email notifications to users when they have unread messages.\n *\n * **Response Fields:**\n * - **sendGridApiKey**: Your SendGrid API key (partially masked)\n * - **sendGridTemplateID**: The dynamic template ID for email formatting\n * - **sendGridUnsubscribeGroupID**: The unsubscribe group for compliance\n * - **senderEmail**: The 'from' email address for notifications\n * - **senderName**: The display name for the sender\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - API key is partially masked in response for security\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -11065,8 +10606,7 @@ "Notifications" ], "summary": "Save SendGrid credentials", - "description": "Store the SendGrid credentials for the given app.", - "operationId": "notifications-email-save-sendgrid-details", + "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n *\n * **Required Setup in SendGrid:**\n * 1. Create a SendGrid account and verify your sender domain\n * 2. Generate an API key with Mail Send permissions\n * 3. Create a dynamic template for notification emails\n * 4. Create an unsubscribe group for compliance\n *\n * **Configuration Fields:**\n * - **sendGridApiKey**: Your SendGrid API key with Mail Send permissions\n * - **sendGridTemplateID**: Dynamic template ID (starts with 'd-')\n * - **sendGridUnsubscribeGroupID**: Unsubscribe group ID for email compliance\n * - **senderEmail**: Must be a verified sender in SendGrid\n * - **senderName**: Display name shown to recipients\n * - **allowEmailReplies**: Enable reply-to functionality\n *\n * **Side Effects:**\n * - Users with stored email addresses will receive email notifications\n * - Emails are sent based on notification preferences and intervals\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Sender email must be verified in SendGrid\n * - Template must exist in your SendGrid account\n * - Rate limit: 10 requests per minute", "requestBody": { "required": true, "content": { @@ -11170,8 +10710,7 @@ "Notifications" ], "summary": "Update SendGrid credentials", - "description": "Updates the SendGrid credentials for the given app.", - "operationId": "notifications-email-update-sendgrid-details", + "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n *\n * **Updatable Fields:**\n * - **sendGridApiKey**: Rotate to a new API key\n * - **sendGridTemplateID**: Switch to a different email template\n * - **sendGridUnsubscribeGroupID**: Change the unsubscribe group\n * - **senderEmail**: Update the sender email address\n * - **senderName**: Change the sender display name\n * - **allowEmailReplies**: Toggle reply functionality\n * - **isEnabled**: Enable or disable email notifications\n *\n * **Side Effects:**\n * - Changes take effect immediately for new email notifications\n * - Emails already queued continue with previous settings\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - New sender email must be verified in SendGrid\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -11266,8 +10805,7 @@ "Notifications" ], "summary": "Delete SendGrid credentials", - "description": "Deletes the stored SendGrid credentials for the given app.", - "operationId": "notifications-email-delete-sendgrid-details", + "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n *\n * **Side Effects:**\n * - Users will stop receiving email notifications\n * - Stored credentials are permanently removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "A list of push notification's settings", @@ -11307,8 +10845,7 @@ "Notifications" ], "summary": "Get Custom Provider for Push Notifications", - "description": "Fetches the custom provider for Push Notifications for a given app.", - "operationId": "notifications-list-push-custom-provider", + "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.\n *\n * **How Custom Providers Work:**\n * - CometChat sends notification payloads to your webhook URL\n * - Your server receives the payload and delivers notifications using your preferred method\n * - Useful for custom notification routing, logging, or using alternative push services\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives notification payloads\n * - **isEnabled**: Whether the custom provider is active\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11345,8 +10882,7 @@ "Notifications" ], "summary": "Save Custom Provider for Push Notifications", - "description": "Saves the custom provider for Push Notifications for a given app.", - "operationId": "notifications-save-push-custom-provider", + "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.\n *\n * **Use Cases:**\n * - Route notifications through your own servers for logging/analytics\n * - Use alternative push notification services\n * - Implement custom notification logic before delivery\n * - Support platforms not covered by FCM/APNS\n *\n * **Webhook Payload:**\n * - CometChat sends a POST request with notification details\n * - Includes message content, sender/receiver info, and notification template\n * - Your server should respond with 2xx status to acknowledge receipt\n *\n * **Side Effects:**\n * - When enabled, push notifications are sent to your webhook instead of FCM/APNS\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -11421,8 +10957,7 @@ "Notifications" ], "summary": "Update Custom Provider for Push Notifications", - "description": "Updates the custom provider for Push Notifications for a given app.", - "operationId": "notifications-update-push-custom-provider", + "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom provider\n * - **webhookURL**: Change the endpoint receiving notification payloads\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Disabling the provider routes notifications back to FCM/APNS\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -11490,8 +11025,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Push Notifications", - "description": "Deletes the custom provider for Push Notifications for a given app.", - "operationId": "notifications-delete-push-custom-provider", + "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive notification payloads\n * - Push notifications revert to FCM/APNS delivery\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11522,8 +11056,7 @@ "Notifications" ], "summary": "Get Custom Provider for SMS Notifications", - "description": "Fetches the custom provider for SMS Notifications for a given app.", - "operationId": "notifications-list-sms-custom-provider", + "description": "Retrieves the custom SMS notification provider configuration for your app. Custom SMS providers allow you to use your own SMS delivery infrastructure instead of Twilio.\n *\n * **How Custom SMS Providers Work:**\n * - CometChat sends SMS notification payloads to your webhook URL\n * - Your server receives the payload and sends SMS using your preferred service\n * - Useful for custom SMS routing, using alternative SMS services, or regional providers\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives SMS notification payloads\n * - **isEnabled**: Whether the custom SMS provider is active\n * - **useStoredPhNo**: Whether to include the user's stored phone number in the payload\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11557,8 +11090,7 @@ "Notifications" ], "summary": "Save Custom Provider for SMS Notifications", - "description": "Saves the custom provider for SMS Notifications for a given app.", - "operationId": "notifications-save-sms-custom-provider", + "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n *\n * **Use Cases:**\n * - Use your own SMS service (Vonage, MessageBird, etc.)\n * - Use regional SMS providers for better delivery rates\n * - Implement SMS logging and analytics\n * - Route SMS through your own infrastructure\n *\n * **Configuration Options:**\n * - **useStoredPhNo**: When true, only triggers webhook for users with stored phone numbers\n * - **useBasicAuth**: Enable HTTP Basic Authentication for webhook security\n *\n * **Side Effects:**\n * - When enabled, SMS notifications are sent to your webhook instead of Twilio\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", "requestBody": { "required": true, "content": { @@ -11624,8 +11156,7 @@ "Notifications" ], "summary": "Update Custom Provider for SMS Notifications", - "description": "Updates the custom provider for SMS Notifications for a given app.", - "operationId": "notifications-update-sms-custom-provider", + "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom SMS provider\n * - **webhookURL**: Change the endpoint receiving SMS notification payloads\n * - **useStoredPhNo**: Toggle whether to require stored phone numbers\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new SMS notifications\n * - Disabling the provider routes SMS back to Twilio (if configured)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -11668,8 +11199,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for SMS Notifications", - "description": "Deletes the custom provider for SMS Notifications for a given app.", - "operationId": "notifications-delete-sms-custom-provider", + "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive SMS notification payloads\n * - SMS notifications revert to Twilio delivery (if configured)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "Delete push notification's SMS custom provider", @@ -11700,8 +11230,7 @@ "Notifications" ], "summary": "Get Custom Provider for Email Notifications", - "description": "Fetches the custom provider for Email Notifications for a given app.", - "operationId": "notifications-list-email-custom-provider", + "description": "Retrieves the custom email notification provider configuration for your app. Custom email providers allow you to use your own email delivery infrastructure instead of SendGrid.\n *\n * **How Custom Email Providers Work:**\n * - CometChat sends email notification payloads to your webhook URL\n * - Your server receives the payload and sends emails using your preferred service\n * - Useful for custom email templates, branding, or using alternative email services\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives email notification payloads\n * - **isEnabled**: Whether the custom email provider is active\n * - **useStoredEmailID**: Whether to include the user's stored email in the payload\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", "responses": { "200": { "description": "A list of push notification's email custom provider", @@ -11735,8 +11264,7 @@ "Notifications" ], "summary": "Save Custom Provider for Email Notifications", - "description": "Saves the custom provider for Email Notifications for a given app.", - "operationId": "notifications-save-email-custom-provider", + "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n *\n * **Use Cases:**\n * - Use your own email service (Mailgun, Amazon SES, etc.)\n * - Apply custom email templates and branding\n * - Implement email logging and analytics\n * - Route emails through your own infrastructure\n *\n * **Configuration Options:**\n * - **useStoredEmailID**: When true, includes the user's stored email address in the payload\n * - **useBasicAuth**: Enable HTTP Basic Authentication for webhook security\n *\n * **Side Effects:**\n * - When enabled, email notifications are sent to your webhook instead of SendGrid\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", "requestBody": { "required": true, "content": { @@ -11794,8 +11322,7 @@ "Notifications" ], "summary": "Update Custom Provider for Email Notifications", - "description": "Updates the custom provider for Email Notifications for a given app.", - "operationId": "notifications-update-email-custom-provider", + "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom email provider\n * - **webhookURL**: Change the endpoint receiving email notification payloads\n * - **useStoredEmailID**: Toggle whether to include user's email in payload\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new email notifications\n * - Disabling the provider routes emails back to SendGrid (if configured)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", "requestBody": { "content": { "application/json": { @@ -11838,8 +11365,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Email Notifications", - "description": "Deletes the custom provider for Email Notifications for a given app.", - "operationId": "notifications-delete-email-custom-provider", + "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive email notification payloads\n * - Email notifications revert to SendGrid delivery (if configured)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", "responses": { "200": { "description": "Delete push notification's Email custom provider", @@ -11870,13 +11396,12 @@ "Notifications" ], "summary": "Notifications logs", - "description": "Paginated API to fetch logs for notifications", - "operationId": "notifications-logs", + "description": "Retrieves notification delivery logs for debugging and monitoring. Use this endpoint to track notification delivery status, identify failures, and understand why notifications were or were not sent.\n *\n * **Log Information Includes:**\n * - Processing timestamps and duration\n * - Channel (push, email, sms) and provider details\n * - Message and trigger information\n * - Delivery status (success/failure)\n * - Reason for non-delivery (when applicable)\n *\n * **Common Reasons for Non-Delivery:**\n * - MESSAGES_PREFERENCE: User disabled message notifications\n * - DND_PREFERENCE: User has Do Not Disturb enabled\n * - MUTE_PREFERENCE: Conversation is muted\n * - SCHEDULE_PREFERENCE: Outside user's notification schedule\n * - MISSING_EMAIL/MISSING_PHNO: Contact info not available\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Logs are retained for 7 days\n * - Maximum 100 logs per request\n * - Rate limit: 100 requests per minute", "parameters": [ { "name": "messageId", "in": "query", - "description": "To filter based on the ID of message or reply.", + "description": "Filter logs by the message ID that triggered the notification", "required": false, "schema": { "type": "integer" @@ -11885,7 +11410,7 @@ { "name": "reactionId", "in": "query", - "description": "To filter based on the ID of the reaction added.", + "description": "Filter logs by the reaction ID that triggered the notification", "required": false, "schema": { "type": "integer" @@ -11894,7 +11419,7 @@ { "name": "from", "in": "query", - "description": "To get the logs for messages that are sent after the mentioned timestamp in milliseconds.", + "description": "Start timestamp in milliseconds to filter logs (inclusive)", "required": false, "schema": { "type": "integer", @@ -11904,7 +11429,7 @@ { "name": "to", "in": "query", - "description": "To get the logs for messages that are sent after the mentioned timestamp in milliseconds.", + "description": "End timestamp in milliseconds to filter logs (inclusive)", "required": false, "schema": { "type": "integer", @@ -11914,20 +11439,19 @@ { "name": "messageCategory", "in": "query", - "description": "To filter logs based on the category of the message or reply. Values can be message, interactive.", + "description": "Filter by message category (currently only 'message' is supported)", "required": false, "schema": { "type": "string", "enum": [ - "message", - "interactive" + "message" ] } }, { "name": "messageType", "in": "query", - "description": "To filter logs based on the type of the message or reply. Values are based on the message category.", + "description": "Filter by message type (text, image, video, audio, file, custom, etc.)", "required": false, "schema": { "type": "string" @@ -11936,7 +11460,7 @@ { "name": "trigger", "in": "query", - "description": "To filter based on the trigger value of the event that is responsible for triggering the notification.\nFor a message or a reply, the value of this field is after_message.\nFor message actions, the values are message_deleted or message_edited or message_reaction_added.\nFor default calling feature, the values are initiated, rejected, cancelled, unanswered.\nFor group events, the values are: after_group_joined, after_group_left, after_group_members_added, after_group_members_kicked, after_group_members_banned, after_group_members_unbanned, after_scope_changed.", + "description": "Filter by the event trigger type. Message triggers: after_message, message_deleted, message_edited, message_reaction_added. Call triggers: initiated, rejected, cancelled, unanswered. Group triggers: after_group_joined, after_group_left, after_group_members_added, after_group_members_kicked, after_group_members_banned, after_group_members_unbanned, after_scope_changed", "required": false, "schema": { "type": "string", @@ -11962,7 +11486,7 @@ { "name": "sender", "in": "query", - "description": "To filter based on the sender of the message. This has to be uid.", + "description": "Filter by the UID of the message sender", "required": false, "schema": { "type": "string" @@ -11971,7 +11495,7 @@ { "name": "reactionSender", "in": "query", - "description": "To filter based on the user who reacted on a message.", + "description": "Filter by the UID of the user who added the reaction", "required": false, "schema": { "type": "string" @@ -11980,7 +11504,7 @@ { "name": "receiver", "in": "query", - "description": "To filter based on the receiver of a message. This can be uid or guid based on the receiverType.", + "description": "Filter by receiver (UID for user, GUID for group)", "required": false, "schema": { "type": "string" @@ -11989,7 +11513,7 @@ { "name": "receiverType", "in": "query", - "description": "To filter based on the receiver's type. The value of this field can be user or group.", + "description": "Filter by receiver type: 'user' for 1-on-1 chats, 'group' for group chats", "required": false, "schema": { "type": "string", @@ -12002,7 +11526,7 @@ { "name": "reactionReceiver", "in": "query", - "description": "To filter based on the user who is notified when a reaction is added.", + "description": "Filter by the UID of the user notified about a reaction", "required": false, "schema": { "type": "string" @@ -12011,7 +11535,7 @@ { "name": "member", "in": "query", - "description": "To filter based on the user who is notified in a given group. This is only present when the receiverType is group.", + "description": "Filter by group member UID (only applicable when receiverType is 'group')", "required": false, "schema": { "type": "string" @@ -12020,7 +11544,7 @@ { "name": "channel", "in": "query", - "description": "To filter based on whether the user was notified using push, email or sms notification.", + "description": "Filter by notification channel: push (mobile/web), email, or sms", "required": false, "schema": { "type": "string", @@ -12034,7 +11558,7 @@ { "name": "provider", "in": "query", - "description": "To filter based on the provider.\nFor channel as push, the value of this field can be fcm, apns, custom.\nFor channel as email, the value of this field can be sendgrid or custom.\nFor channel as sms, the value of this field can be twilio or custom.", + "description": "Filter by notification provider. Push: fcm, apns, custom. Email: sendgrid, custom. SMS: twilio, custom", "required": false, "schema": { "type": "string", @@ -12050,7 +11574,7 @@ { "name": "notificationTriggered", "in": "query", - "description": "The value is true when the notification provider is triggered. If false, the notification was not triggered due to some preference that is mentioned in the reason field.", + "description": "Filter by whether the notification was actually sent to the provider (true) or blocked by preferences (false)", "required": false, "schema": { "type": "boolean" @@ -12059,7 +11583,7 @@ { "name": "reason", "in": "query", - "description": "Available only when the value of notificationTriggered is false.\nThis contains the reason for not triggering the notification provider.\n\nTo filter logs using reason, use the following values: MESSAGES_PREFERENCE, REPLIES_PREFERENCE, MESSAGE_ACTIONS_PREFERENCE, REACTIONS_PREFERENCE, GROUP_ACTIONS_PREFERENCE, DND_PREFERENCE, MUTE_PREFERENCE, SCHEDULE_PREFERENCE, CALL_PREFERENCE, QUOTA_PREFERENCE, MISSING_EMAIL, MISSING_PHNO, INVALID_PUSH_PROVIDER_ID, TIMED_OUT, NOT_FOUND, TWILIO_CREATE_ERROR.", + "description": "Filter by the reason notification was not triggered (only when notificationTriggered=false)", "required": false, "schema": { "type": "string", @@ -12086,7 +11610,7 @@ { "name": "success", "in": "query", - "description": "Available only when the value of notificationTriggered is true.\n\nTo filter based on whether the HTTP request to the provider was successful or not, true indicating that the provider returned success while false indicating that the provider returned an error.", + "description": "Filter by provider response status (only when notificationTriggered=true). True = provider accepted, False = provider returned error", "required": false, "schema": { "type": "boolean" @@ -12095,7 +11619,7 @@ { "name": "affix", "in": "query", - "description": "To paginate over logs use the value of affix as prepend or append.", + "description": "Pagination direction: 'prepend' for newer logs, 'append' for older logs", "required": false, "schema": { "type": "string", @@ -12108,7 +11632,7 @@ { "name": "logId", "in": "query", - "description": "To be used with affix for pagination.", + "description": "Log ID cursor for pagination (use with affix parameter)", "required": false, "schema": { "type": "string" @@ -12213,8 +11737,7 @@ "Moderation" ], "summary": "Add Rule", - "description": "Create a new moderation rule to specify actions and conditions for detecting and handling inappropriate content.", - "operationId": "chat-api-create-rule", + "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.\n *\n * **Rule Types:**\n * - **Text Profanity Filter**: Block messages containing words from a keyword list\n * - **AI Image Moderation**: Detect violence, adult content, or other unsafe imagery\n * - **AI Video Moderation**: Analyze video content for policy violations\n * - **Pattern Matching**: Filter phone numbers, emails, or custom regex patterns\n *\n * **Actions:**\n * - **blockMessage**: Prevent the message from being delivered, hold for review\n * - **dropMessage**: Silently discard the message without notification\n *\n * **Side Effects:**\n * - Rules take effect immediately for all new messages\n * - Blocked messages are stored for admin review\n *\n * **Limitations:**\n * - Rule ID max length: 100 characters\n * - Rule ID must be unique within your app\n * - AI moderation features may require specific subscription plans\n * - Requires API key with fullAccess scope", "requestBody": { "required": true, "content": { @@ -12227,7 +11750,7 @@ }, "responses": { "200": { - "description": "Created Rule", + "description": "Moderation rule created successfully. The rule is immediately active and will filter matching messages.", "content": { "application/json": { "schema": { @@ -12290,13 +11813,12 @@ "Moderation" ], "summary": "List Rules", - "description": "Retrieve a list of all moderation rules.", - "operationId": "chat-api-list-rules", + "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.\n *\n * **Rule Categories:**\n * - **Text Profanity**: Keyword-based filtering for text messages\n * - **Custom Profanity**: Keyword filtering for custom message types\n * - **Image Moderation**: AI-powered image content analysis\n * - **Video Moderation**: AI-powered video content analysis\n * - **Pattern Filters**: Regex-based filtering (emails, phone numbers)\n *\n * **Limitations:**\n * - Maximum 50 rules per request (use limit parameter)\n * - Requires API key with fullAccess scope", "parameters": [ { "name": "limit", "in": "query", - "description": "The number of records to fetch.", + "description": "Maximum number of rules to return. Default: 50.", "schema": { "type": "string" } @@ -12599,8 +12121,7 @@ "Moderation" ], "summary": "Get Rule", - "description": "Retrieve details of a specific moderation rule by its ID.", - "operationId": "chat-api-get-rule", + "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if rule does not exist", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12608,7 +12129,7 @@ ], "responses": { "200": { - "description": "Get Rule", + "description": "Moderation rule configuration retrieved successfully with all conditions and settings.", "content": { "application/json": { "schema": { @@ -12616,7 +12137,7 @@ "data": { "properties": { "": { - "$ref": "#/components/schemas/webhookSchema" + "$ref": "#/components/schemas/ModerationData" } }, "type": "object" @@ -12631,39 +12152,8 @@ "category": "word", "isCSV": false, "searchTerms": [ - "fuck", - "damn", - "shit", - "cunt", - "nigga", - "nigger", - "wanker", - "cunt", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" + "profanity1", + "profanity2" ], "createdAt": 1718354412, "updatedAt": 1718354412, @@ -12687,8 +12177,7 @@ "Moderation" ], "summary": "Update Rule", - "description": "Update an existing moderation rule with new actions or conditions.", - "operationId": "chat-api-update-rule", + "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.\n *\n * **Common Updates:**\n * - Enable/disable a rule without deleting it\n * - Adjust confidence thresholds for AI moderation\n * - Change the action from 'blockMessage' to 'dropMessage'\n * - Update keyword list references\n *\n * **Side Effects:**\n * - Changes take effect immediately for new messages\n * - A new revision is created for audit purposes\n * - Previously blocked messages are not affected\n *\n * **Limitations:**\n * - Rule ID cannot be changed\n * - Cannot modify default system rules\n * - Requires API key with fullAccess scope", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12706,7 +12195,7 @@ }, "responses": { "200": { - "description": "Update Rule", + "description": "Moderation rule updated successfully. Changes are immediately active.", "content": { "application/json": { "schema": { @@ -12714,7 +12203,7 @@ "data": { "properties": { "": { - "$ref": "#/components/schemas/webhookSchema" + "$ref": "#/components/schemas/ModerationData" } }, "type": "object" @@ -12769,8 +12258,7 @@ "Moderation" ], "summary": "Remove rule", - "description": "Delete a specific moderation rule by its ID.", - "operationId": "chat-api-delete-rule", + "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.\n *\n * **Side Effects:**\n * - The rule stops filtering messages immediately\n * - Previously blocked messages remain in the blocked queue\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Cannot delete default system rules\n * - Requires API key with fullAccess scope\n * - Returns 404 if rule does not exist", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12778,7 +12266,7 @@ ], "responses": { "200": { - "description": "Delete Rule", + "description": "Moderation rule deleted successfully. Messages will no longer be filtered by this rule.", "content": { "application/json": { "schema": { @@ -12786,7 +12274,7 @@ "data": { "properties": { "": { - "$ref": "#/components/schemas/webhookSchema" + "$ref": "#/components/schemas/deleteSchema" } }, "type": "object" @@ -12817,8 +12305,7 @@ "Moderation" ], "summary": "Add Keywords", - "description": "Create a new keyword list for moderation.", - "operationId": "chat-api-create-rule-keyword", + "description": "Creates a new keyword list for moderation. Keyword lists can be referenced in moderation rules to detect specific words or phrases in messages.", "requestBody": { "content": { "multipart/form-data": { @@ -12879,8 +12366,7 @@ "Moderation" ], "summary": "List keywords", - "description": "Fetches all the keywords.", - "operationId": "chat-api-list-rule-keywords", + "description": "Retrieves all keyword lists configured for moderation. Shows list names, word counts, and associated rules.", "responses": { "200": { "description": "List Keywords", @@ -12995,8 +12481,7 @@ "Moderation" ], "summary": "Get keyword", - "description": "Retrieve details of a specific keyword list by its ID.", - "operationId": "chat-api-get-rule-keyword", + "description": "Retrieves details of a specific keyword list including all keywords and configuration settings.", "parameters": [ { "$ref": "#/components/parameters/keywordId" @@ -13084,8 +12569,7 @@ "Moderation" ], "summary": "Update keyword", - "description": "Update an existing keyword list.", - "operationId": "chat-api-update-rule-keyword", + "description": "Updates a keyword list. Add or remove keywords, or modify list settings. Changes apply immediately to associated rules.", "parameters": [ { "$ref": "#/components/parameters/keywordId" @@ -13182,8 +12666,7 @@ "Moderation" ], "summary": "Remove keyword", - "description": "Delete a keyword list by its ID.", - "operationId": "chat-api-delete-rule-keyword", + "description": "Deletes a keyword list. Rules referencing this list will no longer match these keywords.", "parameters": [ { "$ref": "#/components/parameters/keywordId" @@ -13230,8 +12713,7 @@ "Moderation" ], "summary": "Get Rule Revisions", - "description": "Fetches a rule's revisions.", - "operationId": "chat-api-list-rule-revisions", + "description": "Retrieves version history of a moderation rule. Shows all previous configurations, who made changes, and when. Use for auditing rule changes.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -13339,8 +12821,7 @@ "Moderation" ], "summary": "List Blocked Messages", - "description": "Lists the messages blocked by the moderation service.", - "operationId": "chat-api-list-moderation-blocked-messages", + "description": "Retrieves messages blocked by automated moderation rules. Shows message content, sender, matched rule, and block timestamp. Use for reviewing false positives.", "responses": { "200": { "description": "List Blocked Messages", @@ -13466,8 +12947,7 @@ "Moderation" ], "summary": "Approve Blocked Messages", - "description": "Approves the messages blocked by the moderation service.", - "operationId": "chat-api-approve-moderation-blocked-messages", + "description": "Approves a blocked message, allowing it to be delivered. Use when automated moderation incorrectly blocked legitimate content.", "parameters": [ { "$ref": "#/components/parameters/messageId" @@ -13533,8 +13013,7 @@ "Moderation" ], "summary": "Send message", - "description": "This endpoint is used to submit a message for moderation before it is delivered to the recipient. The message is scanned against the moderation rules configured for the app.", - "operationId": "chat-api-send-message-moderation", + "description": "Submits a message for moderation before delivery. The message is scanned against all configured rules. Returns moderation status indicating if the message passed, was blocked, or flagged for review.", "requestBody": { "content": { "application/json": { @@ -13719,8 +13198,7 @@ "Moderation" ], "summary": "List messages", - "description": "This endpoint is used to retrieve a list of messages that were submitted for moderation. Each message includes its current moderation status based on the rules configured for the app.", - "operationId": "chat-api-list-message-moderation", + "description": "Retrieves messages submitted for moderation. Shows message content, moderation status (passed/blocked/flagged), matched rules, and timestamps.", "parameters": [ { "name": "sender", @@ -13863,8 +13341,7 @@ "Moderation" ], "summary": "Get message", - "description": "This endpoint is used to retrieve the details of a message that was submitted for moderation. The message is fetched along with its current moderation status based on the app's configured rules.", - "operationId": "chat-api-get-message-moderation", + "description": "Retrieves details of a moderated message including content, sender, moderation status, matched rules, and review history.", "parameters": [ { "name": "id", @@ -13951,8 +13428,7 @@ "Moderation" ], "summary": "Update message", - "description": "This endpoint is responsible for editing the message, The moderation status is recalculated based on the app's configured rules for the edited message.", - "operationId": "chat-api-update-message-moderation", + "description": "Updates a moderated message. The message is re-scanned against moderation rules and status is recalculated based on the edited content.", "parameters": [ { "name": "id", @@ -14065,8 +13541,7 @@ "Moderation" ], "summary": "Delete message", - "description": "This endpoint deletes a previously submitted message. The message is removed along with its associated moderation data, as per the app's configured rules.", - "operationId": "chat-api-delete-message-moderation", + "description": "Deletes a moderated message and its associated moderation data including review history and rule match records.", "parameters": [ { "name": "id", @@ -14115,8 +13590,7 @@ "Moderation" ], "summary": "Create Reasons", - "description": "Creates a new moderation reason in the app. This reason can then be selected by end users when flagging a message they find inappropriate.", - "operationId": "chat-api-create-reasons", + "description": "Creates a new moderation reason that users can select when flagging inappropriate messages. Examples: 'Spam', 'Harassment', 'Inappropriate Content'.", "requestBody": { "content": { "application/json": { @@ -14189,8 +13663,7 @@ "Moderation" ], "summary": "List Reasons", - "description": "Retrieves a list of moderation reasons configured for the app.", - "operationId": "chat-api-list-reasons", + "description": "Retrieves all moderation reasons configured for your app. These reasons are shown to users when they flag messages.", "responses": { "200": { "description": "List Reasons", @@ -14255,8 +13728,7 @@ "Moderation" ], "summary": "Get Reason details", - "description": "Retrieves detailed information about a specific moderation reason configured in the app.", - "operationId": "chat-api-get-reasons-details", + "description": "Retrieves details of a specific moderation reason including its name, description, and usage statistics.", "parameters": [ { "name": "id", @@ -14307,8 +13779,7 @@ "Moderation" ], "summary": "Update Reason details", - "description": "Updates the details of an existing moderation reason", - "operationId": "chat-api-update-reasons-details", + "description": "Updates a moderation reason's name or description. Changes are reflected immediately in the user-facing flag dialog.", "parameters": [ { "name": "id", @@ -14386,8 +13857,7 @@ "Moderation" ], "summary": "Delete Reasons", - "description": "Deletes moderation reasons from the app configuration.", - "operationId": "chat-api-delete-reason", + "description": "Deletes a moderation reason. Users will no longer see this option when flagging messages. Existing flags with this reason are preserved.", "parameters": [ { "name": "id", @@ -14434,8 +13904,7 @@ "Moderation" ], "summary": "Flag a message", - "description": "Flags a specific message for moderation review. The flagged message is presented to a moderator for evaluation, who can then decide to either block the message or approve it based on the review outcome.", - "operationId": "chat-api-flag-message", + "description": "Flags a message for moderator review. Requires 'onBehalfOf' header. Users can select a reason for flagging. Flagged messages appear in the moderation queue for review.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -14512,8 +13981,7 @@ "Moderation" ], "summary": "Review Blocked Message", - "description": "Updates the review status of a previously blocked message. This endpoint allows approving or rejecting the message based on the moderation evaluation results.", - "operationId": "chat-api-review-blocked-message", + "description": "Reviews a blocked message and takes action. Approve to deliver the message, or confirm the block to keep it hidden. Updates the message's moderation status.", "parameters": [ { "name": "id", @@ -14596,8 +14064,7 @@ "Moderation" ], "summary": "List flagged messages", - "description": "Retrieves a list of messages that have been flagged for moderation review, including their current status, associated reasons, and review details.", - "operationId": "chat-api-list-flagged-messages", + "description": "Retrieves messages flagged by users for moderator review. Shows message content, who flagged it, selected reason, and current review status.", "parameters": [ { "name": "limit", @@ -14713,8 +14180,7 @@ "Moderation" ], "summary": "List Reviewed messages", - "description": "Retrieves a list of messages that have been reviewed by the moderator.", - "operationId": "chat-api-list-reviewed-messages", + "description": "Retrieves messages that have been reviewed by moderators. Shows review outcome (approved/blocked), reviewer, and review timestamp.", "parameters": [ { "name": "limit", @@ -14837,8 +14303,7 @@ "Moderation" ], "summary": "Block/Review Flagged Message", - "description": "Enables moderators to review flagged messages and take action by either approving acceptable content or blocking policy violations, automatically transferring flagged messages to the reviewed list for tracking purposes.", - "operationId": "chat-api-review-block-flagged-message", + "description": "Reviews a flagged message and takes action. Approve to dismiss the flag, or block to hide the message. Reviewed messages are moved to the reviewed list for audit purposes.", "parameters": [ { "name": "id", @@ -14918,13 +14383,12 @@ "Metrics" ], "summary": "Usage Metrics", - "description": "Usage metrics of an app.", - "operationId": "usage-metrics", + "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.\n *\n * **Available Metrics:**\n * - **audio_minutes**: Total minutes of audio calls\n * - **video_minutes**: Total minutes of video calls\n * - **recorded_minutes**: Total minutes of recorded calls\n * - **active_users**: Number of unique users who were active\n * - **concurrent_users**: Peak concurrent users during the period\n *\n * **Limitations:**\n * - Maximum date range: 90 days\n * - Data retention: 12 months\n * - Timestamps must be in milliseconds\n * - Requires API key with fullAccess scope", "parameters": [ { "name": "fromDate", "in": "query", - "description": "Unix timestamp from which usage has to be fetched.", + "description": "Start of the date range as a Unix timestamp in milliseconds. Usage data from this point forward will be included. Example: 1630164253000 for September 2021.", "required": true, "schema": { "type": "integer" @@ -14933,7 +14397,7 @@ { "name": "toDate", "in": "query", - "description": "Unix timestamp till which usage has to be fetched.", + "description": "End of the date range as a Unix timestamp in milliseconds. Usage data up to this point will be included. Must be greater than fromDate.", "required": true, "schema": { "type": "integer" @@ -14942,7 +14406,7 @@ ], "responses": { "200": { - "description": "Usage metrics of an app.", + "description": "Usage metrics for the specified date range. All metrics are aggregated totals for the period.", "content": { "application/json": { "schema": { @@ -14985,11 +14449,10 @@ "Metrics" ], "summary": "Message Metrics", - "description": "Gives the number of messages sent and receipts received in an interval of five minutes.", - "operationId": "message-receipt-metrics", + "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.\n *\n * **Available Metrics per Interval:**\n * - **messagesSent**: Number of messages sent during the interval\n * - **readReceipts**: Number of read receipts received\n * - **deliveryReceipts**: Number of delivery receipts received\n *\n * **Data Format:**\n * Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.\n *\n * **Limitations:**\n * - Returns last 1 hour of data only\n * - Data points are in 5-minute intervals\n * - Real-time data may have up to 5 minutes delay\n * - Requires API key with fullAccess scope", "responses": { "200": { - "description": "Gives the number of messages sent and receipts received in an interval of five minutes.", + "description": "Message metrics broken down into 5-minute intervals. Use this to visualize message activity over time.", "content": { "application/json": { "schema": { @@ -15039,18 +14502,22 @@ "components": { "schemas": { "APIKeySchema": { - "description": "Response data", + "description": "Represents an API key used for authenticating requests to the CometChat REST API. API keys have different scopes that determine what operations they can perform.", "properties": { "apiKey": { + "description": "The API key string used in the apiKey header for authentication. Keep this secure and never expose in client-side code", "type": "string" }, "name": { + "description": "Display name for the API key to help identify its purpose (e.g., 'Production Server', 'Development')", "type": "string" }, "scope": { + "description": "Permission scope of the API key. Values: 'fullAccess' (all operations), 'authOnly' (only create auth tokens for users)", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the API key was created", "type": "integer" } }, @@ -15066,12 +14533,15 @@ ] }, "CommonFields": { + "description": "Common fields required for all push notification token registrations", "properties": { "authToken": { + "description": "The user's authentication token. Links the push token to a specific user session", "type": "string", "example": "superhero3_1710141033938cf7e3c67cc44465440d" }, "timezone": { + "description": "User's timezone for scheduling notifications appropriately (IANA timezone format)", "type": "string", "example": "Asia/Kolkata" } @@ -15667,10 +15137,12 @@ "type": "object" }, "PlatformAPNS": { + "description": "APNS (Apple Push Notification Service) token registration for iOS devices", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for APNS-based push notifications", "type": "string", "enum": [ "apns_ios_device", @@ -15680,10 +15152,12 @@ ] }, "providerId": { + "description": "ID of the APNS provider configuration to use for sending notifications", "type": "string", "example": "apns-provider-2" }, "deviceToken": { + "description": "The APNS device token obtained from iOS", "type": "string" } }, @@ -15695,10 +15169,12 @@ ] }, "PlatformFCM": { + "description": "FCM (Firebase Cloud Messaging) token registration for Android, iOS, Web, Flutter, React Native, and Ionic platforms", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for FCM-based push notifications", "type": "string", "enum": [ "fcm_android", @@ -15713,10 +15189,12 @@ ] }, "providerId": { + "description": "ID of the FCM provider configuration to use for sending notifications", "type": "string", "example": "fcm-provider-2" }, "fcmToken": { + "description": "The FCM registration token obtained from Firebase SDK", "type": "string" } }, @@ -15728,10 +15206,12 @@ ] }, "PlatformVOIP": { + "description": "APNS VOIP token registration for iOS voice/video call push notifications", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for VOIP push notifications", "type": "string", "enum": [ "apns_ios_voip", @@ -15741,10 +15221,12 @@ ] }, "providerId": { + "description": "ID of the APNS VOIP provider configuration to use", "type": "string", "example": "apns-provider-2" }, "voipToken": { + "description": "The APNS VOIP token obtained from iOS for call notifications", "type": "string" } }, @@ -15904,174 +15386,6 @@ }, "type": "object" }, - "SchedulerSchema": { - "required": [ - "interactionGoal", - "allowSenderInteraction", - "interactiveData" - ], - "properties": { - "interactionGoal": { - "required": [ - "type", - "elementIds" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "anyAction", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "required": [ - "title", - "avatarUrl", - "bufferTime", - "icsFileUrl", - "availability", - "timezoneCode", - "duration", - "scheduleElement", - "goalCompletionText", - "dateRangeStart", - "dateRangeEnd" - ], - "properties": { - "title": { - "type": "string" - }, - "avatarUrl": { - "type": "string" - }, - "bufferTime": { - "type": "integer" - }, - "icsFileUrl": { - "type": "string" - }, - "timezoneCode": { - "type": "string" - }, - "duration": { - "type": "integer" - }, - "scheduleElement": { - "required": [ - "action", - "elementId", - "buttonText", - "elementType", - "disableAfterInteracted" - ], - "properties": { - "action": { - "required": [ - "url", - "actionType", - "method", - "dataKey", - "headers", - "payload" - ], - "properties": { - "url": { - "type": "string" - }, - "actionType": { - "type": "string" - }, - "method": { - "type": "string" - }, - "dataKey": { - "type": "string" - }, - "headers": { - "type": "object" - }, - "payload": { - "required": [ - "data", - "type", - "category", - "receiver", - "receiverType" - ], - "properties": { - "data": { - "properties": { - "text": { - "type": "string" - } - }, - "type": "object" - }, - "type": { - "type": "string" - }, - "category": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "receiverType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "elementType": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - } - }, - "type": "object" - }, - "goalCompletionText": { - "type": "string" - }, - "dateRangeStart": { - "type": "string", - "format": "date" - }, - "dateRangeEnd": { - "type": "string", - "format": "date" - } - }, - "type": "object" - } - }, - "type": "object" - }, "SentenceSimilaritySchema": { "required": [ "category", @@ -16223,30 +15537,6 @@ } ] }, - "interactiveFormTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveFormTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, "emailSubjectTemplateDefault": { "properties": { "subjectGroup": { @@ -16302,21 +15592,6 @@ }, "type": "object" }, - "TimeRange": { - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, "UserFilter": { "required": [ "entity", @@ -16411,121 +15686,169 @@ "type": "object" }, "authTokenSchema": { - "description": "Response data", + "description": "Represents an authentication token for a user. Auth tokens are used by client SDKs to authenticate users and establish real-time connections.", "properties": { "uid": { + "description": "Unique identifier of the user this auth token belongs to", "type": "string" }, "authToken": { + "description": "The authentication token string. Pass this to the CometChat SDK login method to authenticate the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the auth token was created", "type": "integer" } }, "type": "object" }, "bannedUserSchema": { - "description": "Response data", + "description": "Represents a user who has been banned from a group. Banned users cannot rejoin the group until unbanned.", "properties": { "uid": { + "description": "Unique identifier of the banned user", "type": "string" }, "name": { + "description": "Display name of the banned user", "type": "string" }, "avatar": { + "description": "URL of the banned user's profile picture", "type": "string" }, "status": { + "description": "Online presence status of the banned user", "type": "string" }, "role": { + "description": "Role assigned to the banned user in the CometChat app", "type": "string" }, "scope": { + "description": "The user's membership scope before being banned. Values: 'admin', 'moderator', 'participant'", "type": "string" }, "isBanned": { + "description": "Always true for banned user records", "type": "boolean" }, "joinedAt": { + "description": "Unix timestamp when the user originally joined the group", "type": "integer" }, "createdAt": { + "description": "Unix timestamp when the user's account was created", "type": "integer" } }, "type": "object" }, "blockedUserSchema": { - "description": "Response data", + "description": "Represents a blocked user relationship. Contains information about when and how the block was established.", "properties": { + "uid": { + "description": "Unique identifier of the blocked user", + "type": "string" + }, + "name": { + "description": "Display name of the blocked user", + "type": "string" + }, + "avatar": { + "description": "URL of the blocked user's profile picture", + "type": "string" + }, "blockedByMe": { + "description": "True if the authenticated user blocked this user", "type": "boolean" }, "blockedByMeAt": { + "description": "Unix timestamp when the authenticated user blocked this user", "type": "integer" }, + "hasBlockedMe": { + "description": "True if this user has blocked the authenticated user", + "type": "boolean" + }, "blockedAt": { + "description": "Unix timestamp when the block relationship was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the block relationship was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the blocked user relationship. Format: 'user_'", "type": "string" } }, "type": "object" }, "conversationSchema": { - "description": "Response data", + "description": "Represents a conversation thread between users or within a group. Contains the conversation metadata, last message, and the entity (user/group) the conversation is with.", "properties": { "conversationId": { + "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", "type": "string" }, "conversationType": { + "description": "Type of conversation. Values: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { + "description": "Number of unread messages in this conversation for the authenticated user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the conversation was created (first message sent)", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the conversation was last updated (last message sent)", "type": "integer" }, "lastMessage": { + "description": "The most recent message in this conversation", "properties": { "id": { + "description": "Unique identifier of the last message", "type": "string" }, "conversationId": { + "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { + "description": "UID of the user who sent the message", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the message receiver", "type": "string" }, "category": { + "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Message type (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { + "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { + "description": "Action type for action messages", "type": "string" } }, @@ -16537,14 +15860,18 @@ ] }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" }, "receipts": { + "description": "Message delivery and read receipts", "properties": { "data": { + "description": "Array of receipt records", "type": "array", "items": {} } @@ -16555,54 +15882,86 @@ "type": "object" }, "conversationWith": { + "description": "The user or group entity this conversation is with", "type": "object" } }, "type": "object" }, "conversationWithSchema": { + "description": "Represents the entity (user or group) that a conversation is with. Contains either user or group properties depending on conversation type.", "properties": { + "uid": { + "description": "Unique identifier of the user (for user conversations)", + "type": "string" + }, "guid": { + "description": "Unique identifier of the group (for group conversations)", "type": "string" }, "name": { + "description": "Display name of the user or group", "type": "string" }, "description": { + "description": "Description of the group (for group conversations)", + "type": "string" + }, + "avatar": { + "description": "URL of the user's avatar (for user conversations)", "type": "string" }, "icon": { + "description": "URL of the group's icon (for group conversations)", "type": "string" }, "type": { + "description": "Group type: 'public', 'password', or 'private' (for group conversations)", + "type": "string" + }, + "status": { + "description": "Online status of the user: 'available' or 'offline' (for user conversations)", + "type": "string" + }, + "role": { + "description": "Role of the user (for user conversations)", "type": "string" }, "scope": { + "description": "Authenticated user's scope in the group: 'admin', 'moderator', 'participant' (for group conversations)", "type": "string" }, "membersCount": { + "description": "Number of members in the group (for group conversations)", "type": "integer" }, "joinedAt": { + "description": "Unix timestamp when the authenticated user joined the group (for group conversations)", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this entity", "type": "string" }, "hasJoined": { + "description": "Whether the authenticated user has joined the group (for group conversations)", "type": "boolean", "default": "true" }, "createdAt": { + "description": "Unix timestamp when the user/group was created", "type": "integer" }, "owner": { + "description": "UID of the group owner (for group conversations)", "type": "string" }, "updatedAt": { + "description": "Unix timestamp when the user/group was last updated", "type": "integer" }, "updatedBy": { + "description": "UID of the user who last updated the group (for group conversations)", "type": "string" } }, @@ -16641,17 +16000,18 @@ "type": "object" }, "customCategorySchema": { + "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", "properties": { "receiver": { - "description": "The receiver of the message.", + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "muid": { - "description": "The muid will be a unique Identifier of the message.", + "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", "type": "string" }, "receiverType": { - "description": "The receiverType of the message. either user or group", + "description": "Specifies whether the message is being sent to a user or group", "type": "string", "enum": [ "user", @@ -16659,7 +16019,7 @@ ] }, "category": { - "description": "Category of the message. The available categories is custom.", + "description": "Message category. Use 'custom' for application-defined message types", "type": "string", "default": "custom", "enum": [ @@ -16667,37 +16027,35 @@ ] }, "quotedMessageId": { - "description": "ID of the message being quoted.\nIf provided, the send message response will include a `quotedMessage` node\nin the response containing the referenced message object.", - "type": "string", - "default": "message", - "enum": [ - "message" - ] + "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", + "type": "string" }, "type": { - "description": "Type of the message.", + "description": "Application-defined message type (e.g., 'location', 'poll', 'payment')", "type": "string" }, "data": { - "description": "JSON containing message attributes.", + "description": "Custom message payload", "properties": { "customData": { - "description": "when category==”custom”, this property can have any JSON object.", + "description": "Any JSON object containing your custom message data", "type": "object" } }, "type": "object" }, "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", "properties": { "uids": { + "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { + "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -16707,7 +16065,7 @@ "type": "object" }, "tags": { - "description": "A list of tags to identify specific messages.", + "description": "Custom tags for categorizing and filtering messages", "type": "array", "items": { "type": "string" @@ -16716,31 +16074,27 @@ }, "type": "object" }, - "customInteractiveSchema": { - "title": "Custom Interactive Schema", - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, "dataPointSchema": { - "description": "Response data", + "description": "Represents a single data point in messaging metrics. Contains counts for messages sent and receipts within a specific time range.", "properties": { "messagesSent": { + "description": "Total number of messages sent during this time period", "type": "integer" }, "readReceipts": { + "description": "Total number of read receipts generated during this time period", "type": "integer" }, "deliveryReceipts": { + "description": "Total number of delivery receipts generated during this time period", "type": "integer" }, "startTime": { + "description": "Unix timestamp marking the start of this data point's time range", "type": "integer" }, "endTime": { + "description": "Unix timestamp marking the end of this data point's time range", "type": "integer" } }, @@ -16820,139 +16174,180 @@ "type": "object" }, "groupEntitySchema": { - "description": "Response data", + "description": "Represents an action message generated for group member operations (join, leave, kick, ban, scope change). Contains details about who performed the action and who was affected.", "properties": { "id": { + "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { + "description": "Conversation ID of the group. Format: 'group_'", "type": "string" }, "sender": { + "description": "UID of the user who triggered this action (e.g., admin who kicked a member)", "type": "string" }, "receiverType": { + "description": "Always 'group' for group member actions", "type": "string" }, "receiver": { + "description": "GUID of the group where the action occurred", "type": "string" }, "category": { + "description": "Always 'action' for group member operations", "type": "string" }, "type": { + "description": "Type of action: 'groupMemberJoined', 'groupMemberLeft', 'groupMemberKicked', 'groupMemberBanned', 'groupMemberScopeChanged'", "type": "string" }, "data": { + "description": "Contains action details and entity information", "properties": { "action": { + "description": "The action that was performed (e.g., 'joined', 'left', 'kicked', 'banned', 'scopeChanged')", "type": "string" }, "entities": { + "description": "Contains information about the actors and targets of the action", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "on": { + "description": "The user who was affected by the action (e.g., the kicked member)", "properties": { "entity": { + "description": "User details of the affected member", "properties": { "uid": { + "description": "Unique identifier of the affected user", "type": "string" }, "name": { + "description": "Display name of the affected user", "type": "string" }, "role": { + "description": "Role assigned to the affected user", "type": "string" }, "avatar": { + "description": "URL of the affected user's avatar", "type": "string" }, "status": { + "description": "Online status of the affected user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the affected user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The group where the action occurred", "properties": { "entity": { + "description": "Group details", "properties": { "guid": { + "description": "Unique identifier of the group", "type": "string" }, "icon": { + "description": "URL of the group's icon", "type": "string" }, "name": { + "description": "Display name of the group", "type": "string" }, "tags": { + "description": "Tags associated with the group", "type": "array", "items": { "type": "string" } }, "type": { + "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { + "description": "UID of the group owner", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the group was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the group was last updated", "type": "integer" }, "description": { + "description": "Description of the group", "type": "string" }, "membersCount": { + "description": "Current number of members in the group", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this group", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'group'", "type": "string" } }, @@ -16965,72 +16360,91 @@ "type": "object" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "metadata": { + "description": "Custom metadata associated with the user", "properties": { "email": { + "description": "Example metadata field", "type": "string" } }, "type": "object" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "groupMemberListSchema": { - "description": "Response data", + "description": "Represents a member of a group. Contains user information along with their group-specific membership details.", "properties": { "uid": { + "description": "Unique identifier of the group member", "type": "string" }, "name": { + "description": "Display name of the group member", "type": "string" }, "avatar": { + "description": "URL of the member's avatar image", "type": "string" }, "status": { + "description": "Online status of the member: 'available' or 'offline'", "type": "string" }, "role": { + "description": "Role assigned to the member in the CometChat app", "type": "string" }, "scope": { + "description": "Member's scope within this group. Values: 'admin' (full control), 'moderator' (can manage members), 'participant' (regular member)", "type": "string" }, "joinedAt": { + "description": "Unix timestamp when the member joined this group", "type": "integer" }, "createdAt": { + "description": "Unix timestamp when the member's user account was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the member's user account was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for direct messaging with this member. Format: 'user_'", "type": "string" } }, "type": "object" }, "groupMemberSchema": { - "description": "Response data", + "description": "Response schema for bulk group member operations. Contains results for each member organized by their scope (admin, moderator, participant) or ban status.", "properties": { "usersToBan": { + "description": "Results for users being banned from the group", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the ban operation succeeded", "type": "boolean" } }, @@ -17040,13 +16454,17 @@ "type": "object" }, "admins": { + "description": "Results for users being added as admins", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -17056,13 +16474,17 @@ "type": "object" }, "moderators": { + "description": "Results for users being added as moderators", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -17072,13 +16494,17 @@ "type": "object" }, "participants": { + "description": "Results for users being added as participants", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -17146,283 +16572,91 @@ "type": "object" }, "groupSchema": { - "description": "Response data", + "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", "properties": { "guid": { + "description": "Unique identifier for the group. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { + "description": "Display name of the group shown in chat interfaces. Max length: 100 characters", "type": "string" }, "description": { + "description": "Optional description of the group's purpose or topic", "type": "string" }, "icon": { + "description": "URL of the group's icon/avatar image. Must be a valid, publicly accessible URL", "type": "string" }, "type": { + "description": "Access type of the group. Values: 'public' (anyone can join), 'password' (requires password to join), 'private' (invite-only, users must be added by admin/owner)", + "type": "string" + }, + "password": { + "description": "Password required to join the group (only for type='password'). Not returned in responses for security", "type": "string" }, "scope": { + "description": "The authenticated user's membership scope in this group. Values: 'admin', 'moderator', 'participant'. Only present in user-context responses", "type": "string" }, "membersCount": { + "description": "Current number of members in the group", "type": "integer" }, "joinedAt": { + "description": "Unix timestamp when the authenticated user joined this group. Only present in user-context responses", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this group. Format: 'group_'", "type": "string" }, "hasJoined": { + "description": "Indicates if the authenticated user is a member of this group. Only present in user-context responses", "type": "boolean" }, "owner": { + "description": "UID of the user who owns this group. The owner has full administrative privileges", "type": "string" }, + "metadata": { + "description": "Custom key-value pairs for storing application-specific group data. Max size: 100KB", + "type": "object" + }, "tags": { + "description": "Custom tags for categorizing and filtering groups", "type": "array", "items": { "type": "string" } }, "createdAt": { + "description": "Unix timestamp when the group was created", + "type": "integer" + }, + "updatedAt": { + "description": "Unix timestamp when the group was last updated", "type": "integer" } }, "type": "object" }, - "interactionCardSchema": { - "title": "Card Schema", + "messageCategorySchema": { + "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" + "receiver": { + "description": "The UID of the recipient user or GUID of the recipient group", + "type": "string" }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "cardActions": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "interactionFormSchema": { - "title": "Form Schema", - "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "formFields": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "interactiveCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" + "muid": { + "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", + "type": "string" }, "receiverType": { - "description": "The receiverType of the message. either user or group", + "description": "Specifies whether the message is being sent to a user or group", "type": "string", "enum": [ "user", @@ -17430,263 +16664,7 @@ ] }, "category": { - "description": "Category of the message. The available categories is interactive.", - "type": "string", - "default": "interactive", - "enum": [ - "interactive" - ] - }, - "type": { - "description": "Type of the message. The available values are card, form and customInteractive.", - "type": "string", - "default": "card", - "enum": [ - "card", - "form", - "customInteractive", - "scheduler" - ] - }, - "data": { - "description": "JSON containing message attributes. Please select the appropriate schema based on the type property.", - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/interactionFormSchema" - }, - { - "$ref": "#/components/schemas/interactionCardSchema" - }, - { - "$ref": "#/components/schemas/SchedulerSchema" - }, - { - "$ref": "#/components/schemas/customInteractiveSchema" - } - ] - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object", - "example": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "superhero2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "superhero1", - "tags": [ - "tag1" - ] - } - }, - "interactiveMessageSchema": { - "properties": { - "current": { - "properties": { - "limit": { - "type": "integer" - }, - "count": { - "type": "integer" - } - }, - "type": "object" - }, - "next": { - "properties": { - "affix": { - "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "messageCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories are message and custom.", + "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video)", "type": "string", "default": "message", "enum": [ @@ -17694,11 +16672,11 @@ ] }, "quotedMessageId": { - "description": "ID of the message being quoted.\nIf provided, the send message response will include a `quotedMessage` node\nin the response containing the referenced message object.", + "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", "type": "string" }, "type": { - "description": "Type of the message. The available values are text, image, file, audio, video.", + "description": "The type of message content being sent", "type": "string", "default": "text", "enum": [ @@ -17710,37 +16688,39 @@ ] }, "data": { - "description": "JSON containing message attributes.", + "description": "Message content and attachments", "properties": { "text": { + "description": "Text content of the message (required for type='text')", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for application-specific data", "type": "object" }, "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + "description": "Array of file attachments. Required for image, video, audio, or file message types", "type": "array", "items": { "properties": { "url": { - "description": "Contains the URL of the attachment.", + "description": "Public URL where the attachment file is hosted", "type": "string" }, "name": { - "description": "Name of the attachment.", + "description": "Display name of the attachment file", "type": "string" }, "mimeType": { - "description": "Mime Type of attachment.", + "description": "MIME type of the attachment (e.g., 'image/png', 'application/pdf')", "type": "string" }, "extension": { - "description": "The extension of the attachment.", + "description": "File extension without the dot (e.g., 'png', 'pdf')", "type": "string" }, "size": { - "description": "The size of the attachment(in bytes).", + "description": "File size in bytes", "type": "string" } }, @@ -17751,15 +16731,17 @@ "type": "object" }, "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", "properties": { "uids": { + "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { + "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -17769,7 +16751,7 @@ "type": "object" }, "tags": { - "description": "A list of tags to identify specific messages.", + "description": "Custom tags for categorizing and filtering messages", "type": "array", "items": { "type": "string" @@ -17779,27 +16761,35 @@ "type": "object" }, "messageMetaSchema": { + "description": "Pagination metadata for message list responses. Contains information about the current page and cursor for fetching the next page.", "properties": { "current": { + "description": "Information about the current page of results", "properties": { "limit": { + "description": "Maximum number of messages requested per page", "type": "integer" }, "count": { + "description": "Actual number of messages returned in this response", "type": "integer" } }, "type": "object" }, "next": { + "description": "Cursor information for fetching the next page of messages", "properties": { "affix": { + "description": "Pagination direction indicator ('append' or 'prepend')", "type": "string" }, "sentAt": { + "description": "Unix timestamp of the last message, used as cursor for next page", "type": "integer" }, "id": { + "description": "ID of the last message, used as cursor for next page", "type": "string" } }, @@ -17809,102 +16799,133 @@ "type": "object" }, "messageReactionSchema": { - "description": "Response data", + "description": "Represents a message with its aggregated reaction counts. Extends the standard message schema with reaction summary information.", "properties": { "id": { + "description": "Unique identifier for this message", "type": "string" }, "conversationId": { + "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "UID of the user who sent this message", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { + "description": "UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "Category of the message: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Type of message content (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { + "description": "Contains the message content and metadata", "properties": { "text": { + "description": "Text content of the message", "type": "string" }, "metadata": { + "description": "Custom metadata attached to the message", "type": "object" }, "entities": { + "description": "Sender and receiver entity information", "properties": { "sender": { + "description": "Information about the message sender", "properties": { "entity": { + "description": "Sender user details", "properties": { "uid": { + "description": "Sender's unique identifier", "type": "string" }, "name": { + "description": "Sender's display name", "type": "string" }, "role": { + "description": "Sender's role", "type": "string" }, "avatar": { + "description": "URL of sender's avatar", "type": "string" }, "status": { + "description": "Sender's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "integer" }, "conversationId": { + "description": "Conversation ID for sender context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Information about the message receiver", "properties": { "entity": { + "description": "Receiver entity details", "properties": { "uid": { + "description": "Receiver's unique identifier", "type": "string" }, "name": { + "description": "Receiver's display name", "type": "string" }, "role": { + "description": "Receiver's role", "type": "string" }, "avatar": { + "description": "URL of receiver's avatar", "type": "string" }, "status": { + "description": "Receiver's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "integer" }, "conversationId": { + "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -17917,16 +16938,20 @@ "type": "object" }, "reactions": { + "description": "Aggregated reaction counts for this message, grouped by reaction type", "type": "array", "items": { "properties": { "reaction": { + "description": "The reaction emoji or identifier", "type": "string" }, "count": { + "description": "Total number of users who added this reaction", "type": "integer" }, "reactedByMe": { + "description": "Whether the current authenticated user has added this reaction", "type": "boolean" } }, @@ -17934,111 +16959,144 @@ } }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "messageSchema": { - "description": "Response data", + "description": "Represents a message sent between users or in a group conversation. Contains the message content, sender/receiver information, and metadata.", "properties": { "id": { + "description": "Unique identifier for this message, auto-generated by CometChat", "type": "string" }, "conversationId": { + "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "The UID of the user who sent this message", "type": "string" }, "receiverType": { + "description": "Indicates whether the message was sent to a user or group. Values: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "The category of the message. Values: 'message' for standard messages (text, image, file, audio, video), 'custom' for custom message types, 'action' for system-generated action messages", "type": "string" }, "type": { + "description": "The type of message content. For category='message': 'text', 'image', 'file', 'audio', 'video'. For category='custom': any custom type string defined by your application", "type": "string" }, "data": { + "description": "Contains the message content and related metadata", "properties": { "text": { + "description": "The text content of the message (for text messages)", "type": "string" }, "metadata": { + "description": "Custom key-value pairs attached to the message for application-specific data", "type": "object" }, "entities": { + "description": "Contains detailed information about the sender and receiver entities", "properties": { "sender": { + "description": "Information about the message sender", "properties": { "entity": { + "description": "The sender user object", "properties": { "uid": { + "description": "Unique identifier of the sender", "type": "string" }, "name": { + "description": "Display name of the sender", "type": "string" }, "role": { + "description": "Role assigned to the sender (e.g., 'default', 'admin')", "type": "string" }, "avatar": { + "description": "URL of the sender's avatar image", "type": "string" }, "status": { + "description": "Online status of the sender ('available' or 'offline')", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the sender's account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the sender's context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user' for sender", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Information about the message receiver (user or group)", "properties": { "entity": { + "description": "The receiver entity object (user or group)", "properties": { "uid": { + "description": "Unique identifier of the receiver (for user receivers)", "type": "string" }, "name": { + "description": "Display name of the receiver", "type": "string" }, "role": { + "description": "Role assigned to the receiver (for user receivers)", "type": "string" }, "avatar": { + "description": "URL of the receiver's avatar image", "type": "string" }, "status": { + "description": "Online status of the receiver ('available' or 'offline')", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the receiver's account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the receiver's context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' for direct messages, 'group' for group messages", "type": "string" } }, @@ -18051,9 +17109,11 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated (e.g., edited)", "type": "integer" } }, @@ -18159,118 +17219,154 @@ "type": "object" }, "objectEntitySchema": { + "description": "Contains entity information for action messages, describing who performed an action, who it affects, and what was acted upon.", "properties": { "entities": { + "description": "Container for action-related entities", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The entity affected by the action (user or group)", "properties": { "entity": { + "description": "Details of the affected entity", "properties": { "guid": { + "description": "Group identifier (for group entities)", "type": "string" }, "icon": { + "description": "URL of the group icon", "type": "string" }, "name": { + "description": "Display name of the entity", "type": "string" }, "type": { + "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { + "description": "UID of the group owner", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the entity was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the entity was last updated", "type": "integer" }, "updatedBy": { + "description": "UID of the user who last updated the entity", "type": "integer" }, "description": { + "description": "Description of the group", "type": "integer" }, "membersCount": { + "description": "Number of members in the group", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this entity", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { + "description": "The object that was acted upon (e.g., a user being added/removed)", "properties": { "entity": { + "description": "Details of the acted-upon entity", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "link": { + "description": "Profile link of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the user was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this user", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, typically 'user'", "type": "string" } }, @@ -18355,7 +17451,7 @@ "type": "object" }, "pnTokenSchema": { - "description": "Response data", + "description": "Push notification token registration schema. Supports FCM (Firebase Cloud Messaging), APNS (Apple Push Notification Service), and VOIP tokens for different platforms.", "oneOf": [ { "$ref": "#/components/schemas/PlatformFCM" @@ -18514,44 +17610,57 @@ "items": {} }, "reactionSchema": { - "description": "Response data", + "description": "Represents a single reaction added to a message by a user. Contains the reaction emoji/identifier and information about who reacted.", "properties": { "id": { + "description": "Unique identifier for this reaction record", "type": "string" }, "messageId": { + "description": "ID of the message this reaction is attached to", "type": "string" }, "reaction": { + "description": "The reaction emoji or identifier (e.g., '👍', 'heart', 'laugh')", "type": "string" }, "uid": { + "description": "UID of the user who added this reaction", "type": "string" }, "reactedAt": { + "description": "Unix timestamp when the reaction was added", "type": "integer" }, "reactedBy": { + "description": "Detailed information about the user who added the reaction", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the user's context", "type": "string" } }, @@ -18561,35 +17670,40 @@ "type": "object" }, "roleSchema": { - "description": "Response data", + "description": "Represents a user role for access control. Roles define what actions users can perform and who they can interact with in the chat system.", "properties": { "role": { + "description": "Unique identifier for the role. This value is assigned to users via the 'role' property", "type": "string" }, "name": { + "description": "Display name for the role (e.g., 'Administrator', 'Moderator', 'Premium User')", "type": "string" }, "description": { + "description": "Human-readable description of the role's purpose and permissions", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for storing application-specific role data", "type": "object" }, - "email": { - "type": "string" - }, "settings": { + "description": "Role-specific settings that control user capabilities", "properties": { "listUsers": { + "description": "Controls which users this role can see. Values: 'all' (see all users), 'friends' (only friends), 'none' (no users)", "type": "string" }, "sendMessagesTo": { + "description": "Controls who this role can send messages to. Values: 'all' (anyone), 'friends' (only friends), 'none' (no one)", "type": "string" } }, "type": "object" }, "createdAt": { + "description": "Unix timestamp when the role was created", "type": "integer" } }, @@ -18630,15 +17744,18 @@ "type": "object" }, "triggerSchema": { - "description": "Response data", + "description": "Represents an event trigger that can be assigned to webhooks. Triggers define which events will cause webhook notifications to be sent.", "properties": { "id": { + "description": "Unique identifier for the trigger (e.g., 'message_sent', 'user_created', 'group_member_joined')", "type": "string" }, "category": { + "description": "Category grouping for the trigger. Values: 'message' (message events), 'user' (user events), 'group' (group events), 'call' (call events)", "type": "string" }, "description": { + "description": "Human-readable description of when this trigger fires", "type": "string" } }, @@ -18662,201 +17779,262 @@ "type": "object" }, "unregisterpnToken": { + "description": "Request body for unregistering a push notification token", "required": [ "authToken" ], "properties": { "authToken": { + "description": "The user's authentication token associated with the push token to unregister", "type": "string" } }, "type": "object" }, "updatemessageSchema": { - "description": "Response data", + "description": "Represents an action message generated when a message is edited or updated. Contains information about who made the change, the affected message, and the action performed.", "properties": { "id": { + "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { + "description": "Identifier linking this action to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "The UID of the user who triggered this action (typically the message editor)", "type": "string" }, "receiverType": { + "description": "Indicates whether the original message was in a user or group conversation. Values: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "Always 'action' for update message notifications", "type": "string" }, "type": { + "description": "The type of action performed, e.g., 'edited' for message edits", "type": "string" }, "data": { + "description": "Contains details about the action and affected entities", "properties": { "action": { + "description": "The action that was performed (e.g., 'edited')", "type": "string" }, "entities": { + "description": "Contains information about who performed the action, who it affects, and what was changed", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user who performed the action", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the user was last updated", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The user or group affected by the action", "properties": { "entity": { + "description": "Details of the affected entity", "properties": { "uid": { + "description": "Unique identifier of the affected user", "type": "string" }, "name": { + "description": "Display name of the affected user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { + "description": "The message that was acted upon", "properties": { "entity": { + "description": "The original message that was edited", "properties": { "id": { + "description": "Unique identifier of the edited message", "type": "string" }, "conversationId": { + "description": "Conversation ID of the edited message", "type": "string" }, "sender": { + "description": "UID of the original message sender", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the message receiver", "type": "string" }, "category": { + "description": "Category of the original message", "type": "string" }, "type": { + "description": "Type of the original message", "type": "string" }, "data": { + "description": "Content of the edited message", "properties": { "text": { + "description": "The updated text content", "type": "string" }, "entities": { + "description": "Sender and receiver entity information", "properties": { "sender": { + "description": "Sender information", "properties": { "entity": { + "description": "Sender user details", "properties": { "uid": { + "description": "Sender's unique identifier", "type": "string" }, "name": { + "description": "Sender's display name", "type": "string" }, "role": { + "description": "Sender's role", "type": "string" }, "avatar": { + "description": "URL of sender's avatar", "type": "string" }, "status": { + "description": "Sender's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Receiver information", "properties": { "entity": { + "description": "Receiver entity details", "properties": { "uid": { + "description": "Receiver's unique identifier", "type": "string" }, "name": { + "description": "Receiver's display name", "type": "string" }, "role": { + "description": "Receiver's role", "type": "string" }, "avatar": { + "description": "URL of receiver's avatar", "type": "string" }, "status": { + "description": "Receiver's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "string" }, "conversationId": { + "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -18869,18 +18047,23 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when the original message was sent", "type": "integer" }, "editedAt": { + "description": "Unix timestamp when the message was edited", "type": "integer" }, "editedBy": { + "description": "UID of the user who edited the message", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp of the last update", "type": "integer" }, "tags": { + "description": "Tags associated with the message", "type": "array", "items": {} } @@ -18888,6 +18071,7 @@ "type": "object" }, "entityType": { + "description": "Entity type, always 'message'", "type": "string" } }, @@ -18900,43 +18084,54 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when this action message was generated", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when this action message was last updated", "type": "integer" } }, "type": "object" }, "usageMetricsSchema": { - "description": "Response data", + "description": "Aggregated usage metrics for your CometChat app. Contains call minutes, user activity, and the time range for the data.", "properties": { "metrics": { + "description": "Usage metric values for the specified time range", "properties": { "audio_minutes": { + "description": "Total minutes of audio calls during the time range", "type": "integer" }, "video_minutes": { + "description": "Total minutes of video calls during the time range", "type": "integer" }, "recorded_minutes": { + "description": "Total minutes of recorded calls during the time range", "type": "integer" }, "active_users": { + "description": "Number of unique users who were active during the time range", "type": "integer" }, "concurrent_users": { + "description": "Peak number of users connected simultaneously during the time range", "type": "integer" } }, "type": "object" }, "time_range": { + "description": "The time range for which metrics are reported", "properties": { "fromDate": { + "description": "Unix timestamp marking the start of the metrics period", "type": "integer" }, "toDate": { + "description": "Unix timestamp marking the end of the metrics period", "type": "integer" } }, @@ -18946,52 +18141,67 @@ "type": "object" }, "userConversationSchema": { - "description": "Response data", + "description": "Represents a user-specific view of a conversation, including unread counts and last message from the user's perspective.", "properties": { "conversationId": { + "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 or 'group_' for groups", "type": "string" }, "conversationType": { + "description": "Type of conversation: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { + "description": "Number of unread messages for the authenticated user in this conversation", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the conversation was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp of the last activity in this conversation", "type": "integer" }, "lastMessage": { + "description": "The most recent message in this conversation", "properties": { "id": { + "description": "Unique identifier of the message", "type": "string" }, "conversationId": { + "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { + "description": "UID of the message sender", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the receiver", "type": "string" }, "category": { + "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Message type (e.g., 'text', 'image')", "type": "string" }, "data": { + "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { + "description": "Action type for action messages", "type": "string" } }, @@ -19003,15 +18213,18 @@ ] }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "conversationWith": { + "description": "The user or group entity this conversation is with", "type": "object" } }, @@ -19063,32 +18276,71 @@ "type": "object" }, "userSchema": { - "description": "Response data", + "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", "properties": { "uid": { + "description": "Unique identifier for the user. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { + "description": "Display name of the user shown in chat interfaces. Max length: 100 characters", "type": "string" }, "avatar": { + "description": "URL of the user's profile picture. Must be a valid, publicly accessible URL", + "type": "string" + }, + "link": { + "description": "Optional URL associated with the user's profile (e.g., website, social profile)", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for storing application-specific user data. Max size: 100KB", "properties": { "email": { + "description": "Example metadata field - you can store any custom data here", "type": "string" } }, "type": "object" }, "status": { + "description": "Online presence status of the user. Values: 'available' (online) or 'offline'", "type": "string" }, "role": { + "description": "Role assigned to the user for access control. Default role is 'default'. Custom roles can be created via the Roles API", "type": "string" }, + "lastActiveAt": { + "description": "Unix timestamp of the user's last activity in the app", + "type": "integer" + }, + "hasBlockedMe": { + "description": "Indicates if this user has blocked the authenticated user (only present in user-context responses)", + "type": "boolean" + }, + "blockedByMe": { + "description": "Indicates if the authenticated user has blocked this user (only present in user-context responses)", + "type": "boolean" + }, + "tags": { + "description": "Custom tags for categorizing and filtering users", + "type": "array", + "items": { + "type": "string" + } + }, + "deactivatedAt": { + "description": "Unix timestamp when the user was deactivated. Null if user is active", + "type": "integer" + }, "createdAt": { + "description": "Unix timestamp when the user account was created", + "type": "integer" + }, + "updatedAt": { + "description": "Unix timestamp when the user account was last updated", "type": "integer" } }, @@ -19140,33 +18392,49 @@ "type": "object" }, "webhookSchema": { - "description": "Response data", + "description": "Represents a webhook configuration for receiving real-time event notifications. Webhooks send HTTP POST requests to your server when specified events occur in CometChat.", "properties": { "id": { + "description": "Unique identifier for the webhook, auto-generated by CometChat", "type": "string" }, "name": { + "description": "Display name for the webhook to help identify its purpose", "type": "string" }, "webhookURL": { + "description": "The HTTPS endpoint URL where webhook payloads will be sent. Must be publicly accessible", "type": "string" }, "useBasicAuth": { + "description": "Whether to use HTTP Basic Authentication when sending webhook requests", "type": "boolean" }, "username": { + "description": "Username for HTTP Basic Authentication (required if useBasicAuth is true)", "type": "string" }, "password": { + "description": "Password for HTTP Basic Authentication (required if useBasicAuth is true). Not returned in responses", "type": "string" }, + "triggers": { + "description": "List of event triggers that will fire this webhook. See triggerSchema for available triggers", + "type": "array", + "items": { + "type": "string" + } + }, "enabled": { + "description": "Whether the webhook is currently active. Disabled webhooks will not receive event notifications", "type": "boolean" }, "createdAt": { + "description": "Unix timestamp when the webhook was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the webhook was last updated", "type": "integer" } }, @@ -19177,7 +18445,7 @@ "authToken": { "name": "authToken", "in": "path", - "description": "An auth token of a user.", + "description": "The authentication token string for a user. Used to identify and manage specific auth tokens", "required": true, "schema": { "type": "string" @@ -19192,7 +18460,7 @@ "conversationId": { "name": "conversationId", "in": "path", - "description": "(Required) conversation id", + "description": "Unique identifier of the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", "required": true, "schema": { "type": "string" @@ -19201,7 +18469,7 @@ "uid--conversation": { "name": "uid", "in": "path", - "description": "UID of the user whose conversation needs to be fetched.", + "description": "UID of the user whose conversation needs to be fetched", "required": true, "schema": { "type": "string" @@ -19210,7 +18478,7 @@ "guid--conversation": { "name": "guid", "in": "path", - "description": "GUID of the group whose conversation needs to be fetched.", + "description": "GUID of the group whose conversation needs to be fetched", "required": true, "schema": { "type": "string" @@ -19302,7 +18570,7 @@ "pushToken": { "name": "pushToken", "in": "path", - "description": "(Required) Push Token", + "description": "The push notification token to unregister or manage", "required": true, "schema": { "type": "string" @@ -19396,67 +18664,67 @@ "tags": [ { "name": "API Keys", - "description": "The API keys are used to authorise the APIs" + "description": "Manage API keys for authenticating REST API requests. API keys control access to your CometChat app and define permission scopes (fullAccess or authOnly). Use these endpoints to create, list, update, and delete API keys for different integration scenarios such as server-side operations or client authentication." }, { "name": "Roles", - "description": "The roles are used to give user access rights" + "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." }, { "name": "Users", - "description": "The REST collection for users." + "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed." }, { "name": "Auth Tokens", - "description": "The auth tokens are used to login end users using client SDKs." + "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." }, { "name": "Blocked Users", - "description": "The REST collections for blocked users." + "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." }, { "name": "Friends", - "description": "List,add and remove friends by passing UID in path variables" + "description": "Manage friend relationships between users. Friends lists enable features like showing online friends, friend-only messaging, and social connections. Use these endpoints to add friends, remove friends, and retrieve a user's friend list with pagination support." }, { "name": "Groups", - "description": "The REST collections for groups." + "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." }, { "name": "Banned Users", - "description": "Ban and Unban user by passing other UID in path variables." + "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." }, { "name": "Group Members", - "description": "The REST collections for group members." + "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." }, { "name": "Messages", - "description": "The REST collections for messages." + "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." }, { "name": "Conversations", - "description": "The REST collections for conversations." + "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." }, { "name": "Restrict Features", - "description": "Allows Restricting Features" + "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." }, { "name": "Metrics", - "description": "Allows accessing Data Metrics" + "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." }, { "name": "Triggers", - "description": "Allows adding triggers to a webhook." + "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." }, { "name": "Webhooks", - "description": "Allows accessing Webhooks." + "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." }, { "name": "Notifications", - "description": "Allows configuring Notifications core." + "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." }, { "name": "Moderation", diff --git a/data-import-apis.json b/data-import-apis.json index 98f9ea677..1822ab538 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Data Import APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API.", + "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build real-time chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", "version": "3.0" }, "servers": [ @@ -32,8 +32,7 @@ "Messages" ], "summary": "Import Messages", - "description": "The CometChat message import API allows customers to import their messages’ data into the CometChat systems.", - "operationId": "import-messages", + "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.\n *\n * **Use Cases:**\n * - Migrate chat history from another chat platform\n * - Restore messages from a backup\n * - Import historical conversations for compliance\n * - Pre-populate conversations with sample data for testing\n *\n * **Import Behavior:**\n * - Messages are created with the provided MUIDs (message unique IDs)\n * - Existing messages with the same MUID are updated\n * - Historical timestamps (sentAt, deliveredAt, readAt) are preserved\n * - Sender and receiver users/groups must exist or be provided in the request\n * - Conversations are automatically created if they don't exist\n *\n * **Limitations:**\n * - Maximum 100 messages per request\n * - MUID max length: 100 characters\n * - Message data max size: 100KB per message\n * - Attachment URLs must be publicly accessible\n * - Maximum 5 attachments per message\n * - Each attachment URL max length: 2048 characters\n * - Maximum 25 tags per message\n * - Requires API key with fullAccess scope\n * - sentAt timestamp is required for each message", "requestBody": { "content": { "application/json": { @@ -650,8 +649,7 @@ "Users" ], "summary": "Import Users", - "description": "The CometChat user import API allows customers to import their users’ data into the CometChat systems.", - "operationId": "import-users", + "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.\n *\n * **Use Cases:**\n * - Migrate users from another chat platform\n * - Sync users from your application database\n * - Restore users from a backup\n * - Pre-populate users before launching your app\n *\n * **Import Behavior:**\n * - Users are created with the provided UIDs (not auto-generated)\n * - Existing users with the same UID are updated\n * - Historical timestamps (createdAt, lastActiveAt) are preserved\n *\n * **Limitations:**\n * - Maximum 100 users per request\n * - UID max length: 100 characters\n * - Name max length: 100 characters\n * - Metadata max size: 100KB per user\n * - Requires API key with fullAccess scope", "requestBody": { "content": { "application/json": { @@ -804,8 +802,7 @@ "Groups" ], "summary": "Import Groups", - "description": "The CometChat group import API allows customers to import their groups’ data into the CometChat systems.", - "operationId": "import-groups", + "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.\n *\n * **Use Cases:**\n * - Migrate groups from another chat platform\n * - Create predefined groups for your organization\n * - Restore groups from a backup\n * - Set up team/department groups before launch\n *\n * **Import Behavior:**\n * - Groups are created with the provided GUIDs (not auto-generated)\n * - Existing groups with the same GUID are updated\n * - Group owner must exist or be provided in groupOwnerDetails\n * - Historical timestamps (createdAt) are preserved\n *\n * **Limitations:**\n * - Maximum 100 groups per request\n * - GUID max length: 100 characters\n * - Name max length: 100 characters\n * - Metadata max size: 100KB per group\n * - Requires API key with fullAccess scope", "requestBody": { "content": { "application/json": { @@ -1004,8 +1001,7 @@ "Groups" ], "summary": "Import Group Members", - "description": "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems.", - "operationId": "import-members", + "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.\n *\n * **Use Cases:**\n * - Migrate group memberships from another chat platform\n * - Set up team/department memberships before launch\n * - Restore group memberships from a backup\n * - Bulk add users to multiple groups during onboarding\n *\n * **Import Behavior:**\n * - Memberships are created with the provided member IDs (format: guid_member_uid)\n * - Existing memberships with the same ID are updated\n * - Both the group and user must exist or be provided in the request\n * - Historical timestamps (joinedAt) are preserved\n * - Member scope (admin, moderator, participant) is set as specified\n *\n * **Limitations:**\n * - Maximum 100 memberships per request\n * - Member ID format must be: {guid}_member_{uid}\n * - GUID max length: 100 characters\n * - UID max length: 100 characters\n * - Valid scope values: admin, moderator, participant\n * - Requires API key with fullAccess scope\n * - Group and user must exist or be provided in groupDetails/userDetails", "requestBody": { "content": { "application/json": { @@ -1242,18 +1238,22 @@ "components": { "schemas": { "APIKeySchema": { - "description": "Response data", + "description": "Represents an API key used for authenticating requests to the CometChat REST API. API keys have different scopes that determine what operations they can perform.", "properties": { "apiKey": { + "description": "The API key string used in the apiKey header for authentication. Keep this secure and never expose in client-side code", "type": "string" }, "name": { + "description": "Display name for the API key to help identify its purpose (e.g., 'Production Server', 'Development')", "type": "string" }, "scope": { + "description": "Permission scope of the API key. Values: 'fullAccess' (all operations), 'authOnly' (only create auth tokens for users)", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the API key was created", "type": "integer" } }, @@ -1269,12 +1269,15 @@ ] }, "CommonFields": { + "description": "Common fields required for all push notification token registrations", "properties": { "authToken": { + "description": "The user's authentication token. Links the push token to a specific user session", "type": "string", "example": "superhero3_1710141033938cf7e3c67cc44465440d" }, "timezone": { + "description": "User's timezone for scheduling notifications appropriately (IANA timezone format)", "type": "string", "example": "Asia/Kolkata" } @@ -1870,10 +1873,12 @@ "type": "object" }, "PlatformAPNS": { + "description": "APNS (Apple Push Notification Service) token registration for iOS devices", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for APNS-based push notifications", "type": "string", "enum": [ "apns_ios_device", @@ -1883,10 +1888,12 @@ ] }, "providerId": { + "description": "ID of the APNS provider configuration to use for sending notifications", "type": "string", "example": "apns-provider-2" }, "deviceToken": { + "description": "The APNS device token obtained from iOS", "type": "string" } }, @@ -1898,10 +1905,12 @@ ] }, "PlatformFCM": { + "description": "FCM (Firebase Cloud Messaging) token registration for Android, iOS, Web, Flutter, React Native, and Ionic platforms", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for FCM-based push notifications", "type": "string", "enum": [ "fcm_android", @@ -1916,10 +1925,12 @@ ] }, "providerId": { + "description": "ID of the FCM provider configuration to use for sending notifications", "type": "string", "example": "fcm-provider-2" }, "fcmToken": { + "description": "The FCM registration token obtained from Firebase SDK", "type": "string" } }, @@ -1931,10 +1942,12 @@ ] }, "PlatformVOIP": { + "description": "APNS VOIP token registration for iOS voice/video call push notifications", "allOf": [ { "properties": { "platform": { + "description": "Platform identifier for VOIP push notifications", "type": "string", "enum": [ "apns_ios_voip", @@ -1944,10 +1957,12 @@ ] }, "providerId": { + "description": "ID of the APNS VOIP provider configuration to use", "type": "string", "example": "apns-provider-2" }, "voipToken": { + "description": "The APNS VOIP token obtained from iOS for call notifications", "type": "string" } }, @@ -2107,174 +2122,6 @@ }, "type": "object" }, - "SchedulerSchema": { - "required": [ - "interactionGoal", - "allowSenderInteraction", - "interactiveData" - ], - "properties": { - "interactionGoal": { - "required": [ - "type", - "elementIds" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "anyAction", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "required": [ - "title", - "avatarUrl", - "bufferTime", - "icsFileUrl", - "availability", - "timezoneCode", - "duration", - "scheduleElement", - "goalCompletionText", - "dateRangeStart", - "dateRangeEnd" - ], - "properties": { - "title": { - "type": "string" - }, - "avatarUrl": { - "type": "string" - }, - "bufferTime": { - "type": "integer" - }, - "icsFileUrl": { - "type": "string" - }, - "timezoneCode": { - "type": "string" - }, - "duration": { - "type": "integer" - }, - "scheduleElement": { - "required": [ - "action", - "elementId", - "buttonText", - "elementType", - "disableAfterInteracted" - ], - "properties": { - "action": { - "required": [ - "url", - "actionType", - "method", - "dataKey", - "headers", - "payload" - ], - "properties": { - "url": { - "type": "string" - }, - "actionType": { - "type": "string" - }, - "method": { - "type": "string" - }, - "dataKey": { - "type": "string" - }, - "headers": { - "type": "object" - }, - "payload": { - "required": [ - "data", - "type", - "category", - "receiver", - "receiverType" - ], - "properties": { - "data": { - "properties": { - "text": { - "type": "string" - } - }, - "type": "object" - }, - "type": { - "type": "string" - }, - "category": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "receiverType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "elementType": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - } - }, - "type": "object" - }, - "goalCompletionText": { - "type": "string" - }, - "dateRangeStart": { - "type": "string", - "format": "date" - }, - "dateRangeEnd": { - "type": "string", - "format": "date" - } - }, - "type": "object" - } - }, - "type": "object" - }, "SentenceSimilaritySchema": { "required": [ "category", @@ -2426,30 +2273,6 @@ } ] }, - "interactiveFormTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveFormTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, "emailSubjectTemplateDefault": { "properties": { "subjectGroup": { @@ -2505,21 +2328,6 @@ }, "type": "object" }, - "TimeRange": { - "required": [ - "from", - "to" - ], - "properties": { - "from": { - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, "UserFilter": { "required": [ "entity", @@ -2614,121 +2422,169 @@ "type": "object" }, "authTokenSchema": { - "description": "Response data", + "description": "Represents an authentication token for a user. Auth tokens are used by client SDKs to authenticate users and establish real-time connections.", "properties": { "uid": { + "description": "Unique identifier of the user this auth token belongs to", "type": "string" }, "authToken": { + "description": "The authentication token string. Pass this to the CometChat SDK login method to authenticate the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the auth token was created", "type": "integer" } }, "type": "object" }, "bannedUserSchema": { - "description": "Response data", + "description": "Represents a user who has been banned from a group. Banned users cannot rejoin the group until unbanned.", "properties": { "uid": { + "description": "Unique identifier of the banned user", "type": "string" }, "name": { + "description": "Display name of the banned user", "type": "string" }, "avatar": { + "description": "URL of the banned user's profile picture", "type": "string" }, "status": { + "description": "Online presence status of the banned user", "type": "string" }, "role": { + "description": "Role assigned to the banned user in the CometChat app", "type": "string" }, "scope": { + "description": "The user's membership scope before being banned. Values: 'admin', 'moderator', 'participant'", "type": "string" }, "isBanned": { + "description": "Always true for banned user records", "type": "boolean" }, "joinedAt": { + "description": "Unix timestamp when the user originally joined the group", "type": "integer" }, "createdAt": { + "description": "Unix timestamp when the user's account was created", "type": "integer" } }, "type": "object" }, "blockedUserSchema": { - "description": "Response data", + "description": "Represents a blocked user relationship. Contains information about when and how the block was established.", "properties": { + "uid": { + "description": "Unique identifier of the blocked user", + "type": "string" + }, + "name": { + "description": "Display name of the blocked user", + "type": "string" + }, + "avatar": { + "description": "URL of the blocked user's profile picture", + "type": "string" + }, "blockedByMe": { + "description": "True if the authenticated user blocked this user", "type": "boolean" }, "blockedByMeAt": { + "description": "Unix timestamp when the authenticated user blocked this user", "type": "integer" }, + "hasBlockedMe": { + "description": "True if this user has blocked the authenticated user", + "type": "boolean" + }, "blockedAt": { + "description": "Unix timestamp when the block relationship was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the block relationship was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the blocked user relationship. Format: 'user_'", "type": "string" } }, "type": "object" }, "conversationSchema": { - "description": "Response data", + "description": "Represents a conversation thread between users or within a group. Contains the conversation metadata, last message, and the entity (user/group) the conversation is with.", "properties": { "conversationId": { + "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", "type": "string" }, "conversationType": { + "description": "Type of conversation. Values: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { + "description": "Number of unread messages in this conversation for the authenticated user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the conversation was created (first message sent)", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the conversation was last updated (last message sent)", "type": "integer" }, "lastMessage": { + "description": "The most recent message in this conversation", "properties": { "id": { + "description": "Unique identifier of the last message", "type": "string" }, "conversationId": { + "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { + "description": "UID of the user who sent the message", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the message receiver", "type": "string" }, "category": { + "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Message type (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { + "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { + "description": "Action type for action messages", "type": "string" } }, @@ -2740,14 +2596,18 @@ ] }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" }, "receipts": { + "description": "Message delivery and read receipts", "properties": { "data": { + "description": "Array of receipt records", "type": "array", "items": {} } @@ -2758,54 +2618,86 @@ "type": "object" }, "conversationWith": { + "description": "The user or group entity this conversation is with", "type": "object" } }, "type": "object" }, "conversationWithSchema": { + "description": "Represents the entity (user or group) that a conversation is with. Contains either user or group properties depending on conversation type.", "properties": { + "uid": { + "description": "Unique identifier of the user (for user conversations)", + "type": "string" + }, "guid": { + "description": "Unique identifier of the group (for group conversations)", "type": "string" }, "name": { + "description": "Display name of the user or group", "type": "string" }, "description": { + "description": "Description of the group (for group conversations)", + "type": "string" + }, + "avatar": { + "description": "URL of the user's avatar (for user conversations)", "type": "string" }, "icon": { + "description": "URL of the group's icon (for group conversations)", "type": "string" }, "type": { + "description": "Group type: 'public', 'password', or 'private' (for group conversations)", + "type": "string" + }, + "status": { + "description": "Online status of the user: 'available' or 'offline' (for user conversations)", + "type": "string" + }, + "role": { + "description": "Role of the user (for user conversations)", "type": "string" }, "scope": { + "description": "Authenticated user's scope in the group: 'admin', 'moderator', 'participant' (for group conversations)", "type": "string" }, "membersCount": { + "description": "Number of members in the group (for group conversations)", "type": "integer" }, "joinedAt": { + "description": "Unix timestamp when the authenticated user joined the group (for group conversations)", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this entity", "type": "string" }, "hasJoined": { + "description": "Whether the authenticated user has joined the group (for group conversations)", "type": "boolean", "default": "true" }, "createdAt": { + "description": "Unix timestamp when the user/group was created", "type": "integer" }, "owner": { + "description": "UID of the group owner (for group conversations)", "type": "string" }, "updatedAt": { + "description": "Unix timestamp when the user/group was last updated", "type": "integer" }, "updatedBy": { + "description": "UID of the user who last updated the group (for group conversations)", "type": "string" } }, @@ -2844,17 +2736,18 @@ "type": "object" }, "customCategorySchema": { + "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", "properties": { "receiver": { - "description": "The receiver of the message.", + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "muid": { - "description": "The muid will be a unique Identifier of the message.", + "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", "type": "string" }, "receiverType": { - "description": "The receiverType of the message. either user or group", + "description": "Specifies whether the message is being sent to a user or group", "type": "string", "enum": [ "user", @@ -2862,7 +2755,7 @@ ] }, "category": { - "description": "Category of the message. The available categories is custom.", + "description": "Message category. Use 'custom' for application-defined message types", "type": "string", "default": "custom", "enum": [ @@ -2870,37 +2763,35 @@ ] }, "quotedMessageId": { - "description": "ID of the message being quoted.\nIf provided, the send message response will include a `quotedMessage` node\nin the response containing the referenced message object.", - "type": "string", - "default": "message", - "enum": [ - "message" - ] + "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", + "type": "string" }, "type": { - "description": "Type of the message.", + "description": "Application-defined message type (e.g., 'location', 'poll', 'payment')", "type": "string" }, "data": { - "description": "JSON containing message attributes.", + "description": "Custom message payload", "properties": { "customData": { - "description": "when category==”custom”, this property can have any JSON object.", + "description": "Any JSON object containing your custom message data", "type": "object" } }, "type": "object" }, "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", "properties": { "uids": { + "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { + "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -2910,7 +2801,7 @@ "type": "object" }, "tags": { - "description": "A list of tags to identify specific messages.", + "description": "Custom tags for categorizing and filtering messages", "type": "array", "items": { "type": "string" @@ -2919,31 +2810,27 @@ }, "type": "object" }, - "customInteractiveSchema": { - "title": "Custom Interactive Schema", - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, "dataPointSchema": { - "description": "Response data", + "description": "Represents a single data point in messaging metrics. Contains counts for messages sent and receipts within a specific time range.", "properties": { "messagesSent": { + "description": "Total number of messages sent during this time period", "type": "integer" }, "readReceipts": { + "description": "Total number of read receipts generated during this time period", "type": "integer" }, "deliveryReceipts": { + "description": "Total number of delivery receipts generated during this time period", "type": "integer" }, "startTime": { + "description": "Unix timestamp marking the start of this data point's time range", "type": "integer" }, "endTime": { + "description": "Unix timestamp marking the end of this data point's time range", "type": "integer" } }, @@ -3023,139 +2910,180 @@ "type": "object" }, "groupEntitySchema": { - "description": "Response data", + "description": "Represents an action message generated for group member operations (join, leave, kick, ban, scope change). Contains details about who performed the action and who was affected.", "properties": { "id": { + "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { + "description": "Conversation ID of the group. Format: 'group_'", "type": "string" }, "sender": { + "description": "UID of the user who triggered this action (e.g., admin who kicked a member)", "type": "string" }, "receiverType": { + "description": "Always 'group' for group member actions", "type": "string" }, "receiver": { + "description": "GUID of the group where the action occurred", "type": "string" }, "category": { + "description": "Always 'action' for group member operations", "type": "string" }, "type": { + "description": "Type of action: 'groupMemberJoined', 'groupMemberLeft', 'groupMemberKicked', 'groupMemberBanned', 'groupMemberScopeChanged'", "type": "string" }, "data": { + "description": "Contains action details and entity information", "properties": { "action": { + "description": "The action that was performed (e.g., 'joined', 'left', 'kicked', 'banned', 'scopeChanged')", "type": "string" }, "entities": { + "description": "Contains information about the actors and targets of the action", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "on": { + "description": "The user who was affected by the action (e.g., the kicked member)", "properties": { "entity": { + "description": "User details of the affected member", "properties": { "uid": { + "description": "Unique identifier of the affected user", "type": "string" }, "name": { + "description": "Display name of the affected user", "type": "string" }, "role": { + "description": "Role assigned to the affected user", "type": "string" }, "avatar": { + "description": "URL of the affected user's avatar", "type": "string" }, "status": { + "description": "Online status of the affected user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the affected user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The group where the action occurred", "properties": { "entity": { + "description": "Group details", "properties": { "guid": { + "description": "Unique identifier of the group", "type": "string" }, "icon": { + "description": "URL of the group's icon", "type": "string" }, "name": { + "description": "Display name of the group", "type": "string" }, "tags": { + "description": "Tags associated with the group", "type": "array", "items": { "type": "string" } }, "type": { + "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { + "description": "UID of the group owner", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the group was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the group was last updated", "type": "integer" }, "description": { + "description": "Description of the group", "type": "string" }, "membersCount": { + "description": "Current number of members in the group", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this group", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'group'", "type": "string" } }, @@ -3168,72 +3096,91 @@ "type": "object" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "metadata": { + "description": "Custom metadata associated with the user", "properties": { "email": { + "description": "Example metadata field", "type": "string" } }, "type": "object" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "groupMemberListSchema": { - "description": "Response data", + "description": "Represents a member of a group. Contains user information along with their group-specific membership details.", "properties": { "uid": { + "description": "Unique identifier of the group member", "type": "string" }, "name": { + "description": "Display name of the group member", "type": "string" }, "avatar": { + "description": "URL of the member's avatar image", "type": "string" }, "status": { + "description": "Online status of the member: 'available' or 'offline'", "type": "string" }, "role": { + "description": "Role assigned to the member in the CometChat app", "type": "string" }, "scope": { + "description": "Member's scope within this group. Values: 'admin' (full control), 'moderator' (can manage members), 'participant' (regular member)", "type": "string" }, "joinedAt": { + "description": "Unix timestamp when the member joined this group", "type": "integer" }, "createdAt": { + "description": "Unix timestamp when the member's user account was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the member's user account was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for direct messaging with this member. Format: 'user_'", "type": "string" } }, "type": "object" }, "groupMemberSchema": { - "description": "Response data", + "description": "Response schema for bulk group member operations. Contains results for each member organized by their scope (admin, moderator, participant) or ban status.", "properties": { "usersToBan": { + "description": "Results for users being banned from the group", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the ban operation succeeded", "type": "boolean" } }, @@ -3243,13 +3190,17 @@ "type": "object" }, "admins": { + "description": "Results for users being added as admins", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -3259,13 +3210,17 @@ "type": "object" }, "moderators": { + "description": "Results for users being added as moderators", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -3275,13 +3230,17 @@ "type": "object" }, "participants": { + "description": "Results for users being added as participants", "properties": { "": { + "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { + "description": "Whether the operation succeeded", "type": "boolean" }, "data": { + "description": "Action message generated for this operation", "type": "object" } }, @@ -3349,539 +3308,91 @@ "type": "object" }, "groupSchema": { - "description": "Response data", + "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", "properties": { "guid": { + "description": "Unique identifier for the group. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { + "description": "Display name of the group shown in chat interfaces. Max length: 100 characters", "type": "string" }, "description": { + "description": "Optional description of the group's purpose or topic", "type": "string" }, "icon": { + "description": "URL of the group's icon/avatar image. Must be a valid, publicly accessible URL", "type": "string" }, "type": { + "description": "Access type of the group. Values: 'public' (anyone can join), 'password' (requires password to join), 'private' (invite-only, users must be added by admin/owner)", + "type": "string" + }, + "password": { + "description": "Password required to join the group (only for type='password'). Not returned in responses for security", "type": "string" }, "scope": { + "description": "The authenticated user's membership scope in this group. Values: 'admin', 'moderator', 'participant'. Only present in user-context responses", "type": "string" }, "membersCount": { + "description": "Current number of members in the group", "type": "integer" }, "joinedAt": { + "description": "Unix timestamp when the authenticated user joined this group. Only present in user-context responses", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this group. Format: 'group_'", "type": "string" }, "hasJoined": { + "description": "Indicates if the authenticated user is a member of this group. Only present in user-context responses", "type": "boolean" }, "owner": { + "description": "UID of the user who owns this group. The owner has full administrative privileges", "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "interactionCardSchema": { - "title": "Card Schema", - "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "cardActions": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "interactionFormSchema": { - "title": "Form Schema", - "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "formFields": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "interactiveCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories is interactive.", - "type": "string", - "default": "interactive", - "enum": [ - "interactive" - ] - }, - "type": { - "description": "Type of the message. The available values are card, form and customInteractive.", - "type": "string", - "default": "card", - "enum": [ - "card", - "form", - "customInteractive", - "scheduler" - ] - }, - "data": { - "description": "JSON containing message attributes. Please select the appropriate schema based on the type property.", - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/interactionFormSchema" - }, - { - "$ref": "#/components/schemas/interactionCardSchema" - }, - { - "$ref": "#/components/schemas/SchedulerSchema" - }, - { - "$ref": "#/components/schemas/customInteractiveSchema" - } - ] - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "type": "array", - "items": { - "type": "string" - } - } - }, + "metadata": { + "description": "Custom key-value pairs for storing application-specific group data. Max size: 100KB", "type": "object" }, "tags": { - "description": "A list of tags to identify specific messages.", + "description": "Custom tags for categorizing and filtering groups", "type": "array", "items": { "type": "string" } - } - }, - "type": "object", - "example": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "superhero2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - } - } }, - "category": "interactive", - "type": "form", - "receiver": "superhero1", - "tags": [ - "tag1" - ] - } - }, - "interactiveMessageSchema": { - "properties": { - "current": { - "properties": { - "limit": { - "type": "integer" - }, - "count": { - "type": "integer" - } - }, - "type": "object" + "createdAt": { + "description": "Unix timestamp when the group was created", + "type": "integer" }, - "next": { - "properties": { - "affix": { - "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { - "type": "string" - } - }, - "type": "object" + "updatedAt": { + "description": "Unix timestamp when the group was last updated", + "type": "integer" } }, "type": "object" }, "messageCategorySchema": { + "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", "properties": { "receiver": { - "description": "The receiver of the message.", + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "muid": { - "description": "The muid will be a unique Identifier of the message.", + "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", "type": "string" }, "receiverType": { - "description": "The receiverType of the message. either user or group", + "description": "Specifies whether the message is being sent to a user or group", "type": "string", "enum": [ "user", @@ -3889,7 +3400,7 @@ ] }, "category": { - "description": "Category of the message. The available categories are message and custom.", + "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video)", "type": "string", "default": "message", "enum": [ @@ -3897,11 +3408,11 @@ ] }, "quotedMessageId": { - "description": "ID of the message being quoted.\nIf provided, the send message response will include a `quotedMessage` node\nin the response containing the referenced message object.", + "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", "type": "string" }, "type": { - "description": "Type of the message. The available values are text, image, file, audio, video.", + "description": "The type of message content being sent", "type": "string", "default": "text", "enum": [ @@ -3913,37 +3424,39 @@ ] }, "data": { - "description": "JSON containing message attributes.", + "description": "Message content and attachments", "properties": { "text": { + "description": "Text content of the message (required for type='text')", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for application-specific data", "type": "object" }, "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + "description": "Array of file attachments. Required for image, video, audio, or file message types", "type": "array", "items": { "properties": { "url": { - "description": "Contains the URL of the attachment.", + "description": "Public URL where the attachment file is hosted", "type": "string" }, "name": { - "description": "Name of the attachment.", + "description": "Display name of the attachment file", "type": "string" }, "mimeType": { - "description": "Mime Type of attachment.", + "description": "MIME type of the attachment (e.g., 'image/png', 'application/pdf')", "type": "string" }, "extension": { - "description": "The extension of the attachment.", + "description": "File extension without the dot (e.g., 'png', 'pdf')", "type": "string" }, "size": { - "description": "The size of the attachment(in bytes).", + "description": "File size in bytes", "type": "string" } }, @@ -3954,15 +3467,17 @@ "type": "object" }, "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", "properties": { "uids": { + "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { + "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -3972,7 +3487,7 @@ "type": "object" }, "tags": { - "description": "A list of tags to identify specific messages.", + "description": "Custom tags for categorizing and filtering messages", "type": "array", "items": { "type": "string" @@ -3982,27 +3497,35 @@ "type": "object" }, "messageMetaSchema": { + "description": "Pagination metadata for message list responses. Contains information about the current page and cursor for fetching the next page.", "properties": { "current": { + "description": "Information about the current page of results", "properties": { "limit": { + "description": "Maximum number of messages requested per page", "type": "integer" }, "count": { + "description": "Actual number of messages returned in this response", "type": "integer" } }, "type": "object" }, "next": { + "description": "Cursor information for fetching the next page of messages", "properties": { "affix": { + "description": "Pagination direction indicator ('append' or 'prepend')", "type": "string" }, "sentAt": { + "description": "Unix timestamp of the last message, used as cursor for next page", "type": "integer" }, "id": { + "description": "ID of the last message, used as cursor for next page", "type": "string" } }, @@ -4012,102 +3535,133 @@ "type": "object" }, "messageReactionSchema": { - "description": "Response data", + "description": "Represents a message with its aggregated reaction counts. Extends the standard message schema with reaction summary information.", "properties": { "id": { + "description": "Unique identifier for this message", "type": "string" }, "conversationId": { + "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "UID of the user who sent this message", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { + "description": "UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "Category of the message: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Type of message content (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { + "description": "Contains the message content and metadata", "properties": { "text": { + "description": "Text content of the message", "type": "string" }, "metadata": { + "description": "Custom metadata attached to the message", "type": "object" }, "entities": { + "description": "Sender and receiver entity information", "properties": { "sender": { + "description": "Information about the message sender", "properties": { "entity": { + "description": "Sender user details", "properties": { "uid": { + "description": "Sender's unique identifier", "type": "string" }, "name": { + "description": "Sender's display name", "type": "string" }, "role": { + "description": "Sender's role", "type": "string" }, "avatar": { + "description": "URL of sender's avatar", "type": "string" }, "status": { + "description": "Sender's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "integer" }, "conversationId": { + "description": "Conversation ID for sender context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Information about the message receiver", "properties": { "entity": { + "description": "Receiver entity details", "properties": { "uid": { + "description": "Receiver's unique identifier", "type": "string" }, "name": { + "description": "Receiver's display name", "type": "string" }, "role": { + "description": "Receiver's role", "type": "string" }, "avatar": { + "description": "URL of receiver's avatar", "type": "string" }, "status": { + "description": "Receiver's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "integer" }, "conversationId": { + "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -4120,16 +3674,20 @@ "type": "object" }, "reactions": { + "description": "Aggregated reaction counts for this message, grouped by reaction type", "type": "array", "items": { "properties": { "reaction": { + "description": "The reaction emoji or identifier", "type": "string" }, "count": { + "description": "Total number of users who added this reaction", "type": "integer" }, "reactedByMe": { + "description": "Whether the current authenticated user has added this reaction", "type": "boolean" } }, @@ -4137,111 +3695,144 @@ } }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "messageSchema": { - "description": "Response data", + "description": "Represents a message sent between users or in a group conversation. Contains the message content, sender/receiver information, and metadata.", "properties": { "id": { + "description": "Unique identifier for this message, auto-generated by CometChat", "type": "string" }, "conversationId": { + "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "The UID of the user who sent this message", "type": "string" }, "receiverType": { + "description": "Indicates whether the message was sent to a user or group. Values: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "The category of the message. Values: 'message' for standard messages (text, image, file, audio, video), 'custom' for custom message types, 'action' for system-generated action messages", "type": "string" }, "type": { + "description": "The type of message content. For category='message': 'text', 'image', 'file', 'audio', 'video'. For category='custom': any custom type string defined by your application", "type": "string" }, "data": { + "description": "Contains the message content and related metadata", "properties": { "text": { + "description": "The text content of the message (for text messages)", "type": "string" }, "metadata": { + "description": "Custom key-value pairs attached to the message for application-specific data", "type": "object" }, "entities": { + "description": "Contains detailed information about the sender and receiver entities", "properties": { "sender": { + "description": "Information about the message sender", "properties": { "entity": { + "description": "The sender user object", "properties": { "uid": { + "description": "Unique identifier of the sender", "type": "string" }, "name": { + "description": "Display name of the sender", "type": "string" }, "role": { + "description": "Role assigned to the sender (e.g., 'default', 'admin')", "type": "string" }, "avatar": { + "description": "URL of the sender's avatar image", "type": "string" }, "status": { + "description": "Online status of the sender ('available' or 'offline')", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the sender's account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the sender's context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user' for sender", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Information about the message receiver (user or group)", "properties": { "entity": { + "description": "The receiver entity object (user or group)", "properties": { "uid": { + "description": "Unique identifier of the receiver (for user receivers)", "type": "string" }, "name": { + "description": "Display name of the receiver", "type": "string" }, "role": { + "description": "Role assigned to the receiver (for user receivers)", "type": "string" }, "avatar": { + "description": "URL of the receiver's avatar image", "type": "string" }, "status": { + "description": "Online status of the receiver ('available' or 'offline')", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the receiver's account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the receiver's context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' for direct messages, 'group' for group messages", "type": "string" } }, @@ -4254,9 +3845,11 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated (e.g., edited)", "type": "integer" } }, @@ -4362,118 +3955,154 @@ "type": "object" }, "objectEntitySchema": { + "description": "Contains entity information for action messages, describing who performed an action, who it affects, and what was acted upon.", "properties": { "entities": { + "description": "Container for action-related entities", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The entity affected by the action (user or group)", "properties": { "entity": { + "description": "Details of the affected entity", "properties": { "guid": { + "description": "Group identifier (for group entities)", "type": "string" }, "icon": { + "description": "URL of the group icon", "type": "string" }, "name": { + "description": "Display name of the entity", "type": "string" }, "type": { + "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { + "description": "UID of the group owner", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the entity was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the entity was last updated", "type": "integer" }, "updatedBy": { + "description": "UID of the user who last updated the entity", "type": "integer" }, "description": { + "description": "Description of the group", "type": "integer" }, "membersCount": { + "description": "Number of members in the group", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this entity", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { + "description": "The object that was acted upon (e.g., a user being added/removed)", "properties": { "entity": { + "description": "Details of the acted-upon entity", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "link": { + "description": "Profile link of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the user was last updated", "type": "integer" }, "conversationId": { + "description": "Conversation ID for this user", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Type of entity, typically 'user'", "type": "string" } }, @@ -4558,7 +4187,7 @@ "type": "object" }, "pnTokenSchema": { - "description": "Response data", + "description": "Push notification token registration schema. Supports FCM (Firebase Cloud Messaging), APNS (Apple Push Notification Service), and VOIP tokens for different platforms.", "oneOf": [ { "$ref": "#/components/schemas/PlatformFCM" @@ -4717,44 +4346,57 @@ "items": {} }, "reactionSchema": { - "description": "Response data", + "description": "Represents a single reaction added to a message by a user. Contains the reaction emoji/identifier and information about who reacted.", "properties": { "id": { + "description": "Unique identifier for this reaction record", "type": "string" }, "messageId": { + "description": "ID of the message this reaction is attached to", "type": "string" }, "reaction": { + "description": "The reaction emoji or identifier (e.g., '👍', 'heart', 'laugh')", "type": "string" }, "uid": { + "description": "UID of the user who added this reaction", "type": "string" }, "reactedAt": { + "description": "Unix timestamp when the reaction was added", "type": "integer" }, "reactedBy": { + "description": "Detailed information about the user who added the reaction", "properties": { "uid": { + "description": "Unique identifier of the user", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" }, "conversationId": { + "description": "Conversation ID for the user's context", "type": "string" } }, @@ -4764,35 +4406,40 @@ "type": "object" }, "roleSchema": { - "description": "Response data", + "description": "Represents a user role for access control. Roles define what actions users can perform and who they can interact with in the chat system.", "properties": { "role": { + "description": "Unique identifier for the role. This value is assigned to users via the 'role' property", "type": "string" }, "name": { + "description": "Display name for the role (e.g., 'Administrator', 'Moderator', 'Premium User')", "type": "string" }, "description": { + "description": "Human-readable description of the role's purpose and permissions", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for storing application-specific role data", "type": "object" }, - "email": { - "type": "string" - }, "settings": { + "description": "Role-specific settings that control user capabilities", "properties": { "listUsers": { + "description": "Controls which users this role can see. Values: 'all' (see all users), 'friends' (only friends), 'none' (no users)", "type": "string" }, "sendMessagesTo": { + "description": "Controls who this role can send messages to. Values: 'all' (anyone), 'friends' (only friends), 'none' (no one)", "type": "string" } }, "type": "object" }, "createdAt": { + "description": "Unix timestamp when the role was created", "type": "integer" } }, @@ -4833,15 +4480,18 @@ "type": "object" }, "triggerSchema": { - "description": "Response data", + "description": "Represents an event trigger that can be assigned to webhooks. Triggers define which events will cause webhook notifications to be sent.", "properties": { "id": { + "description": "Unique identifier for the trigger (e.g., 'message_sent', 'user_created', 'group_member_joined')", "type": "string" }, "category": { + "description": "Category grouping for the trigger. Values: 'message' (message events), 'user' (user events), 'group' (group events), 'call' (call events)", "type": "string" }, "description": { + "description": "Human-readable description of when this trigger fires", "type": "string" } }, @@ -4865,201 +4515,262 @@ "type": "object" }, "unregisterpnToken": { + "description": "Request body for unregistering a push notification token", "required": [ "authToken" ], "properties": { "authToken": { + "description": "The user's authentication token associated with the push token to unregister", "type": "string" } }, "type": "object" }, "updatemessageSchema": { - "description": "Response data", + "description": "Represents an action message generated when a message is edited or updated. Contains information about who made the change, the affected message, and the action performed.", "properties": { "id": { + "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { + "description": "Identifier linking this action to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { + "description": "The UID of the user who triggered this action (typically the message editor)", "type": "string" }, "receiverType": { + "description": "Indicates whether the original message was in a user or group conversation. Values: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { + "description": "Always 'action' for update message notifications", "type": "string" }, "type": { + "description": "The type of action performed, e.g., 'edited' for message edits", "type": "string" }, "data": { + "description": "Contains details about the action and affected entities", "properties": { "action": { + "description": "The action that was performed (e.g., 'edited')", "type": "string" }, "entities": { + "description": "Contains information about who performed the action, who it affects, and what was changed", "properties": { "by": { + "description": "The user who performed the action", "properties": { "entity": { + "description": "User details of the action performer", "properties": { "uid": { + "description": "Unique identifier of the user who performed the action", "type": "string" }, "name": { + "description": "Display name of the user", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the user was last updated", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { + "description": "The user or group affected by the action", "properties": { "entity": { + "description": "Details of the affected entity", "properties": { "uid": { + "description": "Unique identifier of the affected user", "type": "string" }, "name": { + "description": "Display name of the affected user", "type": "string" }, "avatar": { + "description": "URL of the user's avatar image", "type": "string" }, "status": { + "description": "Online status of the user", "type": "string" }, "role": { + "description": "Role assigned to the user", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the user account was created", "type": "integer" } }, "type": "object" }, "entityType": { + "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { + "description": "The message that was acted upon", "properties": { "entity": { + "description": "The original message that was edited", "properties": { "id": { + "description": "Unique identifier of the edited message", "type": "string" }, "conversationId": { + "description": "Conversation ID of the edited message", "type": "string" }, "sender": { + "description": "UID of the original message sender", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the message receiver", "type": "string" }, "category": { + "description": "Category of the original message", "type": "string" }, "type": { + "description": "Type of the original message", "type": "string" }, "data": { + "description": "Content of the edited message", "properties": { "text": { + "description": "The updated text content", "type": "string" }, "entities": { + "description": "Sender and receiver entity information", "properties": { "sender": { + "description": "Sender information", "properties": { "entity": { + "description": "Sender user details", "properties": { "uid": { + "description": "Sender's unique identifier", "type": "string" }, "name": { + "description": "Sender's display name", "type": "string" }, "role": { + "description": "Sender's role", "type": "string" }, "avatar": { + "description": "URL of sender's avatar", "type": "string" }, "status": { + "description": "Sender's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { + "description": "Receiver information", "properties": { "entity": { + "description": "Receiver entity details", "properties": { "uid": { + "description": "Receiver's unique identifier", "type": "string" }, "name": { + "description": "Receiver's display name", "type": "string" }, "role": { + "description": "Receiver's role", "type": "string" }, "avatar": { + "description": "URL of receiver's avatar", "type": "string" }, "status": { + "description": "Receiver's online status", "type": "string" }, "createdAt": { + "description": "Account creation timestamp", "type": "string" }, "conversationId": { + "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { + "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -5072,18 +4783,23 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when the original message was sent", "type": "integer" }, "editedAt": { + "description": "Unix timestamp when the message was edited", "type": "integer" }, "editedBy": { + "description": "UID of the user who edited the message", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp of the last update", "type": "integer" }, "tags": { + "description": "Tags associated with the message", "type": "array", "items": {} } @@ -5091,6 +4807,7 @@ "type": "object" }, "entityType": { + "description": "Entity type, always 'message'", "type": "string" } }, @@ -5103,43 +4820,54 @@ "type": "object" }, "sentAt": { + "description": "Unix timestamp when this action message was generated", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when this action message was last updated", "type": "integer" } }, "type": "object" }, "usageMetricsSchema": { - "description": "Response data", + "description": "Aggregated usage metrics for your CometChat app. Contains call minutes, user activity, and the time range for the data.", "properties": { "metrics": { + "description": "Usage metric values for the specified time range", "properties": { "audio_minutes": { + "description": "Total minutes of audio calls during the time range", "type": "integer" }, "video_minutes": { + "description": "Total minutes of video calls during the time range", "type": "integer" }, "recorded_minutes": { + "description": "Total minutes of recorded calls during the time range", "type": "integer" }, "active_users": { + "description": "Number of unique users who were active during the time range", "type": "integer" }, "concurrent_users": { + "description": "Peak number of users connected simultaneously during the time range", "type": "integer" } }, "type": "object" }, "time_range": { + "description": "The time range for which metrics are reported", "properties": { "fromDate": { + "description": "Unix timestamp marking the start of the metrics period", "type": "integer" }, "toDate": { + "description": "Unix timestamp marking the end of the metrics period", "type": "integer" } }, @@ -5149,52 +4877,67 @@ "type": "object" }, "userConversationSchema": { - "description": "Response data", + "description": "Represents a user-specific view of a conversation, including unread counts and last message from the user's perspective.", "properties": { "conversationId": { + "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 or 'group_' for groups", "type": "string" }, "conversationType": { + "description": "Type of conversation: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { + "description": "Number of unread messages for the authenticated user in this conversation", "type": "string" }, "createdAt": { + "description": "Unix timestamp when the conversation was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp of the last activity in this conversation", "type": "integer" }, "lastMessage": { + "description": "The most recent message in this conversation", "properties": { "id": { + "description": "Unique identifier of the message", "type": "string" }, "conversationId": { + "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { + "description": "UID of the message sender", "type": "string" }, "receiverType": { + "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { + "description": "UID or GUID of the receiver", "type": "string" }, "category": { + "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { + "description": "Message type (e.g., 'text', 'image')", "type": "string" }, "data": { + "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { + "description": "Action type for action messages", "type": "string" } }, @@ -5206,15 +4949,18 @@ ] }, "sentAt": { + "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "conversationWith": { + "description": "The user or group entity this conversation is with", "type": "object" } }, @@ -5266,32 +5012,71 @@ "type": "object" }, "userSchema": { - "description": "Response data", + "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", "properties": { "uid": { + "description": "Unique identifier for the user. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { + "description": "Display name of the user shown in chat interfaces. Max length: 100 characters", "type": "string" }, "avatar": { + "description": "URL of the user's profile picture. Must be a valid, publicly accessible URL", + "type": "string" + }, + "link": { + "description": "Optional URL associated with the user's profile (e.g., website, social profile)", "type": "string" }, "metadata": { + "description": "Custom key-value pairs for storing application-specific user data. Max size: 100KB", "properties": { "email": { + "description": "Example metadata field - you can store any custom data here", "type": "string" } }, "type": "object" }, "status": { + "description": "Online presence status of the user. Values: 'available' (online) or 'offline'", "type": "string" }, "role": { + "description": "Role assigned to the user for access control. Default role is 'default'. Custom roles can be created via the Roles API", "type": "string" }, + "lastActiveAt": { + "description": "Unix timestamp of the user's last activity in the app", + "type": "integer" + }, + "hasBlockedMe": { + "description": "Indicates if this user has blocked the authenticated user (only present in user-context responses)", + "type": "boolean" + }, + "blockedByMe": { + "description": "Indicates if the authenticated user has blocked this user (only present in user-context responses)", + "type": "boolean" + }, + "tags": { + "description": "Custom tags for categorizing and filtering users", + "type": "array", + "items": { + "type": "string" + } + }, + "deactivatedAt": { + "description": "Unix timestamp when the user was deactivated. Null if user is active", + "type": "integer" + }, "createdAt": { + "description": "Unix timestamp when the user account was created", + "type": "integer" + }, + "updatedAt": { + "description": "Unix timestamp when the user account was last updated", "type": "integer" } }, @@ -5343,33 +5128,49 @@ "type": "object" }, "webhookSchema": { - "description": "Response data", + "description": "Represents a webhook configuration for receiving real-time event notifications. Webhooks send HTTP POST requests to your server when specified events occur in CometChat.", "properties": { "id": { + "description": "Unique identifier for the webhook, auto-generated by CometChat", "type": "string" }, "name": { + "description": "Display name for the webhook to help identify its purpose", "type": "string" }, "webhookURL": { + "description": "The HTTPS endpoint URL where webhook payloads will be sent. Must be publicly accessible", "type": "string" }, "useBasicAuth": { + "description": "Whether to use HTTP Basic Authentication when sending webhook requests", "type": "boolean" }, "username": { + "description": "Username for HTTP Basic Authentication (required if useBasicAuth is true)", "type": "string" }, "password": { + "description": "Password for HTTP Basic Authentication (required if useBasicAuth is true). Not returned in responses", "type": "string" }, + "triggers": { + "description": "List of event triggers that will fire this webhook. See triggerSchema for available triggers", + "type": "array", + "items": { + "type": "string" + } + }, "enabled": { + "description": "Whether the webhook is currently active. Disabled webhooks will not receive event notifications", "type": "boolean" }, "createdAt": { + "description": "Unix timestamp when the webhook was created", "type": "integer" }, "updatedAt": { + "description": "Unix timestamp when the webhook was last updated", "type": "integer" } }, @@ -5380,7 +5181,7 @@ "authToken": { "name": "authToken", "in": "path", - "description": "An auth token of a user.", + "description": "The authentication token string for a user. Used to identify and manage specific auth tokens", "required": true, "schema": { "type": "string" @@ -5395,7 +5196,7 @@ "conversationId": { "name": "conversationId", "in": "path", - "description": "(Required) conversation id", + "description": "Unique identifier of the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", "required": true, "schema": { "type": "string" @@ -5404,7 +5205,7 @@ "uid--conversation": { "name": "uid", "in": "path", - "description": "UID of the user whose conversation needs to be fetched.", + "description": "UID of the user whose conversation needs to be fetched", "required": true, "schema": { "type": "string" @@ -5413,7 +5214,7 @@ "guid--conversation": { "name": "guid", "in": "path", - "description": "GUID of the group whose conversation needs to be fetched.", + "description": "GUID of the group whose conversation needs to be fetched", "required": true, "schema": { "type": "string" @@ -5505,7 +5306,7 @@ "pushToken": { "name": "pushToken", "in": "path", - "description": "(Required) Push Token", + "description": "The push notification token to unregister or manage", "required": true, "schema": { "type": "string" @@ -5599,67 +5400,67 @@ "tags": [ { "name": "API Keys", - "description": "The API keys are used to authorise the APIs" + "description": "Manage API keys for authenticating REST API requests. API keys control access to your CometChat app and define permission scopes (fullAccess or authOnly). Use these endpoints to create, list, update, and delete API keys for different integration scenarios such as server-side operations or client authentication." }, { "name": "Roles", - "description": "The roles are used to give user access rights" + "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." }, { "name": "Users", - "description": "The REST collection for users." + "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed." }, { "name": "Auth Tokens", - "description": "The auth tokens are used to login end users using client SDKs." + "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." }, { "name": "Blocked Users", - "description": "The REST collections for blocked users." + "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." }, { "name": "Friends", - "description": "List,add and remove friends by passing UID in path variables" + "description": "Manage friend relationships between users. Friends lists enable features like showing online friends, friend-only messaging, and social connections. Use these endpoints to add friends, remove friends, and retrieve a user's friend list with pagination support." }, { "name": "Groups", - "description": "The REST collections for groups." + "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." }, { "name": "Banned Users", - "description": "Ban and Unban user by passing other UID in path variables." + "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." }, { "name": "Group Members", - "description": "The REST collections for group members." + "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." }, { "name": "Messages", - "description": "The REST collections for messages." + "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." }, { "name": "Conversations", - "description": "The REST collections for conversations." + "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." }, { "name": "Restrict Features", - "description": "Allows Restricting Features" + "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." }, { "name": "Metrics", - "description": "Allows accessing Data Metrics" + "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." }, { "name": "Triggers", - "description": "Allows adding triggers to a webhook." + "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." }, { "name": "Webhooks", - "description": "Allows accessing Webhooks." + "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." }, { "name": "Notifications", - "description": "Allows configuring Notifications core." + "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." }, { "name": "Moderation", From 737a793acfdd8a98798919e67f40eb80edc1709a Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Tue, 10 Feb 2026 17:06:52 +0530 Subject: [PATCH 02/56] Fixed webhooks redirect URLs. --- fundamentals/webhooks-management.mdx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/fundamentals/webhooks-management.mdx b/fundamentals/webhooks-management.mdx index dcc9beca8..0594d9b7c 100644 --- a/fundamentals/webhooks-management.mdx +++ b/fundamentals/webhooks-management.mdx @@ -42,21 +42,21 @@ If you prefer automation or need to manage webhooks programmatically, you can us ### Webhook Operations -| Operation | API Reference | -| -------------------------- | --------------------------------------------------------------------------------- | -| Create a new webhook | [Create Webhook](https://api-explorer.cometchat.com/reference/create-webhook-api) | -| Update an existing webhook | [Update Webhook](https://api-explorer.cometchat.com/reference/update-webhook-api) | -| List all webhooks | [List Webhooks](https://api-explorer.cometchat.com/reference/list-webhooks-api) | -| Get webhook by ID | [Get Webhook](https://api-explorer.cometchat.com/reference/get-webhook-api) | -| Delete a webhook | [Delete Webhook](https://api-explorer.cometchat.com/reference/delete-webhook-api) | +| Operation | API Reference | +| -------------------------- | ---------------------------------------------------------------------------- | +| Create a new webhook | [Create Webhook](/rest-api/management-apis/webhooks/create-webhook) | +| Update an existing webhook | [Update Webhook](/rest-api/management-apis/webhooks/update-webhook) | +| List all webhooks | [List Webhooks](/rest-api/management-apis/webhooks/list-webhooks) | +| Get webhook by ID | [Get Webhook](/rest-api/management-apis/webhooks/get-webhook) | +| Delete a webhook | [Delete Webhook](/rest-api/management-apis/webhooks/delete-webhook) | ### Trigger Operations -| Operation | API Reference | -| ------------------------------ | ----------------------------------------------------------------------------------- | -| Add triggers to a webhook | [Add Triggers](https://api-explorer.cometchat.com/reference/add-triggers-api) | -| List triggers for a webhook | [List Triggers](https://api-explorer.cometchat.com/reference/list-triggers-api) | -| Remove triggers from a webhook | [Remove Triggers](https://api-explorer.cometchat.com/reference/remove-triggers-api) | +| Operation | API Reference | +| ------------------------------ | ------------------------------------------------------------------------ | +| Add triggers to a webhook | [Add Triggers](/rest-api/management-apis/webhooks/add-triggers) | +| List triggers for a webhook | [List Triggers](/rest-api/management-apis/webhooks/list-triggers) | +| Remove triggers from a webhook | [Remove Triggers](/rest-api/management-apis/webhooks/remove-triggers) | *** From c54d59a7aa03d25bd47fb7f22f6400fbeb055178 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Tue, 10 Feb 2026 17:09:46 +0530 Subject: [PATCH 03/56] cac changes --- chat-apis.json | 226 +++++++++++++++++++++--------------------- data-import-apis.json | 8 +- 2 files changed, 117 insertions(+), 117 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 0cbe93b6a..af4e2f632 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -32,7 +32,7 @@ "API Keys" ], "summary": "Create", - "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.\n *\n * **Scope Types:**\n * - **authOnly**: Limited scope for user authentication only. Use this for client-side SDKs where you only need to authenticate users. Cannot access admin endpoints.\n * - **fullAccess**: Full administrative access to all API endpoints. Use this for server-side integrations that need to manage users, groups, messages, and settings. Keep this key secure and never expose it in client-side code.\n *\n * **Side Effects:**\n * - The new API key is immediately active and can be used for authentication\n * - API key usage is tracked for billing and analytics\n *\n * **Limitations:**\n * - API key name max length: 100 characters\n * - Maximum API keys per app: 10\n * - Requires an existing API key with fullAccess scope to create new keys", + "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).

**Side effects:** The new API key is immediately active and can be used for authentication. API key usage is tracked for billing and analytics.

**Limitations:** API key name max length is 100 characters. Maximum API keys per app is 10. Requires an existing API key with fullAccess scope to create new keys.", "requestBody": { "content": { "application/json": { @@ -97,7 +97,7 @@ "API Keys" ], "summary": "List", - "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.\n *\n * **Use Cases:**\n * - Audit which API keys exist and their permission levels\n * - Find API keys by name when you need to update or delete them\n * - Verify API key scopes before using them in integrations\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - API key values are partially masked for security", + "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.

**Use cases:** Audit which API keys exist and their permission levels. Find API keys by name when you need to update or delete them. Verify API key scopes before using them in integrations.

**Limitations:** Requires API key with fullAccess scope. API key values are partially masked for security.", "parameters": [ { "name": "scope", @@ -185,7 +185,7 @@ "API Keys" ], "summary": "Get", - "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if the API key does not exist", + "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", "parameters": [ { "name": "apiKey", @@ -233,7 +233,7 @@ "API Keys" ], "summary": "Update", - "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.\n *\n * **Important:** Changing the scope from 'fullAccess' to 'authOnly' will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.\n *\n * **Side Effects:**\n * - Scope changes take effect immediately\n * - Existing sessions using this key are not affected until the next API call\n *\n * **Limitations:**\n * - The API key value itself cannot be changed (create a new key instead)\n * - API key name max length: 100 characters\n * - Requires API key with fullAccess scope", + "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.

**Side effects:** Scope changes take effect immediately. Existing sessions using this key are not affected until the next API call.

**Limitations:** The API key value itself cannot be changed (create a new key instead). API key name max length is 100 characters. Requires API key with fullAccess scope.", "parameters": [ { "name": "apiKey", @@ -304,7 +304,7 @@ "API Keys" ], "summary": "Delete", - "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.\n *\n * **Side Effects:**\n * - All API requests using this key will immediately start failing with authentication errors\n * - SDK instances initialized with this key will need to be re-initialized with a new key\n * - This action cannot be undone - you must create a new key if needed\n *\n * **Limitations:**\n * - Cannot delete the last fullAccess API key (at least one must remain)\n * - Requires API key with fullAccess scope\n * - Returns 404 if the API key does not exist", + "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.

**Side effects:** All API requests using this key will immediately start failing with authentication errors. SDK instances initialized with this key will need to be re-initialized with a new key. This action cannot be undone - you must create a new key if needed.

**Limitations:** Cannot delete the last fullAccess API key (at least one must remain). Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", "parameters": [ { "name": "apiKey", @@ -358,7 +358,7 @@ "Users" ], "summary": "Create", - "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.\n *\n * **When to use:**\n * - During user registration in your application\n * - When migrating users from another chat platform\n * - When creating bot or system users\n *\n * **Side Effects:**\n * - Triggers `user.created` webhook if configured\n * - User appears in user lists immediately after creation\n * - User can be searched and messaged by other users\n *\n * **Limitations:**\n * - UID must be unique across your app (case-insensitive)\n * - UID max length: 100 characters (alphanumeric, underscore, hyphen allowed)\n * - Name max length: 100 characters\n * - Metadata max size: 100KB\n * - Avatar URL max length: 2048 characters\n * - Link URL max length: 2048 characters\n * - Maximum 25 tags per user\n * - Each tag max length: 100 characters\n * - Requires API key with `fullAccess` or `authOnly` scope", + "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.

**Side effects:** Triggers user.created webhook if configured. User appears in user lists immediately after creation. User can be searched and messaged by other users.

**Limitations:** UID must be unique across your app (case-insensitive). UID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", "requestBody": { "content": { "application/json": { @@ -484,7 +484,7 @@ "Users" ], "summary": "List", - "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.\n *\n * **When to use:**\n * - Building user directories or contact lists\n * - Searching for users by name or UID\n * - Filtering users by role or tags for admin dashboards\n * - Syncing user data with your backend\n *\n * **Pagination:**\n * - Results are paginated with configurable page size (default: 100, max: 1000)\n * - Use `page` parameter to navigate through results\n * - Response includes `meta.pagination` with total count and page info\n * - Use `cursor` for efficient real-time sync of user updates\n *\n * **Limitations:**\n * - Maximum 1000 users per request (perPage)\n * - Default page size: 100 users\n * - Search performs prefix matching (LIKE%) on UID and name\n * - Requires API key with `fullAccess` scope for full user data\n * - Rate limit applies based on your subscription plan", + "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.

**Use cases:** Building user directories or contact lists. Searching for users by name or UID. Filtering users by role or tags for admin dashboards. Syncing user data with your backend.

**Pagination:** Results are paginated with configurable page size (default: 100, max: 1000). Use page parameter to navigate through results. Response includes meta.pagination with total count and page info. Use cursor for efficient real-time sync of user updates.

**Limitations:** Maximum 1000 users per request (perPage). Search performs prefix matching (LIKE%) on UID and name. Requires API key with fullAccess scope for full user data.", "parameters": [ { "name": "searchKey", @@ -697,7 +697,7 @@ "Users" ], "summary": "Reactivate", - "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.\n *\n * **When to use:**\n * - Restoring user access after a temporary suspension\n * - Reactivating users who return to your platform\n * - Bulk reactivation of users after a policy change\n * - Account recovery workflows\n *\n * **What happens on reactivation:**\n * - User can log in and create auth tokens again\n * - User appears in user lists and search results\n * - User can send and receive messages\n * - Previous group memberships remain intact\n * - Message history is preserved and accessible\n *\n * **Side Effects:**\n * - Triggers `user.reactivated` webhook if configured\n * - User becomes visible in user lists immediately\n * - User can be messaged by other users\n *\n * **Limitations:**\n * - Only works on deactivated users (not deleted users)\n * - Users must have been previously deactivated via the Deactivate API\n * - Maximum batch size depends on your subscription plan\n * - Requires API key with `fullAccess` scope", + "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.

**What happens on reactivation:** User can log in and create auth tokens again. User appears in user lists and search results. User can send and receive messages. Previous group memberships remain intact. Message history is preserved and accessible.

**Side effects:** Triggers user.reactivated webhook if configured. User becomes visible in user lists immediately. User can be messaged by other users.

**Limitations:** Only works on deactivated users (not deleted users). Users must have been previously deactivated via the Deactivate API. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -764,7 +764,7 @@ "Users" ], "summary": "Deactivate", - "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.\n *\n * **When to use:**\n * - Temporarily suspending user accounts\n * - Implementing account lockout policies\n * - Disabling inactive users while preserving data\n * - Compliance with temporary access restrictions\n *\n * **What happens on deactivation:**\n * - User cannot log in or create new auth tokens\n * - Existing auth tokens are invalidated\n * - User is hidden from user lists and search results\n * - User cannot send or receive new messages\n * - All user data (messages, groups, metadata) is preserved\n * - User can be reactivated later using the Reactivate API\n *\n * **Difference from Delete:**\n * - Deactivation is reversible; deletion is permanent\n * - Deactivated users retain all their data\n * - Deactivated users can be reactivated at any time\n * - UID remains reserved and cannot be reused\n *\n * **Side Effects:**\n * - Triggers `user.deactivated` webhook if configured\n * - Active sessions are terminated immediately\n * - User is removed from online user lists\n * - Push notification tokens are preserved but inactive\n *\n * **Limitations:**\n * - Users must exist (non-existent UIDs are ignored)\n * - Already deactivated users are skipped\n * - Maximum batch size depends on your subscription plan\n * - Requires API key with `fullAccess` scope", + "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**What happens on deactivation:** User cannot log in or create new auth tokens. Existing auth tokens are invalidated. User is hidden from user lists and search results. User cannot send or receive new messages. All user data (messages, groups, metadata) is preserved. User can be reactivated later using the Reactivate API.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.

**Side effects:** Triggers user.deactivated webhook if configured. Active sessions are terminated immediately. User is removed from online user lists. Push notification tokens are preserved but inactive.

**Limitations:** Users must exist (non-existent UIDs are ignored). Already deactivated users are skipped. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -829,7 +829,7 @@ "Users" ], "summary": "Get", - "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.\n *\n * **When to use:**\n * - Displaying user profile information\n * - Verifying a user exists before sending messages\n * - Checking user's online/offline status\n * - Fetching user metadata for your application\n *\n * **Response includes:**\n * - Basic profile info (name, avatar, link)\n * - Current online/offline status\n * - Role and metadata\n * - Timestamps (createdAt, updatedAt)\n * - Block status if using onBehalfOf parameter\n *\n * **Limitations:**\n * - UID must exist in your app\n * - Private metadata (@private) is only visible via admin API\n * - Requires API key with `fullAccess` scope for complete data\n * - Deactivated users return 404 unless accessed via admin API", + "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.

**When to use:** Displaying user profile information, verifying a user exists before sending messages, checking user's online/offline status, or fetching user metadata for your application.

**Response includes:** Basic profile info (name, avatar, link), current online/offline status, role and metadata, timestamps (createdAt, updatedAt), and block status if using onBehalfOf parameter.

**Limitations:** UID must exist in your app. Private metadata (@private) is only visible via admin API. Requires API key with fullAccess scope for complete data. Deactivated users return 404 unless accessed via admin API.", "parameters": [ { "name": "uid", @@ -890,7 +890,7 @@ "Users" ], "summary": "Update", - "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.\n *\n * **When to use:**\n * - Updating user profile information (name, avatar)\n * - Changing user roles for access control\n * - Adding or modifying user metadata\n * - Updating tags for user categorization\n * - Removing optional fields using the `unset` parameter\n *\n * **Side Effects:**\n * - Triggers `user.updated` webhook if configured\n * - Updated information reflects immediately in user lists and chat interfaces\n * - Role changes take effect immediately for access control\n *\n * **Limitations:**\n * - UID cannot be changed after user creation\n * - User must exist (returns 404 if not found)\n * - Name max length: 100 characters\n * - Metadata max size: 100KB\n * - Avatar URL max length: 2048 characters\n * - Link URL max length: 2048 characters\n * - Maximum 25 tags per user\n * - Each tag max length: 100 characters\n * - Requires API key with `fullAccess` or `authOnly` scope", + "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.

**Side effects:** Triggers user.updated webhook if configured. Updated information reflects immediately in user lists and chat interfaces. Role changes take effect immediately for access control.

**Limitations:** UID cannot be changed after user creation. User must exist (returns 404 if not found). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", "parameters": [ { "name": "uid", @@ -1038,7 +1038,7 @@ "Users" ], "summary": "Delete", - "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the `permanent` flag for complete removal of all user data.\n *\n * **When to use:**\n * - Removing users who have left your platform\n * - Cleaning up test or spam accounts\n * - GDPR/data deletion compliance (use permanent=true)\n * - Freeing up UIDs for reuse (permanent delete only)\n *\n * **Soft Delete (default):**\n * - User cannot log in or be searched\n * - Message history is preserved\n * - User data can potentially be recovered\n * - UID cannot be reused\n *\n * **Permanent Delete (permanent=true):**\n * - All user data is permanently removed\n * - All messages sent by user are deleted\n * - All conversations involving user are removed\n * - Group memberships are removed\n * - UID becomes available for reuse\n * - This action is IRREVERSIBLE\n *\n * **Side Effects:**\n * - Triggers `user.deleted` webhook if configured\n * - User is removed from all groups\n * - Active sessions are terminated\n * - Auth tokens are invalidated\n * - With permanent=true: all messages and conversations are deleted\n *\n * **Limitations:**\n * - User must exist (returns 404 if not found)\n * - Permanent deletion cannot be undone\n * - Requires API key with `fullAccess` scope", + "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.

**Side effects:** Triggers user.deleted webhook if configured. User is removed from all groups. Active sessions are terminated. Auth tokens are invalidated. With permanent=true, all messages and conversations are deleted.

**Limitations:** User must exist (returns 404 if not found). Permanent deletion cannot be undone. Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -1109,7 +1109,7 @@ "Groups" ], "summary": "Create", - "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.\n *\n * **Use Cases:**\n * - Creating team channels for project collaboration\n * - Setting up public chat rooms for community discussions\n * - Creating private groups for confidential conversations\n * - Building password-protected groups for controlled access\n *\n * **Side Effects:**\n * - Triggers `group.created` webhook if configured\n * - If owner is specified, that user is automatically added as admin\n * - If members are specified, they are added with their respective scopes\n * - A conversation is automatically created with ID format `group_{guid}`\n *\n * **Limitations:**\n * - GUID must be unique across your app (case-sensitive)\n * - GUID max length: 100 characters (alphanumeric, underscore, hyphen allowed)\n * - Name max length: 100 characters\n * - Description max length: 500 characters\n * - Metadata max size: 100KB (JSON object)\n * - Tags: Maximum 10 tags per group, each tag max 50 characters\n * - Members: Maximum 100 members can be added during creation\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.

**Side effects:** Triggers group.created webhook if configured. If owner is specified, that user is automatically added as admin. If members are specified, they are added with their respective scopes. A conversation is automatically created with ID format group_{guid}.

**Limitations:** GUID must be unique across your app (case-sensitive). GUID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB (JSON object). Maximum 10 tags per group, each tag max 50 characters. Maximum 100 members can be added during creation. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1276,7 +1276,7 @@ "Groups" ], "summary": "List", - "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.\n *\n * **Use Cases:**\n * - Building a group discovery/browse interface\n * - Searching for groups by name or tags\n * - Syncing group data with your backend using cursor pagination\n * - Listing groups a specific user has joined\n *\n * **Pagination:**\n * - Offset-based: Use `page` and `perPage` parameters\n * - Cursor-based: Use `updatedAt` and `affix` parameters for efficient syncing\n *\n * **Limitations:**\n * - Maximum 1000 groups per request (perPage)\n * - Default returns 100 groups per page\n * - Search is case-insensitive but may have slight delays on large datasets\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.

**Use cases:** Building a group discovery/browse interface, searching for groups by name or tags, syncing group data with your backend using cursor pagination, or listing groups a specific user has joined.

**Pagination:** Offset-based uses page and perPage parameters. Cursor-based uses updatedAt and affix parameters for efficient syncing.

**Limitations:** Maximum 1000 groups per request (perPage). Default returns 100 groups per page. Search is case-insensitive but may have slight delays on large datasets. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1516,7 +1516,7 @@ "Groups" ], "summary": "Get", - "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.\n *\n * **Use Cases:**\n * - Displaying group profile/details page\n * - Checking if a group exists before performing operations\n * - Fetching current group settings and metadata\n * - Getting member count and owner information\n *\n * **Response includes:**\n * - Basic info: name, description, icon, type\n * - Membership: membersCount, owner, hasJoined (if onBehalfOf used)\n * - Metadata: custom data, tags, timestamps\n * - Conversation: conversationId for messaging\n *\n * **Limitations:**\n * - GUID must exist; returns 404 if not found\n * - Private group details visible only to members (when using onBehalfOf)\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.

**Use cases:** Displaying group profile/details page, checking if a group exists before performing operations, fetching current group settings and metadata, or getting member count and owner information.

**Response includes:** Basic info (name, description, icon, type), membership (membersCount, owner, hasJoined if onBehalfOf used), metadata (custom data, tags, timestamps), and conversation (conversationId for messaging).

**Limitations:** GUID must exist (returns 404 if not found). Private group details visible only to members (when using onBehalfOf). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1573,7 +1573,7 @@ "Groups" ], "summary": "Update", - "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.\n *\n * **Use Cases:**\n * - Changing group name or description\n * - Updating group icon/avatar\n * - Changing group type (public/private/password)\n * - Transferring ownership to another user\n * - Updating custom metadata or tags\n * - Removing optional fields using the 'unset' parameter\n *\n * **Side Effects:**\n * - Triggers `group.updated` webhook if configured\n * - Changing type to 'password' requires providing a password\n * - Changing owner transfers all admin privileges\n * - Members are notified of significant changes via real-time events\n *\n * **Limitations:**\n * - GUID cannot be changed after creation\n * - Name max length: 100 characters\n * - Description max length: 500 characters\n * - Metadata max size: 100KB\n * - Tags: Maximum 10 tags, each up to 50 characters\n * - Owner field ignored when onBehalfOf header is present\n * - Only admins can update group (when using onBehalfOf)\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.

**Side effects:** Triggers group.updated webhook if configured. Changing type to password requires providing a password. Changing owner transfers all admin privileges. Members are notified of significant changes via real-time events.

**Limitations:** GUID cannot be changed after creation. Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB. Maximum 10 tags, each up to 50 characters. Owner field ignored when onBehalfOf header is present. Only admins can update group (when using onBehalfOf). Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1696,7 +1696,7 @@ "Groups" ], "summary": "Delete", - "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.\n *\n * **Use Cases:**\n * - Removing inactive or abandoned groups\n * - Cleaning up test/development groups\n * - Deleting groups that violate policies\n * - User-initiated group deletion (with onBehalfOf)\n *\n * **Side Effects:**\n * - Triggers `group.deleted` webhook if configured\n * - All group messages are permanently deleted\n * - All member associations are removed\n * - Group conversation is deleted\n * - Banned user list is cleared\n * - Group no longer appears in any user's group list\n *\n * **What gets deleted:**\n * - Group metadata and settings\n * - All messages in the group\n * - Member list and roles\n * - Banned users list\n * - Associated conversation\n *\n * **Limitations:**\n * - Action is irreversible - data cannot be recovered\n * - Only group owner or admin can delete (when using onBehalfOf)\n * - GUID must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**Side effects:** Triggers group.deleted webhook if configured. All group messages are permanently deleted. All member associations are removed. Group conversation is deleted. Banned user list is cleared. Group no longer appears in any user's group list.

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.

**Limitations:** Action is irreversible (data cannot be recovered). Only group owner or admin can delete (when using onBehalfOf). GUID must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -3202,7 +3202,7 @@ "Conversations" ], "summary": "List conversations", - "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details.\n\nUse this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.\n\n **Limitations:**\n- perPage: Default 100, maximum 1000 conversations per request\n- Rate limit: Standard API rate limits apply\n- Requires API key with fullAccess or restrictedAccess scope\n- Large conversation lists should use cursor-based pagination (useCursoredIndex=1) for better performance", + "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details. Use this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.

**Limitations:** perPage default is 100, maximum 1000 conversations per request. Standard API rate limits apply. Requires API key with fullAccess or restrictedAccess scope. Large conversation lists should use cursor-based pagination (useCursoredIndex=1) for better performance.", "parameters": [ { "name": "onBehalfOf", @@ -3494,7 +3494,7 @@ "Conversations" ], "summary": "Get conversation", - "description": "**DEPRECATED:** This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.\n\nRetrieves details of a specific conversation including the last message, unread count, and participant information.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- conversationId format: 'user_{uid}' for one-on-one or 'group_{guid}' for group conversations", + "description": "DEPRECATED: This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.

Retrieves details of a specific conversation including the last message, unread count, and participant information.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations.", "parameters": [ { "name": "onBehalfOf", @@ -3627,7 +3627,7 @@ "Conversations" ], "summary": "Delete Conversation", - "description": "**DEPRECATED:** This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.\n\nDeletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.\n\n **Side Effects:**\n- Conversation is removed from the user's conversation list\n- Unread count for this conversation is reset\n- Messages remain accessible through message APIs\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- conversationId format: 'user_{uid}' for one-on-one or 'group_{guid}' for group conversations\n- This action cannot be undone", + "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.

**Side effects:** Conversation is removed from the user's conversation list. Unread count for this conversation is reset. Messages remain accessible through message APIs.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations. This action cannot be undone.", "parameters": [ { "name": "onBehalfOf", @@ -3679,7 +3679,7 @@ "Conversations" ], "summary": "Get User Conversation", - "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.\n\nUse this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the viewing user\n- Requires API key with fullAccess or restrictedAccess scope\n- Both users must exist in the app\n- Returns 404 if no conversation exists between the users", + "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.

Use this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.

**Limitations:** Requires onBehalfOf header to identify the viewing user. Requires API key with fullAccess or restrictedAccess scope. Both users must exist in the app. Returns 404 if no conversation exists between the users.", "parameters": [ { "name": "onBehalfOf", @@ -3806,7 +3806,7 @@ "Conversations" ], "summary": "Update User Conversation", - "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.\n\nUse this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- Tags are user-specific and do not affect the other participant's view\n- Maximum 10 tags per conversation\n- Each tag maximum length: 100 characters", + "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.

Use this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Tags are user-specific and do not affect the other participant's view. Maximum 10 tags per conversation. Each tag maximum length is 100 characters.", "parameters": [ { "$ref": "#/components/parameters/uid--conversation" @@ -3956,7 +3956,7 @@ "Conversations" ], "summary": "Reset User Conversation", - "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.\n\nUse this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.\n\n **Side Effects:**\n- Conversation is removed from the onBehalfOf user's list\n- Unread count is reset to 0\n- If deleteMessagesPermanently is true, messages are permanently deleted for both users\n- Triggers conversation.deleted webhook if configured\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess scope\n- Permanent deletion cannot be undone\n- preserveOrder maintains conversation position in list after reset", + "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.

**Side effects:** Conversation is removed from the onBehalfOf user's list. Unread count is reset to 0. If deleteMessagesPermanently is true, messages are permanently deleted for both users. Triggers conversation.deleted webhook if configured.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Permanent deletion cannot be undone. preserveOrder maintains conversation position in list after reset.", "parameters": [ { "name": "onBehalfOf", @@ -4031,7 +4031,7 @@ "Conversations" ], "summary": "Mark User Conversation As Delivered", - "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.\n\nUse this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.\n\n **Side Effects:**\n- Updates delivery timestamps for affected messages\n- Triggers message.delivered webhook if configured\n- Sender sees updated delivery status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the receiving user\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Cannot mark messages as delivered for other users", + "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.

**Side effects:** Updates delivery timestamps for affected messages. Triggers message.delivered webhook if configured. Sender sees updated delivery status in real-time.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as delivered for other users.", "parameters": [ { "name": "onBehalfOf", @@ -4097,7 +4097,7 @@ "Conversations" ], "summary": "Mark User Conversation As Read", - "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.\n\nUse this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.\n\n **Side Effects:**\n- Updates read timestamps for affected messages\n- Resets unread count for the conversation\n- Triggers message.read webhook if configured\n- Sender sees updated read status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the reading user\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Cannot mark messages as read for other users", + "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.

**Side effects:** Updates read timestamps for affected messages. Resets unread count for the conversation. Triggers message.read webhook if configured. Sender sees updated read status in real-time.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as read for other users.", "parameters": [ { "name": "onBehalfOf", @@ -4161,7 +4161,7 @@ "Conversations" ], "summary": "Mark conversation messages as unread", - "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.\n\nUse this endpoint to implement 'mark as unread' functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.\n\n **Side Effects:**\n- Updates unread count for the conversation\n- Messages after messageId appear as unread in the user's conversation list\n- Does not affect the sender's read receipts\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- messageId must be a valid message in the conversation\n- Only affects the onBehalfOf user's view of the conversation", + "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.

**Side effects:** Updates unread count for the conversation. Messages after messageId appear as unread in the user's conversation list. Does not affect the sender's read receipts.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Only affects the onBehalfOf user's view of the conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4571,7 +4571,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Delivered", - "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.\n\nUse this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.\n\n **Side Effects:**\n- Updates delivery timestamps for affected messages for this user\n- Triggers message.delivered webhook if configured\n- Senders see updated delivery status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the receiving user\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation", + "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.

**Side effects:** Updates delivery timestamps for affected messages for this user. Triggers message.delivered webhook if configured. Senders see updated delivery status in real-time.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4637,7 +4637,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Read", - "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.\n\nUse this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.\n\n **Side Effects:**\n- Updates read timestamps for affected messages for this user\n- Resets unread count for the group conversation\n- Triggers message.read webhook if configured\n- Senders see updated read status in real-time\n\n **Limitations:**\n- Requires onBehalfOf header to identify the reading user\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation", + "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.

**Side effects:** Updates read timestamps for affected messages for this user. Resets unread count for the group conversation. Triggers message.read webhook if configured. Senders see updated read status in real-time.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4701,7 +4701,7 @@ "Conversations" ], "summary": "Mark Group Conversation As unread", - "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.\n\nUse this endpoint to implement 'mark as unread' functionality for group chats, allowing users to flag group conversations for follow-up.\n\n **Side Effects:**\n- Updates unread count for the group conversation\n- Messages after messageId appear as unread in the user's conversation list\n- Does not affect other group members' read status\n\n **Limitations:**\n- Requires onBehalfOf header to identify the user context\n- Requires API key with fullAccess or restrictedAccess scope\n- User must be a member of the group\n- messageId must be a valid message in the group conversation\n- Only affects the onBehalfOf user's view of the conversation", + "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.

**Side effects:** Updates unread count for the group conversation. Messages after messageId appear as unread in the user's conversation list. Does not affect other group members' read status.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation. Only affects the onBehalfOf user's view of the conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4767,7 +4767,7 @@ "Auth Tokens" ], "summary": "Create", - "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.\n *\n * **Use Cases:**\n * - Server-side user authentication: Generate tokens on your backend and pass them to your client app\n * - Multi-device login: Create separate tokens for each device a user logs in from\n * - Session management: Track and manage user sessions across devices\n *\n * **Token Behavior:**\n * - By default, if a valid token already exists for the user, it will be returned instead of creating a new one\n * - Use the 'force' parameter to always generate a new token, invalidating the previous one\n * - Tokens do not expire automatically but can be deleted manually\n *\n * **Side Effects:**\n * - When force=true, any existing token for this user is invalidated\n * - SDK instances using the old token will need to re-authenticate\n *\n * **Limitations:**\n * - User must exist before creating an auth token\n * - Requires API key with fullAccess scope\n * - Maximum 10 active auth tokens per user", + "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.

**Side effects:** When force=true, any existing token for this user is invalidated. SDK instances using the old token will need to re-authenticate.

**Limitations:** User must exist before creating an auth token. Requires API key with fullAccess scope. Maximum 10 active auth tokens per user.", "parameters": [ { "name": "uid", @@ -4830,7 +4830,7 @@ "Auth Tokens" ], "summary": "List", - "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.\n *\n * **Use Cases:**\n * - Session auditing: See all active sessions for a user\n * - Security review: Identify potentially compromised tokens\n * - Multi-device management: Track which devices a user is logged into\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user does not exist", + "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.

**Use cases:** Session auditing (see all active sessions for a user), security review (identify potentially compromised tokens), and multi-device management (track which devices a user is logged into).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user does not exist.", "parameters": [ { "name": "uid", @@ -4898,7 +4898,7 @@ "Auth Tokens" ], "summary": "Flush", - "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.\n *\n * **Use Cases:**\n * - Security incident: Force logout when account may be compromised\n * - Password change: Invalidate all sessions after password reset\n * - Account suspension: Immediately revoke all access for a user\n * - User request: Allow users to log out of all devices\n *\n * **Side Effects:**\n * - All SDK instances using any of this user's tokens will immediately lose authentication\n * - Users will need to re-authenticate on all devices\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user does not exist", + "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).

**Side effects:** All SDK instances using any of this user's tokens will immediately lose authentication. Users will need to re-authenticate on all devices.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Returns 404 if user does not exist.", "parameters": [ { "name": "uid", @@ -4952,7 +4952,7 @@ "Auth Tokens" ], "summary": "Get", - "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.\n *\n * **Use Cases:**\n * - Token validation: Verify if a specific token is still active\n * - Session lookup: Get details about a specific user session\n * - Debugging: Troubleshoot authentication issues\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", + "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.

**Use cases:** Token validation (verify if a specific token is still active), session lookup (get details about a specific user session), and debugging (troubleshoot authentication issues).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", "parameters": [ { "name": "uid", @@ -5008,7 +5008,7 @@ "Auth Tokens" ], "summary": "Update", - "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.\n *\n * **Use Cases:**\n * - Device tracking: Record which device/platform is using each token\n * - App analytics: Track which app versions are in use\n * - Session management: Store custom session metadata\n *\n * **Limitations:**\n * - Cannot change the token value itself\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", + "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.

**Use cases:** Device tracking (record which device/platform is using each token), app analytics (track which app versions are in use), and session management (store custom session metadata).

**Limitations:** Cannot change the token value itself. Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", "parameters": [ { "name": "uid", @@ -5100,7 +5100,7 @@ "Auth Tokens" ], "summary": "Delete", - "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.\n *\n * **Use Cases:**\n * - Single device logout: Log out from one device while staying logged in on others\n * - Session cleanup: Remove old or unused tokens\n * - Security: Revoke a specific compromised token\n *\n * **Side Effects:**\n * - The SDK instance using this token will immediately lose authentication\n * - Other tokens for the same user remain valid\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if user or token does not exist", + "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).

**Side effects:** The SDK instance using this token will immediately lose authentication. Other tokens for the same user remain valid. This action cannot be undone.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", "parameters": [ { "name": "uid", @@ -5169,7 +5169,7 @@ "Group Members" ], "summary": "Add members", - "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.\n *\n * **Use Cases:**\n * - Adding team members to a project group\n * - Inviting users to a private group\n * - Setting up group admins and moderators\n * - Pre-banning problematic users from joining\n *\n * **Member Scopes:**\n * - `admin`: Full control - can manage members, settings, and content\n * - `moderator`: Can kick/ban participants and delete messages\n * - `participant`: Standard member - can send messages and view content\n *\n * **Side Effects:**\n * - Triggers `group.member.added` webhook for each added member\n * - Action messages are sent to the group for each addition\n * - Added members receive real-time notification\n * - Group's membersCount is updated\n *\n * **Limitations:**\n * - Maximum 100 users can be added per request (across all scope arrays)\n * - Users must exist; non-existent UIDs are skipped with error in response\n * - Cannot add users who are already members (returns error for that UID)\n * - Cannot add banned users as members (unban first)\n * - When using onBehalfOf, the acting user must be admin or moderator\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).

**Side effects:** Triggers group.member.added webhook for each added member. Action messages are sent to the group for each addition. Added members receive real-time notification. Group's membersCount is updated.

**Limitations:** Maximum 100 users can be added per request (across all scope arrays). Users must exist (non-existent UIDs are skipped with error in response). Cannot add users who are already members (returns error for that UID). Cannot add banned users as members (unban first). When using onBehalfOf, the acting user must be admin or moderator. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5510,7 +5510,7 @@ "Group Members" ], "summary": "List", - "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.\n *\n * **Use Cases:**\n * - Displaying group member list in UI\n * - Checking who is in a group before sending messages\n * - Building member management interfaces\n * - Filtering members by online status or role\n *\n * **Response includes for each member:**\n * - User details: uid, name, avatar, status\n * - Group-specific: scope (admin/moderator/participant), joinedAt\n * - Conversation ID for direct messaging\n *\n * **Limitations:**\n * - Maximum 1000 members per request (perPage)\n * - Default returns 100 members per page\n * - Group must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.

**Use cases:** Displaying group member list in UI, checking who is in a group before sending messages, building member management interfaces, or filtering members by online status or role.

**Response includes for each member:** User details (uid, name, avatar, status), group-specific info (scope as admin/moderator/participant, joinedAt), and conversation ID for direct messaging.

**Limitations:** Maximum 1000 members per request (perPage). Default returns 100 members per page. Group must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5653,7 +5653,7 @@ "Group Members" ], "summary": "Change Scope", - "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.\n *\n * **Use Cases:**\n * - Promoting a participant to moderator or admin\n * - Demoting an admin to participant\n * - Adjusting team roles as responsibilities change\n * - Building member management interfaces\n *\n * **Available Scopes:**\n * - `admin`: Full control over group settings, members, and content\n * - `moderator`: Can kick/ban participants and delete messages\n * - `participant`: Standard member with messaging permissions only\n *\n * **Side Effects:**\n * - Triggers `group.member.scope.changed` webhook if configured\n * - Action message is sent to the group announcing the change\n * - Member receives real-time notification of scope change\n *\n * **Limitations:**\n * - User must be an existing member of the group\n * - Cannot change scope of the group owner\n * - When using onBehalfOf, acting user must be admin\n * - Admins cannot demote other admins (only owner can)\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.

**Side effects:** Triggers group.member.scope.changed webhook if configured. Action message is sent to the group announcing the change. Member receives real-time notification of scope change.

**Limitations:** User must be an existing member of the group. Cannot change scope of the group owner. When using onBehalfOf, acting user must be admin. Admins cannot demote other admins (only owner can). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5735,7 +5735,7 @@ "Group Members" ], "summary": "Kick", - "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.\n *\n * **Use Cases:**\n * - Removing inactive members from a group\n * - Enforcing group rules by removing violators\n * - Cleaning up group membership\n * - User-initiated removal (with onBehalfOf)\n *\n * **Difference from Ban:**\n * - Kick: User is removed but can rejoin public groups or be re-added\n * - Ban: User is permanently blocked from the group until unbanned\n *\n * **Side Effects:**\n * - Triggers `group.member.kicked` webhook if configured\n * - Action message is sent to the group announcing the removal\n * - Kicked user receives real-time notification\n * - Group's membersCount is decremented\n * - User's group conversation is updated\n *\n * **Limitations:**\n * - Cannot kick the group owner\n * - Cannot kick yourself (use leave group instead)\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Moderators cannot kick admins\n * - User must be a current member; returns error if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.

**Side effects:** Triggers group.member.kicked webhook if configured. Action message is sent to the group announcing the removal. Kicked user receives real-time notification. Group's membersCount is decremented. User's group conversation is updated.

**Limitations:** Cannot kick the group owner. Cannot kick yourself (use leave group instead). When using onBehalfOf, acting user must be admin or moderator. Moderators cannot kick admins. User must be a current member (returns error if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5783,7 +5783,7 @@ "Banned Users" ], "summary": "Ban", - "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.\n *\n * **Use Cases:**\n * - Permanently removing users who violate group rules\n * - Blocking spammers or abusive users\n * - Preventing specific users from accessing private groups\n * - Enforcing moderation policies\n *\n * **Difference from Kick:**\n * - Kick: User is removed but can rejoin public groups or be re-added\n * - Ban: User is permanently blocked until explicitly unbanned\n *\n * **Side Effects:**\n * - Triggers `group.member.banned` webhook if configured\n * - Action message is sent to the group announcing the ban\n * - User is immediately removed from the group if they were a member\n * - User receives real-time notification of the ban\n * - Group's membersCount is decremented if user was a member\n *\n * **Limitations:**\n * - Cannot ban the group owner\n * - Cannot ban yourself\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Moderators cannot ban admins\n * - User must exist; returns error if UID not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.

**Side effects:** Triggers group.member.banned webhook if configured. Action message is sent to the group announcing the ban. User is immediately removed from the group if they were a member. User receives real-time notification of the ban. Group's membersCount is decremented if user was a member.

**Limitations:** Cannot ban the group owner. Cannot ban yourself. When using onBehalfOf, acting user must be admin or moderator. Moderators cannot ban admins. User must exist (returns error if UID not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5829,7 +5829,7 @@ "Banned Users" ], "summary": "Unban", - "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.\n *\n * **Use Cases:**\n * - Restoring access after a temporary ban period\n * - Reversing accidental bans\n * - Giving users a second chance after policy violations\n * - Implementing ban appeal processes\n *\n * **What happens after unban:**\n * - User can join public groups immediately\n * - User can be added to private groups by admins\n * - User can request to join password-protected groups\n * - User is NOT automatically re-added to the group\n *\n * **Side Effects:**\n * - Triggers `group.member.unbanned` webhook if configured\n * - User receives real-time notification of the unban\n * - User is removed from the banned users list\n *\n * **Limitations:**\n * - User must be currently banned; returns error if not banned\n * - When using onBehalfOf, acting user must be admin or moderator\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.

**What happens after unban:** User can join public groups immediately. User can be added to private groups by admins. User can request to join password-protected groups. User is NOT automatically re-added to the group.

**Side effects:** Triggers group.member.unbanned webhook if configured. User receives real-time notification of the unban. User is removed from the banned users list.

**Limitations:** User must be currently banned (returns error if not banned). When using onBehalfOf, acting user must be admin or moderator. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5877,7 +5877,7 @@ "Banned Users" ], "summary": "List", - "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.\n *\n * **Use Cases:**\n * - Displaying banned users list in admin panel\n * - Reviewing bans for potential appeals\n * - Auditing group moderation actions\n * - Building ban management interfaces\n *\n * **Response includes for each banned user:**\n * - User details: uid, name, avatar, status, role\n * - Timestamps: createdAt, updatedAt\n * - Conversation ID for reference\n *\n * **Limitations:**\n * - Maximum 100 banned users per request (default)\n * - Group must exist; returns 404 if not found\n * - Rate limit: 100 requests per minute\n * - Requires API key with `fullAccess` or `groups` scope", + "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.

**Use cases:** Displaying banned users list in admin panel, reviewing bans for potential appeals, auditing group moderation actions, or building ban management interfaces.

**Response includes for each banned user:** User details (uid, name, avatar, status, role), timestamps (createdAt, updatedAt), and conversation ID for reference.

**Limitations:** Maximum 100 banned users per request (default). Group must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5982,7 +5982,7 @@ "Friends" ], "summary": "Add Friends", - "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.\n *\n * **When to use:**\n * - Implementing friend/contact list features\n * - Syncing friend relationships from your application\n * - Creating mutual connections between users\n * - Building social networking features\n *\n * **What happens when friends are added:**\n * - Bidirectional friendship is created (both users become friends)\n * - Friends appear in each other's friend lists\n * - Optionally creates conversations between friends (addToConversations=true)\n * - Friend status is reflected in user queries\n *\n * **Side Effects:**\n * - Triggers `friend.added` webhook if configured\n * - When addToConversations=true, creates 1-on-1 conversation entries\n * - Real-time events notify connected clients of new friendships\n *\n * **Limitations:**\n * - Cannot add yourself as a friend\n * - All friend UIDs must exist in your app\n * - Friendship is automatically bidirectional\n * - Requires API key with `fullAccess` scope", + "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.

**Use cases:** Implementing friend/contact list features. Syncing friend relationships from your application. Creating mutual connections between users. Building social networking features.

**What happens:** Bidirectional friendship is created (both users become friends). Friends appear in each other's friend lists. Optionally creates conversations between friends (addToConversations=true). Friend status is reflected in user queries.

**Side effects:** Triggers friend.added webhook if configured. When addToConversations=true, creates 1-on-1 conversation entries. Real-time events notify connected clients of new friendships.

**Limitations:** Cannot add yourself as a friend. All friend UIDs must exist in your app. Friendship is automatically bidirectional. Requires API key with fullAccess scope.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6066,7 +6066,7 @@ "Friends" ], "summary": "List Friends", - "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.\n *\n * **When to use:**\n * - Displaying a user's friend/contact list\n * - Searching for specific friends by name or UID\n * - Building friend suggestion features\n * - Syncing friend lists with your application\n *\n * **Response includes:**\n * - Full user profile for each friend\n * - Online/offline status\n * - Block status if applicable\n * - Conversation ID for direct messaging\n * - Pagination metadata for large friend lists\n *\n * **Limitations:**\n * - Maximum 1000 friends per page\n * - Default page size: 100 friends\n * - Search performs prefix matching on UID and name\n * - Requires API key with `fullAccess` scope", + "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.

**Use cases:** Displaying a user's friend/contact list. Searching for specific friends by name or UID. Building friend suggestion features. Syncing friend lists with your application.

**Response includes:** Full user profile for each friend. Online/offline status. Block status if applicable. Conversation ID for direct messaging. Pagination metadata for large friend lists.

**Limitations:** Maximum 1000 friends per page. Default page size is 100 friends. Search performs prefix matching on UID and name. Requires API key with fullAccess scope.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6191,7 +6191,7 @@ "Friends" ], "summary": "Remove Friends", - "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.\n *\n * **When to use:**\n * - Implementing unfriend/remove contact features\n * - Syncing friend removals from your application\n * - Admin-initiated friend relationship cleanup\n * - Bulk removal of friend connections\n *\n * **What happens when friends are removed:**\n * - Bidirectional friendship is removed (both users are no longer friends)\n * - Users no longer appear in each other's friend lists\n * - Existing conversations are preserved (not deleted)\n * - Users can still message each other (unless blocked)\n *\n * **Side Effects:**\n * - Triggers `friend.removed` webhook if configured\n * - Real-time events notify connected clients of the removal\n * - Friend lists are updated immediately\n *\n * **Limitations:**\n * - Can only remove existing friendships\n * - Removal is automatically bidirectional\n * - Conversations are not deleted (use conversation APIs separately)\n * - Requires API key with `fullAccess` scope", + "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.

**Use cases:** Implementing unfriend/remove contact features. Syncing friend removals from your application. Admin-initiated friend relationship cleanup. Bulk removal of friend connections.

**What happens:** Bidirectional friendship is removed (both users are no longer friends). Users no longer appear in each other's friend lists. Existing conversations are preserved (not deleted). Users can still message each other (unless blocked).

**Side effects:** Triggers friend.removed webhook if configured. Real-time events notify connected clients of the removal. Friend lists are updated immediately.

**Limitations:** Can only remove existing friendships. Removal is automatically bidirectional. Conversations are not deleted (use conversation APIs separately). Requires API key with fullAccess scope.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6252,7 +6252,7 @@ "Blocked Users" ], "summary": "Block User", - "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.\n *\n * **When to use:**\n * - Implementing user blocking features\n * - Preventing harassment or unwanted contact\n * - Admin-initiated blocking for policy enforcement\n * - Bulk blocking of spam accounts\n *\n * **What happens when a user is blocked:**\n * - Blocked user cannot send direct messages to the blocking user\n * - Blocked user's messages in groups are still visible\n * - Blocking user won't see blocked user in their user list (depending on client implementation)\n * - Block status is reflected in user objects (blockedByMe, blockedAt fields)\n * - Existing conversations are preserved but new messages are blocked\n *\n * **Side Effects:**\n * - Triggers `user.blocked` webhook if configured\n * - Block status is immediately reflected in API responses\n * - Real-time events notify connected clients of the block\n *\n * **Limitations:**\n * - Cannot block yourself\n * - Both users must exist in your app\n * - Blocking is one-directional (A blocks B doesn't mean B blocks A)\n * - Requires API key with `fullAccess` scope", + "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.

**What happens when a user is blocked:** Blocked user cannot send direct messages to the blocking user. Blocked user's messages in groups are still visible. Blocking user won't see blocked user in their user list (depending on client implementation). Block status is reflected in user objects (blockedByMe, blockedAt fields). Existing conversations are preserved but new messages are blocked.

**Side effects:** Triggers user.blocked webhook if configured. Block status is immediately reflected in API responses. Real-time events notify connected clients of the block.

**Limitations:** Cannot block yourself. Both users must exist in your app. Blocking is one-directional (A blocks B doesn't mean B blocks A). Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -6334,7 +6334,7 @@ "Blocked Users" ], "summary": "Unblock User", - "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.\n *\n * **When to use:**\n * - Allowing users to unblock others they previously blocked\n * - Admin-initiated unblocking for dispute resolution\n * - Bulk unblocking after policy changes\n * - Restoring communication after temporary blocks\n *\n * **What happens when a user is unblocked:**\n * - Unblocked user can send direct messages again\n * - Block status fields (blockedByMe, blockedAt) are removed from user objects\n * - Communication is restored immediately\n * - Previous conversation history remains intact\n *\n * **Side Effects:**\n * - Triggers `user.unblocked` webhook if configured\n * - Unblock status is immediately reflected in API responses\n * - Real-time events notify connected clients of the unblock\n *\n * **Limitations:**\n * - Can only unblock users that were previously blocked\n * - Both users must exist in your app\n * - Unblocking is one-directional (if both users blocked each other, both must unblock)\n * - Requires API key with `fullAccess` scope", + "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.

**What happens when a user is unblocked:** Unblocked user can send direct messages again. Block status fields (blockedByMe, blockedAt) are removed from user objects. Communication is restored immediately. Previous conversation history remains intact.

**Side effects:** Triggers user.unblocked webhook if configured. Unblock status is immediately reflected in API responses. Real-time events notify connected clients of the unblock.

**Limitations:** Can only unblock users that were previously blocked. Both users must exist in your app. Unblocking is one-directional (if both users blocked each other, both must unblock). Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -6416,7 +6416,7 @@ "Blocked Users" ], "summary": "List Blocked Users", - "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.\n *\n * **When to use:**\n * - Displaying a user's blocked users list in settings\n * - Checking block status before initiating communication\n * - Admin review of user blocking patterns\n * - Syncing block lists with your application\n *\n * **Response includes:**\n * - Full user profile for each blocked user\n * - Block timestamp (blockedAt, blockedByMeAt)\n * - Block status flags (blockedByMe)\n * - Pagination metadata for large block lists\n *\n * **Limitations:**\n * - Only returns users blocked BY the specified user\n * - Does not show users who have blocked the specified user\n * - Maximum 100 users per page (default)\n * - Requires API key with `fullAccess` scope", + "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.

**When to use:** Displaying a user's blocked users list in settings, checking block status before initiating communication, admin review of user blocking patterns, or syncing block lists with your application.

**Response includes:** Full user profile for each blocked user, block timestamp (blockedAt, blockedByMeAt), block status flags (blockedByMe), and pagination metadata for large block lists.

**Limitations:** Only returns users blocked BY the specified user. Does not show users who have blocked the specified user. Maximum 100 users per page (default). Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -6530,7 +6530,7 @@ "Roles" ], "summary": "Create", - "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.\n *\n * **Use Cases:**\n * - Create different permission levels (admin, moderator, member, guest)\n * - Restrict messaging to friends only for certain user types\n * - Control which users can see other users in the user list\n * - Implement tiered access for freemium apps\n *\n * **Role Settings:**\n * - **listUsers**: Controls who appears in user lists. 'all' shows everyone, 'friendsOnly' shows only friends\n * - **sendMessagesTo**: Controls who can receive messages. 'all' allows messaging anyone, 'friendsOnly' restricts to friends\n *\n * **Limitations:**\n * - Role identifier max length: 100 characters\n * - Role name max length: 100 characters\n * - Role identifier must be unique within your app\n * - Role identifier cannot be changed after creation\n * - Requires API key with fullAccess scope", + "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.

**Use cases:** Create different permission levels (admin, moderator, member, guest), restrict messaging to friends only for certain user types, control which users can see other users in the user list, and implement tiered access for freemium apps.

**Role settings:** listUsers controls who appears in user lists (all shows everyone, friendsOnly shows only friends), and sendMessagesTo controls who can receive messages (all allows messaging anyone, friendsOnly restricts to friends).

**Limitations:** Role identifier max length is 100 characters. Role name max length is 100 characters. Role identifier must be unique within your app. Role identifier cannot be changed after creation. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -6612,7 +6612,7 @@ "Roles" ], "summary": "List", - "description": "Retrieves all roles configured in your CometChat app. Use this endpoint to audit role configurations, build role management interfaces, or verify role settings.\n *\n * **Default Role:**\n * Every app has a 'default' role that is automatically assigned to new users if no role is specified during user creation.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope", + "description": "Retrieves all roles configured in your CometChat app. Use this endpoint to audit role configurations, build role management interfaces, or verify role settings.\n\nDefault role: Every app has a default role that is automatically assigned to new users if no role is specified during user creation.\n\nLimitations: Requires API key with fullAccess scope.", "responses": { "200": { "description": "List of all roles with their configurations, settings, and metadata.", @@ -6680,7 +6680,7 @@ "Roles" ], "summary": "Get", - "description": "Retrieves the complete configuration for a specific role including its settings, metadata, and description. Use this endpoint to verify role permissions before assigning users.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", + "description": "Retrieves the complete configuration for a specific role including its settings, metadata, and description. Use this endpoint to verify role permissions before assigning users.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -6741,7 +6741,7 @@ "Roles" ], "summary": "Update", - "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n *\n * **Side Effects:**\n * - Changes take effect immediately for all users with this role\n * - Existing user sessions will use the new permissions on their next API call\n *\n * **Limitations:**\n * - Role identifier cannot be changed (create a new role instead)\n * - Role name max length: 100 characters\n * - Cannot update the 'default' role's core settings\n * - Requires API key with fullAccess scope", + "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nSide effects: Changes take effect immediately for all users with this role. Existing user sessions will use the new permissions on their next API call.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Role name max length is 100 characters. Cannot update the default role's core settings. Requires API key with fullAccess scope.", "parameters": [ { "name": "role", @@ -6848,7 +6848,7 @@ "Roles" ], "summary": "Delete", - "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the 'default' role.\n *\n * **Side Effects:**\n * - All users with this role are reassigned to the 'default' role\n * - Feature restrictions associated with this role are removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Cannot delete the 'default' role\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", + "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the default role.\n\nSide effects: All users with this role are reassigned to the default role. Feature restrictions associated with this role are removed. This action cannot be undone.\n\nLimitations: Cannot delete the default role. Requires API key with fullAccess scope. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -6902,7 +6902,7 @@ "Restrict Features" ], "summary": "Restrict Features", - "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.\n *\n * **Common Use Cases:**\n * - Prevent guest users from deleting groups\n * - Block free-tier users from accessing premium features\n * - Restrict moderators from certain admin operations\n *\n * **Feature Keys:**\n * Feature keys follow the pattern 'u.featureName' for user-facing features. Examples:\n * - 'u.listUsers': List users endpoint\n * - 'u.deleteGroup': Delete group endpoint\n * - 'u.createGroup': Create group endpoint\n *\n * **Side Effects:**\n * - Restrictions take effect immediately for all users with this role\n * - Users attempting restricted operations will receive a 403 Forbidden error\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot restrict features for the 'default' role\n * - Returns 404 if role does not exist", + "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).

**Side effects:** Restrictions take effect immediately for all users with this role. Users attempting restricted operations will receive a 403 Forbidden error.

**Limitations:** Requires API key with fullAccess scope. Cannot restrict features for the default role. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -6983,7 +6983,7 @@ "Restrict Features" ], "summary": "List Restricted Features", - "description": "Retrieves all features that are currently restricted for a specific role. Use this endpoint to audit role permissions or build a feature management interface.\n *\n * Each restricted feature includes:\n * - **title**: Human-readable feature name\n * - **description**: What the feature allows users to do\n * - **key**: The feature key used when restricting/allowing features\n * - **path**: The API endpoint path associated with this feature\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist", + "description": "Retrieves all features that are currently restricted for a specific role. Use this endpoint to audit role permissions or build a feature management interface.\n\nEach restricted feature includes: title (human-readable feature name), description (what the feature allows users to do), key (the feature key used when restricting/allowing features), and path (the API endpoint path associated with this feature).\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -7079,7 +7079,7 @@ "Restrict Features" ], "summary": "Allow Features", - "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n *\n * **Options:**\n * - Specify individual features to allow using 'featuresToAllow'\n * - Use 'allowAll: true' to remove all restrictions at once\n *\n * **Side Effects:**\n * - Changes take effect immediately for all users with this role\n * - Users can immediately access the allowed features\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if role does not exist\n * - Allowing a feature that isn't restricted has no effect (idempotent)", + "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n\nOptions: Specify individual features to allow using featuresToAllow, or use allowAll: true to remove all restrictions at once.\n\nSide effects: Changes take effect immediately for all users with this role. Users can immediately access the allowed features.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist. Allowing a feature that is not restricted has no effect (idempotent).", "parameters": [ { "name": "role", @@ -8291,7 +8291,7 @@ "Messages" ], "summary": "Send Bot Message", - "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.\n *\n * The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.\n *\n * **Use Cases:**\n * - Automated welcome messages when users join\n * - Customer support bot responses\n * - AI chatbot integrations (e.g., ChatGPT, custom AI models)\n * - Scheduled notifications and reminders\n * - System announcements to users or groups\n *\n * **Side Effects:**\n * - Triggers message.sent webhook if configured\n * - Updates conversation's lastMessage for the recipient\n * - Increments unread message count for the recipient\n * - Sends push notification to recipient if enabled\n * - Real-time delivery via WebSocket to online recipients\n *\n * **Limitations:**\n * - Bot UID must exist and have the 'bot' role\n * - Message text max length: 65535 characters\n * - Metadata max size: 100KB\n * - Custom data max size: 100KB\n * - Maximum 25 tags per message\n * - Tag max length: 100 characters each\n * - Receiver must be a valid user UID or group GUID\n * - Requires API key with fullAccess scope\n * - Rate limit: 30 requests per second per app", + "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.

**Side effects:** Triggers message.sent webhook if configured. Updates conversation lastMessage for the recipient. Increments unread message count for the recipient. Sends push notification to recipient if enabled. Real-time delivery via WebSocket to online recipients.

**Limitations:** Bot UID must exist and have the bot role. Message text max length is 65535 characters. Metadata max size is 100KB. Custom data max size is 100KB. Maximum 25 tags per message. Tag max length is 100 characters each. Receiver must be a valid user UID or group GUID. Requires API key with fullAccess scope. Rate limit is 30 requests per second per app.", "parameters": [ { "name": "uid", @@ -8472,7 +8472,7 @@ "Notifications" ], "summary": "List Settings", - "description": "Retrieves the complete push notification configuration for your app, including notification preferences, message templates, and sound settings. Use this endpoint to understand your current notification setup before making changes.\n *\n * The response includes:\n * - **preferences**: Controls which events trigger notifications (messages, reactions, member actions, calls) and whether users can override these settings\n * - **templates**: Customizable notification content templates for different message types (text, media, custom) with support for privacy-focused alternatives\n * - **sound**: Default notification sounds for chat and call events\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns app-level settings only; use List Preferences endpoint for user-specific settings\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the complete push notification configuration for your app, including notification preferences, message templates, and sound settings. Use this endpoint to understand your current notification setup before making changes.\n\nThe response includes: preferences (controls which events trigger notifications like messages, reactions, member actions, calls, and whether users can override these settings), templates (customizable notification content templates for different message types like text, media, custom, with support for privacy-focused alternatives), and sound (default notification sounds for chat and call events).\n\nLimitations: Requires API key with fullAccess scope. Returns app-level settings only; use List Preferences endpoint for user-specific settings. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -8698,7 +8698,7 @@ "Notifications" ], "summary": "Update Settings", - "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n *\n * **Configurable Settings:**\n * - **preferences.group**: Control notifications for group events (messages, reactions, member joins/leaves/kicks/bans)\n * - **preferences.oneOnOne**: Control notifications for 1-on-1 chat events\n * - **preferences.call**: Control notifications for call events (initiated, ongoing, ended, etc.)\n * - **preferences.mute**: Configure Do Not Disturb and schedule-based muting\n * - **preferences.email/sms/push**: Configure channel-specific settings like intervals and metadata inclusion\n * - **templates**: Customize notification content with template variables like {{message.data.text}}\n * - **sound**: Set notification sounds for chat and call events\n *\n * **Side Effects:**\n * - Changes apply immediately to all new notifications\n * - Existing queued notifications are not affected\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Template variables must follow the supported format (see examples)\n * - Rate limit: 50 requests per minute\n * - Maximum request body size: 100KB", + "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n\nConfigurable settings: preferences.group (control notifications for group events like messages, reactions, member joins/leaves/kicks/bans), preferences.oneOnOne (control notifications for 1-on-1 chat events), preferences.call (control notifications for call events like initiated, ongoing, ended), preferences.mute (configure Do Not Disturb and schedule-based muting), preferences.email/sms/push (configure channel-specific settings like intervals and metadata inclusion), templates (customize notification content with template variables like {{message.data.text}}), and sound (set notification sounds for chat and call events).\n\nSide effects: Changes apply immediately to all new notifications. Existing queued notifications are not affected.\n\nLimitations: Requires API key with fullAccess scope. Template variables must follow the supported format (see examples). Rate limit is 50 requests per minute. Maximum request body size is 100KB.", "requestBody": { "content": { "application/json": { @@ -8742,7 +8742,7 @@ "Notifications" ], "summary": "Reset Settings", - "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n *\n * **Side Effects:**\n * - All custom notification templates will be replaced with defaults\n * - User override permissions will be reset to default values\n * - Sound settings will revert to 'default'\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Does not affect user-specific preferences (use Reset Preferences endpoint for that)\n * - Rate limit: 10 requests per minute", + "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n\nSide effects: All custom notification templates will be replaced with defaults. User override permissions will be reset to default values. Sound settings will revert to default. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Does not affect user-specific preferences (use Reset Preferences endpoint for that). Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -8779,7 +8779,7 @@ "Notifications" ], "summary": "List FCM Providers", - "description": "Retrieves all configured Firebase Cloud Messaging (FCM) providers for your app. FCM is used to send push notifications to Android devices and web browsers. Use this endpoint to view your current FCM configuration.\n *\n * The response includes:\n * - **pushProviders**: Object containing all configured FCM providers\n * - Each provider includes its ID, name, and whether it's the default provider\n * - Credentials are partially masked for security\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", + "description": "Retrieves all configured Firebase Cloud Messaging (FCM) providers for your app. FCM is used to send push notifications to Android devices and web browsers. Use this endpoint to view your current FCM configuration.\n\nThe response includes pushProviders object containing all configured FCM providers. Each provider includes its ID, name, and whether it is the default provider. Credentials are partially masked for security.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -8817,7 +8817,7 @@ "Notifications" ], "summary": "Add FCM Provider", - "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n *\n * **Required Credentials:**\n * - **serviceAccountKey**: Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts)\n *\n * **How to Get FCM Credentials:**\n * 1. Go to Firebase Console (console.firebase.google.com)\n * 2. Select your project\n * 3. Navigate to Project Settings > Service Accounts\n * 4. Click 'Generate new private key'\n * 5. Use the downloaded JSON file content as serviceAccountKey\n *\n * **Side Effects:**\n * - If this is the first FCM provider, it becomes the default automatically\n * - Push notifications to Android devices will use this provider once set as default\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Maximum 5 FCM providers per app\n * - Service account key must be valid JSON\n * - Rate limit: 10 requests per minute", + "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n\nRequired Credentials: serviceAccountKey - Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts).\n\nHow to Get FCM Credentials: Go to Firebase Console (console.firebase.google.com), select your project, navigate to Project Settings > Service Accounts, click Generate new private key, and use the downloaded JSON file content as serviceAccountKey.\n\nSide effects: If this is the first FCM provider, it becomes the default automatically. Push notifications to Android devices will use this provider once set as default.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 FCM providers per app. Service account key must be valid JSON. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -8864,7 +8864,7 @@ "Notifications" ], "summary": "Update FCM Provider", - "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n *\n * **Updatable Fields:**\n * - **name**: Display name for the provider\n * - **serviceAccountKey**: New Firebase service account JSON key\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Notifications already in queue continue with previous credentials\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist\n * - Service account key must be valid JSON\n * - Rate limit: 10 requests per minute", + "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider) and serviceAccountKey (new Firebase service account JSON key).\n\nSide effects: Changes take effect immediately for new notifications. Notifications already in queue continue with previous credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Service account key must be valid JSON. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -8926,7 +8926,7 @@ "Notifications" ], "summary": "Delete FCM Provider", - "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n *\n * **Side Effects:**\n * - If deleting the default provider, you must set another provider as default first\n * - Push notifications to Android devices will fail if no FCM provider remains\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot delete the default provider (change default first)\n * - Provider must exist\n * - Rate limit: 10 requests per minute", + "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n\nSide effects: If deleting the default provider, you must set another provider as default first. Push notifications to Android devices will fail if no FCM provider remains. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -8971,7 +8971,7 @@ "Notifications" ], "summary": "Change default FCM Provider", - "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n *\n * **Side Effects:**\n * - All new Android push notifications will use this provider\n * - Previous default provider remains available but inactive\n * - Changes take effect immediately\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist and be properly configured\n * - Rate limit: 10 requests per minute", + "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nSide effects: All new Android push notifications will use this provider. Previous default provider remains available but inactive. Changes take effect immediately.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9016,7 +9016,7 @@ "Notifications" ], "summary": "List APNS Providers", - "description": "Retrieves all configured Apple Push Notification service (APNS) providers for your app. APNS is required to send push notifications to iOS devices. Use this endpoint to view your current APNS configuration.\n *\n * The response includes:\n * - **pushProviders**: Object containing all configured APNS providers\n * - Each provider includes its ID, name, bundle ID, and whether it's the default\n * - Credentials are partially masked for security\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", + "description": "Retrieves all configured Apple Push Notification service (APNS) providers for your app. APNS is required to send push notifications to iOS devices. Use this endpoint to view your current APNS configuration.\n\nThe response includes pushProviders object containing all configured APNS providers. Each provider includes its ID, name, bundle ID, and whether it is the default. Credentials are partially masked for security.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -9048,7 +9048,7 @@ "Notifications" ], "summary": "Update APNS Providers", - "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n *\n * **Updatable Fields:**\n * - **name**: Display name for the provider\n * - **bundleId**: iOS app bundle identifier\n * - **teamId**: Apple Developer Team ID\n * - **keyId**: APNS authentication key ID\n * - **authKey**: New .p8 authentication key content\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Notifications already in queue continue with previous credentials\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist\n * - Auth key must be valid .p8 format\n * - Rate limit: 10 requests per minute", + "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider), bundleId (iOS app bundle identifier), teamId (Apple Developer Team ID), keyId (APNS authentication key ID), and authKey (new .p8 authentication key content).\n\nSide effects: Changes take effect immediately for new notifications. Notifications already in queue continue with previous credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Auth key must be valid .p8 format. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9101,7 +9101,7 @@ "Notifications" ], "summary": "Add APNS Provider", - "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n *\n * **Required Credentials:**\n * - **bundleId**: Your iOS app's bundle identifier (e.g., 'com.yourcompany.yourapp')\n * - **teamId**: Your Apple Developer Team ID (10-character string)\n * - **keyId**: The Key ID for your APNS authentication key\n * - **authKey**: The .p8 authentication key file content from Apple Developer Portal\n *\n * **How to Get APNS Credentials:**\n * 1. Go to Apple Developer Portal (developer.apple.com)\n * 2. Navigate to Certificates, Identifiers & Profiles > Keys\n * 3. Create a new key with Apple Push Notifications service (APNs) enabled\n * 4. Download the .p8 key file (only available once)\n * 5. Note the Key ID shown after creation\n * 6. Find your Team ID in Membership details\n *\n * **Side Effects:**\n * - If this is the first APNS provider, it becomes the default automatically\n * - Push notifications to iOS devices will use this provider once set as default\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Maximum 5 APNS providers per app\n * - Auth key must be valid .p8 format\n * - Bundle ID must match your iOS app configuration\n * - Rate limit: 10 requests per minute", + "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n\nRequired credentials: bundleId (your iOS app bundle identifier, e.g., com.yourcompany.yourapp), teamId (your Apple Developer Team ID, 10-character string), keyId (the Key ID for your APNS authentication key), and authKey (the .p8 authentication key file content from Apple Developer Portal).\n\nHow to get APNS credentials: Go to Apple Developer Portal (developer.apple.com), navigate to Certificates, Identifiers and Profiles > Keys, create a new key with Apple Push Notifications service (APNs) enabled, download the .p8 key file (only available once), note the Key ID shown after creation, and find your Team ID in Membership details.\n\nSide effects: If this is the first APNS provider, it becomes the default automatically. Push notifications to iOS devices will use this provider once set as default.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 APNS providers per app. Auth key must be valid .p8 format. Bundle ID must match your iOS app configuration. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9144,7 +9144,7 @@ "Notifications" ], "summary": "Delete APNS Providers", - "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n *\n * **Side Effects:**\n * - If deleting the default provider, you must set another provider as default first\n * - Push notifications to iOS devices will fail if no APNS provider remains\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Cannot delete the default provider (change default first)\n * - Provider must exist\n * - Rate limit: 10 requests per minute", + "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n\nSide effects: If deleting the default provider, you must set another provider as default first. Push notifications to iOS devices will fail if no APNS provider remains. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9183,7 +9183,7 @@ "Notifications" ], "summary": "Change default APNS Provider", - "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n *\n * **Side Effects:**\n * - All new iOS push notifications will use this provider\n * - Previous default provider remains available but inactive\n * - Changes take effect immediately\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Provider must exist and be properly configured\n * - Rate limit: 10 requests per minute", + "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nSide effects: All new iOS push notifications will use this provider. Previous default provider remains available but inactive. Changes take effect immediately.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9222,7 +9222,7 @@ "Notifications" ], "summary": "List Preferences", - "description": "Retrieves the notification preferences for a specific user. These preferences determine which events trigger notifications and how they are displayed. User preferences can override app-level settings where allowed.\n *\n * The response includes:\n * - **preferences.group**: User's notification settings for group events (messages, reactions, member actions)\n * - **preferences.oneOnOne**: User's notification settings for 1-on-1 chat events\n * - **preferences.mute**: Do Not Disturb settings and schedule-based muting configuration\n * - **sound**: User's preferred notification sounds for chat and call events\n * - **templates**: User's notification content templates (if customized)\n *\n * **Setting Values:**\n * - 1 = Disabled (no notification)\n * - 2 = Enabled (send notification)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the notification preferences for a specific user. These preferences determine which events trigger notifications and how they are displayed. User preferences can override app-level settings where allowed.\n\nThe response includes: preferences.group (user notification settings for group events like messages, reactions, member actions), preferences.oneOnOne (user notification settings for 1-on-1 chat events), preferences.mute (Do Not Disturb settings and schedule-based muting configuration), sound (user preferred notification sounds for chat and call events), and templates (user notification content templates if customized).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9385,7 +9385,7 @@ "Notifications" ], "summary": "Update Preferences", - "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n *\n * **Configurable Preferences:**\n * - **preferences.group**: Control notifications for group messages, reactions, and member events\n * - **preferences.oneOnOne**: Control notifications for 1-on-1 chat messages and reactions\n * - **preferences.mute**: Configure Do Not Disturb mode and schedule-based muting\n * - **sound**: Set custom notification sounds for chat and call events\n * - **templates**: Customize notification content templates\n *\n * **Setting Values:**\n * - 1 = Disabled (no notification)\n * - 2 = Enabled (send notification)\n *\n * **Side Effects:**\n * - Changes apply immediately to all new notifications for this user\n * - Overrides app-level settings where the Override flag is true\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Can only override settings where the app-level Override flag is enabled\n * - Rate limit: 50 requests per minute\n * - Maximum request body size: 50KB", + "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n\nConfigurable preferences: preferences.group (control notifications for group messages, reactions, and member events), preferences.oneOnOne (control notifications for 1-on-1 chat messages and reactions), preferences.mute (configure Do Not Disturb mode and schedule-based muting), sound (set custom notification sounds for chat and call events), and templates (customize notification content templates).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nSide effects: Changes apply immediately to all new notifications for this user. Overrides app-level settings where the Override flag is true.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Can only override settings where the app-level Override flag is enabled. Rate limit is 50 requests per minute. Maximum request body size is 50KB.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9557,7 +9557,7 @@ "Notifications" ], "summary": "Reset Preferences", - "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n *\n * **Side Effects:**\n * - All user-specific notification preferences are deleted\n * - User will receive notifications based on app-level settings\n * - Custom notification templates for this user are removed\n * - Sound preferences are reset to defaults\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Does not affect muted conversations (use Unmute Conversations endpoint)\n * - Rate limit: 10 requests per minute", + "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n\nSide effects: All user-specific notification preferences are deleted. User will receive notifications based on app-level settings. Custom notification templates for this user are removed. Sound preferences are reset to defaults. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Does not affect muted conversations (use Unmute Conversations endpoint). Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9659,7 +9659,7 @@ "Notifications" ], "summary": "Register push token", - "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.\n *\n * **Token Types:**\n * - **fcm_android**: Firebase Cloud Messaging token for Android devices\n * - **fcm_web**: Firebase Cloud Messaging token for web browsers\n * - **apns**: Apple Push Notification service token for iOS devices\n * - **apns_voip**: Apple VoIP push token for call notifications on iOS\n *\n * **Side Effects:**\n * - User will start receiving push notifications on the registered device\n * - Multiple tokens can be registered for the same user (multi-device support)\n * - Old tokens for the same device are automatically replaced\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token must be valid and not expired\n * - Push token must be obtained from FCM or APNS\n * - Maximum 10 active tokens per user\n * - Rate limit: 50 requests per minute", + "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).

**Side effects:** User will start receiving push notifications on the registered device. Multiple tokens can be registered for the same user (multi-device support). Old tokens for the same device are automatically replaced.

**Limitations:** Requires API key with fullAccess scope. Auth token must be valid and not expired. Push token must be obtained from FCM or APNS. Maximum 10 active tokens per user. Rate limit is 50 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9706,7 +9706,7 @@ "Notifications" ], "summary": "List push tokens", - "description": "Retrieves registered push tokens for a user session. Use this endpoint to see which devices are registered to receive push notifications for a specific auth token.\n *\n * The response includes:\n * - **pushTokens**: Array of registered device tokens\n * - Each token includes platform type, provider ID, creation date, and last update\n *\n * **Query Options:**\n * - **authToken** (required): The user's auth token to query tokens for\n * - **all**: When true, returns all tokens for the user across all sessions\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token parameter is required\n * - Rate limit: 100 requests per minute", + "description": "Retrieves registered push tokens for a user session. Use this endpoint to see which devices are registered to receive push notifications for a specific auth token.\n\nThe response includes pushTokens array of registered device tokens. Each token includes platform type, provider ID, creation date, and last update.\n\nQuery options: authToken (required) is the user auth token to query tokens for, and all (when true) returns all tokens for the user across all sessions.\n\nLimitations: Requires API key with fullAccess scope. Auth token parameter is required. Rate limit is 100 requests per minute.", "parameters": [ { "name": "all", @@ -9774,7 +9774,7 @@ "Notifications" ], "summary": "Unregister push tokens for authToken", - "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n *\n * **Unregister Options:**\n * - **all=true**: Removes all push tokens for the user across all sessions (useful for account-wide logout)\n * - **all=false**: Removes only the push token for the current auth token (single device logout)\n *\n * **Side Effects:**\n * - User will stop receiving push notifications on unregistered devices\n * - Notifications already in queue may still be delivered\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Auth token in request body must be valid\n * - Rate limit: 50 requests per minute", + "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n\nUnregister options: all=true removes all push tokens for the user across all sessions (useful for account-wide logout), and all=false removes only the push token for the current auth token (single device logout).\n\nSide effects: User will stop receiving push notifications on unregistered devices. Notifications already in queue may still be delivered.\n\nLimitations: Requires API key with fullAccess scope. Auth token in request body must be valid. Rate limit is 50 requests per minute.", "parameters": [ { "name": "all", @@ -9844,7 +9844,7 @@ "Notifications" ], "summary": "Delete the given push token", - "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.\n *\n * **Use Cases:**\n * - Removing invalid or expired device tokens\n * - Cleaning up tokens that are no longer in use\n * - Administrative token management\n *\n * **Side Effects:**\n * - The device will stop receiving push notifications\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Push token must exist in the system\n * - Rate limit: 50 requests per minute", + "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.

**Side effects:** The device will stop receiving push notifications.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Push token must exist in the system. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/pushToken" @@ -9909,7 +9909,7 @@ "Notifications" ], "summary": "List muted conversations", - "description": "Retrieves the list of conversations where notifications have been muted for a specific user. Use this endpoint to see which 1-on-1 chats and groups the user has silenced.\n *\n * The response includes:\n * - **mutedConversations**: Object containing muted conversation IDs with their mute settings\n * - Each muted conversation may have an optional expiration time for temporary mutes\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the list of conversations where notifications have been muted for a specific user. Use this endpoint to see which 1-on-1 chats and groups the user has silenced.\n\nThe response includes mutedConversations object containing muted conversation IDs with their mute settings. Each muted conversation may have an optional expiration time for temporary mutes.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9952,7 +9952,7 @@ "Notifications" ], "summary": "Mute notifications for conversations", - "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n *\n * **Mute Options:**\n * - Permanent mute: Notifications are silenced until explicitly unmuted\n * - Temporary mute: Set an expiration time for automatic unmuting\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Side Effects:**\n * - User will not receive push notifications for messages in muted conversations\n * - Muted conversations still appear in conversation lists\n * - Unread counts continue to increment\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Maximum 100 conversations per request\n * - Rate limit: 50 requests per minute", + "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n\nMute options: Permanent mute silences notifications until explicitly unmuted. Temporary mute sets an expiration time for automatic unmuting.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nSide effects: User will not receive push notifications for messages in muted conversations. Muted conversations still appear in conversation lists. Unread counts continue to increment.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10014,7 +10014,7 @@ "Notifications" ], "summary": "Unmute notifications for conversations", - "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n *\n * **Conversation ID Format:**\n * - 1-on-1 chats: 'user_' (e.g., 'user_john123')\n * - Group chats: 'group_' (e.g., 'group_support-team')\n *\n * **Side Effects:**\n * - User will start receiving push notifications for messages in unmuted conversations\n * - Takes effect immediately for new messages\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Maximum 100 conversations per request\n * - Rate limit: 50 requests per minute", + "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nSide effects: User will start receiving push notifications for messages in unmuted conversations. Takes effect immediately for new messages.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10078,7 +10078,7 @@ "Notifications" ], "summary": "Get timezone", - "description": "Retrieves the timezone setting for a specific user. The timezone is used to apply schedule-based notification preferences correctly, ensuring Do Not Disturb and quiet hours work according to the user's local time.\n *\n * **Timezone Format:**\n * - Uses IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo')\n * - If not set, defaults to UTC\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the timezone setting for a specific user. The timezone is used to apply schedule-based notification preferences correctly, ensuring Do Not Disturb and quiet hours work according to the user's local time.\n\nTimezone format: Uses IANA timezone identifiers (e.g., America/New_York, Europe/London, Asia/Tokyo). If not set, defaults to UTC.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10121,7 +10121,7 @@ "Notifications" ], "summary": "Update timezone", - "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n *\n * **Timezone Format:**\n * - Must be a valid IANA timezone identifier\n * - Examples: 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'Australia/Sydney'\n * - Full list available at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n *\n * **Side Effects:**\n * - Schedule-based preferences will immediately use the new timezone\n * - Affects when quiet hours and DND periods are applied\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The uid query parameter is required\n * - User must exist in the app\n * - Timezone must be a valid IANA identifier\n * - Rate limit: 50 requests per minute", + "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n\nTimezone format: Must be a valid IANA timezone identifier. Examples include America/New_York, Europe/London, Asia/Tokyo, and Australia/Sydney. Full list available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.\n\nSide effects: Schedule-based preferences will immediately use the new timezone. Affects when quiet hours and DND periods are applied.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Timezone must be a valid IANA identifier. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10183,7 +10183,7 @@ "Notifications" ], "summary": "Get contact details", - "description": "Retrieves the contact details (email and phone number) stored for a user. These contact details are used to send email and SMS notifications when configured.\n *\n * **Response Fields:**\n * - **email**: The user's email address for email notifications\n * - **phno**: The user's phone number with country code for SMS notifications\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the contact details (email and phone number) stored for a user. These contact details are used to send email and SMS notifications when configured.\n\nResponse fields: email (the user email address for email notifications) and phno (the user phone number with country code for SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 100 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10227,7 +10227,7 @@ "Notifications" ], "summary": "Update contact details", - "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n *\n * **Contact Format Requirements:**\n * - **email**: Must be a valid email address format\n * - **phno**: Must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India)\n *\n * **Side Effects:**\n * - User will start receiving email/SMS notifications if the respective channel is enabled\n * - Changes take effect immediately for new notifications\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Email must be valid format\n * - Phone number must include country code\n * - Rate limit: 50 requests per minute", + "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n\nContact format requirements: email must be a valid email address format, and phno must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India).\n\nSide effects: User will start receiving email/SMS notifications if the respective channel is enabled. Changes take effect immediately for new notifications.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Email must be valid format. Phone number must include country code. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10293,7 +10293,7 @@ "Notifications" ], "summary": "Delete contact details", - "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n *\n * **Side Effects:**\n * - User will stop receiving email notifications (MISSING_EMAIL reason in logs)\n * - User will stop receiving SMS notifications (MISSING_PHNO reason in logs)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - The onBehalfOf header is required to specify the user\n * - User must exist in the app\n * - Rate limit: 10 requests per minute", + "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n\nSide effects: User will stop receiving email notifications (MISSING_EMAIL reason in logs). User will stop receiving SMS notifications (MISSING_PHNO reason in logs). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10338,7 +10338,7 @@ "Notifications" ], "summary": "Get Twilio credentials", - "description": "Retrieves the Twilio SMS provider configuration for your app. Twilio is used to send SMS notifications to users when they have unread messages.\n *\n * **Response Fields:**\n * - **twilioAccountSID**: Your Twilio Account SID (partially masked)\n * - **twilioAuthToken**: Your Twilio Auth Token (partially masked)\n * - **twilioSenderPhoneNumber**: The phone number used to send SMS\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Credentials are partially masked in response for security\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the Twilio SMS provider configuration for your app. Twilio is used to send SMS notifications to users when they have unread messages.\n\nResponse fields: twilioAccountSID (your Twilio Account SID, partially masked), twilioAuthToken (your Twilio Auth Token, partially masked), and twilioSenderPhoneNumber (the phone number used to send SMS).\n\nLimitations: Requires API key with fullAccess scope. Credentials are partially masked in response for security. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10378,7 +10378,7 @@ "Notifications" ], "summary": "Save Twilio credentials", - "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n *\n * **Required Setup in Twilio:**\n * 1. Create a Twilio account at twilio.com\n * 2. Get your Account SID and Auth Token from the Twilio Console\n * 3. Purchase or use a Twilio phone number for sending SMS\n *\n * **Configuration Fields:**\n * - **twilioAccountSID**: Found in your Twilio Console dashboard (starts with 'AC')\n * - **twilioAuthToken**: Found in your Twilio Console dashboard\n * - **twilioSenderPhoneNumber**: Must be a Twilio phone number in E.164 format (e.g., +1234567890)\n * - **isEnabled**: Set to true to activate SMS notifications\n *\n * **Side Effects:**\n * - Users with stored phone numbers will receive SMS notifications\n * - SMS are sent based on notification preferences and intervals\n * - SMS costs apply based on your Twilio plan\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Phone number must be a valid Twilio number\n * - Account must have sufficient Twilio balance\n * - Rate limit: 10 requests per minute", + "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in Twilio: Create a Twilio account at twilio.com, get your Account SID and Auth Token from the Twilio Console, and purchase or use a Twilio phone number for sending SMS.\n\nConfiguration fields: twilioAccountSID (found in your Twilio Console dashboard, starts with AC), twilioAuthToken (found in your Twilio Console dashboard), twilioSenderPhoneNumber (must be a Twilio phone number in E.164 format, e.g., +1234567890), and isEnabled (set to true to activate SMS notifications).\n\nSide effects: Users with stored phone numbers will receive SMS notifications. SMS are sent based on notification preferences and intervals. SMS costs apply based on your Twilio plan.\n\nLimitations: Requires API key with fullAccess scope. Phone number must be a valid Twilio number. Account must have sufficient Twilio balance. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -10454,7 +10454,7 @@ "Notifications" ], "summary": "Update Twilio credentials", - "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n *\n * **Updatable Fields:**\n * - **twilioAccountSID**: Update to a different Twilio account\n * - **twilioAuthToken**: Rotate to a new auth token\n * - **twilioSenderPhoneNumber**: Change the sender phone number\n * - **isEnabled**: Enable or disable SMS notifications\n *\n * **Side Effects:**\n * - Changes take effect immediately for new SMS notifications\n * - SMS already queued continue with previous settings\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - New phone number must be a valid Twilio number\n * - Rate limit: 10 requests per minute", + "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n\nUpdatable fields: twilioAccountSID (update to a different Twilio account), twilioAuthToken (rotate to a new auth token), twilioSenderPhoneNumber (change the sender phone number), and isEnabled (enable or disable SMS notifications).\n\nSide effects: Changes take effect immediately for new SMS notifications. SMS already queued continue with previous settings.\n\nLimitations: Requires API key with fullAccess scope. New phone number must be a valid Twilio number. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10524,7 +10524,7 @@ "Notifications" ], "summary": "Delete Twilio credentials", - "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n *\n * **Side Effects:**\n * - Users will stop receiving SMS notifications\n * - Stored credentials are permanently removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", + "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n\nSide effects: Users will stop receiving SMS notifications. Stored credentials are permanently removed. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10564,7 +10564,7 @@ "Notifications" ], "summary": "Get SendGrid credentials", - "description": "Retrieves the SendGrid email provider configuration for your app. SendGrid is used to send email notifications to users when they have unread messages.\n *\n * **Response Fields:**\n * - **sendGridApiKey**: Your SendGrid API key (partially masked)\n * - **sendGridTemplateID**: The dynamic template ID for email formatting\n * - **sendGridUnsubscribeGroupID**: The unsubscribe group for compliance\n * - **senderEmail**: The 'from' email address for notifications\n * - **senderName**: The display name for the sender\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - API key is partially masked in response for security\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the SendGrid email provider configuration for your app. SendGrid is used to send email notifications to users when they have unread messages.\n\nResponse fields: sendGridApiKey (your SendGrid API key, partially masked), sendGridTemplateID (the dynamic template ID for email formatting), sendGridUnsubscribeGroupID (the unsubscribe group for compliance), senderEmail (the from email address for notifications), and senderName (the display name for the sender).\n\nLimitations: Requires API key with fullAccess scope. API key is partially masked in response for security. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10606,7 +10606,7 @@ "Notifications" ], "summary": "Save SendGrid credentials", - "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n *\n * **Required Setup in SendGrid:**\n * 1. Create a SendGrid account and verify your sender domain\n * 2. Generate an API key with Mail Send permissions\n * 3. Create a dynamic template for notification emails\n * 4. Create an unsubscribe group for compliance\n *\n * **Configuration Fields:**\n * - **sendGridApiKey**: Your SendGrid API key with Mail Send permissions\n * - **sendGridTemplateID**: Dynamic template ID (starts with 'd-')\n * - **sendGridUnsubscribeGroupID**: Unsubscribe group ID for email compliance\n * - **senderEmail**: Must be a verified sender in SendGrid\n * - **senderName**: Display name shown to recipients\n * - **allowEmailReplies**: Enable reply-to functionality\n *\n * **Side Effects:**\n * - Users with stored email addresses will receive email notifications\n * - Emails are sent based on notification preferences and intervals\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Sender email must be verified in SendGrid\n * - Template must exist in your SendGrid account\n * - Rate limit: 10 requests per minute", + "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in SendGrid: Create a SendGrid account and verify your sender domain, generate an API key with Mail Send permissions, create a dynamic template for notification emails, and create an unsubscribe group for compliance.\n\nConfiguration fields: sendGridApiKey (your SendGrid API key with Mail Send permissions), sendGridTemplateID (dynamic template ID, starts with d-), sendGridUnsubscribeGroupID (unsubscribe group ID for email compliance), senderEmail (must be a verified sender in SendGrid), senderName (display name shown to recipients), and allowEmailReplies (enable reply-to functionality).\n\nSide effects: Users with stored email addresses will receive email notifications. Emails are sent based on notification preferences and intervals.\n\nLimitations: Requires API key with fullAccess scope. Sender email must be verified in SendGrid. Template must exist in your SendGrid account. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -10710,7 +10710,7 @@ "Notifications" ], "summary": "Update SendGrid credentials", - "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n *\n * **Updatable Fields:**\n * - **sendGridApiKey**: Rotate to a new API key\n * - **sendGridTemplateID**: Switch to a different email template\n * - **sendGridUnsubscribeGroupID**: Change the unsubscribe group\n * - **senderEmail**: Update the sender email address\n * - **senderName**: Change the sender display name\n * - **allowEmailReplies**: Toggle reply functionality\n * - **isEnabled**: Enable or disable email notifications\n *\n * **Side Effects:**\n * - Changes take effect immediately for new email notifications\n * - Emails already queued continue with previous settings\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - New sender email must be verified in SendGrid\n * - Rate limit: 10 requests per minute", + "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n\nUpdatable fields: sendGridApiKey (rotate to a new API key), sendGridTemplateID (switch to a different email template), sendGridUnsubscribeGroupID (change the unsubscribe group), senderEmail (update the sender email address), senderName (change the sender display name), allowEmailReplies (toggle reply functionality), and isEnabled (enable or disable email notifications).\n\nSide effects: Changes take effect immediately for new email notifications. Emails already queued continue with previous settings.\n\nLimitations: Requires API key with fullAccess scope. New sender email must be verified in SendGrid. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10805,7 +10805,7 @@ "Notifications" ], "summary": "Delete SendGrid credentials", - "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n *\n * **Side Effects:**\n * - Users will stop receiving email notifications\n * - Stored credentials are permanently removed\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", + "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n\nSide effects: Users will stop receiving email notifications. Stored credentials are permanently removed. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10845,7 +10845,7 @@ "Notifications" ], "summary": "Get Custom Provider for Push Notifications", - "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.\n *\n * **How Custom Providers Work:**\n * - CometChat sends notification payloads to your webhook URL\n * - Your server receives the payload and delivers notifications using your preferred method\n * - Useful for custom notification routing, logging, or using alternative push services\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives notification payloads\n * - **isEnabled**: Whether the custom provider is active\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.

**How it works:** CometChat sends notification payloads to your webhook URL. Your server receives the payload and delivers notifications using your preferred method. Useful for custom notification routing, logging, or using alternative push services.

**Response fields:** webhookURL (the endpoint that receives notification payloads), isEnabled (whether the custom provider is active), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).

**Limitations:** Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -10882,7 +10882,7 @@ "Notifications" ], "summary": "Save Custom Provider for Push Notifications", - "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.\n *\n * **Use Cases:**\n * - Route notifications through your own servers for logging/analytics\n * - Use alternative push notification services\n * - Implement custom notification logic before delivery\n * - Support platforms not covered by FCM/APNS\n *\n * **Webhook Payload:**\n * - CometChat sends a POST request with notification details\n * - Includes message content, sender/receiver info, and notification template\n * - Your server should respond with 2xx status to acknowledge receipt\n *\n * **Side Effects:**\n * - When enabled, push notifications are sent to your webhook instead of FCM/APNS\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", + "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.

**Side effects:** When enabled, push notifications are sent to your webhook instead of FCM/APNS. Your webhook must be publicly accessible.

**Limitations:** Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10957,7 +10957,7 @@ "Notifications" ], "summary": "Update Custom Provider for Push Notifications", - "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom provider\n * - **webhookURL**: Change the endpoint receiving notification payloads\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new notifications\n * - Disabling the provider routes notifications back to FCM/APNS\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", + "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom provider), webhookURL (change the endpoint receiving notification payloads), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new notifications. Disabling the provider routes notifications back to FCM/APNS.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11025,7 +11025,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Push Notifications", - "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive notification payloads\n * - Push notifications revert to FCM/APNS delivery\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", + "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n\nSide effects: Custom webhook will no longer receive notification payloads. Push notifications revert to FCM/APNS delivery. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11056,7 +11056,7 @@ "Notifications" ], "summary": "Get Custom Provider for SMS Notifications", - "description": "Retrieves the custom SMS notification provider configuration for your app. Custom SMS providers allow you to use your own SMS delivery infrastructure instead of Twilio.\n *\n * **How Custom SMS Providers Work:**\n * - CometChat sends SMS notification payloads to your webhook URL\n * - Your server receives the payload and sends SMS using your preferred service\n * - Useful for custom SMS routing, using alternative SMS services, or regional providers\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives SMS notification payloads\n * - **isEnabled**: Whether the custom SMS provider is active\n * - **useStoredPhNo**: Whether to include the user's stored phone number in the payload\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the custom SMS notification provider configuration for your app. Custom SMS providers allow you to use your own SMS delivery infrastructure instead of Twilio.\n\nHow custom SMS providers work: CometChat sends SMS notification payloads to your webhook URL. Your server receives the payload and sends SMS using your preferred service. This is useful for custom SMS routing, using alternative SMS services, or regional providers.\n\nResponse fields: webhookURL (the endpoint that receives SMS notification payloads), isEnabled (whether the custom SMS provider is active), useStoredPhNo (whether to include the user stored phone number in the payload), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11090,7 +11090,7 @@ "Notifications" ], "summary": "Save Custom Provider for SMS Notifications", - "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n *\n * **Use Cases:**\n * - Use your own SMS service (Vonage, MessageBird, etc.)\n * - Use regional SMS providers for better delivery rates\n * - Implement SMS logging and analytics\n * - Route SMS through your own infrastructure\n *\n * **Configuration Options:**\n * - **useStoredPhNo**: When true, only triggers webhook for users with stored phone numbers\n * - **useBasicAuth**: Enable HTTP Basic Authentication for webhook security\n *\n * **Side Effects:**\n * - When enabled, SMS notifications are sent to your webhook instead of Twilio\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", + "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n\nUse cases: Use your own SMS service (Vonage, MessageBird, etc.), use regional SMS providers for better delivery rates, implement SMS logging and analytics, or route SMS through your own infrastructure.\n\nConfiguration options: useStoredPhNo (when true, only triggers webhook for users with stored phone numbers) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nSide effects: When enabled, SMS notifications are sent to your webhook instead of Twilio. Your webhook must be publicly accessible.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -11156,7 +11156,7 @@ "Notifications" ], "summary": "Update Custom Provider for SMS Notifications", - "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom SMS provider\n * - **webhookURL**: Change the endpoint receiving SMS notification payloads\n * - **useStoredPhNo**: Toggle whether to require stored phone numbers\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new SMS notifications\n * - Disabling the provider routes SMS back to Twilio (if configured)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", + "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom SMS provider), webhookURL (change the endpoint receiving SMS notification payloads), useStoredPhNo (toggle whether to require stored phone numbers), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new SMS notifications. Disabling the provider routes SMS back to Twilio (if configured).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11199,7 +11199,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for SMS Notifications", - "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive SMS notification payloads\n * - SMS notifications revert to Twilio delivery (if configured)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", + "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n\nSide effects: Custom webhook will no longer receive SMS notification payloads. SMS notifications revert to Twilio delivery (if configured). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "Delete push notification's SMS custom provider", @@ -11230,7 +11230,7 @@ "Notifications" ], "summary": "Get Custom Provider for Email Notifications", - "description": "Retrieves the custom email notification provider configuration for your app. Custom email providers allow you to use your own email delivery infrastructure instead of SendGrid.\n *\n * **How Custom Email Providers Work:**\n * - CometChat sends email notification payloads to your webhook URL\n * - Your server receives the payload and sends emails using your preferred service\n * - Useful for custom email templates, branding, or using alternative email services\n *\n * **Response Fields:**\n * - **webhookURL**: The endpoint that receives email notification payloads\n * - **isEnabled**: Whether the custom email provider is active\n * - **useStoredEmailID**: Whether to include the user's stored email in the payload\n * - **useBasicAuth**: Whether HTTP Basic Authentication is enabled\n * - **basicAuthUsername/Password**: Credentials for Basic Auth (password is masked)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 100 requests per minute", + "description": "Retrieves the custom email notification provider configuration for your app. Custom email providers allow you to use your own email delivery infrastructure instead of SendGrid.\n\nHow custom email providers work: CometChat sends email notification payloads to your webhook URL. Your server receives the payload and sends emails using your preferred service. This is useful for custom email templates, branding, or using alternative email services.\n\nResponse fields: webhookURL (the endpoint that receives email notification payloads), isEnabled (whether the custom email provider is active), useStoredEmailID (whether to include the user stored email in the payload), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", "responses": { "200": { "description": "A list of push notification's email custom provider", @@ -11264,7 +11264,7 @@ "Notifications" ], "summary": "Save Custom Provider for Email Notifications", - "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n *\n * **Use Cases:**\n * - Use your own email service (Mailgun, Amazon SES, etc.)\n * - Apply custom email templates and branding\n * - Implement email logging and analytics\n * - Route emails through your own infrastructure\n *\n * **Configuration Options:**\n * - **useStoredEmailID**: When true, includes the user's stored email address in the payload\n * - **useBasicAuth**: Enable HTTP Basic Authentication for webhook security\n *\n * **Side Effects:**\n * - When enabled, email notifications are sent to your webhook instead of SendGrid\n * - Your webhook must be publicly accessible\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Webhook must respond within 30 seconds\n * - Rate limit: 10 requests per minute", + "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n\nUse cases: Use your own email service (Mailgun, Amazon SES, etc.), apply custom email templates and branding, implement email logging and analytics, or route emails through your own infrastructure.\n\nConfiguration options: useStoredEmailID (when true, includes the user stored email address in the payload) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nSide effects: When enabled, email notifications are sent to your webhook instead of SendGrid. Your webhook must be publicly accessible.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -11322,7 +11322,7 @@ "Notifications" ], "summary": "Update Custom Provider for Email Notifications", - "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n *\n * **Updatable Fields:**\n * - **isEnabled**: Enable or disable the custom email provider\n * - **webhookURL**: Change the endpoint receiving email notification payloads\n * - **useStoredEmailID**: Toggle whether to include user's email in payload\n * - **useBasicAuth**: Toggle HTTP Basic Authentication\n * - **basicAuthUsername/Password**: Update authentication credentials\n *\n * **Side Effects:**\n * - Changes take effect immediately for new email notifications\n * - Disabling the provider routes emails back to SendGrid (if configured)\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Webhook URL must be HTTPS\n * - Rate limit: 10 requests per minute", + "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom email provider), webhookURL (change the endpoint receiving email notification payloads), useStoredEmailID (toggle whether to include user email in payload), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new email notifications. Disabling the provider routes emails back to SendGrid (if configured).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11365,7 +11365,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Email Notifications", - "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n *\n * **Side Effects:**\n * - Custom webhook will no longer receive email notification payloads\n * - Email notifications revert to SendGrid delivery (if configured)\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Rate limit: 10 requests per minute", + "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n\nSide effects: Custom webhook will no longer receive email notification payloads. Email notifications revert to SendGrid delivery (if configured). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "Delete push notification's Email custom provider", @@ -11396,7 +11396,7 @@ "Notifications" ], "summary": "Notifications logs", - "description": "Retrieves notification delivery logs for debugging and monitoring. Use this endpoint to track notification delivery status, identify failures, and understand why notifications were or were not sent.\n *\n * **Log Information Includes:**\n * - Processing timestamps and duration\n * - Channel (push, email, sms) and provider details\n * - Message and trigger information\n * - Delivery status (success/failure)\n * - Reason for non-delivery (when applicable)\n *\n * **Common Reasons for Non-Delivery:**\n * - MESSAGES_PREFERENCE: User disabled message notifications\n * - DND_PREFERENCE: User has Do Not Disturb enabled\n * - MUTE_PREFERENCE: Conversation is muted\n * - SCHEDULE_PREFERENCE: Outside user's notification schedule\n * - MISSING_EMAIL/MISSING_PHNO: Contact info not available\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Logs are retained for 7 days\n * - Maximum 100 logs per request\n * - Rate limit: 100 requests per minute", + "description": "Retrieves notification delivery logs for debugging and monitoring. Use this endpoint to track notification delivery status, identify failures, and understand why notifications were or were not sent.\n\nLog information includes: Processing timestamps and duration, channel (push, email, sms) and provider details, message and trigger information, delivery status (success/failure), and reason for non-delivery (when applicable).\n\nCommon reasons for non-delivery: MESSAGES_PREFERENCE (user disabled message notifications), DND_PREFERENCE (user has Do Not Disturb enabled), MUTE_PREFERENCE (conversation is muted), SCHEDULE_PREFERENCE (outside user notification schedule), and MISSING_EMAIL/MISSING_PHNO (contact info not available).\n\nLimitations: Requires API key with fullAccess scope. Logs are retained for 7 days. Maximum 100 logs per request. Rate limit is 100 requests per minute.", "parameters": [ { "name": "messageId", @@ -11737,7 +11737,7 @@ "Moderation" ], "summary": "Add Rule", - "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.\n *\n * **Rule Types:**\n * - **Text Profanity Filter**: Block messages containing words from a keyword list\n * - **AI Image Moderation**: Detect violence, adult content, or other unsafe imagery\n * - **AI Video Moderation**: Analyze video content for policy violations\n * - **Pattern Matching**: Filter phone numbers, emails, or custom regex patterns\n *\n * **Actions:**\n * - **blockMessage**: Prevent the message from being delivered, hold for review\n * - **dropMessage**: Silently discard the message without notification\n *\n * **Side Effects:**\n * - Rules take effect immediately for all new messages\n * - Blocked messages are stored for admin review\n *\n * **Limitations:**\n * - Rule ID max length: 100 characters\n * - Rule ID must be unique within your app\n * - AI moderation features may require specific subscription plans\n * - Requires API key with fullAccess scope", + "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).

**Side effects:** Rules take effect immediately for all new messages. Blocked messages are stored for admin review.

**Limitations:** Rule ID max length is 100 characters. Rule ID must be unique within your app. AI moderation features may require specific subscription plans. Requires API key with fullAccess scope.", "requestBody": { "required": true, "content": { @@ -11813,7 +11813,7 @@ "Moderation" ], "summary": "List Rules", - "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.\n *\n * **Rule Categories:**\n * - **Text Profanity**: Keyword-based filtering for text messages\n * - **Custom Profanity**: Keyword filtering for custom message types\n * - **Image Moderation**: AI-powered image content analysis\n * - **Video Moderation**: AI-powered video content analysis\n * - **Pattern Filters**: Regex-based filtering (emails, phone numbers)\n *\n * **Limitations:**\n * - Maximum 50 rules per request (use limit parameter)\n * - Requires API key with fullAccess scope", + "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.

**Rule categories:** Text Profanity (keyword-based filtering for text messages), Custom Profanity (keyword filtering for custom message types), Image Moderation (AI-powered image content analysis), Video Moderation (AI-powered video content analysis), and Pattern Filters (regex-based filtering for emails, phone numbers).

**Limitations:** Maximum 50 rules per request (use limit parameter). Requires API key with fullAccess scope.", "parameters": [ { "name": "limit", @@ -12121,7 +12121,7 @@ "Moderation" ], "summary": "Get Rule", - "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.\n *\n * **Limitations:**\n * - Requires API key with fullAccess scope\n * - Returns 404 if rule does not exist", + "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if rule does not exist.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12177,7 +12177,7 @@ "Moderation" ], "summary": "Update Rule", - "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.\n *\n * **Common Updates:**\n * - Enable/disable a rule without deleting it\n * - Adjust confidence thresholds for AI moderation\n * - Change the action from 'blockMessage' to 'dropMessage'\n * - Update keyword list references\n *\n * **Side Effects:**\n * - Changes take effect immediately for new messages\n * - A new revision is created for audit purposes\n * - Previously blocked messages are not affected\n *\n * **Limitations:**\n * - Rule ID cannot be changed\n * - Cannot modify default system rules\n * - Requires API key with fullAccess scope", + "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.

**Side effects:** Changes take effect immediately for new messages. A new revision is created for audit purposes. Previously blocked messages are not affected.

**Limitations:** Rule ID cannot be changed. Cannot modify default system rules. Requires API key with fullAccess scope.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12258,7 +12258,7 @@ "Moderation" ], "summary": "Remove rule", - "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.\n *\n * **Side Effects:**\n * - The rule stops filtering messages immediately\n * - Previously blocked messages remain in the blocked queue\n * - This action cannot be undone\n *\n * **Limitations:**\n * - Cannot delete default system rules\n * - Requires API key with fullAccess scope\n * - Returns 404 if rule does not exist", + "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.

**Side effects:** The rule stops filtering messages immediately. Previously blocked messages remain in the blocked queue.

**Limitations:** This action cannot be undone. Cannot delete default system rules. Requires API key with fullAccess scope. Returns 404 if rule does not exist.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -14383,7 +14383,7 @@ "Metrics" ], "summary": "Usage Metrics", - "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.\n *\n * **Available Metrics:**\n * - **audio_minutes**: Total minutes of audio calls\n * - **video_minutes**: Total minutes of video calls\n * - **recorded_minutes**: Total minutes of recorded calls\n * - **active_users**: Number of unique users who were active\n * - **concurrent_users**: Peak concurrent users during the period\n *\n * **Limitations:**\n * - Maximum date range: 90 days\n * - Data retention: 12 months\n * - Timestamps must be in milliseconds\n * - Requires API key with fullAccess scope", + "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.

**Available metrics:** audio_minutes (total minutes of audio calls), video_minutes (total minutes of video calls), recorded_minutes (total minutes of recorded calls), active_users (number of unique users who were active), and concurrent_users (peak concurrent users during the period).

**Limitations:** Maximum date range is 90 days. Data retention is 12 months. Timestamps must be in milliseconds. Requires API key with fullAccess scope.", "parameters": [ { "name": "fromDate", @@ -14449,7 +14449,7 @@ "Metrics" ], "summary": "Message Metrics", - "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.\n *\n * **Available Metrics per Interval:**\n * - **messagesSent**: Number of messages sent during the interval\n * - **readReceipts**: Number of read receipts received\n * - **deliveryReceipts**: Number of delivery receipts received\n *\n * **Data Format:**\n * Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.\n *\n * **Limitations:**\n * - Returns last 1 hour of data only\n * - Data points are in 5-minute intervals\n * - Real-time data may have up to 5 minutes delay\n * - Requires API key with fullAccess scope", + "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.

**Available metrics per interval:** messagesSent (number of messages sent during the interval), readReceipts (number of read receipts received), and deliveryReceipts (number of delivery receipts received). Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.

**Limitations:** Returns last 1 hour of data only. Data points are in 5-minute intervals. Real-time data may have up to 5 minutes delay. Requires API key with fullAccess scope.", "responses": { "200": { "description": "Message metrics broken down into 5-minute intervals. Use this to visualize message activity over time.", diff --git a/data-import-apis.json b/data-import-apis.json index 1822ab538..3d7a7ca30 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -32,7 +32,7 @@ "Messages" ], "summary": "Import Messages", - "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.\n *\n * **Use Cases:**\n * - Migrate chat history from another chat platform\n * - Restore messages from a backup\n * - Import historical conversations for compliance\n * - Pre-populate conversations with sample data for testing\n *\n * **Import Behavior:**\n * - Messages are created with the provided MUIDs (message unique IDs)\n * - Existing messages with the same MUID are updated\n * - Historical timestamps (sentAt, deliveredAt, readAt) are preserved\n * - Sender and receiver users/groups must exist or be provided in the request\n * - Conversations are automatically created if they don't exist\n *\n * **Limitations:**\n * - Maximum 100 messages per request\n * - MUID max length: 100 characters\n * - Message data max size: 100KB per message\n * - Attachment URLs must be publicly accessible\n * - Maximum 5 attachments per message\n * - Each attachment URL max length: 2048 characters\n * - Maximum 25 tags per message\n * - Requires API key with fullAccess scope\n * - sentAt timestamp is required for each message", + "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.

**Side effects:** Messages are created with the provided MUIDs (message unique IDs). Existing messages with the same MUID are updated. Historical timestamps (sentAt, deliveredAt, readAt) are preserved. Sender and receiver users/groups must exist or be provided in the request. Conversations are automatically created if they don't exist.

**Limitations:** Maximum 100 messages per request. MUID max length is 100 characters. Message data max size is 100KB per message. Attachment URLs must be publicly accessible. Maximum 5 attachments per message. Each attachment URL max length is 2048 characters. Maximum 25 tags per message. Requires API key with fullAccess scope. sentAt timestamp is required for each message.", "requestBody": { "content": { "application/json": { @@ -649,7 +649,7 @@ "Users" ], "summary": "Import Users", - "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.\n *\n * **Use Cases:**\n * - Migrate users from another chat platform\n * - Sync users from your application database\n * - Restore users from a backup\n * - Pre-populate users before launching your app\n *\n * **Import Behavior:**\n * - Users are created with the provided UIDs (not auto-generated)\n * - Existing users with the same UID are updated\n * - Historical timestamps (createdAt, lastActiveAt) are preserved\n *\n * **Limitations:**\n * - Maximum 100 users per request\n * - UID max length: 100 characters\n * - Name max length: 100 characters\n * - Metadata max size: 100KB per user\n * - Requires API key with fullAccess scope", + "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.

**Side effects:** Users are created with the provided UIDs (not auto-generated). Existing users with the same UID are updated. Historical timestamps (createdAt, lastActiveAt) are preserved.

**Limitations:** Maximum 100 users per request. UID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per user. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -802,7 +802,7 @@ "Groups" ], "summary": "Import Groups", - "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.\n *\n * **Use Cases:**\n * - Migrate groups from another chat platform\n * - Create predefined groups for your organization\n * - Restore groups from a backup\n * - Set up team/department groups before launch\n *\n * **Import Behavior:**\n * - Groups are created with the provided GUIDs (not auto-generated)\n * - Existing groups with the same GUID are updated\n * - Group owner must exist or be provided in groupOwnerDetails\n * - Historical timestamps (createdAt) are preserved\n *\n * **Limitations:**\n * - Maximum 100 groups per request\n * - GUID max length: 100 characters\n * - Name max length: 100 characters\n * - Metadata max size: 100KB per group\n * - Requires API key with fullAccess scope", + "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.

**Side effects:** Groups are created with the provided GUIDs (not auto-generated). Existing groups with the same GUID are updated. Group owner must exist or be provided in groupOwnerDetails. Historical timestamps (createdAt) are preserved.

**Limitations:** Maximum 100 groups per request. GUID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per group. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -1001,7 +1001,7 @@ "Groups" ], "summary": "Import Group Members", - "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.\n *\n * **Use Cases:**\n * - Migrate group memberships from another chat platform\n * - Set up team/department memberships before launch\n * - Restore group memberships from a backup\n * - Bulk add users to multiple groups during onboarding\n *\n * **Import Behavior:**\n * - Memberships are created with the provided member IDs (format: guid_member_uid)\n * - Existing memberships with the same ID are updated\n * - Both the group and user must exist or be provided in the request\n * - Historical timestamps (joinedAt) are preserved\n * - Member scope (admin, moderator, participant) is set as specified\n *\n * **Limitations:**\n * - Maximum 100 memberships per request\n * - Member ID format must be: {guid}_member_{uid}\n * - GUID max length: 100 characters\n * - UID max length: 100 characters\n * - Valid scope values: admin, moderator, participant\n * - Requires API key with fullAccess scope\n * - Group and user must exist or be provided in groupDetails/userDetails", + "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.

**Side effects:** Memberships are created with the provided member IDs (format: guid_member_uid). Existing memberships with the same ID are updated. Both the group and user must exist or be provided in the request. Historical timestamps (joinedAt) are preserved. Member scope (admin, moderator, participant) is set as specified.

**Limitations:** Maximum 100 memberships per request. Member ID format must be {guid}_member_{uid}. GUID max length is 100 characters. UID max length is 100 characters. Valid scope values are admin, moderator, participant. Requires API key with fullAccess scope. Group and user must exist or be provided in groupDetails/userDetails.", "requestBody": { "content": { "application/json": { From 05471dc0097b1cf926a0793047aafb04b9aea126 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Tue, 10 Feb 2026 18:54:11 +0530 Subject: [PATCH 04/56] cac updates --- chat-apis.json | 10 +++++----- data-import-apis.json | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index af4e2f632..4da413b9c 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -1741,7 +1741,7 @@ "Messages" ], "summary": "Send Message", - "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 100KB.", + "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 65KB.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -16019,7 +16019,7 @@ ] }, "category": { - "description": "Message category. Use 'custom' for application-defined message types", + "description": "Message category. Use 'custom' for application-defined message types. Available options: custom", "type": "string", "default": "custom", "enum": [ @@ -16031,7 +16031,7 @@ "type": "string" }, "type": { - "description": "Application-defined message type (e.g., 'location', 'poll', 'payment')", + "description": "Application-defined message type (e.g., 'location', 'poll', 'payment'). You can use any custom string value based on your application needs", "type": "string" }, "data": { @@ -16664,7 +16664,7 @@ ] }, "category": { - "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video)", + "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video). Available options: message", "type": "string", "default": "message", "enum": [ @@ -16676,7 +16676,7 @@ "type": "string" }, "type": { - "description": "The type of message content being sent", + "description": "The type of message content being sent. Available options: text, image, file, audio, video", "type": "string", "default": "text", "enum": [ diff --git a/data-import-apis.json b/data-import-apis.json index 3d7a7ca30..337501e1d 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -2755,7 +2755,7 @@ ] }, "category": { - "description": "Message category. Use 'custom' for application-defined message types", + "description": "Message category. Use 'custom' for application-defined message types. Available options: custom", "type": "string", "default": "custom", "enum": [ @@ -2767,7 +2767,7 @@ "type": "string" }, "type": { - "description": "Application-defined message type (e.g., 'location', 'poll', 'payment')", + "description": "Application-defined message type (e.g., 'location', 'poll', 'payment'). You can use any custom string value based on your application needs", "type": "string" }, "data": { @@ -3400,7 +3400,7 @@ ] }, "category": { - "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video)", + "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video). Available options: message", "type": "string", "default": "message", "enum": [ @@ -3412,7 +3412,7 @@ "type": "string" }, "type": { - "description": "The type of message content being sent", + "description": "The type of message content being sent. Available options: text, image, file, audio, video", "type": "string", "default": "text", "enum": [ From 0c10663ae7e963b9ce31c950b2fb3734733b25af Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Tue, 10 Feb 2026 18:58:58 +0530 Subject: [PATCH 05/56] Updated font size of API description. --- assets/version-aligner.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/assets/version-aligner.css b/assets/version-aligner.css index 6b65525cb..8dd2607be 100644 --- a/assets/version-aligner.css +++ b/assets/version-aligner.css @@ -108,4 +108,11 @@ html.cc-version-aligned #sidebar-content [data-version-aligner-button] { :not(pre)>code { padding: .125rem 0rem; -} \ No newline at end of file +} + +/* Fix font size inconsistency in API endpoint descriptions */ +/* Only applies to API reference pages */ +#content-area #header .mt-2.text-lg p { + font-size: 0.875rem !important; + line-height: 1.375rem !important; +} From e27441660b0d193b2019335a399bc088b9dc8db8 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Tue, 10 Feb 2026 21:12:05 +0530 Subject: [PATCH 06/56] cac updates --- chat-apis.json | 150 +++++++++++++++++++++--------------------- data-import-apis.json | 10 +-- 2 files changed, 82 insertions(+), 78 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 4da413b9c..99ef4b2e2 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -32,7 +32,7 @@ "API Keys" ], "summary": "Create", - "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).

**Side effects:** The new API key is immediately active and can be used for authentication. API key usage is tracked for billing and analytics.

**Limitations:** API key name max length is 100 characters. Maximum API keys per app is 10. Requires an existing API key with fullAccess scope to create new keys.", + "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).

**Limitations:** API key name max length is 100 characters. Maximum API keys per app is 10. Requires an existing API key with fullAccess scope to create new keys.", "requestBody": { "content": { "application/json": { @@ -233,7 +233,7 @@ "API Keys" ], "summary": "Update", - "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.

**Side effects:** Scope changes take effect immediately. Existing sessions using this key are not affected until the next API call.

**Limitations:** The API key value itself cannot be changed (create a new key instead). API key name max length is 100 characters. Requires API key with fullAccess scope.", + "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.

**Limitations:** The API key value itself cannot be changed (create a new key instead). API key name max length is 100 characters. Requires API key with fullAccess scope.", "parameters": [ { "name": "apiKey", @@ -304,7 +304,7 @@ "API Keys" ], "summary": "Delete", - "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.

**Side effects:** All API requests using this key will immediately start failing with authentication errors. SDK instances initialized with this key will need to be re-initialized with a new key. This action cannot be undone - you must create a new key if needed.

**Limitations:** Cannot delete the last fullAccess API key (at least one must remain). Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", + "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.

**Limitations:** Cannot delete the last fullAccess API key (at least one must remain). Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", "parameters": [ { "name": "apiKey", @@ -358,7 +358,7 @@ "Users" ], "summary": "Create", - "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.

**Side effects:** Triggers user.created webhook if configured. User appears in user lists immediately after creation. User can be searched and messaged by other users.

**Limitations:** UID must be unique across your app (case-insensitive). UID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", + "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.

**Limitations:** UID must be unique across your app (case-insensitive). UID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", "requestBody": { "content": { "application/json": { @@ -697,7 +697,7 @@ "Users" ], "summary": "Reactivate", - "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.

**What happens on reactivation:** User can log in and create auth tokens again. User appears in user lists and search results. User can send and receive messages. Previous group memberships remain intact. Message history is preserved and accessible.

**Side effects:** Triggers user.reactivated webhook if configured. User becomes visible in user lists immediately. User can be messaged by other users.

**Limitations:** Only works on deactivated users (not deleted users). Users must have been previously deactivated via the Deactivate API. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", + "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.

**Limitations:** Only works on deactivated users (not deleted users). Users must have been previously deactivated via the Deactivate API. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -764,7 +764,7 @@ "Users" ], "summary": "Deactivate", - "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**What happens on deactivation:** User cannot log in or create new auth tokens. Existing auth tokens are invalidated. User is hidden from user lists and search results. User cannot send or receive new messages. All user data (messages, groups, metadata) is preserved. User can be reactivated later using the Reactivate API.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.

**Side effects:** Triggers user.deactivated webhook if configured. Active sessions are terminated immediately. User is removed from online user lists. Push notification tokens are preserved but inactive.

**Limitations:** Users must exist (non-existent UIDs are ignored). Already deactivated users are skipped. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", + "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.

**Limitations:** Users must exist (non-existent UIDs are ignored). Already deactivated users are skipped. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -890,7 +890,7 @@ "Users" ], "summary": "Update", - "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.

**Side effects:** Triggers user.updated webhook if configured. Updated information reflects immediately in user lists and chat interfaces. Role changes take effect immediately for access control.

**Limitations:** UID cannot be changed after user creation. User must exist (returns 404 if not found). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", + "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.

**Limitations:** UID cannot be changed after user creation. User must exist (returns 404 if not found). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", "parameters": [ { "name": "uid", @@ -1038,7 +1038,7 @@ "Users" ], "summary": "Delete", - "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.

**Side effects:** Triggers user.deleted webhook if configured. User is removed from all groups. Active sessions are terminated. Auth tokens are invalidated. With permanent=true, all messages and conversations are deleted.

**Limitations:** User must exist (returns 404 if not found). Permanent deletion cannot be undone. Requires API key with fullAccess scope.", + "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.

**Limitations:** User must exist (returns 404 if not found). Permanent deletion cannot be undone. Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -1109,7 +1109,7 @@ "Groups" ], "summary": "Create", - "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.

**Side effects:** Triggers group.created webhook if configured. If owner is specified, that user is automatically added as admin. If members are specified, they are added with their respective scopes. A conversation is automatically created with ID format group_{guid}.

**Limitations:** GUID must be unique across your app (case-sensitive). GUID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB (JSON object). Maximum 10 tags per group, each tag max 50 characters. Maximum 100 members can be added during creation. Requires API key with fullAccess or groups scope.", + "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.

**Limitations:** GUID must be unique across your app (case-sensitive). GUID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB (JSON object). Maximum 10 tags per group, each tag max 50 characters. Maximum 100 members can be added during creation. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1573,7 +1573,7 @@ "Groups" ], "summary": "Update", - "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.

**Side effects:** Triggers group.updated webhook if configured. Changing type to password requires providing a password. Changing owner transfers all admin privileges. Members are notified of significant changes via real-time events.

**Limitations:** GUID cannot be changed after creation. Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB. Maximum 10 tags, each up to 50 characters. Owner field ignored when onBehalfOf header is present. Only admins can update group (when using onBehalfOf). Requires API key with fullAccess or groups scope.", + "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.

**Limitations:** GUID cannot be changed after creation. Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB. Maximum 10 tags, each up to 50 characters. Owner field ignored when onBehalfOf header is present. Only admins can update group (when using onBehalfOf). Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1696,7 +1696,7 @@ "Groups" ], "summary": "Delete", - "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**Side effects:** Triggers group.deleted webhook if configured. All group messages are permanently deleted. All member associations are removed. Group conversation is deleted. Banned user list is cleared. Group no longer appears in any user's group list.

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.

**Limitations:** Action is irreversible (data cannot be recovered). Only group owner or admin can delete (when using onBehalfOf). GUID must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.

**Limitations:** Action is irreversible (data cannot be recovered). Only group owner or admin can delete (when using onBehalfOf). GUID must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -3627,7 +3627,7 @@ "Conversations" ], "summary": "Delete Conversation", - "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.

**Side effects:** Conversation is removed from the user's conversation list. Unread count for this conversation is reset. Messages remain accessible through message APIs.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations. This action cannot be undone.", + "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations. This action cannot be undone.", "parameters": [ { "name": "onBehalfOf", @@ -3956,7 +3956,7 @@ "Conversations" ], "summary": "Reset User Conversation", - "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.

**Side effects:** Conversation is removed from the onBehalfOf user's list. Unread count is reset to 0. If deleteMessagesPermanently is true, messages are permanently deleted for both users. Triggers conversation.deleted webhook if configured.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Permanent deletion cannot be undone. preserveOrder maintains conversation position in list after reset.", + "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Permanent deletion cannot be undone. preserveOrder maintains conversation position in list after reset.", "parameters": [ { "name": "onBehalfOf", @@ -4031,7 +4031,7 @@ "Conversations" ], "summary": "Mark User Conversation As Delivered", - "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.

**Side effects:** Updates delivery timestamps for affected messages. Triggers message.delivered webhook if configured. Sender sees updated delivery status in real-time.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as delivered for other users.", + "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as delivered for other users.", "parameters": [ { "name": "onBehalfOf", @@ -4097,7 +4097,7 @@ "Conversations" ], "summary": "Mark User Conversation As Read", - "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.

**Side effects:** Updates read timestamps for affected messages. Resets unread count for the conversation. Triggers message.read webhook if configured. Sender sees updated read status in real-time.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as read for other users.", + "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as read for other users.", "parameters": [ { "name": "onBehalfOf", @@ -4161,7 +4161,7 @@ "Conversations" ], "summary": "Mark conversation messages as unread", - "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.

**Side effects:** Updates unread count for the conversation. Messages after messageId appear as unread in the user's conversation list. Does not affect the sender's read receipts.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Only affects the onBehalfOf user's view of the conversation.", + "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Only affects the onBehalfOf user's view of the conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4571,7 +4571,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Delivered", - "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.

**Side effects:** Updates delivery timestamps for affected messages for this user. Triggers message.delivered webhook if configured. Senders see updated delivery status in real-time.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", + "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4637,7 +4637,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Read", - "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.

**Side effects:** Updates read timestamps for affected messages for this user. Resets unread count for the group conversation. Triggers message.read webhook if configured. Senders see updated read status in real-time.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", + "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4701,7 +4701,7 @@ "Conversations" ], "summary": "Mark Group Conversation As unread", - "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.

**Side effects:** Updates unread count for the group conversation. Messages after messageId appear as unread in the user's conversation list. Does not affect other group members' read status.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation. Only affects the onBehalfOf user's view of the conversation.", + "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation. Only affects the onBehalfOf user's view of the conversation.", "parameters": [ { "name": "onBehalfOf", @@ -4767,7 +4767,7 @@ "Auth Tokens" ], "summary": "Create", - "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.

**Side effects:** When force=true, any existing token for this user is invalidated. SDK instances using the old token will need to re-authenticate.

**Limitations:** User must exist before creating an auth token. Requires API key with fullAccess scope. Maximum 10 active auth tokens per user.", + "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.

**Limitations:** User must exist before creating an auth token. Requires API key with fullAccess scope. Maximum 10 active auth tokens per user.", "parameters": [ { "name": "uid", @@ -4898,7 +4898,7 @@ "Auth Tokens" ], "summary": "Flush", - "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).

**Side effects:** All SDK instances using any of this user's tokens will immediately lose authentication. Users will need to re-authenticate on all devices.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Returns 404 if user does not exist.", + "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Returns 404 if user does not exist.", "parameters": [ { "name": "uid", @@ -5100,7 +5100,7 @@ "Auth Tokens" ], "summary": "Delete", - "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).

**Side effects:** The SDK instance using this token will immediately lose authentication. Other tokens for the same user remain valid. This action cannot be undone.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", + "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", "parameters": [ { "name": "uid", @@ -5169,7 +5169,7 @@ "Group Members" ], "summary": "Add members", - "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).

**Side effects:** Triggers group.member.added webhook for each added member. Action messages are sent to the group for each addition. Added members receive real-time notification. Group's membersCount is updated.

**Limitations:** Maximum 100 users can be added per request (across all scope arrays). Users must exist (non-existent UIDs are skipped with error in response). Cannot add users who are already members (returns error for that UID). Cannot add banned users as members (unban first). When using onBehalfOf, the acting user must be admin or moderator. Requires API key with fullAccess or groups scope.", + "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).

**Limitations:** Maximum 100 users can be added per request (across all scope arrays). Users must exist (non-existent UIDs are skipped with error in response). Cannot add users who are already members (returns error for that UID). Cannot add banned users as members (unban first). When using onBehalfOf, the acting user must be admin or moderator. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5653,7 +5653,7 @@ "Group Members" ], "summary": "Change Scope", - "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.

**Side effects:** Triggers group.member.scope.changed webhook if configured. Action message is sent to the group announcing the change. Member receives real-time notification of scope change.

**Limitations:** User must be an existing member of the group. Cannot change scope of the group owner. When using onBehalfOf, acting user must be admin. Admins cannot demote other admins (only owner can). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.

**Limitations:** User must be an existing member of the group. Cannot change scope of the group owner. When using onBehalfOf, acting user must be admin. Admins cannot demote other admins (only owner can). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5735,7 +5735,7 @@ "Group Members" ], "summary": "Kick", - "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.

**Side effects:** Triggers group.member.kicked webhook if configured. Action message is sent to the group announcing the removal. Kicked user receives real-time notification. Group's membersCount is decremented. User's group conversation is updated.

**Limitations:** Cannot kick the group owner. Cannot kick yourself (use leave group instead). When using onBehalfOf, acting user must be admin or moderator. Moderators cannot kick admins. User must be a current member (returns error if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.

**Limitations:** Cannot kick the group owner. Cannot kick yourself (use leave group instead). When using onBehalfOf, acting user must be admin or moderator. Moderators cannot kick admins. User must be a current member (returns error if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5783,7 +5783,7 @@ "Banned Users" ], "summary": "Ban", - "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.

**Side effects:** Triggers group.member.banned webhook if configured. Action message is sent to the group announcing the ban. User is immediately removed from the group if they were a member. User receives real-time notification of the ban. Group's membersCount is decremented if user was a member.

**Limitations:** Cannot ban the group owner. Cannot ban yourself. When using onBehalfOf, acting user must be admin or moderator. Moderators cannot ban admins. User must exist (returns error if UID not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.

**Limitations:** Cannot ban the group owner. Cannot ban yourself. When using onBehalfOf, acting user must be admin or moderator. Moderators cannot ban admins. User must exist (returns error if UID not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5829,7 +5829,7 @@ "Banned Users" ], "summary": "Unban", - "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.

**What happens after unban:** User can join public groups immediately. User can be added to private groups by admins. User can request to join password-protected groups. User is NOT automatically re-added to the group.

**Side effects:** Triggers group.member.unbanned webhook if configured. User receives real-time notification of the unban. User is removed from the banned users list.

**Limitations:** User must be currently banned (returns error if not banned). When using onBehalfOf, acting user must be admin or moderator. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.

**Limitations:** User must be currently banned (returns error if not banned). When using onBehalfOf, acting user must be admin or moderator. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5982,7 +5982,7 @@ "Friends" ], "summary": "Add Friends", - "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.

**Use cases:** Implementing friend/contact list features. Syncing friend relationships from your application. Creating mutual connections between users. Building social networking features.

**What happens:** Bidirectional friendship is created (both users become friends). Friends appear in each other's friend lists. Optionally creates conversations between friends (addToConversations=true). Friend status is reflected in user queries.

**Side effects:** Triggers friend.added webhook if configured. When addToConversations=true, creates 1-on-1 conversation entries. Real-time events notify connected clients of new friendships.

**Limitations:** Cannot add yourself as a friend. All friend UIDs must exist in your app. Friendship is automatically bidirectional. Requires API key with fullAccess scope.", + "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.

**Use cases:** Implementing friend/contact list features. Syncing friend relationships from your application. Creating mutual connections between users. Building social networking features.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6191,7 +6191,7 @@ "Friends" ], "summary": "Remove Friends", - "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.

**Use cases:** Implementing unfriend/remove contact features. Syncing friend removals from your application. Admin-initiated friend relationship cleanup. Bulk removal of friend connections.

**What happens:** Bidirectional friendship is removed (both users are no longer friends). Users no longer appear in each other's friend lists. Existing conversations are preserved (not deleted). Users can still message each other (unless blocked).

**Side effects:** Triggers friend.removed webhook if configured. Real-time events notify connected clients of the removal. Friend lists are updated immediately.

**Limitations:** Can only remove existing friendships. Removal is automatically bidirectional. Conversations are not deleted (use conversation APIs separately). Requires API key with fullAccess scope.", + "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.

**Use cases:** Implementing unfriend/remove contact features. Syncing friend removals from your application. Admin-initiated friend relationship cleanup. Bulk removal of friend connections.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6252,7 +6252,7 @@ "Blocked Users" ], "summary": "Block User", - "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.

**What happens when a user is blocked:** Blocked user cannot send direct messages to the blocking user. Blocked user's messages in groups are still visible. Blocking user won't see blocked user in their user list (depending on client implementation). Block status is reflected in user objects (blockedByMe, blockedAt fields). Existing conversations are preserved but new messages are blocked.

**Side effects:** Triggers user.blocked webhook if configured. Block status is immediately reflected in API responses. Real-time events notify connected clients of the block.

**Limitations:** Cannot block yourself. Both users must exist in your app. Blocking is one-directional (A blocks B doesn't mean B blocks A). Requires API key with fullAccess scope.", + "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.

**Limitations:** Cannot block yourself. Both users must exist in your app. Blocking is one-directional (A blocks B doesn't mean B blocks A). Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -6334,7 +6334,7 @@ "Blocked Users" ], "summary": "Unblock User", - "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.

**What happens when a user is unblocked:** Unblocked user can send direct messages again. Block status fields (blockedByMe, blockedAt) are removed from user objects. Communication is restored immediately. Previous conversation history remains intact.

**Side effects:** Triggers user.unblocked webhook if configured. Unblock status is immediately reflected in API responses. Real-time events notify connected clients of the unblock.

**Limitations:** Can only unblock users that were previously blocked. Both users must exist in your app. Unblocking is one-directional (if both users blocked each other, both must unblock). Requires API key with fullAccess scope.", + "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.

**Limitations:** Can only unblock users that were previously blocked. Both users must exist in your app. Unblocking is one-directional (if both users blocked each other, both must unblock). Requires API key with fullAccess scope.", "parameters": [ { "name": "uid", @@ -6741,7 +6741,7 @@ "Roles" ], "summary": "Update", - "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nSide effects: Changes take effect immediately for all users with this role. Existing user sessions will use the new permissions on their next API call.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Role name max length is 100 characters. Cannot update the default role's core settings. Requires API key with fullAccess scope.", + "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Role name max length is 100 characters. Cannot update the default role's core settings. Requires API key with fullAccess scope.", "parameters": [ { "name": "role", @@ -6848,7 +6848,7 @@ "Roles" ], "summary": "Delete", - "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the default role.\n\nSide effects: All users with this role are reassigned to the default role. Feature restrictions associated with this role are removed. This action cannot be undone.\n\nLimitations: Cannot delete the default role. Requires API key with fullAccess scope. Returns 404 if role does not exist.", + "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the default role.\n\nLimitations: Cannot delete the default role. Requires API key with fullAccess scope. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -6902,7 +6902,7 @@ "Restrict Features" ], "summary": "Restrict Features", - "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).

**Side effects:** Restrictions take effect immediately for all users with this role. Users attempting restricted operations will receive a 403 Forbidden error.

**Limitations:** Requires API key with fullAccess scope. Cannot restrict features for the default role. Returns 404 if role does not exist.", + "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).

**Limitations:** Requires API key with fullAccess scope. Cannot restrict features for the default role. Returns 404 if role does not exist.", "parameters": [ { "name": "role", @@ -7079,7 +7079,7 @@ "Restrict Features" ], "summary": "Allow Features", - "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n\nOptions: Specify individual features to allow using featuresToAllow, or use allowAll: true to remove all restrictions at once.\n\nSide effects: Changes take effect immediately for all users with this role. Users can immediately access the allowed features.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist. Allowing a feature that is not restricted has no effect (idempotent).", + "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n\nOptions: Specify individual features to allow using featuresToAllow, or use allowAll: true to remove all restrictions at once.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist. Allowing a feature that is not restricted has no effect (idempotent).", "parameters": [ { "name": "role", @@ -8291,7 +8291,7 @@ "Messages" ], "summary": "Send Bot Message", - "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.

**Side effects:** Triggers message.sent webhook if configured. Updates conversation lastMessage for the recipient. Increments unread message count for the recipient. Sends push notification to recipient if enabled. Real-time delivery via WebSocket to online recipients.

**Limitations:** Bot UID must exist and have the bot role. Message text max length is 65535 characters. Metadata max size is 100KB. Custom data max size is 100KB. Maximum 25 tags per message. Tag max length is 100 characters each. Receiver must be a valid user UID or group GUID. Requires API key with fullAccess scope. Rate limit is 30 requests per second per app.", + "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.

**Limitations:** Bot UID must exist and have the bot role. Message text max length is 65535 characters. Metadata max size is 65KB. Custom data max size is 65KB. Maximum 25 tags per message. Tag max length is 100 characters each. Receiver must be a valid user UID or group GUID. Requires API key with fullAccess scope. Rate limit is 30 requests per second per app.", "parameters": [ { "name": "uid", @@ -8698,7 +8698,7 @@ "Notifications" ], "summary": "Update Settings", - "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n\nConfigurable settings: preferences.group (control notifications for group events like messages, reactions, member joins/leaves/kicks/bans), preferences.oneOnOne (control notifications for 1-on-1 chat events), preferences.call (control notifications for call events like initiated, ongoing, ended), preferences.mute (configure Do Not Disturb and schedule-based muting), preferences.email/sms/push (configure channel-specific settings like intervals and metadata inclusion), templates (customize notification content with template variables like {{message.data.text}}), and sound (set notification sounds for chat and call events).\n\nSide effects: Changes apply immediately to all new notifications. Existing queued notifications are not affected.\n\nLimitations: Requires API key with fullAccess scope. Template variables must follow the supported format (see examples). Rate limit is 50 requests per minute. Maximum request body size is 100KB.", + "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n\nConfigurable settings: preferences.group (control notifications for group events like messages, reactions, member joins/leaves/kicks/bans), preferences.oneOnOne (control notifications for 1-on-1 chat events), preferences.call (control notifications for call events like initiated, ongoing, ended), preferences.mute (configure Do Not Disturb and schedule-based muting), preferences.email/sms/push (configure channel-specific settings like intervals and metadata inclusion), templates (customize notification content with template variables like {{message.data.text}}), and sound (set notification sounds for chat and call events).\n\nLimitations: Requires API key with fullAccess scope. Template variables must follow the supported format (see examples). Rate limit is 50 requests per minute. Maximum request body size is 100KB.", "requestBody": { "content": { "application/json": { @@ -8742,7 +8742,7 @@ "Notifications" ], "summary": "Reset Settings", - "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n\nSide effects: All custom notification templates will be replaced with defaults. User override permissions will be reset to default values. Sound settings will revert to default. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Does not affect user-specific preferences (use Reset Preferences endpoint for that). Rate limit is 10 requests per minute.", + "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n\nLimitations: Requires API key with fullAccess scope. Does not affect user-specific preferences (use Reset Preferences endpoint for that). Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -8817,7 +8817,7 @@ "Notifications" ], "summary": "Add FCM Provider", - "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n\nRequired Credentials: serviceAccountKey - Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts).\n\nHow to Get FCM Credentials: Go to Firebase Console (console.firebase.google.com), select your project, navigate to Project Settings > Service Accounts, click Generate new private key, and use the downloaded JSON file content as serviceAccountKey.\n\nSide effects: If this is the first FCM provider, it becomes the default automatically. Push notifications to Android devices will use this provider once set as default.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 FCM providers per app. Service account key must be valid JSON. Rate limit is 10 requests per minute.", + "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n\nRequired Credentials: serviceAccountKey - Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts).\n\nHow to Get FCM Credentials: Go to Firebase Console (console.firebase.google.com), select your project, navigate to Project Settings > Service Accounts, click Generate new private key, and use the downloaded JSON file content as serviceAccountKey.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 FCM providers per app. Service account key must be valid JSON. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -8864,7 +8864,7 @@ "Notifications" ], "summary": "Update FCM Provider", - "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider) and serviceAccountKey (new Firebase service account JSON key).\n\nSide effects: Changes take effect immediately for new notifications. Notifications already in queue continue with previous credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Service account key must be valid JSON. Rate limit is 10 requests per minute.", + "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider) and serviceAccountKey (new Firebase service account JSON key).\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Service account key must be valid JSON. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -8926,7 +8926,7 @@ "Notifications" ], "summary": "Delete FCM Provider", - "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n\nSide effects: If deleting the default provider, you must set another provider as default first. Push notifications to Android devices will fail if no FCM provider remains. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", + "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -8971,7 +8971,7 @@ "Notifications" ], "summary": "Change default FCM Provider", - "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nSide effects: All new Android push notifications will use this provider. Previous default provider remains available but inactive. Changes take effect immediately.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", + "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9048,7 +9048,7 @@ "Notifications" ], "summary": "Update APNS Providers", - "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider), bundleId (iOS app bundle identifier), teamId (Apple Developer Team ID), keyId (APNS authentication key ID), and authKey (new .p8 authentication key content).\n\nSide effects: Changes take effect immediately for new notifications. Notifications already in queue continue with previous credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Auth key must be valid .p8 format. Rate limit is 10 requests per minute.", + "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider), bundleId (iOS app bundle identifier), teamId (Apple Developer Team ID), keyId (APNS authentication key ID), and authKey (new .p8 authentication key content).\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Auth key must be valid .p8 format. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9101,7 +9101,7 @@ "Notifications" ], "summary": "Add APNS Provider", - "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n\nRequired credentials: bundleId (your iOS app bundle identifier, e.g., com.yourcompany.yourapp), teamId (your Apple Developer Team ID, 10-character string), keyId (the Key ID for your APNS authentication key), and authKey (the .p8 authentication key file content from Apple Developer Portal).\n\nHow to get APNS credentials: Go to Apple Developer Portal (developer.apple.com), navigate to Certificates, Identifiers and Profiles > Keys, create a new key with Apple Push Notifications service (APNs) enabled, download the .p8 key file (only available once), note the Key ID shown after creation, and find your Team ID in Membership details.\n\nSide effects: If this is the first APNS provider, it becomes the default automatically. Push notifications to iOS devices will use this provider once set as default.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 APNS providers per app. Auth key must be valid .p8 format. Bundle ID must match your iOS app configuration. Rate limit is 10 requests per minute.", + "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n\nRequired credentials: bundleId (your iOS app bundle identifier, e.g., com.yourcompany.yourapp), teamId (your Apple Developer Team ID, 10-character string), keyId (the Key ID for your APNS authentication key), and authKey (the .p8 authentication key file content from Apple Developer Portal).\n\nHow to get APNS credentials: Go to Apple Developer Portal (developer.apple.com), navigate to Certificates, Identifiers and Profiles > Keys, create a new key with Apple Push Notifications service (APNs) enabled, download the .p8 key file (only available once), note the Key ID shown after creation, and find your Team ID in Membership details.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 APNS providers per app. Auth key must be valid .p8 format. Bundle ID must match your iOS app configuration. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9144,7 +9144,7 @@ "Notifications" ], "summary": "Delete APNS Providers", - "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n\nSide effects: If deleting the default provider, you must set another provider as default first. Push notifications to iOS devices will fail if no APNS provider remains. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", + "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9183,7 +9183,7 @@ "Notifications" ], "summary": "Change default APNS Provider", - "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nSide effects: All new iOS push notifications will use this provider. Previous default provider remains available but inactive. Changes take effect immediately.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", + "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/providerId" @@ -9385,7 +9385,7 @@ "Notifications" ], "summary": "Update Preferences", - "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n\nConfigurable preferences: preferences.group (control notifications for group messages, reactions, and member events), preferences.oneOnOne (control notifications for 1-on-1 chat messages and reactions), preferences.mute (configure Do Not Disturb mode and schedule-based muting), sound (set custom notification sounds for chat and call events), and templates (customize notification content templates).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nSide effects: Changes apply immediately to all new notifications for this user. Overrides app-level settings where the Override flag is true.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Can only override settings where the app-level Override flag is enabled. Rate limit is 50 requests per minute. Maximum request body size is 50KB.", + "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n\nConfigurable preferences: preferences.group (control notifications for group messages, reactions, and member events), preferences.oneOnOne (control notifications for 1-on-1 chat messages and reactions), preferences.mute (configure Do Not Disturb mode and schedule-based muting), sound (set custom notification sounds for chat and call events), and templates (customize notification content templates).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Can only override settings where the app-level Override flag is enabled. Rate limit is 50 requests per minute. Maximum request body size is 50KB.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9557,7 +9557,7 @@ "Notifications" ], "summary": "Reset Preferences", - "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n\nSide effects: All user-specific notification preferences are deleted. User will receive notifications based on app-level settings. Custom notification templates for this user are removed. Sound preferences are reset to defaults. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Does not affect muted conversations (use Unmute Conversations endpoint). Rate limit is 10 requests per minute.", + "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Does not affect muted conversations (use Unmute Conversations endpoint). Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -9659,7 +9659,7 @@ "Notifications" ], "summary": "Register push token", - "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).

**Side effects:** User will start receiving push notifications on the registered device. Multiple tokens can be registered for the same user (multi-device support). Old tokens for the same device are automatically replaced.

**Limitations:** Requires API key with fullAccess scope. Auth token must be valid and not expired. Push token must be obtained from FCM or APNS. Maximum 10 active tokens per user. Rate limit is 50 requests per minute.", + "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).

**Limitations:** Requires API key with fullAccess scope. Auth token must be valid and not expired. Push token must be obtained from FCM or APNS. Maximum 10 active tokens per user. Rate limit is 50 requests per minute.", "requestBody": { "content": { "application/json": { @@ -9774,7 +9774,7 @@ "Notifications" ], "summary": "Unregister push tokens for authToken", - "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n\nUnregister options: all=true removes all push tokens for the user across all sessions (useful for account-wide logout), and all=false removes only the push token for the current auth token (single device logout).\n\nSide effects: User will stop receiving push notifications on unregistered devices. Notifications already in queue may still be delivered.\n\nLimitations: Requires API key with fullAccess scope. Auth token in request body must be valid. Rate limit is 50 requests per minute.", + "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n\nUnregister options: all=true removes all push tokens for the user across all sessions (useful for account-wide logout), and all=false removes only the push token for the current auth token (single device logout).\n\nLimitations: Requires API key with fullAccess scope. Auth token in request body must be valid. Rate limit is 50 requests per minute.", "parameters": [ { "name": "all", @@ -9844,7 +9844,7 @@ "Notifications" ], "summary": "Delete the given push token", - "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.

**Side effects:** The device will stop receiving push notifications.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Push token must exist in the system. Rate limit is 50 requests per minute.", + "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Push token must exist in the system. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/pushToken" @@ -9952,7 +9952,7 @@ "Notifications" ], "summary": "Mute notifications for conversations", - "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n\nMute options: Permanent mute silences notifications until explicitly unmuted. Temporary mute sets an expiration time for automatic unmuting.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nSide effects: User will not receive push notifications for messages in muted conversations. Muted conversations still appear in conversation lists. Unread counts continue to increment.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", + "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n\nMute options: Permanent mute silences notifications until explicitly unmuted. Temporary mute sets an expiration time for automatic unmuting.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10014,7 +10014,7 @@ "Notifications" ], "summary": "Unmute notifications for conversations", - "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nSide effects: User will start receiving push notifications for messages in unmuted conversations. Takes effect immediately for new messages.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", + "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10121,7 +10121,7 @@ "Notifications" ], "summary": "Update timezone", - "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n\nTimezone format: Must be a valid IANA timezone identifier. Examples include America/New_York, Europe/London, Asia/Tokyo, and Australia/Sydney. Full list available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.\n\nSide effects: Schedule-based preferences will immediately use the new timezone. Affects when quiet hours and DND periods are applied.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Timezone must be a valid IANA identifier. Rate limit is 50 requests per minute.", + "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n\nTimezone format: Must be a valid IANA timezone identifier. Examples include America/New_York, Europe/London, Asia/Tokyo, and Australia/Sydney. Full list available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Timezone must be a valid IANA identifier. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredUID" @@ -10227,7 +10227,7 @@ "Notifications" ], "summary": "Update contact details", - "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n\nContact format requirements: email must be a valid email address format, and phno must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India).\n\nSide effects: User will start receiving email/SMS notifications if the respective channel is enabled. Changes take effect immediately for new notifications.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Email must be valid format. Phone number must include country code. Rate limit is 50 requests per minute.", + "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n\nContact format requirements: email must be a valid email address format, and phno must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India).\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Email must be valid format. Phone number must include country code. Rate limit is 50 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10293,7 +10293,7 @@ "Notifications" ], "summary": "Delete contact details", - "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n\nSide effects: User will stop receiving email notifications (MISSING_EMAIL reason in logs). User will stop receiving SMS notifications (MISSING_PHNO reason in logs). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 10 requests per minute.", + "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 10 requests per minute.", "parameters": [ { "$ref": "#/components/parameters/requiredonBehalfOf" @@ -10378,7 +10378,7 @@ "Notifications" ], "summary": "Save Twilio credentials", - "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in Twilio: Create a Twilio account at twilio.com, get your Account SID and Auth Token from the Twilio Console, and purchase or use a Twilio phone number for sending SMS.\n\nConfiguration fields: twilioAccountSID (found in your Twilio Console dashboard, starts with AC), twilioAuthToken (found in your Twilio Console dashboard), twilioSenderPhoneNumber (must be a Twilio phone number in E.164 format, e.g., +1234567890), and isEnabled (set to true to activate SMS notifications).\n\nSide effects: Users with stored phone numbers will receive SMS notifications. SMS are sent based on notification preferences and intervals. SMS costs apply based on your Twilio plan.\n\nLimitations: Requires API key with fullAccess scope. Phone number must be a valid Twilio number. Account must have sufficient Twilio balance. Rate limit is 10 requests per minute.", + "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in Twilio: Create a Twilio account at twilio.com, get your Account SID and Auth Token from the Twilio Console, and purchase or use a Twilio phone number for sending SMS.\n\nConfiguration fields: twilioAccountSID (found in your Twilio Console dashboard, starts with AC), twilioAuthToken (found in your Twilio Console dashboard), twilioSenderPhoneNumber (must be a Twilio phone number in E.164 format, e.g., +1234567890), and isEnabled (set to true to activate SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. Phone number must be a valid Twilio number. Account must have sufficient Twilio balance. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -10454,7 +10454,7 @@ "Notifications" ], "summary": "Update Twilio credentials", - "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n\nUpdatable fields: twilioAccountSID (update to a different Twilio account), twilioAuthToken (rotate to a new auth token), twilioSenderPhoneNumber (change the sender phone number), and isEnabled (enable or disable SMS notifications).\n\nSide effects: Changes take effect immediately for new SMS notifications. SMS already queued continue with previous settings.\n\nLimitations: Requires API key with fullAccess scope. New phone number must be a valid Twilio number. Rate limit is 10 requests per minute.", + "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n\nUpdatable fields: twilioAccountSID (update to a different Twilio account), twilioAuthToken (rotate to a new auth token), twilioSenderPhoneNumber (change the sender phone number), and isEnabled (enable or disable SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. New phone number must be a valid Twilio number. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10524,7 +10524,7 @@ "Notifications" ], "summary": "Delete Twilio credentials", - "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n\nSide effects: Users will stop receiving SMS notifications. Stored credentials are permanently removed. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", + "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10606,7 +10606,7 @@ "Notifications" ], "summary": "Save SendGrid credentials", - "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in SendGrid: Create a SendGrid account and verify your sender domain, generate an API key with Mail Send permissions, create a dynamic template for notification emails, and create an unsubscribe group for compliance.\n\nConfiguration fields: sendGridApiKey (your SendGrid API key with Mail Send permissions), sendGridTemplateID (dynamic template ID, starts with d-), sendGridUnsubscribeGroupID (unsubscribe group ID for email compliance), senderEmail (must be a verified sender in SendGrid), senderName (display name shown to recipients), and allowEmailReplies (enable reply-to functionality).\n\nSide effects: Users with stored email addresses will receive email notifications. Emails are sent based on notification preferences and intervals.\n\nLimitations: Requires API key with fullAccess scope. Sender email must be verified in SendGrid. Template must exist in your SendGrid account. Rate limit is 10 requests per minute.", + "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in SendGrid: Create a SendGrid account and verify your sender domain, generate an API key with Mail Send permissions, create a dynamic template for notification emails, and create an unsubscribe group for compliance.\n\nConfiguration fields: sendGridApiKey (your SendGrid API key with Mail Send permissions), sendGridTemplateID (dynamic template ID, starts with d-), sendGridUnsubscribeGroupID (unsubscribe group ID for email compliance), senderEmail (must be a verified sender in SendGrid), senderName (display name shown to recipients), and allowEmailReplies (enable reply-to functionality).\n\nLimitations: Requires API key with fullAccess scope. Sender email must be verified in SendGrid. Template must exist in your SendGrid account. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -10710,7 +10710,7 @@ "Notifications" ], "summary": "Update SendGrid credentials", - "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n\nUpdatable fields: sendGridApiKey (rotate to a new API key), sendGridTemplateID (switch to a different email template), sendGridUnsubscribeGroupID (change the unsubscribe group), senderEmail (update the sender email address), senderName (change the sender display name), allowEmailReplies (toggle reply functionality), and isEnabled (enable or disable email notifications).\n\nSide effects: Changes take effect immediately for new email notifications. Emails already queued continue with previous settings.\n\nLimitations: Requires API key with fullAccess scope. New sender email must be verified in SendGrid. Rate limit is 10 requests per minute.", + "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n\nUpdatable fields: sendGridApiKey (rotate to a new API key), sendGridTemplateID (switch to a different email template), sendGridUnsubscribeGroupID (change the unsubscribe group), senderEmail (update the sender email address), senderName (change the sender display name), allowEmailReplies (toggle reply functionality), and isEnabled (enable or disable email notifications).\n\nLimitations: Requires API key with fullAccess scope. New sender email must be verified in SendGrid. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10805,7 +10805,7 @@ "Notifications" ], "summary": "Delete SendGrid credentials", - "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n\nSide effects: Users will stop receiving email notifications. Stored credentials are permanently removed. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", + "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's settings", @@ -10882,7 +10882,7 @@ "Notifications" ], "summary": "Save Custom Provider for Push Notifications", - "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.

**Side effects:** When enabled, push notifications are sent to your webhook instead of FCM/APNS. Your webhook must be publicly accessible.

**Limitations:** Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", + "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.

**Limitations:** Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -10957,7 +10957,7 @@ "Notifications" ], "summary": "Update Custom Provider for Push Notifications", - "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom provider), webhookURL (change the endpoint receiving notification payloads), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new notifications. Disabling the provider routes notifications back to FCM/APNS.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", + "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom provider), webhookURL (change the endpoint receiving notification payloads), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11025,7 +11025,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Push Notifications", - "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n\nSide effects: Custom webhook will no longer receive notification payloads. Push notifications revert to FCM/APNS delivery. This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", + "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -11090,7 +11090,7 @@ "Notifications" ], "summary": "Save Custom Provider for SMS Notifications", - "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n\nUse cases: Use your own SMS service (Vonage, MessageBird, etc.), use regional SMS providers for better delivery rates, implement SMS logging and analytics, or route SMS through your own infrastructure.\n\nConfiguration options: useStoredPhNo (when true, only triggers webhook for users with stored phone numbers) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nSide effects: When enabled, SMS notifications are sent to your webhook instead of Twilio. Your webhook must be publicly accessible.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", + "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n\nUse cases: Use your own SMS service (Vonage, MessageBird, etc.), use regional SMS providers for better delivery rates, implement SMS logging and analytics, or route SMS through your own infrastructure.\n\nConfiguration options: useStoredPhNo (when true, only triggers webhook for users with stored phone numbers) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -11156,7 +11156,7 @@ "Notifications" ], "summary": "Update Custom Provider for SMS Notifications", - "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom SMS provider), webhookURL (change the endpoint receiving SMS notification payloads), useStoredPhNo (toggle whether to require stored phone numbers), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new SMS notifications. Disabling the provider routes SMS back to Twilio (if configured).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", + "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom SMS provider), webhookURL (change the endpoint receiving SMS notification payloads), useStoredPhNo (toggle whether to require stored phone numbers), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11199,7 +11199,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for SMS Notifications", - "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n\nSide effects: Custom webhook will no longer receive SMS notification payloads. SMS notifications revert to Twilio delivery (if configured). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", + "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "Delete push notification's SMS custom provider", @@ -11264,7 +11264,7 @@ "Notifications" ], "summary": "Save Custom Provider for Email Notifications", - "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n\nUse cases: Use your own email service (Mailgun, Amazon SES, etc.), apply custom email templates and branding, implement email logging and analytics, or route emails through your own infrastructure.\n\nConfiguration options: useStoredEmailID (when true, includes the user stored email address in the payload) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nSide effects: When enabled, email notifications are sent to your webhook instead of SendGrid. Your webhook must be publicly accessible.\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", + "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n\nUse cases: Use your own email service (Mailgun, Amazon SES, etc.), apply custom email templates and branding, implement email logging and analytics, or route emails through your own infrastructure.\n\nConfiguration options: useStoredEmailID (when true, includes the user stored email address in the payload) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", "requestBody": { "required": true, "content": { @@ -11322,7 +11322,7 @@ "Notifications" ], "summary": "Update Custom Provider for Email Notifications", - "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom email provider), webhookURL (change the endpoint receiving email notification payloads), useStoredEmailID (toggle whether to include user email in payload), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nSide effects: Changes take effect immediately for new email notifications. Disabling the provider routes emails back to SendGrid (if configured).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", + "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom email provider), webhookURL (change the endpoint receiving email notification payloads), useStoredEmailID (toggle whether to include user email in payload), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", "requestBody": { "content": { "application/json": { @@ -11365,7 +11365,7 @@ "Notifications" ], "summary": "Delete the Custom Provider for Email Notifications", - "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n\nSide effects: Custom webhook will no longer receive email notification payloads. Email notifications revert to SendGrid delivery (if configured). This action cannot be undone.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", + "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", "responses": { "200": { "description": "Delete push notification's Email custom provider", @@ -11737,7 +11737,7 @@ "Moderation" ], "summary": "Add Rule", - "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).

**Side effects:** Rules take effect immediately for all new messages. Blocked messages are stored for admin review.

**Limitations:** Rule ID max length is 100 characters. Rule ID must be unique within your app. AI moderation features may require specific subscription plans. Requires API key with fullAccess scope.", + "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).

**Limitations:** Rule ID max length is 100 characters. Rule ID must be unique within your app. AI moderation features may require specific subscription plans. Requires API key with fullAccess scope.", "requestBody": { "required": true, "content": { @@ -12177,7 +12177,7 @@ "Moderation" ], "summary": "Update Rule", - "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.

**Side effects:** Changes take effect immediately for new messages. A new revision is created for audit purposes. Previously blocked messages are not affected.

**Limitations:** Rule ID cannot be changed. Cannot modify default system rules. Requires API key with fullAccess scope.", + "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.

**Limitations:** Rule ID cannot be changed. Cannot modify default system rules. Requires API key with fullAccess scope.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12258,7 +12258,7 @@ "Moderation" ], "summary": "Remove rule", - "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.

**Side effects:** The rule stops filtering messages immediately. Previously blocked messages remain in the blocked queue.

**Limitations:** This action cannot be undone. Cannot delete default system rules. Requires API key with fullAccess scope. Returns 404 if rule does not exist.", + "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.

**Limitations:** This action cannot be undone. Cannot delete default system rules. Requires API key with fullAccess scope. Returns 404 if rule does not exist.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -16000,6 +16000,7 @@ "type": "object" }, "customCategorySchema": { + "title": "custom", "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", "properties": { "receiver": { @@ -16645,6 +16646,7 @@ "type": "object" }, "messageCategorySchema": { + "title": "message", "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", "properties": { "receiver": { diff --git a/data-import-apis.json b/data-import-apis.json index 337501e1d..885b6bf0d 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -32,7 +32,7 @@ "Messages" ], "summary": "Import Messages", - "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.

**Side effects:** Messages are created with the provided MUIDs (message unique IDs). Existing messages with the same MUID are updated. Historical timestamps (sentAt, deliveredAt, readAt) are preserved. Sender and receiver users/groups must exist or be provided in the request. Conversations are automatically created if they don't exist.

**Limitations:** Maximum 100 messages per request. MUID max length is 100 characters. Message data max size is 100KB per message. Attachment URLs must be publicly accessible. Maximum 5 attachments per message. Each attachment URL max length is 2048 characters. Maximum 25 tags per message. Requires API key with fullAccess scope. sentAt timestamp is required for each message.", + "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.

**Limitations:** Maximum 100 messages per request. MUID max length is 100 characters. Message data max size is 100KB per message. Attachment URLs must be publicly accessible. Maximum 5 attachments per message. Each attachment URL max length is 2048 characters. Maximum 25 tags per message. Requires API key with fullAccess scope. sentAt timestamp is required for each message.", "requestBody": { "content": { "application/json": { @@ -649,7 +649,7 @@ "Users" ], "summary": "Import Users", - "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.

**Side effects:** Users are created with the provided UIDs (not auto-generated). Existing users with the same UID are updated. Historical timestamps (createdAt, lastActiveAt) are preserved.

**Limitations:** Maximum 100 users per request. UID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per user. Requires API key with fullAccess scope.", + "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.

**Limitations:** Maximum 100 users per request. UID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per user. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -802,7 +802,7 @@ "Groups" ], "summary": "Import Groups", - "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.

**Side effects:** Groups are created with the provided GUIDs (not auto-generated). Existing groups with the same GUID are updated. Group owner must exist or be provided in groupOwnerDetails. Historical timestamps (createdAt) are preserved.

**Limitations:** Maximum 100 groups per request. GUID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per group. Requires API key with fullAccess scope.", + "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.

**Limitations:** Maximum 100 groups per request. GUID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per group. Requires API key with fullAccess scope.", "requestBody": { "content": { "application/json": { @@ -1001,7 +1001,7 @@ "Groups" ], "summary": "Import Group Members", - "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.

**Side effects:** Memberships are created with the provided member IDs (format: guid_member_uid). Existing memberships with the same ID are updated. Both the group and user must exist or be provided in the request. Historical timestamps (joinedAt) are preserved. Member scope (admin, moderator, participant) is set as specified.

**Limitations:** Maximum 100 memberships per request. Member ID format must be {guid}_member_{uid}. GUID max length is 100 characters. UID max length is 100 characters. Valid scope values are admin, moderator, participant. Requires API key with fullAccess scope. Group and user must exist or be provided in groupDetails/userDetails.", + "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.

**Limitations:** Maximum 100 memberships per request. Member ID format must be {guid}_member_{uid}. GUID max length is 100 characters. UID max length is 100 characters. Valid scope values are admin, moderator, participant. Requires API key with fullAccess scope. Group and user must exist or be provided in groupDetails/userDetails.", "requestBody": { "content": { "application/json": { @@ -2736,6 +2736,7 @@ "type": "object" }, "customCategorySchema": { + "title": "custom", "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", "properties": { "receiver": { @@ -3381,6 +3382,7 @@ "type": "object" }, "messageCategorySchema": { + "title": "message", "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", "properties": { "receiver": { From fe4e3f94c44d35455bb4ff0c69ddd18dec11930b Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Wed, 11 Feb 2026 12:11:59 +0530 Subject: [PATCH 07/56] cac updates --- chat-apis.json | 42 +++++++++++++++++++++++------------------- data-import-apis.json | 42 +++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 99ef4b2e2..c9ffc7799 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Chat APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build real-time chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", + "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", "version": "3.0" }, "servers": [ @@ -18672,14 +18672,14 @@ "name": "Roles", "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." }, - { - "name": "Users", - "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed." - }, { "name": "Auth Tokens", "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." }, + { + "name": "Users", + "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed. Start here to populate your app with users." + }, { "name": "Blocked Users", "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." @@ -18692,14 +18692,14 @@ "name": "Groups", "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." }, - { - "name": "Banned Users", - "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." - }, { "name": "Group Members", "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." }, + { + "name": "Banned Users", + "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." + }, { "name": "Messages", "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." @@ -18709,28 +18709,32 @@ "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." }, { - "name": "Restrict Features", - "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." + "name": "Calls", + "description": "Manage voice and video calling functionality. Access call history, retrieve call details, and monitor call quality metrics. Calls integrate with CometChat's real-time communication infrastructure for audio and video conversations." }, { - "name": "Metrics", - "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." + "name": "Notifications", + "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." }, { - "name": "Triggers", - "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." + "name": "Moderation", + "description": "The REST collections for Moderations." + }, + { + "name": "Restrict Features", + "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." }, { "name": "Webhooks", "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." }, { - "name": "Notifications", - "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." + "name": "Triggers", + "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." }, { - "name": "Moderation", - "description": "The REST collections for Moderations." + "name": "Metrics", + "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." } ] } \ No newline at end of file diff --git a/data-import-apis.json b/data-import-apis.json index 885b6bf0d..54887fb00 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Data Import APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build real-time chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", + "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", "version": "3.0" }, "servers": [ @@ -5408,14 +5408,14 @@ "name": "Roles", "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." }, - { - "name": "Users", - "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed." - }, { "name": "Auth Tokens", "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." }, + { + "name": "Users", + "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed. Start here to populate your app with users." + }, { "name": "Blocked Users", "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." @@ -5428,14 +5428,14 @@ "name": "Groups", "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." }, - { - "name": "Banned Users", - "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." - }, { "name": "Group Members", "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." }, + { + "name": "Banned Users", + "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." + }, { "name": "Messages", "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." @@ -5445,28 +5445,32 @@ "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." }, { - "name": "Restrict Features", - "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." + "name": "Calls", + "description": "Manage voice and video calling functionality. Access call history, retrieve call details, and monitor call quality metrics. Calls integrate with CometChat's real-time communication infrastructure for audio and video conversations." }, { - "name": "Metrics", - "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." + "name": "Notifications", + "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." }, { - "name": "Triggers", - "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." + "name": "Moderation", + "description": "The REST collections for Moderations." + }, + { + "name": "Restrict Features", + "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." }, { "name": "Webhooks", "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." }, { - "name": "Notifications", - "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." + "name": "Triggers", + "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." }, { - "name": "Moderation", - "description": "The REST collections for Moderations." + "name": "Metrics", + "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." } ] } \ No newline at end of file From faefe5af1a47dee35fa1901728a42d3c97b96f02 Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Wed, 11 Feb 2026 16:50:24 +0530 Subject: [PATCH 08/56] Restructured the REST API endpoints. --- docs.json | 924 ++++++----- moderation/api-explorer.mdx | 39 +- moderation/apis/add-keywords.mdx | 3 + moderation/apis/add-rule.mdx | 3 + moderation/apis/approve-blocked-messages.mdx | 3 + .../apis/blockreview-flagged-message.mdx | 3 + moderation/apis/create-reasons.mdx | 3 + moderation/apis/delete-reasons.mdx | 3 + moderation/apis/flag-a-message.mdx | 3 + moderation/apis/get-keyword.mdx | 3 + moderation/apis/get-reason-details.mdx | 3 + moderation/apis/get-rule-revisions.mdx | 3 + moderation/apis/get-rule.mdx | 3 + moderation/apis/list-blocked-messages.mdx | 3 + moderation/apis/list-flagged-messages.mdx | 3 + moderation/apis/list-keywords.mdx | 3 + moderation/apis/list-reasons.mdx | 3 + moderation/apis/list-reviewed-messages.mdx | 3 + moderation/apis/list-rules.mdx | 3 + moderation/apis/remove-keyword.mdx | 3 + moderation/apis/remove-rule.mdx | 3 + moderation/apis/review-blocked-message.mdx | 3 + moderation/apis/update-keyword.mdx | 3 + moderation/apis/update-reason-details.mdx | 3 + moderation/apis/update-rule.mdx | 3 + .../apis/email/delete-custom-provider.mdx | 3 + .../email/delete-sendgrid-credentials.mdx | 3 + .../apis/email/get-custom-provider.mdx | 3 + .../apis/email/get-sendgrid-credentials.mdx | 3 + .../apis/email/save-custom-provider.mdx | 3 + .../apis/email/save-sendgrid-credentials.mdx | 3 + .../apis/email/update-custom-provider.mdx | 3 + .../email/update-sendgrid-credentials.mdx | 3 + notifications/apis/push/add-apns-provider.mdx | 3 + notifications/apis/push/add-fcm-provider.mdx | 3 + .../push/change-default-apns-provider.mdx | 3 + .../apis/push/change-default-fcm-provider.mdx | 3 + .../apis/push/delete-apns-providers.mdx | 3 + .../apis/push/delete-contact-details.mdx | 3 + .../apis/push/delete-custom-provider.mdx | 3 + .../apis/push/delete-fcm-provider.mdx | 3 + notifications/apis/push/delete-push-token.mdx | 3 + .../apis/push/get-contact-details.mdx | 3 + .../apis/push/get-custom-provider.mdx | 3 + notifications/apis/push/get-timezone.mdx | 3 + .../apis/push/list-apns-providers.mdx | 3 + .../apis/push/list-fcm-providers.mdx | 3 + .../apis/push/list-muted-conversations.mdx | 3 + notifications/apis/push/list-preferences.mdx | 3 + notifications/apis/push/list-push-tokens.mdx | 3 + notifications/apis/push/list-settings.mdx | 3 + .../apis/push/mute-conversations.mdx | 3 + .../apis/push/notifications-logs.mdx | 3 + .../apis/push/register-push-token.mdx | 3 + notifications/apis/push/reset-preferences.mdx | 3 + notifications/apis/push/reset-settings.mdx | 3 + .../apis/push/save-custom-provider.mdx | 3 + .../apis/push/unmute-conversations.mdx | 3 + .../apis/push/unregister-push-tokens.mdx | 3 + .../apis/push/update-apns-providers.mdx | 3 + .../apis/push/update-contact-details.mdx | 3 + .../apis/push/update-custom-provider.mdx | 3 + .../apis/push/update-fcm-provider.mdx | 3 + .../apis/push/update-preferences.mdx | 3 + notifications/apis/push/update-settings.mdx | 3 + notifications/apis/push/update-timezone.mdx | 3 + .../apis/sms/delete-custom-provider.mdx | 3 + .../apis/sms/delete-twilio-credentials.mdx | 3 + .../apis/sms/get-custom-provider.mdx | 3 + .../apis/sms/get-twilio-credentials.mdx | 3 + .../apis/sms/save-custom-provider.mdx | 3 + .../apis/sms/save-twilio-credentials.mdx | 3 + .../apis/sms/update-custom-provider.mdx | 3 + .../apis/sms/update-twilio-credentials.mdx | 3 + rest-api/chat-apis.mdx | 16 +- .../constraints-rate-limits-and-errors.mdx | 7 + rest-api/management-apis.mdx | 1456 ----------------- .../moderation/add-keywords.mdx | 7 - .../management-apis/moderation/add-rule.mdx | 7 - .../moderation/approve-blocked-messages.mdx | 7 - .../moderation/get-keyword.mdx | 7 - .../moderation/get-rule-revisions.mdx | 7 - .../management-apis/moderation/get-rule.mdx | 7 - .../moderation/list-blocked-messages.mdx | 7 - .../moderation/list-keywords.mdx | 7 - .../management-apis/moderation/list-rules.mdx | 7 - .../moderation/remove-keyword.mdx | 7 - .../moderation/remove-rule.mdx | 7 - .../moderation/update-keyword.mdx | 7 - .../moderation/update-rule.mdx | 7 - .../management-apis/webhooks/overview.mdx | 1185 ++++++++++++++ rest-api/moderation/delete-message.mdx | 3 - rest-api/moderation/get-message.mdx | 3 - rest-api/moderation/list-messages.mdx | 3 - rest-api/moderation/send-message.mdx | 3 - rest-api/moderation/update-message.mdx | 3 - 96 files changed, 1966 insertions(+), 1983 deletions(-) create mode 100644 moderation/apis/add-keywords.mdx create mode 100644 moderation/apis/add-rule.mdx create mode 100644 moderation/apis/approve-blocked-messages.mdx create mode 100644 moderation/apis/blockreview-flagged-message.mdx create mode 100644 moderation/apis/create-reasons.mdx create mode 100644 moderation/apis/delete-reasons.mdx create mode 100644 moderation/apis/flag-a-message.mdx create mode 100644 moderation/apis/get-keyword.mdx create mode 100644 moderation/apis/get-reason-details.mdx create mode 100644 moderation/apis/get-rule-revisions.mdx create mode 100644 moderation/apis/get-rule.mdx create mode 100644 moderation/apis/list-blocked-messages.mdx create mode 100644 moderation/apis/list-flagged-messages.mdx create mode 100644 moderation/apis/list-keywords.mdx create mode 100644 moderation/apis/list-reasons.mdx create mode 100644 moderation/apis/list-reviewed-messages.mdx create mode 100644 moderation/apis/list-rules.mdx create mode 100644 moderation/apis/remove-keyword.mdx create mode 100644 moderation/apis/remove-rule.mdx create mode 100644 moderation/apis/review-blocked-message.mdx create mode 100644 moderation/apis/update-keyword.mdx create mode 100644 moderation/apis/update-reason-details.mdx create mode 100644 moderation/apis/update-rule.mdx create mode 100644 notifications/apis/email/delete-custom-provider.mdx create mode 100644 notifications/apis/email/delete-sendgrid-credentials.mdx create mode 100644 notifications/apis/email/get-custom-provider.mdx create mode 100644 notifications/apis/email/get-sendgrid-credentials.mdx create mode 100644 notifications/apis/email/save-custom-provider.mdx create mode 100644 notifications/apis/email/save-sendgrid-credentials.mdx create mode 100644 notifications/apis/email/update-custom-provider.mdx create mode 100644 notifications/apis/email/update-sendgrid-credentials.mdx create mode 100644 notifications/apis/push/add-apns-provider.mdx create mode 100644 notifications/apis/push/add-fcm-provider.mdx create mode 100644 notifications/apis/push/change-default-apns-provider.mdx create mode 100644 notifications/apis/push/change-default-fcm-provider.mdx create mode 100644 notifications/apis/push/delete-apns-providers.mdx create mode 100644 notifications/apis/push/delete-contact-details.mdx create mode 100644 notifications/apis/push/delete-custom-provider.mdx create mode 100644 notifications/apis/push/delete-fcm-provider.mdx create mode 100644 notifications/apis/push/delete-push-token.mdx create mode 100644 notifications/apis/push/get-contact-details.mdx create mode 100644 notifications/apis/push/get-custom-provider.mdx create mode 100644 notifications/apis/push/get-timezone.mdx create mode 100644 notifications/apis/push/list-apns-providers.mdx create mode 100644 notifications/apis/push/list-fcm-providers.mdx create mode 100644 notifications/apis/push/list-muted-conversations.mdx create mode 100644 notifications/apis/push/list-preferences.mdx create mode 100644 notifications/apis/push/list-push-tokens.mdx create mode 100644 notifications/apis/push/list-settings.mdx create mode 100644 notifications/apis/push/mute-conversations.mdx create mode 100644 notifications/apis/push/notifications-logs.mdx create mode 100644 notifications/apis/push/register-push-token.mdx create mode 100644 notifications/apis/push/reset-preferences.mdx create mode 100644 notifications/apis/push/reset-settings.mdx create mode 100644 notifications/apis/push/save-custom-provider.mdx create mode 100644 notifications/apis/push/unmute-conversations.mdx create mode 100644 notifications/apis/push/unregister-push-tokens.mdx create mode 100644 notifications/apis/push/update-apns-providers.mdx create mode 100644 notifications/apis/push/update-contact-details.mdx create mode 100644 notifications/apis/push/update-custom-provider.mdx create mode 100644 notifications/apis/push/update-fcm-provider.mdx create mode 100644 notifications/apis/push/update-preferences.mdx create mode 100644 notifications/apis/push/update-settings.mdx create mode 100644 notifications/apis/push/update-timezone.mdx create mode 100644 notifications/apis/sms/delete-custom-provider.mdx create mode 100644 notifications/apis/sms/delete-twilio-credentials.mdx create mode 100644 notifications/apis/sms/get-custom-provider.mdx create mode 100644 notifications/apis/sms/get-twilio-credentials.mdx create mode 100644 notifications/apis/sms/save-custom-provider.mdx create mode 100644 notifications/apis/sms/save-twilio-credentials.mdx create mode 100644 notifications/apis/sms/update-custom-provider.mdx create mode 100644 notifications/apis/sms/update-twilio-credentials.mdx delete mode 100644 rest-api/management-apis/moderation/add-keywords.mdx delete mode 100644 rest-api/management-apis/moderation/add-rule.mdx delete mode 100644 rest-api/management-apis/moderation/approve-blocked-messages.mdx delete mode 100644 rest-api/management-apis/moderation/get-keyword.mdx delete mode 100644 rest-api/management-apis/moderation/get-rule-revisions.mdx delete mode 100644 rest-api/management-apis/moderation/get-rule.mdx delete mode 100644 rest-api/management-apis/moderation/list-blocked-messages.mdx delete mode 100644 rest-api/management-apis/moderation/list-keywords.mdx delete mode 100644 rest-api/management-apis/moderation/list-rules.mdx delete mode 100644 rest-api/management-apis/moderation/remove-keyword.mdx delete mode 100644 rest-api/management-apis/moderation/remove-rule.mdx delete mode 100644 rest-api/management-apis/moderation/update-keyword.mdx delete mode 100644 rest-api/management-apis/moderation/update-rule.mdx create mode 100644 rest-api/management-apis/webhooks/overview.mdx delete mode 100644 rest-api/moderation/delete-message.mdx delete mode 100644 rest-api/moderation/get-message.mdx delete mode 100644 rest-api/moderation/list-messages.mdx delete mode 100644 rest-api/moderation/send-message.mdx delete mode 100644 rest-api/moderation/update-message.mdx diff --git a/docs.json b/docs.json index 6fe2a0c07..5f522ba1a 100644 --- a/docs.json +++ b/docs.json @@ -4422,63 +4422,176 @@ "pages": [ "rest-api/chat-apis", { - "group": "API Keys", + "group": "Setup & Authentication", + "expanded": false, + "icon": "key", "pages": [ - "rest-api/api-keys", - "rest-api/api-keys/list", - "rest-api/api-keys/create", - "rest-api/api-keys/get", - "rest-api/api-keys/update", - "rest-api/api-keys/delete" - ] - }, - { - "group": "Roles", - "pages": [ - "rest-api/roles", - "rest-api/roles/list", - "rest-api/roles/create", - "rest-api/roles/get", - "rest-api/roles/update", - "rest-api/roles/delete" - ] - }, - { - "group": "Users", - "pages": [ - "rest-api/users", - "rest-api/users/list", - "rest-api/users/reactivate", - "rest-api/users/create", - "rest-api/users/deactivate", - "rest-api/users/get", - "rest-api/users/update", - "rest-api/users/delete" + { + "group": "API Keys", + "pages": [ + "rest-api/api-keys", + "rest-api/api-keys/list", + "rest-api/api-keys/create", + "rest-api/api-keys/get", + "rest-api/api-keys/update", + "rest-api/api-keys/delete" + ] + }, + { + "group": "Auth Tokens", + "pages": [ + "rest-api/auth-tokens", + "rest-api/auth-tokens/list", + "rest-api/auth-tokens/create", + "rest-api/auth-tokens/flush", + "rest-api/auth-tokens/get", + "rest-api/auth-tokens/update", + "rest-api/auth-tokens/delete" + ] + } ] }, { - "group": "Auth Tokens", + "group": "Users & Groups", + "expanded": false, + "icon": "users", "pages": [ - "rest-api/auth-tokens", - "rest-api/auth-tokens/list", - "rest-api/auth-tokens/create", - "rest-api/auth-tokens/flush", - "rest-api/auth-tokens/get", - "rest-api/auth-tokens/update", - "rest-api/auth-tokens/delete" + { + "group": "User Roles", + "pages": [ + "rest-api/roles", + "rest-api/roles/list", + "rest-api/roles/create", + "rest-api/roles/get", + "rest-api/roles/update", + "rest-api/roles/delete", + { + "group": "Restrict Features", + "pages": [ + "rest-api/restrict-features", + "rest-api/restrict-features/list-restricted-features", + "rest-api/restrict-features/restrict-features", + "rest-api/restrict-features/allow-features" + ] + } + ] + }, + { + "group": "Users", + "pages": [ + "rest-api/users", + "rest-api/users/list", + "rest-api/users/reactivate", + "rest-api/users/create", + "rest-api/users/deactivate", + "rest-api/users/get", + "rest-api/users/update", + "rest-api/users/delete" + ] + }, + { + "group": "Blocked Users", + "pages": [ + "rest-api/blocked-users", + "rest-api/blocked-users/list-blocked-users", + "rest-api/blocked-users/block-user", + "rest-api/blocked-users/unblock-user" + ] + }, + { + "group": "Friends", + "pages": [ + "rest-api/friends", + "rest-api/friends/list-friends", + "rest-api/friends/add-friends", + "rest-api/friends/remove-friends" + ] + }, + { + "group": "Groups", + "pages": [ + "rest-api/groups", + "rest-api/groups/list", + "rest-api/groups/create", + "rest-api/groups/get", + "rest-api/groups/update", + "rest-api/groups/delete" + ] + }, + { + "group": "Group Members", + "pages": [ + "rest-api/group-members", + "rest-api/group-members/list", + "rest-api/group-members/add-members", + "rest-api/group-members/change-scope", + "rest-api/group-members/kick" + ] + }, + { + "group": "Banned Users", + "pages": [ + "rest-api/banned-users", + "rest-api/banned-users/ban", + "rest-api/banned-users/unban", + "rest-api/banned-users/list" + ] + } ] }, { - "group": "Blocked Users", + "group": "Chat & Messaging", + "expanded": false, + "icon": "comments", "pages": [ - "rest-api/blocked-users", - "rest-api/blocked-users/list-blocked-users", - "rest-api/blocked-users/block-user", - "rest-api/blocked-users/unblock-user" + { + "group": "Messages", + "pages": [ + "rest-api/messages", + "rest-api/messages/list-messages", + "rest-api/messages/send-message", + "rest-api/messages/get-message", + "rest-api/messages/update-message", + "rest-api/messages/delete-message", + "rest-api/messages/mark-message-as-interacted", + "rest-api/messages/list-all-reactions", + "rest-api/messages/list-reactions-with-a-specific-emojiunicodes", + "rest-api/messages/add-reaction", + "rest-api/messages/remove-reaction", + "rest-api/messages/list-threaded-messages", + "rest-api/messages/send-threaded-message", + "rest-api/messages/list-user-messages", + "rest-api/messages/list-group-messages", + "rest-api/messages/send-bot-message" + ] + }, + { + "group": "Conversations", + "pages": [ + "rest-api/conversations", + "rest-api/conversations/list-conversations", + "rest-api/conversations/get-conversation", + "rest-api/conversations/delete-conversation", + "rest-api/conversations/get-user-conversation", + "rest-api/conversations/update-user-conversation", + "rest-api/conversations/reset-user-conversation", + "rest-api/conversations/mark-user-conversation-as-delivered", + "rest-api/conversations/mark-user-conversation-as-read", + "rest-api/conversations/mark-conversation-messages-as-unread", + "rest-api/conversations/get-group-conversation", + "rest-api/conversations/update-group-conversation", + "rest-api/conversations/reset-group-conversation", + "rest-api/conversations/mark-group-conversation-as-delivered", + "rest-api/conversations/mark-group-conversation-as-read", + "rest-api/conversations/mark-group-conversation-as-unread" + ] + } ] }, { - "group": "Calls", + "group": "Voice & Video Calls", + "expanded": false, + "icon": "phone-volume", "pages": [ "rest-api/calls", "rest-api/list-calls", @@ -4486,368 +4599,296 @@ ] }, { - "group": "Friends", - "pages": [ - "rest-api/friends", - "rest-api/friends/list-friends", - "rest-api/friends/add-friends", - "rest-api/friends/remove-friends" - ] - }, - { - "group": "Groups", - "pages": [ - "rest-api/groups", - "rest-api/groups/list", - "rest-api/groups/create", - "rest-api/groups/get", - "rest-api/groups/update", - "rest-api/groups/delete" - ] - }, - { - "group": "Banned Users", - "pages": [ - "rest-api/banned-users", - "rest-api/banned-users/ban", - "rest-api/banned-users/unban", - "rest-api/banned-users/list" - ] - }, - { - "group": "Group Members", + "group": "Platform Features", + "expanded": false, + "icon": "sliders", "pages": [ - "rest-api/group-members", - "rest-api/group-members/list", - "rest-api/group-members/add-members", - "rest-api/group-members/change-scope", - "rest-api/group-members/kick" - ] - }, - { - "group": "Messages", - "pages": [ - "rest-api/messages", - "rest-api/messages/list-messages", - "rest-api/messages/send-message", - "rest-api/messages/get-message", - "rest-api/messages/update-message", - "rest-api/messages/delete-message", - "rest-api/messages/mark-message-as-interacted", - "rest-api/messages/list-all-reactions", - "rest-api/messages/list-reactions-with-a-specific-emojiunicodes", - "rest-api/messages/add-reaction", - "rest-api/messages/remove-reaction", - "rest-api/messages/list-threaded-messages", - "rest-api/messages/send-threaded-message", - "rest-api/messages/list-user-messages", - "rest-api/messages/list-group-messages", - "rest-api/messages/send-bot-message" - ] - }, - { - "group": "Conversations", - "pages": [ - "rest-api/conversations", - "rest-api/conversations/list-conversations", - "rest-api/conversations/get-conversation", - "rest-api/conversations/delete-conversation", - "rest-api/conversations/get-user-conversation", - "rest-api/conversations/update-user-conversation", - "rest-api/conversations/reset-user-conversation", - "rest-api/conversations/mark-user-conversation-as-delivered", - "rest-api/conversations/mark-user-conversation-as-read", - "rest-api/conversations/mark-conversation-messages-as-unread", - "rest-api/conversations/get-group-conversation", - "rest-api/conversations/update-group-conversation", - "rest-api/conversations/reset-group-conversation", - "rest-api/conversations/mark-group-conversation-as-delivered", - "rest-api/conversations/mark-group-conversation-as-read", - "rest-api/conversations/mark-group-conversation-as-unread" - ] - }, - { - "group": "Restrict Features", - "pages": [ - "rest-api/restrict-features", - "rest-api/restrict-features/list-restricted-features", - "rest-api/restrict-features/restrict-features", - "rest-api/restrict-features/allow-features" - ] - }, - { - "group": "Metrics", - "pages": [ - "rest-api/metrics/usage-metrics", - "rest-api/metrics/message-metrics" - ] - }, - { - "group": "AI Moderation", - "pages": [ - "rest-api/moderation", - "rest-api/moderation/list-rules", - "rest-api/moderation/add-rule", - "rest-api/moderation/get-rule", - "rest-api/moderation/update-rule", - "rest-api/moderation/remove-rule", - "rest-api/moderation/list-keywords", - "rest-api/moderation/add-keywords", - "rest-api/moderation/get-keyword", - "rest-api/moderation/update-keyword", - "rest-api/moderation/remove-keyword", - "rest-api/moderation/get-rule-revisions", - "rest-api/moderation/list-blocked-messages", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/send-message", - "rest-api/moderation/list-messages", - "rest-api/moderation/get-message", - "rest-api/moderation/update-message", - "rest-api/moderation/delete-message", - "rest-api/moderation/create-reasons", - "rest-api/moderation/list-reasons", - "rest-api/moderation/get-reason-details", - "rest-api/moderation/update-reason-details", - "rest-api/moderation/delete-reasons", - "rest-api/moderation/flag-a-message", - "rest-api/moderation/review-blocked-message", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/blockreview-flagged-message", - "rest-api/moderation/list-flagged-messages", - "rest-api/moderation/list-reviewed-messages" + { + "group": "Metrics", + "pages": [ + "rest-api/metrics/usage-metrics", + "rest-api/metrics/message-metrics" + ] + }, + { + "group": "Moderation", + "pages": [ + "rest-api/moderation", + "rest-api/moderation/list-rules", + "rest-api/moderation/add-rule", + "rest-api/moderation/get-rule", + "rest-api/moderation/update-rule", + "rest-api/moderation/remove-rule", + "rest-api/moderation/list-keywords", + "rest-api/moderation/add-keywords", + "rest-api/moderation/get-keyword", + "rest-api/moderation/update-keyword", + "rest-api/moderation/remove-keyword", + "rest-api/moderation/get-rule-revisions", + "rest-api/moderation/list-blocked-messages", + "rest-api/moderation/approve-blocked-messages", + "rest-api/moderation/create-reasons", + "rest-api/moderation/list-reasons", + "rest-api/moderation/get-reason-details", + "rest-api/moderation/update-reason-details", + "rest-api/moderation/delete-reasons", + "rest-api/moderation/flag-a-message", + "rest-api/moderation/review-blocked-message", + "rest-api/moderation/approve-blocked-messages", + "rest-api/moderation/blockreview-flagged-message", + "rest-api/moderation/list-flagged-messages", + "rest-api/moderation/list-reviewed-messages" + ] + }, + { + "group": "Notification Engine", + "pages": [ + "rest-api/notifications/list-settings", + "rest-api/notifications/reset-settings", + "rest-api/notifications/update-settings", + "rest-api/notifications/list-fcm-providers", + "rest-api/notifications/update-fcm-provider", + "rest-api/notifications/add-fcm-provider", + "rest-api/notifications/delete-fcm-provider", + "rest-api/notifications/change-default-fcm-provider", + "rest-api/notifications/list-apns-providers", + "rest-api/notifications/update-apns-providers", + "rest-api/notifications/add-apns-provider", + "rest-api/notifications/delete-apns-providers", + "rest-api/notifications/change-default-apns-provider", + "rest-api/notifications/list-preferences", + "rest-api/notifications/reset-preferences", + "rest-api/notifications/update-preferences", + "rest-api/notifications/list-push-tokens", + "rest-api/notifications/register-push-token", + "rest-api/notifications/unregister-push-tokens-for-authtoken", + "rest-api/notifications/delete-the-given-push-token", + "rest-api/notifications/list-muted-conversations", + "rest-api/notifications/mute-notifications-for-conversations", + "rest-api/notifications/unmute-notifications-for-conversations", + "rest-api/notifications/get-timezone", + "rest-api/notifications/update-timezone", + "rest-api/notifications/get-contact-details", + "rest-api/notifications/delete-contact-details", + "rest-api/notifications/update-contact-details", + "rest-api/notifications/get-twilio-credentials", + "rest-api/notifications/update-twilio-credentials", + "rest-api/notifications/save-twilio-credentials", + "rest-api/notifications/delete-twilio-credentials", + "rest-api/notifications/get-sendgrid-credentials", + "rest-api/notifications/update-sendgrid-credentials", + "rest-api/notifications/save-sendgrid-credentials", + "rest-api/notifications/delete-sendgrid-credentials", + "rest-api/notifications/get-custom-provider-for-push-notifications", + "rest-api/notifications/update-custom-provider-for-push-notifications", + "rest-api/notifications/save-custom-provider-for-push-notifications", + "rest-api/notifications/delete-the-custom-provider-for-push-notifications", + "rest-api/notifications/get-custom-provider-for-sms-notifications", + "rest-api/notifications/update-custom-provider-for-sms-notifications", + "rest-api/notifications/save-custom-provider-for-sms-notifications", + "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", + "rest-api/notifications/get-custom-provider-for-email-notifications", + "rest-api/notifications/update-custom-provider-for-email-notifications", + "rest-api/notifications/save-custom-provider-for-email-notifications", + "rest-api/notifications/delete-the-custom-provider-for-email-notifications", + "rest-api/notifications/notifications-logs" + ] + } ] }, { - "group": "Notifications", + "group": "Data Import", + "expanded": false, + "icon": "file-import", "pages": [ - "rest-api/notifications/list-settings", - "rest-api/notifications/reset-settings", - "rest-api/notifications/update-settings", - "rest-api/notifications/list-fcm-providers", - "rest-api/notifications/update-fcm-provider", - "rest-api/notifications/add-fcm-provider", - "rest-api/notifications/delete-fcm-provider", - "rest-api/notifications/change-default-fcm-provider", - "rest-api/notifications/list-apns-providers", - "rest-api/notifications/update-apns-providers", - "rest-api/notifications/add-apns-provider", - "rest-api/notifications/delete-apns-providers", - "rest-api/notifications/change-default-apns-provider", - "rest-api/notifications/list-preferences", - "rest-api/notifications/reset-preferences", - "rest-api/notifications/update-preferences", - "rest-api/notifications/list-push-tokens", - "rest-api/notifications/register-push-token", - "rest-api/notifications/unregister-push-tokens-for-authtoken", - "rest-api/notifications/delete-the-given-push-token", - "rest-api/notifications/list-muted-conversations", - "rest-api/notifications/mute-notifications-for-conversations", - "rest-api/notifications/unmute-notifications-for-conversations", - "rest-api/notifications/get-timezone", - "rest-api/notifications/update-timezone", - "rest-api/notifications/get-contact-details", - "rest-api/notifications/delete-contact-details", - "rest-api/notifications/update-contact-details", - "rest-api/notifications/get-twilio-credentials", - "rest-api/notifications/update-twilio-credentials", - "rest-api/notifications/save-twilio-credentials", - "rest-api/notifications/delete-twilio-credentials", - "rest-api/notifications/get-sendgrid-credentials", - "rest-api/notifications/update-sendgrid-credentials", - "rest-api/notifications/save-sendgrid-credentials", - "rest-api/notifications/delete-sendgrid-credentials", - "rest-api/notifications/get-custom-provider-for-push-notifications", - "rest-api/notifications/update-custom-provider-for-push-notifications", - "rest-api/notifications/save-custom-provider-for-push-notifications", - "rest-api/notifications/delete-the-custom-provider-for-push-notifications", - "rest-api/notifications/get-custom-provider-for-sms-notifications", - "rest-api/notifications/update-custom-provider-for-sms-notifications", - "rest-api/notifications/save-custom-provider-for-sms-notifications", - "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", - "rest-api/notifications/get-custom-provider-for-email-notifications", - "rest-api/notifications/update-custom-provider-for-email-notifications", - "rest-api/notifications/save-custom-provider-for-email-notifications", - "rest-api/notifications/delete-the-custom-provider-for-email-notifications", - "rest-api/notifications/notifications-logs" + "rest-api/data-import", + { + "group": "Messages", + "pages": [ + "rest-api/data-import-apis/messages/import-messages" + ] + }, + { + "group": "Users", + "pages": [ + "rest-api/data-import-apis/users/import-users" + ] + }, + { + "group": "Groups", + "pages": [ + "rest-api/data-import-apis/groups/import-groups", + "rest-api/data-import-apis/groups/import-group-members" + ] + } ] }, "rest-api/constraints-rate-limits-and-errors" ] }, - { - "group": "Data Import APIs", - "pages": [ - "rest-api/data-import", - { - "group": "Messages", - "pages": [ - "rest-api/data-import-apis/messages/import-messages" - ] - }, - { - "group": "Users", - "pages": [ - "rest-api/data-import-apis/users/import-users" - ] - }, - { - "group": "Groups", - "pages": [ - "rest-api/data-import-apis/groups/import-groups", - "rest-api/data-import-apis/groups/import-group-members" - ] - }, - "rest-api/data-migration-constraints-rate-limits-and-errors" - ] - }, { "group": "Management APIs (Multi-Tenancy)", "pages": [ "rest-api/management-apis", { - "group": "App", + "group": "App Management", + "expanded": false, + "icon": "grid-2", "pages": [ - "rest-api/management-apis/app/list", - "rest-api/management-apis/app/create", - "rest-api/management-apis/app/delete", - "rest-api/management-apis/app/fetch-usage" - ] - }, - { - "group": "Extensions", - "pages": [ - "rest-api/extensions-overview", - "rest-api/management-apis/extensions/list-extensions", - "rest-api/management-apis/extensions/enabledisable", - "rest-api/management-apis/extensions/chat-widgets-list", - "rest-api/management-apis/extensions/chat-widgets-update", - "rest-api/management-apis/extensions/chat-widgets-create", - "rest-api/management-apis/extensions/giphy-get-settings", - "rest-api/management-apis/extensions/giphy-update-settings", - "rest-api/management-apis/extensions/giphy-store-settings", - "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", - "rest-api/management-apis/extensions/xss-filter-get-settings", - "rest-api/management-apis/extensions/xss-filter-update-settings", - "rest-api/management-apis/extensions/xss-filter-store-settings", - "rest-api/management-apis/extensions/xss-filter-delete-settings", - "rest-api/management-apis/extensions/image-moderation-get-settings", - "rest-api/management-apis/extensions/image-moderation-update-settings", - "rest-api/management-apis/extensions/image-moderation-store-settings", - "rest-api/management-apis/extensions/image-moderation-delete-settings", - "rest-api/management-apis/extensions/report-user-get-settings", - "rest-api/management-apis/extensions/report-user-update-settings", - "rest-api/management-apis/extensions/report-user-store-settings", - "rest-api/management-apis/extensions/report-user-delete-settings", - "rest-api/management-apis/extensions/report-message-get-settings", - "rest-api/management-apis/extensions/report-message-update-settings", - "rest-api/management-apis/extensions/report-message-store-settings", - "rest-api/management-apis/extensions/report-message-delete-settings", - "rest-api/management-apis/extensions/voice-transcription-get-settings", - "rest-api/management-apis/extensions/voice-transcription-update-settings", - "rest-api/management-apis/extensions/voice-transcription-store-settings", - "rest-api/management-apis/extensions/voice-transcription-delete-settings", - "rest-api/management-apis/extensions/stipop-get-settings", - "rest-api/management-apis/extensions/stipop-update-settings", - "rest-api/management-apis/extensions/stipop-store-settings", - "rest-api/management-apis/extensions/stipop-delete-settings", - "rest-api/management-apis/extensions/sentiment-analysis-get-settings", - "rest-api/management-apis/extensions/sentiment-analysis-update-settings", - "rest-api/management-apis/extensions/sentiment-analysis-store-settings", - "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", - "rest-api/management-apis/extensions/tinyurl-get-settings", - "rest-api/management-apis/extensions/tinyurl-update-settings", - "rest-api/management-apis/extensions/tinyurl-store-settings", - "rest-api/management-apis/extensions/tinyurl-delete-settings", - "rest-api/management-apis/extensions/intercom-get-settings", - "rest-api/management-apis/extensions/intercom-update-settings", - "rest-api/management-apis/extensions/intercom-store-settings", - "rest-api/management-apis/extensions/intercom-delete-settings", - "rest-api/management-apis/extensions/bitly-get-settings", - "rest-api/management-apis/extensions/bitly-update-settings", - "rest-api/management-apis/extensions/bitly-store-settings", - "rest-api/management-apis/extensions/bitly-delete-settings", - "rest-api/management-apis/extensions/rich-media-preview-get-settings", - "rest-api/management-apis/extensions/rich-media-preview-update-settings", - "rest-api/management-apis/extensions/rich-media-preview-store-settings", - "rest-api/management-apis/extensions/rich-media-preview-delete-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", - "rest-api/management-apis/extensions/video-broadcasting-get-settings", - "rest-api/management-apis/extensions/video-broadcasting-update-settings", - "rest-api/management-apis/extensions/video-broadcasting-store-settings", - "rest-api/management-apis/extensions/video-broadcasting-delete-settings", - "rest-api/management-apis/extensions/tenor-gifs-get-settings", - "rest-api/management-apis/extensions/tenor-gifs-update-settings", - "rest-api/management-apis/extensions/tenor-gifs-store-settings", - "rest-api/management-apis/extensions/tenor-gifs-delete-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", - "rest-api/management-apis/extensions/stickers-extension-get-settings", - "rest-api/management-apis/extensions/stickers-extension-update-settings", - "rest-api/management-apis/extensions/stickers-extension-delete-settings", - "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", - "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", - "rest-api/management-apis/extensions/push-notification-get-certificate", - "rest-api/management-apis/extensions/email-replies-get-settings", - "rest-api/management-apis/extensions/email-replies-update-settings", - "rest-api/management-apis/extensions/email-replies-store-settings", - "rest-api/management-apis/extensions/email-replies-delete-settings", - "rest-api/management-apis/extensions/sms-notification-get-settings", - "rest-api/management-apis/extensions/sms-notification-update-settings", - "rest-api/management-apis/extensions/sms-notification-store-settings", - "rest-api/management-apis/extensions/sms-notification-delete-settings", - "rest-api/management-apis/extensions/push-notification-get-settings", - "rest-api/management-apis/extensions/push-notification-update-settings", - "rest-api/management-apis/extensions/push-notification-store-settings", - "rest-api/management-apis/extensions/push-notification-delete-settings", - "rest-api/management-apis/extensions/chatwoot-get-settings", - "rest-api/management-apis/extensions/chatwoot-update-settings", - "rest-api/management-apis/extensions/chatwoot-store-settings", - "rest-api/management-apis/extensions/chatwoot-delete-settings", - "rest-api/management-apis/extensions/message-shortcuts-get-settings", - "rest-api/management-apis/extensions/message-shortcuts-update-settings", - "rest-api/management-apis/extensions/message-shortcuts-store-settings", - "rest-api/management-apis/extensions/message-shortcuts-delete-settings", - "rest-api/management-apis/extensions/email-notification-get-settings", - "rest-api/management-apis/extensions/email-notification-update-settings", - "rest-api/management-apis/extensions/email-notification-store-settings", - "rest-api/management-apis/extensions/email-notification-delete-settings", - "rest-api/management-apis/extensions/data-masking-get-settings", - "rest-api/management-apis/extensions/data-masking-store-or-update-settings", - "rest-api/management-apis/extensions/data-masking-delete-settings", - "rest-api/management-apis/extensions/profanity-filter-get-settings", - "rest-api/management-apis/extensions/profanity-filter-update-settings", - "rest-api/management-apis/extensions/profanity-filter-adds-settings", - "rest-api/management-apis/extensions/profanity-filter-delete-settings" - ] - }, - { - "group": "Team Management", - "pages": [ - "rest-api/management-apis/team-management/list-collaborators", - "rest-api/management-apis/team-management/addsremove-collaborators" + { + "group": "App", + "pages": [ + "rest-api/management-apis/app/list", + "rest-api/management-apis/app/create", + "rest-api/management-apis/app/delete", + "rest-api/management-apis/app/fetch-usage" + ] + }, + { + "group": "Extensions", + "pages": [ + "rest-api/extensions-overview", + "rest-api/management-apis/extensions/list-extensions", + "rest-api/management-apis/extensions/enabledisable", + "rest-api/management-apis/extensions/chat-widgets-list", + "rest-api/management-apis/extensions/chat-widgets-update", + "rest-api/management-apis/extensions/chat-widgets-create", + "rest-api/management-apis/extensions/giphy-get-settings", + "rest-api/management-apis/extensions/giphy-update-settings", + "rest-api/management-apis/extensions/giphy-store-settings", + "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", + "rest-api/management-apis/extensions/xss-filter-get-settings", + "rest-api/management-apis/extensions/xss-filter-update-settings", + "rest-api/management-apis/extensions/xss-filter-store-settings", + "rest-api/management-apis/extensions/xss-filter-delete-settings", + "rest-api/management-apis/extensions/image-moderation-get-settings", + "rest-api/management-apis/extensions/image-moderation-update-settings", + "rest-api/management-apis/extensions/image-moderation-store-settings", + "rest-api/management-apis/extensions/image-moderation-delete-settings", + "rest-api/management-apis/extensions/report-user-get-settings", + "rest-api/management-apis/extensions/report-user-update-settings", + "rest-api/management-apis/extensions/report-user-store-settings", + "rest-api/management-apis/extensions/report-user-delete-settings", + "rest-api/management-apis/extensions/report-message-get-settings", + "rest-api/management-apis/extensions/report-message-update-settings", + "rest-api/management-apis/extensions/report-message-store-settings", + "rest-api/management-apis/extensions/report-message-delete-settings", + "rest-api/management-apis/extensions/voice-transcription-get-settings", + "rest-api/management-apis/extensions/voice-transcription-update-settings", + "rest-api/management-apis/extensions/voice-transcription-store-settings", + "rest-api/management-apis/extensions/voice-transcription-delete-settings", + "rest-api/management-apis/extensions/stipop-get-settings", + "rest-api/management-apis/extensions/stipop-update-settings", + "rest-api/management-apis/extensions/stipop-store-settings", + "rest-api/management-apis/extensions/stipop-delete-settings", + "rest-api/management-apis/extensions/sentiment-analysis-get-settings", + "rest-api/management-apis/extensions/sentiment-analysis-update-settings", + "rest-api/management-apis/extensions/sentiment-analysis-store-settings", + "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", + "rest-api/management-apis/extensions/tinyurl-get-settings", + "rest-api/management-apis/extensions/tinyurl-update-settings", + "rest-api/management-apis/extensions/tinyurl-store-settings", + "rest-api/management-apis/extensions/tinyurl-delete-settings", + "rest-api/management-apis/extensions/intercom-get-settings", + "rest-api/management-apis/extensions/intercom-update-settings", + "rest-api/management-apis/extensions/intercom-store-settings", + "rest-api/management-apis/extensions/intercom-delete-settings", + "rest-api/management-apis/extensions/bitly-get-settings", + "rest-api/management-apis/extensions/bitly-update-settings", + "rest-api/management-apis/extensions/bitly-store-settings", + "rest-api/management-apis/extensions/bitly-delete-settings", + "rest-api/management-apis/extensions/rich-media-preview-get-settings", + "rest-api/management-apis/extensions/rich-media-preview-update-settings", + "rest-api/management-apis/extensions/rich-media-preview-store-settings", + "rest-api/management-apis/extensions/rich-media-preview-delete-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", + "rest-api/management-apis/extensions/video-broadcasting-get-settings", + "rest-api/management-apis/extensions/video-broadcasting-update-settings", + "rest-api/management-apis/extensions/video-broadcasting-store-settings", + "rest-api/management-apis/extensions/video-broadcasting-delete-settings", + "rest-api/management-apis/extensions/tenor-gifs-get-settings", + "rest-api/management-apis/extensions/tenor-gifs-update-settings", + "rest-api/management-apis/extensions/tenor-gifs-store-settings", + "rest-api/management-apis/extensions/tenor-gifs-delete-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", + "rest-api/management-apis/extensions/stickers-extension-get-settings", + "rest-api/management-apis/extensions/stickers-extension-update-settings", + "rest-api/management-apis/extensions/stickers-extension-delete-settings", + "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", + "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", + "rest-api/management-apis/extensions/push-notification-get-certificate", + "rest-api/management-apis/extensions/email-replies-get-settings", + "rest-api/management-apis/extensions/email-replies-update-settings", + "rest-api/management-apis/extensions/email-replies-store-settings", + "rest-api/management-apis/extensions/email-replies-delete-settings", + "rest-api/management-apis/extensions/sms-notification-get-settings", + "rest-api/management-apis/extensions/sms-notification-update-settings", + "rest-api/management-apis/extensions/sms-notification-store-settings", + "rest-api/management-apis/extensions/sms-notification-delete-settings", + "rest-api/management-apis/extensions/push-notification-get-settings", + "rest-api/management-apis/extensions/push-notification-update-settings", + "rest-api/management-apis/extensions/push-notification-store-settings", + "rest-api/management-apis/extensions/push-notification-delete-settings", + "rest-api/management-apis/extensions/chatwoot-get-settings", + "rest-api/management-apis/extensions/chatwoot-update-settings", + "rest-api/management-apis/extensions/chatwoot-store-settings", + "rest-api/management-apis/extensions/chatwoot-delete-settings", + "rest-api/management-apis/extensions/message-shortcuts-get-settings", + "rest-api/management-apis/extensions/message-shortcuts-update-settings", + "rest-api/management-apis/extensions/message-shortcuts-store-settings", + "rest-api/management-apis/extensions/message-shortcuts-delete-settings", + "rest-api/management-apis/extensions/email-notification-get-settings", + "rest-api/management-apis/extensions/email-notification-update-settings", + "rest-api/management-apis/extensions/email-notification-store-settings", + "rest-api/management-apis/extensions/email-notification-delete-settings", + "rest-api/management-apis/extensions/data-masking-get-settings", + "rest-api/management-apis/extensions/data-masking-store-or-update-settings", + "rest-api/management-apis/extensions/data-masking-delete-settings", + "rest-api/management-apis/extensions/profanity-filter-get-settings", + "rest-api/management-apis/extensions/profanity-filter-update-settings", + "rest-api/management-apis/extensions/profanity-filter-adds-settings", + "rest-api/management-apis/extensions/profanity-filter-delete-settings" + ] + }, + { + "group": "Settings", + "pages": [ + "rest-api/settings", + "rest-api/management-apis/settings/list-settings", + "rest-api/management-apis/settings/maps-settings", + "rest-api/management-apis/settings/unmaps-settings" + ] + } ] }, { - "group": "Settings", + "group": "Access Control", + "expanded": false, + "icon": "lock", "pages": [ - "rest-api/settings", - "rest-api/management-apis/settings/list-settings", - "rest-api/management-apis/settings/maps-settings", - "rest-api/management-apis/settings/unmaps-settings" + { + "group": "Team Management", + "pages": [ + "rest-api/management-apis/team-management/list-collaborators", + "rest-api/management-apis/team-management/addsremove-collaborators" + ] + } ] }, { "group": "Webhooks", "pages": [ + "rest-api/management-apis/webhooks/overview", "rest-api/management-apis/webhooks/list-webhooks", "rest-api/management-apis/webhooks/create-webhook", "rest-api/management-apis/webhooks/get-webhook", @@ -4858,25 +4899,6 @@ "rest-api/management-apis/webhooks/remove-triggers" ] }, - { - "group": "AI Moderation", - "pages": [ - "rest-api/moderation", - "rest-api/management-apis/moderation/list-rules", - "rest-api/management-apis/moderation/add-rule", - "rest-api/management-apis/moderation/get-rule", - "rest-api/management-apis/moderation/update-rule", - "rest-api/management-apis/moderation/remove-rule", - "rest-api/management-apis/moderation/list-keywords", - "rest-api/management-apis/moderation/add-keywords", - "rest-api/management-apis/moderation/get-keyword", - "rest-api/management-apis/moderation/update-keyword", - "rest-api/management-apis/moderation/remove-keyword", - "rest-api/management-apis/moderation/get-rule-revisions", - "rest-api/management-apis/moderation/list-blocked-messages", - "rest-api/management-apis/moderation/approve-blocked-messages" - ] - }, "rest-api/multi-tenancy-constraints-rate-limits-and-errors" ] } @@ -5128,7 +5150,35 @@ { "group": "Resources", "pages": [ - "moderation/api-explorer", + { + "group": "Moderation APIs", + "pages": [ + "moderation/api-explorer", + "moderation/apis/list-rules", + "moderation/apis/add-rule", + "moderation/apis/get-rule", + "moderation/apis/update-rule", + "moderation/apis/remove-rule", + "moderation/apis/list-keywords", + "moderation/apis/add-keywords", + "moderation/apis/get-keyword", + "moderation/apis/update-keyword", + "moderation/apis/remove-keyword", + "moderation/apis/get-rule-revisions", + "moderation/apis/list-blocked-messages", + "moderation/apis/approve-blocked-messages", + "moderation/apis/review-blocked-message", + "moderation/apis/list-flagged-messages", + "moderation/apis/blockreview-flagged-message", + "moderation/apis/list-reviewed-messages", + "moderation/apis/flag-a-message", + "moderation/apis/create-reasons", + "moderation/apis/list-reasons", + "moderation/apis/get-reason-details", + "moderation/apis/update-reason-details", + "moderation/apis/delete-reasons" + ] + }, "moderation/legacy-extensions" ] } @@ -5173,8 +5223,46 @@ ] }, { - "group": " ", + "group": "Resources", "pages": [ + { + "group": "Push APIs", + "pages": [ + "notifications/apis/push/list-fcm-providers", + "notifications/apis/push/add-fcm-provider", + "notifications/apis/push/update-fcm-provider", + "notifications/apis/push/delete-fcm-provider", + "notifications/apis/push/change-default-fcm-provider", + "notifications/apis/push/list-apns-providers", + "notifications/apis/push/add-apns-provider", + "notifications/apis/push/update-apns-providers", + "notifications/apis/push/delete-apns-providers", + "notifications/apis/push/change-default-apns-provider", + "notifications/apis/push/register-push-token", + "notifications/apis/push/list-push-tokens", + "notifications/apis/push/delete-push-token", + "notifications/apis/push/unregister-push-tokens", + "notifications/apis/push/get-custom-provider", + "notifications/apis/push/save-custom-provider", + "notifications/apis/push/update-custom-provider", + "notifications/apis/push/delete-custom-provider", + "notifications/apis/push/list-settings", + "notifications/apis/push/update-settings", + "notifications/apis/push/reset-settings", + "notifications/apis/push/list-preferences", + "notifications/apis/push/update-preferences", + "notifications/apis/push/reset-preferences", + "notifications/apis/push/get-timezone", + "notifications/apis/push/update-timezone", + "notifications/apis/push/get-contact-details", + "notifications/apis/push/update-contact-details", + "notifications/apis/push/delete-contact-details", + "notifications/apis/push/mute-conversations", + "notifications/apis/push/unmute-conversations", + "notifications/apis/push/list-muted-conversations", + "notifications/apis/push/notifications-logs" + ] + }, "notifications/push-notifications-extension-legacy" ] } @@ -5189,8 +5277,21 @@ "notifications/email-templates", "notifications/email-custom-providers", { - "group": " ", + "group": "Resources", "pages": [ + { + "group": "Email APIs", + "pages": [ + "notifications/apis/email/get-sendgrid-credentials", + "notifications/apis/email/save-sendgrid-credentials", + "notifications/apis/email/update-sendgrid-credentials", + "notifications/apis/email/delete-sendgrid-credentials", + "notifications/apis/email/get-custom-provider", + "notifications/apis/email/save-custom-provider", + "notifications/apis/email/update-custom-provider", + "notifications/apis/email/delete-custom-provider" + ] + }, "notifications/email-notifications-extension-legacy" ] } @@ -5205,8 +5306,21 @@ "notifications/sms-templates", "notifications/sms-custom-providers", { - "group": " ", + "group": "Resources", "pages": [ + { + "group": "SMS APIs", + "pages": [ + "notifications/apis/sms/get-twilio-credentials", + "notifications/apis/sms/save-twilio-credentials", + "notifications/apis/sms/update-twilio-credentials", + "notifications/apis/sms/delete-twilio-credentials", + "notifications/apis/sms/get-custom-provider", + "notifications/apis/sms/save-custom-provider", + "notifications/apis/sms/update-custom-provider", + "notifications/apis/sms/delete-custom-provider" + ] + }, "notifications/sms-notifications-extension-legacy" ] } diff --git a/moderation/api-explorer.mdx b/moderation/api-explorer.mdx index 351d82b84..8233a485c 100644 --- a/moderation/api-explorer.mdx +++ b/moderation/api-explorer.mdx @@ -1,4 +1,39 @@ --- title: "AI Moderation APIs" -url: "/rest-api/moderation" ---- \ No newline at end of file +sidebarTitle: "Overview" +--- + +The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. + + + +Below is an overview of the key functionalities provided by the Moderation Service API: + +1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions +2. The Keywords Management endpoints allow you to create and manage lists of keywords or regex patterns used for content moderation. +3. The list blocked messages endpoint allows you to fetch all the violated messages. +4. Fetches the historical revisions of a rule, detailing all updates made over time. + + + +The default rules include text profanity, AI-based moderation for images and videos, custom profanity (custom messages), contact details, and email content, ensuring comprehensive content moderation. + +The text profanity and custom profanity filters scan for words, including those matching regex patterns, and drop the message if a violation is detected. + +The AI-based image and video moderation system scans for violations in images and videos and discards the message if a violation is detected. It allows the attachment of the following labels to a rule, enabling moderation for specific categories of images and videos.\ +Following are the labels that are available for Image/Video moderation: + +| Labels | Definitions | +| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Violence | Instruments or devices used to cause harm or damage to living beings, structures, or systems. This includes firearms (e.g., guns, rifles, machine guns, etc.), sharp weapons (e.g., swords, knives, etc.), explosives and ammunition (e.g., missiles, bombs, bullets, etc.). | +| Alcohol | The act of drinking alcoholic beverages from bottles or glasses of alcohol or liquor. | +| Gambling | The act of participating in games of chance for a chance to win a prize in casinos, e.g., playing cards, blackjacks, roulette, slot machines at casinos, etc. | +| Drugs & Tobacco | Small, solid, often round or oval-shaped tables or capsules. The act of inhaling, exhaling, and lighting up burning substances including cigarettes, cigars, e-cigarettes, hookah, or joint. | +| Rude gestures | Visual depiction of a hand gesture with middle finger is extended upward while the other fingers are folded down. | +| Explicit Nudity | Human male/female genitalia, including the penis (whether erect or flaccid), the scrotum, and any discernible pubic hair. | +| Non-Explicit Nudity | Human posterior part where the majority of the skin is visible from the neck to the end of the spine. This term does not apply when the individual's back is partially or fully occluded. | +| Swimwear or underwear | Human clothing for female/male swimwear (e.g., one-piece swimsuits, bikinis, tankinis, swim trunks, boardshorts, swim briefs, etc) | +| Visually Disturbing | Human bodies that are extremely thin and undernourished with severe physical wasting and depletion of muscle and fat tissue. | +| Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | + +When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. diff --git a/moderation/apis/add-keywords.mdx b/moderation/apis/add-keywords.mdx new file mode 100644 index 000000000..2a0094302 --- /dev/null +++ b/moderation/apis/add-keywords.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/keywords +--- diff --git a/moderation/apis/add-rule.mdx b/moderation/apis/add-rule.mdx new file mode 100644 index 000000000..7ed82c38e --- /dev/null +++ b/moderation/apis/add-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/rules +--- diff --git a/moderation/apis/approve-blocked-messages.mdx b/moderation/apis/approve-blocked-messages.mdx new file mode 100644 index 000000000..b09623f66 --- /dev/null +++ b/moderation/apis/approve-blocked-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/blocked-messages/{messageId} +--- diff --git a/moderation/apis/blockreview-flagged-message.mdx b/moderation/apis/blockreview-flagged-message.mdx new file mode 100644 index 000000000..9fe7cdfc0 --- /dev/null +++ b/moderation/apis/blockreview-flagged-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/flagged-messages/{id} +--- diff --git a/moderation/apis/create-reasons.mdx b/moderation/apis/create-reasons.mdx new file mode 100644 index 000000000..5fda0753f --- /dev/null +++ b/moderation/apis/create-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/reasons +--- diff --git a/moderation/apis/delete-reasons.mdx b/moderation/apis/delete-reasons.mdx new file mode 100644 index 000000000..9e5d78ac4 --- /dev/null +++ b/moderation/apis/delete-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/reasons/{id} +--- diff --git a/moderation/apis/flag-a-message.mdx b/moderation/apis/flag-a-message.mdx new file mode 100644 index 000000000..77a3a6a5f --- /dev/null +++ b/moderation/apis/flag-a-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /messages/{id}/flagged +--- diff --git a/moderation/apis/get-keyword.mdx b/moderation/apis/get-keyword.mdx new file mode 100644 index 000000000..e73ab9699 --- /dev/null +++ b/moderation/apis/get-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/keywords/{keywordId} +--- diff --git a/moderation/apis/get-reason-details.mdx b/moderation/apis/get-reason-details.mdx new file mode 100644 index 000000000..715395c56 --- /dev/null +++ b/moderation/apis/get-reason-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reasons/{id} +--- diff --git a/moderation/apis/get-rule-revisions.mdx b/moderation/apis/get-rule-revisions.mdx new file mode 100644 index 000000000..4136c7810 --- /dev/null +++ b/moderation/apis/get-rule-revisions.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules/{ruleId}/revisions +--- diff --git a/moderation/apis/get-rule.mdx b/moderation/apis/get-rule.mdx new file mode 100644 index 000000000..07c952251 --- /dev/null +++ b/moderation/apis/get-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules/{ruleId} +--- diff --git a/moderation/apis/list-blocked-messages.mdx b/moderation/apis/list-blocked-messages.mdx new file mode 100644 index 000000000..206067ab8 --- /dev/null +++ b/moderation/apis/list-blocked-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/blocked-messages +--- diff --git a/moderation/apis/list-flagged-messages.mdx b/moderation/apis/list-flagged-messages.mdx new file mode 100644 index 000000000..c364c406c --- /dev/null +++ b/moderation/apis/list-flagged-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/flagged-messages +--- diff --git a/moderation/apis/list-keywords.mdx b/moderation/apis/list-keywords.mdx new file mode 100644 index 000000000..8f4d7d9e7 --- /dev/null +++ b/moderation/apis/list-keywords.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/keywords +--- diff --git a/moderation/apis/list-reasons.mdx b/moderation/apis/list-reasons.mdx new file mode 100644 index 000000000..cd563ff9b --- /dev/null +++ b/moderation/apis/list-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reasons +--- diff --git a/moderation/apis/list-reviewed-messages.mdx b/moderation/apis/list-reviewed-messages.mdx new file mode 100644 index 000000000..d0e9dc0b8 --- /dev/null +++ b/moderation/apis/list-reviewed-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reviewed-messages +--- diff --git a/moderation/apis/list-rules.mdx b/moderation/apis/list-rules.mdx new file mode 100644 index 000000000..223c22ecc --- /dev/null +++ b/moderation/apis/list-rules.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules +--- diff --git a/moderation/apis/remove-keyword.mdx b/moderation/apis/remove-keyword.mdx new file mode 100644 index 000000000..05f77fb55 --- /dev/null +++ b/moderation/apis/remove-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/keywords/{keywordId} +--- diff --git a/moderation/apis/remove-rule.mdx b/moderation/apis/remove-rule.mdx new file mode 100644 index 000000000..8b91cbe7c --- /dev/null +++ b/moderation/apis/remove-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/rules/{ruleId} +--- diff --git a/moderation/apis/review-blocked-message.mdx b/moderation/apis/review-blocked-message.mdx new file mode 100644 index 000000000..79d4848fb --- /dev/null +++ b/moderation/apis/review-blocked-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/blocked-messages/{id} +--- diff --git a/moderation/apis/update-keyword.mdx b/moderation/apis/update-keyword.mdx new file mode 100644 index 000000000..7d9ee61c1 --- /dev/null +++ b/moderation/apis/update-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/keywords/{keywordId} +--- diff --git a/moderation/apis/update-reason-details.mdx b/moderation/apis/update-reason-details.mdx new file mode 100644 index 000000000..1566528a4 --- /dev/null +++ b/moderation/apis/update-reason-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/reasons/{id} +--- diff --git a/moderation/apis/update-rule.mdx b/moderation/apis/update-rule.mdx new file mode 100644 index 000000000..d42f34a5f --- /dev/null +++ b/moderation/apis/update-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/rules/{ruleId} +--- diff --git a/notifications/apis/email/delete-custom-provider.mdx b/notifications/apis/email/delete-custom-provider.mdx new file mode 100644 index 000000000..70ca99846 --- /dev/null +++ b/notifications/apis/email/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/email/v1/providers/custom +--- diff --git a/notifications/apis/email/delete-sendgrid-credentials.mdx b/notifications/apis/email/delete-sendgrid-credentials.mdx new file mode 100644 index 000000000..6141627ef --- /dev/null +++ b/notifications/apis/email/delete-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/email/v1/providers/sendgrid +--- diff --git a/notifications/apis/email/get-custom-provider.mdx b/notifications/apis/email/get-custom-provider.mdx new file mode 100644 index 000000000..c0e76dc56 --- /dev/null +++ b/notifications/apis/email/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/email/v1/providers/custom +--- diff --git a/notifications/apis/email/get-sendgrid-credentials.mdx b/notifications/apis/email/get-sendgrid-credentials.mdx new file mode 100644 index 000000000..037fa29fa --- /dev/null +++ b/notifications/apis/email/get-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/email/v1/providers/sendgrid +--- diff --git a/notifications/apis/email/save-custom-provider.mdx b/notifications/apis/email/save-custom-provider.mdx new file mode 100644 index 000000000..81d299c91 --- /dev/null +++ b/notifications/apis/email/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/email/v1/providers/custom +--- diff --git a/notifications/apis/email/save-sendgrid-credentials.mdx b/notifications/apis/email/save-sendgrid-credentials.mdx new file mode 100644 index 000000000..3aa11ff94 --- /dev/null +++ b/notifications/apis/email/save-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/email/v1/providers/sendgrid +--- diff --git a/notifications/apis/email/update-custom-provider.mdx b/notifications/apis/email/update-custom-provider.mdx new file mode 100644 index 000000000..567934c39 --- /dev/null +++ b/notifications/apis/email/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/email/v1/providers/custom +--- diff --git a/notifications/apis/email/update-sendgrid-credentials.mdx b/notifications/apis/email/update-sendgrid-credentials.mdx new file mode 100644 index 000000000..cc5c3bc1b --- /dev/null +++ b/notifications/apis/email/update-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/email/v1/providers/sendgrid +--- diff --git a/notifications/apis/push/add-apns-provider.mdx b/notifications/apis/push/add-apns-provider.mdx new file mode 100644 index 000000000..c8e5cb7ef --- /dev/null +++ b/notifications/apis/push/add-apns-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/apns +--- diff --git a/notifications/apis/push/add-fcm-provider.mdx b/notifications/apis/push/add-fcm-provider.mdx new file mode 100644 index 000000000..42f65ded8 --- /dev/null +++ b/notifications/apis/push/add-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/fcm +--- diff --git a/notifications/apis/push/change-default-apns-provider.mdx b/notifications/apis/push/change-default-apns-provider.mdx new file mode 100644 index 000000000..05f40a27e --- /dev/null +++ b/notifications/apis/push/change-default-apns-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/apns/default/{providerId} +--- diff --git a/notifications/apis/push/change-default-fcm-provider.mdx b/notifications/apis/push/change-default-fcm-provider.mdx new file mode 100644 index 000000000..954ec443f --- /dev/null +++ b/notifications/apis/push/change-default-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/fcm/default/{providerId} +--- diff --git a/notifications/apis/push/delete-apns-providers.mdx b/notifications/apis/push/delete-apns-providers.mdx new file mode 100644 index 000000000..26b769e61 --- /dev/null +++ b/notifications/apis/push/delete-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/apns/{providerId} +--- diff --git a/notifications/apis/push/delete-contact-details.mdx b/notifications/apis/push/delete-contact-details.mdx new file mode 100644 index 000000000..9b5d1ab1a --- /dev/null +++ b/notifications/apis/push/delete-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/contact-details +--- diff --git a/notifications/apis/push/delete-custom-provider.mdx b/notifications/apis/push/delete-custom-provider.mdx new file mode 100644 index 000000000..44c8f7a22 --- /dev/null +++ b/notifications/apis/push/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/custom +--- diff --git a/notifications/apis/push/delete-fcm-provider.mdx b/notifications/apis/push/delete-fcm-provider.mdx new file mode 100644 index 000000000..adfcc2482 --- /dev/null +++ b/notifications/apis/push/delete-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/fcm/{providerId} +--- diff --git a/notifications/apis/push/delete-push-token.mdx b/notifications/apis/push/delete-push-token.mdx new file mode 100644 index 000000000..4e7097897 --- /dev/null +++ b/notifications/apis/push/delete-push-token.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/tokens/{pushToken} +--- diff --git a/notifications/apis/push/get-contact-details.mdx b/notifications/apis/push/get-contact-details.mdx new file mode 100644 index 000000000..753b7edf4 --- /dev/null +++ b/notifications/apis/push/get-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/contact-details +--- diff --git a/notifications/apis/push/get-custom-provider.mdx b/notifications/apis/push/get-custom-provider.mdx new file mode 100644 index 000000000..2f6ae6da5 --- /dev/null +++ b/notifications/apis/push/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/custom +--- diff --git a/notifications/apis/push/get-timezone.mdx b/notifications/apis/push/get-timezone.mdx new file mode 100644 index 000000000..8bc807620 --- /dev/null +++ b/notifications/apis/push/get-timezone.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences/timezone +--- diff --git a/notifications/apis/push/list-apns-providers.mdx b/notifications/apis/push/list-apns-providers.mdx new file mode 100644 index 000000000..43a6d4a0f --- /dev/null +++ b/notifications/apis/push/list-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/apns +--- diff --git a/notifications/apis/push/list-fcm-providers.mdx b/notifications/apis/push/list-fcm-providers.mdx new file mode 100644 index 000000000..0151a67c5 --- /dev/null +++ b/notifications/apis/push/list-fcm-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/fcm +--- diff --git a/notifications/apis/push/list-muted-conversations.mdx b/notifications/apis/push/list-muted-conversations.mdx new file mode 100644 index 000000000..e363fcc24 --- /dev/null +++ b/notifications/apis/push/list-muted-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences/mute +--- diff --git a/notifications/apis/push/list-preferences.mdx b/notifications/apis/push/list-preferences.mdx new file mode 100644 index 000000000..1be2704c3 --- /dev/null +++ b/notifications/apis/push/list-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences +--- diff --git a/notifications/apis/push/list-push-tokens.mdx b/notifications/apis/push/list-push-tokens.mdx new file mode 100644 index 000000000..7158bf258 --- /dev/null +++ b/notifications/apis/push/list-push-tokens.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/tokens +--- diff --git a/notifications/apis/push/list-settings.mdx b/notifications/apis/push/list-settings.mdx new file mode 100644 index 000000000..0a7dd8062 --- /dev/null +++ b/notifications/apis/push/list-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/settings +--- diff --git a/notifications/apis/push/mute-conversations.mdx b/notifications/apis/push/mute-conversations.mdx new file mode 100644 index 000000000..860e99bd7 --- /dev/null +++ b/notifications/apis/push/mute-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/v1/preferences/mute +--- diff --git a/notifications/apis/push/notifications-logs.mdx b/notifications/apis/push/notifications-logs.mdx new file mode 100644 index 000000000..24ce2e091 --- /dev/null +++ b/notifications/apis/push/notifications-logs.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/logs +--- diff --git a/notifications/apis/push/register-push-token.mdx b/notifications/apis/push/register-push-token.mdx new file mode 100644 index 000000000..00b55e873 --- /dev/null +++ b/notifications/apis/push/register-push-token.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/tokens +--- diff --git a/notifications/apis/push/reset-preferences.mdx b/notifications/apis/push/reset-preferences.mdx new file mode 100644 index 000000000..d623919b2 --- /dev/null +++ b/notifications/apis/push/reset-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/preferences +--- diff --git a/notifications/apis/push/reset-settings.mdx b/notifications/apis/push/reset-settings.mdx new file mode 100644 index 000000000..5a0324e1e --- /dev/null +++ b/notifications/apis/push/reset-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/settings +--- diff --git a/notifications/apis/push/save-custom-provider.mdx b/notifications/apis/push/save-custom-provider.mdx new file mode 100644 index 000000000..445772a46 --- /dev/null +++ b/notifications/apis/push/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/custom +--- diff --git a/notifications/apis/push/unmute-conversations.mdx b/notifications/apis/push/unmute-conversations.mdx new file mode 100644 index 000000000..f24b9f475 --- /dev/null +++ b/notifications/apis/push/unmute-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/preferences/mute +--- diff --git a/notifications/apis/push/unregister-push-tokens.mdx b/notifications/apis/push/unregister-push-tokens.mdx new file mode 100644 index 000000000..ecb383f25 --- /dev/null +++ b/notifications/apis/push/unregister-push-tokens.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/tokens +--- diff --git a/notifications/apis/push/update-apns-providers.mdx b/notifications/apis/push/update-apns-providers.mdx new file mode 100644 index 000000000..06ed69deb --- /dev/null +++ b/notifications/apis/push/update-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/apns +--- diff --git a/notifications/apis/push/update-contact-details.mdx b/notifications/apis/push/update-contact-details.mdx new file mode 100644 index 000000000..b7955cf41 --- /dev/null +++ b/notifications/apis/push/update-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/contact-details +--- diff --git a/notifications/apis/push/update-custom-provider.mdx b/notifications/apis/push/update-custom-provider.mdx new file mode 100644 index 000000000..344798a89 --- /dev/null +++ b/notifications/apis/push/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/custom +--- diff --git a/notifications/apis/push/update-fcm-provider.mdx b/notifications/apis/push/update-fcm-provider.mdx new file mode 100644 index 000000000..5adab2233 --- /dev/null +++ b/notifications/apis/push/update-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/fcm +--- diff --git a/notifications/apis/push/update-preferences.mdx b/notifications/apis/push/update-preferences.mdx new file mode 100644 index 000000000..3c494d4b3 --- /dev/null +++ b/notifications/apis/push/update-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/preferences +--- diff --git a/notifications/apis/push/update-settings.mdx b/notifications/apis/push/update-settings.mdx new file mode 100644 index 000000000..fa1688021 --- /dev/null +++ b/notifications/apis/push/update-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/settings +--- diff --git a/notifications/apis/push/update-timezone.mdx b/notifications/apis/push/update-timezone.mdx new file mode 100644 index 000000000..e48af9a8b --- /dev/null +++ b/notifications/apis/push/update-timezone.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/preferences/timezone +--- diff --git a/notifications/apis/sms/delete-custom-provider.mdx b/notifications/apis/sms/delete-custom-provider.mdx new file mode 100644 index 000000000..fb570f386 --- /dev/null +++ b/notifications/apis/sms/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/sms/v1/providers/custom +--- diff --git a/notifications/apis/sms/delete-twilio-credentials.mdx b/notifications/apis/sms/delete-twilio-credentials.mdx new file mode 100644 index 000000000..6e145c684 --- /dev/null +++ b/notifications/apis/sms/delete-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/sms/v1/providers/twilio +--- diff --git a/notifications/apis/sms/get-custom-provider.mdx b/notifications/apis/sms/get-custom-provider.mdx new file mode 100644 index 000000000..792ec846e --- /dev/null +++ b/notifications/apis/sms/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/sms/v1/providers/custom +--- diff --git a/notifications/apis/sms/get-twilio-credentials.mdx b/notifications/apis/sms/get-twilio-credentials.mdx new file mode 100644 index 000000000..056ce5f19 --- /dev/null +++ b/notifications/apis/sms/get-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/sms/v1/providers/twilio +--- diff --git a/notifications/apis/sms/save-custom-provider.mdx b/notifications/apis/sms/save-custom-provider.mdx new file mode 100644 index 000000000..55e2597d7 --- /dev/null +++ b/notifications/apis/sms/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/sms/v1/providers/custom +--- diff --git a/notifications/apis/sms/save-twilio-credentials.mdx b/notifications/apis/sms/save-twilio-credentials.mdx new file mode 100644 index 000000000..071eff9de --- /dev/null +++ b/notifications/apis/sms/save-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/sms/v1/providers/twilio +--- diff --git a/notifications/apis/sms/update-custom-provider.mdx b/notifications/apis/sms/update-custom-provider.mdx new file mode 100644 index 000000000..bf49adbf2 --- /dev/null +++ b/notifications/apis/sms/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/sms/v1/providers/custom +--- diff --git a/notifications/apis/sms/update-twilio-credentials.mdx b/notifications/apis/sms/update-twilio-credentials.mdx new file mode 100644 index 000000000..d385124f3 --- /dev/null +++ b/notifications/apis/sms/update-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/sms/v1/providers/twilio +--- diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 19b136a1a..36faa30ad 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -8,7 +8,7 @@ Welcome to the CometChat's REST API documentation! This documentation provides d CometChat's REST API offers a wide range of functionalities to empower developers in building rich and interactive chat experiences for their users. -With our REST API, you can perform a wide range of operations, including sending and receiving messages, managing user profiles, creating groups, and much more. Whether you're developing a web application, mobile app, or any other platform, our REST API offers the flexibility and scalability to meet your needs. +With our REST API, you can perform a wide range of operations, including sending messages, managing user profiles, creating groups, and much more. Whether you're developing a web application, mobile app, or any other platform, our REST API offers the flexibility and scalability to meet your needs. This documentation is structured to provide clear instructions and examples for each API endpoint, along with details on request and response formats and authentication methods. Whether you're a seasoned developer or just getting started, our goal is to make the integration process as smooth and straightforward as possible. @@ -45,14 +45,6 @@ curl -X GET \ *Replace appId, apiKey and region in the curl request.* -## Sample Code - -To further assist you in integrating CometChat's REST API into your application, we provide sample code snippets in popular programming languages such as JavaScript, Python, NodeJS, and PHP. These snippets demonstrate how to make API requests and handle responses, helping you kickstart your development process. - - - - - ## Error codes CometChat provides a comprehensive reference for understanding and troubleshooting various error codes that may be encountered while interacting with the API.\ @@ -79,8 +71,4 @@ For instance: https://.api-us.cometchat.io/v3 https://.api-eu.cometchat.io/v3 https://.api-in.cometchat.io/v3 -``` - -## Support - -If you encounter any issues or have questions regarding CometChat's REST API, our dedicated support team is here to assist you. Feel free to create a [support ticket](https://help.cometchat.com/hc/en-us/requests/new) or seek real-time support via the [CometChat Dashboard](https://app.cometchat.com/). we'll be more than happy to help you resolve any issues promptly. +``` \ No newline at end of file diff --git a/rest-api/constraints-rate-limits-and-errors.mdx b/rest-api/constraints-rate-limits-and-errors.mdx index ac7dfb1a6..862c0147f 100644 --- a/rest-api/constraints-rate-limits-and-errors.mdx +++ b/rest-api/constraints-rate-limits-and-errors.mdx @@ -207,6 +207,13 @@ title: "Constraints, Rate Limits And Errors" | `ERR_WEBHOOK_NOT_FOUND` | Indicates that the webhook does not exist. | | `ERR_BLOCKED_BY_WEBHOOK` | Indicates that the message is blocked by the extension. | | `ERR_TRIGGER_NOT_FOUND` | Indicates trigger does not exist. | +| **Data Import Errors** | | +| `ERR_IMPORT_MUID_ALREADY_EXISTS` | The message `muid` is expected to be unique. The muid will be a unique Identifier of the message. | +| `ERR_IMPORT_INVALID_MESSAGE_FORMAT` | The value for messages property should be an array of message objects. | +| `ERR_IMPORT_INVALID_USER_FORMAT` | The value for users property should be an array of user objects. | +| `ERR_IMPORT_INVALID_MEMBER_FORMAT` | The value for members property should be an array of member objects. | +| `ERR_IMPORT_INVALID_JOINEDAT` | The value for `joinedAt` should be greater than `createdAt` and less than the current timestamp. | +| `ERR_IMPORT_INVALID_GROUP_FORMAT` | The value for groups property should be an array of group objects. | | **General Errors** | | | `ERR_INVALID_API_VERSION` | Indicates invalid API version. | | `ERR_API_NOT_FOUND` | Indicates one from the list below:
1. API endpoint does not exist.
2. The endpoint does not use HTTP request method using which API is called. | diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 45ca9ad47..86f6cbbd0 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -41,1459 +41,3 @@ curl -X POST \ *key and secret need to be replaced in the curl request.* - -## Sample Code - -To further assist you in integrating CometChat's REST API into your application, we provide sample code snippets in popular programming languages such as JavaScript, Python, NodeJS, and PHP. These snippets demonstrate how to make API requests and handle responses, helping you kickstart your development process. - - - - - -## Support - -If you encounter any issues or have questions regarding CometChat's REST API, our dedicated support team is here to assist you. Feel free to create a [support ticket](https://help.cometchat.com/hc/en-us/requests/new) or seek real-time support via the [CometChat Dashboard](https://app.cometchat.com/). we'll be more than happy to help you resolve any issues promptly. - -## Webhooks: - - - - -1. The Webhook API documentation provides comprehensive guidance on how to integrate and utilize Webhook functionality for real-time event-driven communication. -2. Our platform is designed around the concept of event-driven communication. It allows your applications to subscribe to specific events and receive instant notifications when these events occur. - - - - - -### Please review the following requirements for setting up your webhook endpoint: - - -1. Your webhook endpoint must be accessible over HTTPS. This is essential to ensure the security and integrity of data transmission. -2. Provide us with the URL where you'd like to receive webhook payloads. Webhook payloads would be in JSON format. This URL should be publicly accessible from the internet. -3. Ensure that your endpoint supports the HTTP POST method. Webhook payloads will be delivered via HTTP POST requests. -4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. -5. We recommend you use Basic Auth while configuring webhook, so as to validate incoming webhook requests. - - - -Here is the list of properties associated with Webhook. - -| Parameters | Type | Description | -| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | string | Unique identifier of the webhook. It can have a maximum of 50 characters. | -| name | string | Display name of the webhook. It can have a maximum of 50 characters. | -| webhookURL | string | The webhookURL field represents the target URL to which webhook events will be delivered. | -| useBasicAuth | boolean | The useBasicAuth field is a boolean flag that indicates whether basic authentication should be applied when sending webhook requests to the specified webhookURL | -| username | string | This field should contain the username or identifier associated with the authentication credentials. | -| password | string | This field should contain the secret password that corresponds to the provided username. | -| enabled | boolean | The enabled field is a boolean flag that determines whether a webhook is currently active and capable of receiving and processing incoming events | - -### The list of triggers that are supported: - - -Note: The below mentioned list of triggers are in Beta. - - - - - -| triggerId | Description | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| [`message_sent`](#message_sent) | The hook triggers after the message is sent. | -| [`message_edited`](#message_edited) | The hook triggers after the message is edited. | -| [`message_deleted`](#message_deleted) | The hook triggers after the message is deleted. | -| [`message_reaction_added`](#message_reaction_added) | The hook triggers after reaction is added to a message. | -| [`message_reaction_removed`](#message_reaction_removed) | The hook triggers after reaction is removed from a message. | -| [`user_blocked`](#user_blocked) | The hook triggers when a user blocks another user. | -| [`user_unblocked`](#user_unblocked) | The hook triggers when a user unblocks another user. | -| [`group_created`](#group_created) | The hook triggers after the group is created. | -| [`group_updated`](#group_updated) | The hook triggers after the group is updated. | -| [`group_deleted`](#group_deleted) | The hook triggers after the group is deleted. | -| [`group_member_joined`](#group_member_joined) | The hook triggers after a user joins a group. | -| [`group_member_left`](#group_member_left) | The hook triggers after a user leaves the group. | -| [`group_member_added`](#group_member_added) | The hook triggers after members are added to a group. | -| [`group_member_kicked`](#group_member_kicked) | The hook triggers after members are kicked from a group. | -| [`group_member_banned`](#group_member_banned) | The hook triggers after members are banned from a group. | -| [`group_member_unbanned`](#group_member_unbanned) | The hook triggers after members are unbanned from a group. | -| [`group_member_scope_changed`](#group_member_scope_changed) | The hook triggers if the scope of a member changes in a group. | -| [`group_owner_transferred`](#group_owner_transferred) | The hook triggers if the owner of the group is changed. | -| [`user_connection_status_changed`](#user_connection_status_changed) | The hook triggers after a user connects/disconnects from the websocket server. | -| [`message_delivery_receipt`](#message_delivery_receipt) | The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered. | -| [`message_read_receipt`](#message_read_receipt) | The hook triggers when the client chat application confirms with Cometchat servers that a message was read. | -| [`call_initiated`](#call_initiated) | The hook triggers when the call is initiated. | -| [`call_started`](#call_started) | The hook triggers when the call is started. | -| [`call_participant_joined`](#call_participant_joined) | The hook triggers when a participant joins the call. | -| [`call_participant_left`](#call_participant_left) | The hook triggers when a participant leaves the call. | -| [`call_ended`](#call_ended) | The hook triggers when the call is ended. | -| [`meeting_started`](#meeting_started) | The hook triggers when a meeting is started. | -| [`meeting_participant_joined`](#meeting_participant_joined) | The hook triggers when a participant joins the meeting. | -| [`meeting_participant_left`](#meeting_participant_left) | The hook triggers when a participant leaves the meeting. | -| [`meeting_ended`](#meeting_ended) | The hook triggers when the meeting is ended. | -| [`recording_generated`](#recording_generated) | The hook triggers when the recording is generated. | - -### Payload structure of events: - -#### Groups: - -##### group\_created: - - - -```json group_created -{ - "trigger":"group_created", - "data":{ - "group":{ - "guid":"supergroup", - "name":"Comic Hero Group", - "type":"public", - "scope":"admin", - "membersCount":1, - "joinedAt":1696932915, - "conversationId":"group_supergroup", - "hasJoined":true, - "createdAt":1696932915, - "owner":"superhero1" - }, - "members":{ - "superhero1":{ - "uid":"superhero1", - "name":"Iron Man", - "status":"available", - "role":"default", - "lastActiveAt":1696932834 - } - } - }, - "appId":"", - "region":"", - "webhook":"" -} -``` - - - -##### group\_updated: - - - -```json group_updated -{ - "trigger": "group_updated", - "data": { - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_supergroup", - "createdAt": 1695728507, - "owner": "superhero2", - "updatedAt": 1696934048, - "updatedBy": "superhero1", - "onlineMembersCount": 2 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_deleted: - - - -```json group_deleted -{ - "trigger": "group_deleted", - "data": { - "group": { - "guid": "supergroup", - "name": "1234", - "type": "public", - "membersCount": 1, - "conversationId": "group_supergroup", - "createdAt": 1695722912, - "owner": "superhero1", - "updatedAt": 1695817083, - "updatedBy": "superhero1", - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_owner\_transferred: - - - -```json group_owner_transferred -{ - "trigger": "group_owner_transferred", - "data": { - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_supergroup", - "createdAt": 1695728507, - "owner": "superhero2", - "updatedAt": 1696933737, - "updatedBy": "superhero1", - "onlineMembersCount": 2, - "oldOwner": "superhero1" - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_added: - - - -```json group_member_added -{ - "trigger": "group_member_added", - "data": { - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_supergroup", - "createdAt": 1696932915, - "owner": "superhero1", - "onlineMembersCount": 1 - }, - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" - } - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_banned: - - - -```json group_member_banned -{ - "trigger": "group_member_banned", - "data": { - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_group__1696932914913", - "createdAt": 1696932915, - "owner": "superhero1", - "updatedAt": 1696933533, - "onlineMembersCount": 1 - }, - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" - } - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_unbanned: - - - -```json group_member_unbanned -{ - "trigger": "group_member_unbanned", - "data": { - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" - } - }, - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_supergroup", - "createdAt": 1696932915, - "owner": "superhero1", - "updatedAt": 1696933533, - "onlineMembersCount": 1 - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_joined: - - - -```json group_member_joined -{ - "trigger": "group_member_joined", - "data": { - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689 - } - }, - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_supergroup", - "createdAt": 1695728507, - "owner": "superhero1", - "updatedAt": 1696933691, - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_left: - - - -```json group_member_left -{ - "trigger": "group_member_left", - "data": { - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689 - } - }, - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_supergroup", - "createdAt": 1695722891, - "owner": "superhero1", - "updatedAt": 1696933827, - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_changed: - - - -```json group_member_scope_changed -{ - "trigger": "group_member_scope_changed", - "data": { - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933928, - "conversationId": "superhero1_user_superhero2", - "scope": "admin", - "oldScope": "participant" - } - }, - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_supergroup", - "createdAt": 1695722891, - "owner": "superhero1", - "updatedAt": 1696933925, - "onlineMembersCount": 2 - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### group\_member\_kicked: - - - -```json group_member_kicked -{ - "trigger": "group_member_kicked", - "data": { - "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689, - "conversationId": "superhero1_user_superhero2" - } - }, - "group": { - "guid": "supergroup", - "name": "Comic Hero Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_supergroup", - "createdAt": 1695722891, - "owner": "superhero1", - "updatedAt": 1696933889, - "onlineMembersCount": 8 - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933881 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -**Messages:** - -##### message\_sent: - - - -```json message_sent -{ - "trigger": "message_sent", - "data": { - "message": { - "id": "1", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "hi", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "updatedAt": 1696934912 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_edited: - - - -```json message_edited -{ - "trigger": "message_edited", - "data": { - "message": { - "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "action", - "type": "message", - "data": { - "action": "edited", - "entities": { - "by": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "1", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "hello", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "editedAt": 1696934985, - "editedBy": "superhero1", - "deliveredAt": 1696934912, - "readAt": 1696934950, - "updatedAt": 1696934985 - }, - "entityType": "message" - } - }, - }, - "sentAt": 1696934985, - "updatedAt": 1696934985 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_deleted: - - - -```json message_deleted -{ - "trigger": "message_deleted", - "data": { - "message": { - "id": "3", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "action", - "type": "message", - "data": { - "action": "deleted", - "entities": { - "by": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "deliveredAt": 1696934912, - "readAt": 1696934950, - "deletedAt": 1696935005, - "updatedAt": 1696935005, - "deletedBy": "superhero1" - }, - "entityType": "message" - } - }, - }, - "sentAt": 1696935005, - "updatedAt": 1696935005 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_delivery\_receipt: - - - -```json message_delivery_receipt -{ - "trigger": "message_delivery_receipt", - "data": { - "receiver": "superhero1", - "receiverType": "user", - "type": "receipts", - "sender": "superhero2", - "messageSender": "superhero1", - "body": { - "action": "delivered", - "messageId": "57", - "user": { - "hasBlockedMe": false, - "blockedByMe": false, - "deactivatedAt": 0, - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "lastActiveAt": 1696934489, - "role": "default", - "status": "online" - }, - "timestamp": 1696934912 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_read\_receipt: - - - -```json message_read_receipt -{ - "trigger": "message_read_receipt", - "data": { - "receiver": "superhero1", - "receiverType": "user", - "type": "receipts", - "sender": "superhero2", - "messageSender": "superhero1", - "body": { - "action": "read", - "messageId": "57", - "user": { - "hasBlockedMe": false, - "blockedByMe": false, - "deactivatedAt": 0, - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "lastActiveAt": 1696934489, - "role": "default", - "status": "online" - }, - "timestamp": 1696934950 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_reaction\_removed: - - - -```json message_reaction_removed -{ - "trigger": "message_reaction_removed", - "data": { - "reaction": { - "id": "", - "messageId": "", - "reaction": "🏒", - "uid": "superhero1", - "reactedAt": 1700231289, - "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1700652818 - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### message\_reaction\_added: - - - -```json message_reaction_added -{ - "trigger": "message_reaction_added", - "data": { - "reaction": { - "id": "", - "messageId": "", - "reaction": "🏒", - "uid": "superhero1", - "reactedAt": 1700655536, - "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1700652818 - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -**Users:** - -##### user\_connection\_status\_changed: - - - -```json user_connection_status_changed -{ - "trigger": "user_connection_status_changed", - "data": { - "timestamp": 1696935103114, - "user": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "offline", - "role": "default", - "lastActiveAt": 1693916686 - }, - "status": "offline", - "currentConnection": { - "action": "disconnected", - "appInfo": { - "version": "3.0.12", - "apiVersion": "v3.0", - "origin": "http://localhost:5173", - "uts": 1696934440846, - "clientIp": "3.128.113.92" - }, - "platform": "javascript", - "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", - "connectedAt": 1696934440982 - }, - "userPresenceChanged": true - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### user\_blocked: - - - -```json user_blocked -{ - "trigger": "user_blocked", - "data": { - "users": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - } - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696935105 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### user\_unblocked: - - - -```json user_unblocked -{ - "trigger": "user_unblocked", - "data": { - "users": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" - } - }, - "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696935105 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### user\_mentioned: - - - -```json user_mentioned -{ - "trigger": "user_mentioned", - "data": { - "message": { - "id": "4", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "Hi <@uid:superhero2>", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Captain America", - "status": "offline", - "role": "default", - "createdAt": 1702025699 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "IronMan", - "status": "available", - "role": "default", - "lastActiveAt": 1702028122, - "createdAt": 1701931840, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - }, - "mentions": { - "superhero2": { - "uid": "superhero2", - "name": "IronMan", - "status": "available", - "role": "default", - "lastActiveAt": 1702028122, - "createdAt": 1701931840, - "conversationId": "superhero1_user_superhero2" - } - } - }, - "sentAt": 1702028666, - "updatedAt": 1702028666 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -**Call & Meeting** - -##### call\_initiated: - - - -```json call_initiated -{ - "trigger": "call_initiated", - "data": { - "call": { - "id": "52", - "conversationId": "superhero1_user_superhero5", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero5", - "category": "call", - "type": "audio", - "data": { - "action": "initiated", - "entities": { - "by": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "conversationId": "superhero1_user_superhero5" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "", - "conversationId": "superhero1_user_superhero5", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero5", - "status": "initiated", - "type": "audio", - "data": { - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "conversationId": "superhero1_user_superhero5" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1696934199, - "joinedAt": 1696934199 - }, - "entityType": "call" - } - }, - "resource": "WEB-3_0_12-acfa8397-42f0-4f19-bc28-bc7db316ecaf-1696933879599" - }, - "sentAt": 1696934199, - "updatedAt": 1696934199 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### call\_started: - - - -```json call_started -{ - "trigger": "call_started", - "data": { - "created_at": 1696934572, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### call\_ended: - - - -```json call_ended -{ - "trigger": "call_ended", - "data": { - "all_occupants": [ - { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934553, - "name": "Captain America" - }, - { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934551, - "name": "Iron Man" - } - ], - "destroyed_at": 1696934553, - "created_at": 1696934501, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### call\_participant\_joined: - - - -```json call_participant_joined -{ - "trigger": "call_participant_joined", - "data": { - "occupant": { - "joined_at": 1696934573, - "audio_call": "true", - "name": "Iron Man" - }, - "initial_config": { - "is_video_muted": "false", - "start_recording_on_call_start": "false", - "call_version": "2.3.0", - "is_audio_muted": "false", - "sdk": "react", - "mode": "DEFAULT", - "platform": "web", - "is_audio_only": "true" - }, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### call\_participant\_left: - - - -```json call_participant_left -{ - "trigger": "call_participant_left", - "data": { - "occupant": { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934553, - "name": "Captain America" - }, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### meeting\_started: - - - -```json meeting_started -{ - "trigger": "meeting_started", - "data": { - "created_at": 1696934692, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### meeting\_participant\_joined: - - - -```json meeting_participant_joined -{ - "trigger": "meeting_participant_joined", - "data": { - "occupant": { - "joined_at": 1696934692, - "audio_call": "false", - "name": "Iron Man" - }, - "initial_config": { - "is_video_muted": "false", - "start_recording_on_call_start": "false", - "call_version": "2.3.0", - "is_audio_muted": "false", - "sdk": "react", - "mode": "DEFAULT", - "platform": "web", - "is_audio_only": "false" - }, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### meeting\_participant\_left: - - - -```json meeting_participant_left -{ - "trigger": "meeting_participant_left", - "data": { - "occupant": { - "joined_at": 1696934692, - "audio_call": "false", - "left_at": 1696934730, - "name": "Iron Man" - }, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### meeting\_ended: - - - -```json meeting_ended -{ - "trigger": "meeting_ended", - "data": { - "all_occupants": [ - { - "joined_at": 1696934692, - "audio_call": "false", - "left_at": 1696934730, - "name": "Iron Man" - } - ], - "destroyed_at": 1696934730, - "created_at": 1696934692, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -##### recording\_generated: - - - -```json JSON -{ - "trigger": "recording_generated", - "data": { - "recordingDate": "2023-10-10", - "duration": "21.433000", - "startTime": "1696937627", - "sessionId": "", - "recording_url": "" - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - diff --git a/rest-api/management-apis/moderation/add-keywords.mdx b/rest-api/management-apis/moderation/add-keywords.mdx deleted file mode 100644 index 29b45c1a2..000000000 --- a/rest-api/management-apis/moderation/add-keywords.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: post /apps/{appId}/moderation/keywords ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/add-rule.mdx b/rest-api/management-apis/moderation/add-rule.mdx deleted file mode 100644 index 7983dc4ce..000000000 --- a/rest-api/management-apis/moderation/add-rule.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: post /apps/{appId}/moderation/rules ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/approve-blocked-messages.mdx b/rest-api/management-apis/moderation/approve-blocked-messages.mdx deleted file mode 100644 index 9204dad05..000000000 --- a/rest-api/management-apis/moderation/approve-blocked-messages.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: patch /apps/{appId}/moderation/blocked-messages/{messageId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/get-keyword.mdx b/rest-api/management-apis/moderation/get-keyword.mdx deleted file mode 100644 index cbd60c8fd..000000000 --- a/rest-api/management-apis/moderation/get-keyword.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/keywords/{keywordId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/get-rule-revisions.mdx b/rest-api/management-apis/moderation/get-rule-revisions.mdx deleted file mode 100644 index 5f5295baf..000000000 --- a/rest-api/management-apis/moderation/get-rule-revisions.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/rules/{ruleId}/revisions ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/get-rule.mdx b/rest-api/management-apis/moderation/get-rule.mdx deleted file mode 100644 index d778e4bfd..000000000 --- a/rest-api/management-apis/moderation/get-rule.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/rules/{ruleId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/list-blocked-messages.mdx b/rest-api/management-apis/moderation/list-blocked-messages.mdx deleted file mode 100644 index e0ba6fe08..000000000 --- a/rest-api/management-apis/moderation/list-blocked-messages.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/blocked-messages ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/list-keywords.mdx b/rest-api/management-apis/moderation/list-keywords.mdx deleted file mode 100644 index ea19b2515..000000000 --- a/rest-api/management-apis/moderation/list-keywords.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/keywords ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/list-rules.mdx b/rest-api/management-apis/moderation/list-rules.mdx deleted file mode 100644 index 7dc2d40b6..000000000 --- a/rest-api/management-apis/moderation/list-rules.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: get /apps/{appId}/moderation/rules ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/remove-keyword.mdx b/rest-api/management-apis/moderation/remove-keyword.mdx deleted file mode 100644 index f77d6920d..000000000 --- a/rest-api/management-apis/moderation/remove-keyword.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: delete /apps/{appId}/moderation/keywords/{keywordId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/remove-rule.mdx b/rest-api/management-apis/moderation/remove-rule.mdx deleted file mode 100644 index be860c7c6..000000000 --- a/rest-api/management-apis/moderation/remove-rule.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: delete /apps/{appId}/moderation/rules/{ruleId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/update-keyword.mdx b/rest-api/management-apis/moderation/update-keyword.mdx deleted file mode 100644 index 91194cf67..000000000 --- a/rest-api/management-apis/moderation/update-keyword.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: put /apps/{appId}/moderation/keywords/{keywordId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/moderation/update-rule.mdx b/rest-api/management-apis/moderation/update-rule.mdx deleted file mode 100644 index 429064900..000000000 --- a/rest-api/management-apis/moderation/update-rule.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -openapi: put /apps/{appId}/moderation/rules/{ruleId} ---- - -import { Callout, calloutText } from '/snippets/callout.jsx'; - - diff --git a/rest-api/management-apis/webhooks/overview.mdx b/rest-api/management-apis/webhooks/overview.mdx new file mode 100644 index 000000000..835817d04 --- /dev/null +++ b/rest-api/management-apis/webhooks/overview.mdx @@ -0,0 +1,1185 @@ +--- +title: "Overview" +--- + + +1. The Webhook API documentation provides comprehensive guidance on how to integrate and utilize Webhook functionality for real-time event-driven communication. +2. Our platform is designed around the concept of event-driven communication. It allows your applications to subscribe to specific events and receive instant notifications when these events occur. + + + + + +### Please review the following requirements for setting up your webhook endpoint: + + +1. Your webhook endpoint must be accessible over HTTPS. This is essential to ensure the security and integrity of data transmission. +2. Provide us with the URL where you'd like to receive webhook payloads. Webhook payloads would be in JSON format. This URL should be publicly accessible from the internet. +3. Ensure that your endpoint supports the HTTP POST method. Webhook payloads will be delivered via HTTP POST requests. +4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. +5. We recommend you use Basic Auth while configuring webhook, so as to validate incoming webhook requests. + + + +Here is the list of properties associated with Webhook. + +| Parameters | Type | Description | +| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Unique identifier of the webhook. It can have a maximum of 50 characters. | +| name | string | Display name of the webhook. It can have a maximum of 50 characters. | +| webhookURL | string | The webhookURL field represents the target URL to which webhook events will be delivered. | +| useBasicAuth | boolean | The useBasicAuth field is a boolean flag that indicates whether basic authentication should be applied when sending webhook requests to the specified webhookURL | +| username | string | This field should contain the username or identifier associated with the authentication credentials. | +| password | string | This field should contain the secret password that corresponds to the provided username. | +| enabled | boolean | The enabled field is a boolean flag that determines whether a webhook is currently active and capable of receiving and processing incoming events | + +### The list of triggers that are supported: + +| triggerId | Description | +| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| [`message_sent`](#message_sent) | The hook triggers after the message is sent. | +| [`message_edited`](#message_edited) | The hook triggers after the message is edited. | +| [`message_deleted`](#message_deleted) | The hook triggers after the message is deleted. | +| [`message_reaction_added`](#message_reaction_added) | The hook triggers after reaction is added to a message. | +| [`message_reaction_removed`](#message_reaction_removed) | The hook triggers after reaction is removed from a message. | +| [`user_blocked`](#user_blocked) | The hook triggers when a user blocks another user. | +| [`user_unblocked`](#user_unblocked) | The hook triggers when a user unblocks another user. | +| [`group_created`](#group_created) | The hook triggers after the group is created. | +| [`group_updated`](#group_updated) | The hook triggers after the group is updated. | +| [`group_deleted`](#group_deleted) | The hook triggers after the group is deleted. | +| [`group_member_joined`](#group_member_joined) | The hook triggers after a user joins a group. | +| [`group_member_left`](#group_member_left) | The hook triggers after a user leaves the group. | +| [`group_member_added`](#group_member_added) | The hook triggers after members are added to a group. | +| [`group_member_kicked`](#group_member_kicked) | The hook triggers after members are kicked from a group. | +| [`group_member_banned`](#group_member_banned) | The hook triggers after members are banned from a group. | +| [`group_member_unbanned`](#group_member_unbanned) | The hook triggers after members are unbanned from a group. | +| [`group_member_scope_changed`](#group_member_scope_changed) | The hook triggers if the scope of a member changes in a group. | +| [`group_owner_transferred`](#group_owner_transferred) | The hook triggers if the owner of the group is changed. | +| [`user_connection_status_changed`](#user_connection_status_changed) | The hook triggers after a user connects/disconnects from the websocket server. | +| [`message_delivery_receipt`](#message_delivery_receipt) | The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered. | +| [`message_read_receipt`](#message_read_receipt) | The hook triggers when the client chat application confirms with Cometchat servers that a message was read. | +| [`call_initiated`](#call_initiated) | The hook triggers when the call is initiated. | +| [`call_started`](#call_started) | The hook triggers when the call is started. | +| [`call_participant_joined`](#call_participant_joined) | The hook triggers when a participant joins the call. | +| [`call_participant_left`](#call_participant_left) | The hook triggers when a participant leaves the call. | +| [`call_ended`](#call_ended) | The hook triggers when the call is ended. | +| [`meeting_started`](#meeting_started) | The hook triggers when a meeting is started. | +| [`meeting_participant_joined`](#meeting_participant_joined) | The hook triggers when a participant joins the meeting. | +| [`meeting_participant_left`](#meeting_participant_left) | The hook triggers when a participant leaves the meeting. | +| [`meeting_ended`](#meeting_ended) | The hook triggers when the meeting is ended. | +| [`recording_generated`](#recording_generated) | The hook triggers when the recording is generated. | + + +### Payload structure of events: + +#### Groups: + +##### group\_created: + + + +```json group_created +{ + "trigger":"group_created", + "data":{ + "group":{ + "guid":"supergroup", + "name":"Comic Hero Group", + "type":"public", + "scope":"admin", + "membersCount":1, + "joinedAt":1696932915, + "conversationId":"group_supergroup", + "hasJoined":true, + "createdAt":1696932915, + "owner":"superhero1" + }, + "members":{ + "superhero1":{ + "uid":"superhero1", + "name":"Iron Man", + "status":"available", + "role":"default", + "lastActiveAt":1696932834 + } + } + }, + "appId":"", + "region":"", + "webhook":"" +} +``` + + + +##### group\_updated: + + + +```json group_updated +{ + "trigger": "group_updated", + "data": { + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 2, + "conversationId": "group_supergroup", + "createdAt": 1695728507, + "owner": "superhero2", + "updatedAt": 1696934048, + "updatedBy": "superhero1", + "onlineMembersCount": 2 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_deleted: + + + +```json group_deleted +{ + "trigger": "group_deleted", + "data": { + "group": { + "guid": "supergroup", + "name": "1234", + "type": "public", + "membersCount": 1, + "conversationId": "group_supergroup", + "createdAt": 1695722912, + "owner": "superhero1", + "updatedAt": 1695817083, + "updatedBy": "superhero1", + "onlineMembersCount": 1 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_owner\_transferred: + + + +```json group_owner_transferred +{ + "trigger": "group_owner_transferred", + "data": { + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 2, + "conversationId": "group_supergroup", + "createdAt": 1695728507, + "owner": "superhero2", + "updatedAt": 1696933737, + "updatedBy": "superhero1", + "onlineMembersCount": 2, + "oldOwner": "superhero1" + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_added: + + + +```json group_member_added +{ + "trigger": "group_member_added", + "data": { + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 2, + "conversationId": "group_supergroup", + "createdAt": 1696932915, + "owner": "superhero1", + "onlineMembersCount": 1 + }, + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "lastActiveAt": 1695751453, + "conversationId": "superhero1_user_superhero2" + } + }, + "by": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696932834 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_banned: + + + +```json group_member_banned +{ + "trigger": "group_member_banned", + "data": { + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 1, + "conversationId": "group_group__1696932914913", + "createdAt": 1696932915, + "owner": "superhero1", + "updatedAt": 1696933533, + "onlineMembersCount": 1 + }, + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "lastActiveAt": 1695751453, + "conversationId": "superhero1_user_superhero2" + } + }, + "by": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696932834 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_unbanned: + + + +```json group_member_unbanned +{ + "trigger": "group_member_unbanned", + "data": { + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "lastActiveAt": 1695751453, + "conversationId": "superhero1_user_superhero2" + } + }, + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 1, + "conversationId": "group_supergroup", + "createdAt": 1696932915, + "owner": "superhero1", + "updatedAt": 1696933533, + "onlineMembersCount": 1 + }, + "by": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696932834 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_joined: + + + +```json group_member_joined +{ + "trigger": "group_member_joined", + "data": { + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933689 + } + }, + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 2, + "conversationId": "group_supergroup", + "createdAt": 1695728507, + "owner": "superhero1", + "updatedAt": 1696933691, + "onlineMembersCount": 1 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_left: + + + +```json group_member_left +{ + "trigger": "group_member_left", + "data": { + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933689 + } + }, + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 1, + "conversationId": "group_supergroup", + "createdAt": 1695722891, + "owner": "superhero1", + "updatedAt": 1696933827, + "onlineMembersCount": 1 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_scope\_changed: + + + +```json group_member_scope_changed +{ + "trigger": "group_member_scope_changed", + "data": { + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933928, + "conversationId": "superhero1_user_superhero2", + "scope": "admin", + "oldScope": "participant" + } + }, + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 2, + "conversationId": "group_supergroup", + "createdAt": 1695722891, + "owner": "superhero1", + "updatedAt": 1696933925, + "onlineMembersCount": 2 + }, + "by": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933934 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### group\_member\_kicked: + + + +```json group_member_kicked +{ + "trigger": "group_member_kicked", + "data": { + "members": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933689, + "conversationId": "superhero1_user_superhero2" + } + }, + "group": { + "guid": "supergroup", + "name": "Comic Hero Group", + "type": "public", + "membersCount": 1, + "conversationId": "group_supergroup", + "createdAt": 1695722891, + "owner": "superhero1", + "updatedAt": 1696933889, + "onlineMembersCount": 8 + }, + "by": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696933881 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + + +#### Messages: + +##### message\_sent: + + + +```json message_sent +{ + "trigger": "message_sent", + "data": { + "message": { + "id": "1", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "hi", + "entities": { + "sender": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696934440 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696934491, + "conversationId": "superhero1_user_superhero2" + }, + "entityType": "user" + } + } + }, + "sentAt": 1696934912, + "updatedAt": 1696934912 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_edited: + + + +```json message_edited +{ + "trigger": "message_edited", + "data": { + "message": { + "id": "2", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "action", + "type": "message", + "data": { + "action": "edited", + "entities": { + "by": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1696934440 + }, + "entityType": "user" + }, + "on": { + "entity": { + "id": "1", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "hello" + }, + "sentAt": 1696934912, + "editedAt": 1696934985, + "editedBy": "superhero1" + }, + "entityType": "message" + } + } + }, + "sentAt": 1696934985, + "updatedAt": 1696934985 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_deleted: + + + +```json message_deleted +{ + "trigger": "message_deleted", + "data": { + "message": { + "id": "3", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "action", + "type": "message", + "data": { + "action": "deleted", + "entities": { + "by": { + "entity": { + "uid": "superhero1", + "name": "Iron Man" + }, + "entityType": "user" + }, + "on": { + "entity": { + "id": "2", + "conversationId": "superhero1_user_superhero2", + "deletedAt": 1696935005, + "deletedBy": "superhero1" + }, + "entityType": "message" + } + } + }, + "sentAt": 1696935005, + "updatedAt": 1696935005 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_delivery\_receipt: + + + +```json message_delivery_receipt +{ + "trigger": "message_delivery_receipt", + "data": { + "receiver": "superhero1", + "receiverType": "user", + "type": "receipts", + "sender": "superhero2", + "messageSender": "superhero1", + "body": { + "action": "delivered", + "messageId": "57", + "user": { + "uid": "superhero2", + "name": "Captain America", + "status": "online" + }, + "timestamp": 1696934912 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_read\_receipt: + + + +```json message_read_receipt +{ + "trigger": "message_read_receipt", + "data": { + "receiver": "superhero1", + "receiverType": "user", + "type": "receipts", + "sender": "superhero2", + "messageSender": "superhero1", + "body": { + "action": "read", + "messageId": "57", + "user": { + "uid": "superhero2", + "name": "Captain America", + "status": "online" + }, + "timestamp": 1696934950 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_reaction\_added: + + + +```json message_reaction_added +{ + "trigger": "message_reaction_added", + "data": { + "reaction": { + "id": "", + "messageId": "", + "reaction": "🏒", + "uid": "superhero1", + "reactedAt": 1700655536, + "reactedBy": { + "uid": "superhero1", + "name": "Iron Man" + } + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### message\_reaction\_removed: + + + +```json message_reaction_removed +{ + "trigger": "message_reaction_removed", + "data": { + "reaction": { + "id": "", + "messageId": "", + "reaction": "🏒", + "uid": "superhero1", + "reactedAt": 1700231289, + "reactedBy": { + "uid": "superhero1", + "name": "Iron Man" + } + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +#### Users: + +##### user\_connection\_status\_changed: + + + +```json user_connection_status_changed +{ + "trigger": "user_connection_status_changed", + "data": { + "timestamp": 1696935103114, + "user": { + "uid": "superhero1", + "name": "Iron Man", + "status": "offline", + "role": "default" + }, + "status": "offline", + "currentConnection": { + "action": "disconnected", + "platform": "javascript", + "connectedAt": 1696934440982 + }, + "userPresenceChanged": true + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### user\_blocked: + + + +```json user_blocked +{ + "trigger": "user_blocked", + "data": { + "users": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America" + } + }, + "by": { + "uid": "superhero1", + "name": "Iron Man" + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### user\_unblocked: + + + +```json user_unblocked +{ + "trigger": "user_unblocked", + "data": { + "users": { + "superhero2": { + "uid": "superhero2", + "name": "Captain America" + } + }, + "by": { + "uid": "superhero1", + "name": "Iron Man" + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### user\_mentioned: + + + +```json user_mentioned +{ + "trigger": "user_mentioned", + "data": { + "message": { + "id": "4", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "Hi <@uid:superhero2>", + "mentions": { + "superhero2": { + "uid": "superhero2", + "name": "IronMan" + } + } + }, + "sentAt": 1702028666, + "updatedAt": 1702028666 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + + +#### Calls & Meetings: + +##### call\_initiated: + + + +```json call_initiated +{ + "trigger": "call_initiated", + "data": { + "call": { + "id": "52", + "conversationId": "superhero1_user_superhero5", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero5", + "category": "call", + "type": "audio", + "data": { + "action": "initiated" + }, + "sentAt": 1696934199, + "updatedAt": 1696934199 + } + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### call\_started: + + + +```json call_started +{ + "trigger": "call_started", + "data": { + "created_at": 1696934572, + "sessionId": "" + }, + "type": "call", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### call\_ended: + + + +```json call_ended +{ + "trigger": "call_ended", + "data": { + "all_occupants": [ + { + "joined_at": 1696934501, + "audio_call": "true", + "left_at": 1696934553, + "name": "Captain America" + }, + { + "joined_at": 1696934501, + "audio_call": "true", + "left_at": 1696934551, + "name": "Iron Man" + } + ], + "destroyed_at": 1696934553, + "created_at": 1696934501, + "sessionId": "" + }, + "type": "call", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### call\_participant\_joined: + + + +```json call_participant_joined +{ + "trigger": "call_participant_joined", + "data": { + "occupant": { + "joined_at": 1696934573, + "audio_call": "true", + "name": "Iron Man" + }, + "sessionId": "" + }, + "type": "call", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### call\_participant\_left: + + + +```json call_participant_left +{ + "trigger": "call_participant_left", + "data": { + "occupant": { + "joined_at": 1696934501, + "audio_call": "true", + "left_at": 1696934553, + "name": "Captain America" + }, + "sessionId": "" + }, + "type": "call", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### meeting\_started: + + + +```json meeting_started +{ + "trigger": "meeting_started", + "data": { + "created_at": 1696934692, + "sessionId": "" + }, + "type": "meet", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### meeting\_participant\_joined: + + + +```json meeting_participant_joined +{ + "trigger": "meeting_participant_joined", + "data": { + "occupant": { + "joined_at": 1696934692, + "audio_call": "false", + "name": "Iron Man" + }, + "sessionId": "" + }, + "type": "meet", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### meeting\_participant\_left: + + + +```json meeting_participant_left +{ + "trigger": "meeting_participant_left", + "data": { + "occupant": { + "joined_at": 1696934692, + "audio_call": "false", + "left_at": 1696934730, + "name": "Iron Man" + }, + "sessionId": "" + }, + "type": "meet", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### meeting\_ended: + + + +```json meeting_ended +{ + "trigger": "meeting_ended", + "data": { + "all_occupants": [ + { + "joined_at": 1696934692, + "audio_call": "false", + "left_at": 1696934730, + "name": "Iron Man" + } + ], + "destroyed_at": 1696934730, + "created_at": 1696934692, + "sessionId": "" + }, + "type": "meet", + "appId": "", + "region": "", + "webhook": "" +} +``` + + + +##### recording\_generated: + + + +```json recording_generated +{ + "trigger": "recording_generated", + "data": { + "recordingDate": "2023-10-10", + "duration": "21.433000", + "startTime": "1696937627", + "sessionId": "", + "recording_url": "" + }, + "appId": "", + "region": "", + "webhook": "" +} +``` + + diff --git a/rest-api/moderation/delete-message.mdx b/rest-api/moderation/delete-message.mdx deleted file mode 100644 index 0a1cb157f..000000000 --- a/rest-api/moderation/delete-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /moderation/messages/{id} ---- \ No newline at end of file diff --git a/rest-api/moderation/get-message.mdx b/rest-api/moderation/get-message.mdx deleted file mode 100644 index 4c4c5f00d..000000000 --- a/rest-api/moderation/get-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/messages/{id} ---- \ No newline at end of file diff --git a/rest-api/moderation/list-messages.mdx b/rest-api/moderation/list-messages.mdx deleted file mode 100644 index 1a07498b4..000000000 --- a/rest-api/moderation/list-messages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/messages ---- \ No newline at end of file diff --git a/rest-api/moderation/send-message.mdx b/rest-api/moderation/send-message.mdx deleted file mode 100644 index 7cf12c0d0..000000000 --- a/rest-api/moderation/send-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /moderation/messages ---- \ No newline at end of file diff --git a/rest-api/moderation/update-message.mdx b/rest-api/moderation/update-message.mdx deleted file mode 100644 index c0c9c61c2..000000000 --- a/rest-api/moderation/update-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /moderation/messages/{id} ---- \ No newline at end of file From 6cffa63493401d9226db27e14589acdaac5ab7e5 Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Thu, 12 Feb 2026 16:07:17 +0530 Subject: [PATCH 09/56] Updated the structure of Platform APIs. --- docs.json | 42 +- .../data-import-and-migration-overview.mdx | 15 - fundamentals/data-import-and-migration.mdx | 45 + fundamentals/import-historical-data.mdx | 203 -- fundamentals/limits.mdx | 37 - fundamentals/live-data-migration.mdx | 11 - fundamentals/multi-tenancy-best-practices.mdx | 19 - fundamentals/multi-tenancy-overview.mdx | 44 - fundamentals/multi-tenancy.mdx | 59 + fundamentals/webhooks-events.mdx | 2183 ----------------- fundamentals/webhooks-legacy-events.mdx | 203 -- fundamentals/webhooks-legacy-management.mdx | 63 - fundamentals/webhooks-legacy-overview.mdx | 65 - fundamentals/webhooks-management.mdx | 63 - fundamentals/webhooks-overview.mdx | 188 -- fundamentals/webhooks.mdx | 65 + rest-api/api-keys.mdx | 7 + rest-api/calls.mdx | 11 + rest-api/chat-apis.mdx | 7 +- .../constraints-rate-limits-and-errors.mdx | 236 -- rest-api/data-import.mdx | 15 +- ...ion-constraints-rate-limits-and-errors.mdx | 23 - rest-api/groups.mdx | 15 + rest-api/management-apis.mdx | 8 + .../management-apis/webhooks/overview.mdx | 10 + rest-api/messages.mdx | 285 +-- ...ncy-constraints-rate-limits-and-errors.mdx | 50 - rest-api/rate-limits.mdx | 40 + rest-api/roles.mdx | 11 +- rest-api/users.mdx | 17 + 30 files changed, 314 insertions(+), 3726 deletions(-) delete mode 100644 fundamentals/data-import-and-migration-overview.mdx create mode 100644 fundamentals/data-import-and-migration.mdx delete mode 100644 fundamentals/import-historical-data.mdx delete mode 100644 fundamentals/limits.mdx delete mode 100644 fundamentals/live-data-migration.mdx delete mode 100644 fundamentals/multi-tenancy-best-practices.mdx delete mode 100644 fundamentals/multi-tenancy-overview.mdx create mode 100644 fundamentals/multi-tenancy.mdx delete mode 100644 fundamentals/webhooks-events.mdx delete mode 100644 fundamentals/webhooks-legacy-events.mdx delete mode 100644 fundamentals/webhooks-legacy-management.mdx delete mode 100644 fundamentals/webhooks-legacy-overview.mdx delete mode 100644 fundamentals/webhooks-management.mdx delete mode 100644 fundamentals/webhooks-overview.mdx create mode 100644 fundamentals/webhooks.mdx delete mode 100644 rest-api/constraints-rate-limits-and-errors.mdx delete mode 100644 rest-api/data-migration-constraints-rate-limits-and-errors.mdx delete mode 100644 rest-api/multi-tenancy-constraints-rate-limits-and-errors.mdx create mode 100644 rest-api/rate-limits.mdx diff --git a/docs.json b/docs.json index 5f522ba1a..18b6bd028 100644 --- a/docs.json +++ b/docs.json @@ -189,39 +189,10 @@ "fundamentals/ai-user-copilot/smart-replies", "fundamentals/ai-user-copilot/conversation-summary" ] - } - ] - }, - { - "group": "Multi tenancy", - "pages": [ - "fundamentals/multi-tenancy-overview", - "fundamentals/multi-tenancy-best-practices" - ] - }, - "fundamentals/limits", - { - "group": "Data import and migration", - "pages": [ - "fundamentals/data-import-and-migration-overview", - "fundamentals/import-historical-data", - "fundamentals/live-data-migration" - ] - }, - { - "group": "Webhooks", - "pages": [ - "fundamentals/webhooks-overview", - "fundamentals/webhooks-management", - "fundamentals/webhooks-events", - { - "group": "Legacy Webhooks", - "pages": [ - "fundamentals/webhooks-legacy-overview", - "fundamentals/webhooks-legacy-management", - "fundamentals/webhooks-legacy-events" - ] - } + }, + "fundamentals/multi-tenancy", + "fundamentals/data-import-and-migration", + "fundamentals/webhooks" ] }, { @@ -4723,7 +4694,7 @@ } ] }, - "rest-api/constraints-rate-limits-and-errors" + "rest-api/rate-limits" ] }, { @@ -4898,8 +4869,7 @@ "rest-api/management-apis/webhooks/add-triggers", "rest-api/management-apis/webhooks/remove-triggers" ] - }, - "rest-api/multi-tenancy-constraints-rate-limits-and-errors" + } ] } ] diff --git a/fundamentals/data-import-and-migration-overview.mdx b/fundamentals/data-import-and-migration-overview.mdx deleted file mode 100644 index 242e7a675..000000000 --- a/fundamentals/data-import-and-migration-overview.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Overview" ---- - -Data import and migration, in the context of CometChat, involves transferring your existing chat-related data from your own servers or another chat service provider to the CometChat platform. This process typically encompasses the migration of users, their messages, any chat groups, and the list of members within those groups. The goal of migration is to ensure a seamless transition and continuity of the chat service for your users. - -CometChat offers the follow ways to migrate your data: - -### 1. [Import historical data](/fundamentals/import-historical-data) - -This process is designed to transfer all of your pre-existing data at rest, that is, the data that is stored and not currently in transit, from your existing database to the CometChat database. This transfer is made possible through the use of CometChat's Data Import APIs, which are designed to handle the ingestion of large volumes of historical chat data, including users, messages, and group information. - -### 2. [Live data migration](/fundamentals/live-data-migration) - -Live data migration is a process designed to minimize service disruption during the transition from one chat system to CometChat. It ensures that users who have updated their applications and are now on the new system (CometChat) can still communicate seamlessly with users who have not yet updated their applications and are on the old system. This approach is crucial for maintaining uninterrupted communication between all users throughout the migration period. diff --git a/fundamentals/data-import-and-migration.mdx b/fundamentals/data-import-and-migration.mdx new file mode 100644 index 000000000..89693090c --- /dev/null +++ b/fundamentals/data-import-and-migration.mdx @@ -0,0 +1,45 @@ +--- +title: "Data Import and Migration" +sidebarTitle: "Data Import and Migration" +--- + +Data import and migration enables you to transfer existing chat data from your own servers or another chat provider to CometChat. This ensures continuity of service and preserves your users' conversation history during the transition. + +## What Can Be Migrated? + +CometChat's migration capabilities cover: + +- **Users**: User profiles, metadata, and account information +- **Messages**: Complete message history including text, media, and metadata +- **Groups**: Group configurations and membership information +- **Conversations**: Conversation threads and their associated data + +## Migration Approaches + +CometChat offers two approaches to data migration, depending on your needs: + +### Historical Data Import + +Import all your existing data at rest—stored messages, users, and groups—into CometChat before going live. This approach is ideal when: + +- You're doing a complete platform switch +- You want all historical data available from day one +- Your migration can happen during a maintenance window + +The Data Import APIs handle bulk ingestion of historical chat data, allowing you to transfer large volumes of users, messages, and group information efficiently. + +### Live Data Migration + +Maintain communication between users on your old system and users who have already migrated to CometChat. This approach is ideal when: + +- You need zero downtime during migration +- Users will upgrade to the new app version gradually +- Seamless communication must continue throughout the transition period + +Live migration bridges both systems during the upgrade cycle, ensuring no messages are lost regardless of which system a user is currently on. + +## Getting Started + +**For Historical Data Import**: Use the [Data Import REST APIs](/rest-api/data-import) to programmatically import your users, messages, and groups. + +**For Live Data Migration**: [Contact our Sales team](https://www.cometchat.com/contact-sales) to discuss your migration requirements and set up the live migration process. diff --git a/fundamentals/import-historical-data.mdx b/fundamentals/import-historical-data.mdx deleted file mode 100644 index c8b60a5de..000000000 --- a/fundamentals/import-historical-data.mdx +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: "Import Historical Data" ---- - -The CometChat message import API allows application owners and admins to import existing chat messages data from any source into CometChat. - -## General Instructions: - -1. The authentication mechanism for these APIs follows the same authentication as all public CometChat REST APIs. Please use your app REST API Key in the header. -2. The Base URL for the APIs is `https://.api-.cometchat.io/v3/data_import/` -3. The HTTP request data will be in JSON format. -4. The HTTP response from CometChat will also be in JSON format. - -## Import Messages API Usage - -To import messages send post requests to the import api with bulk arrays of message records in chronological. To process large set of records multiple requests can be made. Each record in the array must contain a single message `data` record that conform with the restrictions as specified by the [Send Message APIs](https://api-explorer.cometchat.com/reference/send-message). - -The total message count of all imported messages must be within the limit shared in the import support ticket. Each record contains a unique message id referred to as `muid`. The array key and the `muid` value must be the same. - -The return status for each `muid` will be documented in the response messages under `data..success`. The value of this parameter can be: - -1. `true`: indicating import execution success for that `muid`. -2. `false`: indicating import execution failure for that `muid`. - -In case of a failure, the error details will be noted in `data..error`. - -Please note that the request can have many messages to be imported, each with a separate `muid`. It is possible that a message may not be imported due to incorrect data supplied or a runtime error. In this case, its error code will be documented under its `muid` structure in the response. - -In case of such an error, correct the data being supplied in the API as per the error code indicated and resend the failed message data in a new API call. It is not expected to include the messages which were successfully imported in the preceding API call which resulted in the error for certain messages. - -Visit [Message Import API](https://api-explorer.cometchat.com/reference/import-messages) to start with your imports. - -### Request Format - -```json -{ - "messages": { - "1": { - "id": "200", - "muid": "123e4567-e89b-12d3-a456-426652340000", - "sender": "", - "receiverType": "user", - "receiver": "", - "type": "text", - "category": "message", - "data": { - "text": "Hi there,", - "attachments": [ - { - "name": "hi.png", - "extension": "png", - "size": "350.2", - "mimeType": "image_png", - "url": "https:__data-eu.cometchat.io_assets_images_avatars_cometchat-uid-1.webp" - } - ], - "metad2ata": { - "key": "value" - }, - "custodata": { - "key": "value" - } - }, - "sentAt": "1674104348", - "deliveredAt": "1674224684", - "readAt": "1674224684", - "tags": [ - "tag1" - ] - } - } -} -``` - -### Response Format - -```json -{ - "data": { - "201": { - "success": true, - "data": { - "data": { - "muid": "123e4567-e89b-12d3-a456-426652340000", - "id": "201", - "conversationId": "", - "sender": "", - "receiverType": "user", - "receiver": "", - "category": "message", - "type": "text", - "data": { - "text": "Hi there!!", - "entities": { - "sender": { - "entity": { - "uid": "", - "name": "", - "avatar": "", - "status": "offline", - "role": "default", - "createdAt": 1674211544 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "", - "name": "", - "avatar": "", - "status": "offline", - "role": "default", - "createdAt": 1674211544 - }, - "entityType": "user" - } - } - }, - "sentAt": 1674104348, - "deliveredAt": 1674224684, - "readAt": 1674224684, - "updatedAt": 1674104348, - "tags": [ - "tag1" - ] - } - } - } - } -} -``` - -## Import Users API Usage - -To import users send post requests to the import api with bulk arrays of user records. To process large set of records multiple requests can be made. Each record in the array must contain a single user record. The array key and the `uid` value must be the same. - -The return status for each `uid` will be documented in the response messages under `data..success`. The value of this parameter can be: - -1. `true` -> indicating import execution success for that `uid`. -2. `false` -> indicating import execution failure for that `uid`. - -In case of a failure, the error details will be noted in `data..error`. - -Please note that the request can have many users to be imported, each with a separate `uid`. It is possible that a user may not be imported due to incorrect data supplied or a runtime error. In this case, its error code will be documented under its `uid` structure in the response. - -In case of such an error, correct the data being supplied in the API as per the error code indicated and resend the failed user data in a new API call. It is not expected to include the users which were successfully imported in the preceding API call which resulted in the error for certain users. - -Visit [User Import API](https://api-explorer.cometchat.com/reference/import-users) to start with your imports. - -### Request Format - -```json -{ - "users": { - "": { - "uid": "", - "name": "", - "role": "", - "link": "", - "avatar": "", - "createdAt": "", - "lasActiveAt": "", - "metadata": { - }, - "tags": [], - "deactivatedAt": "" - } - } - } -``` - -### Response Format - -```json -{ - "data": { - "user33": { - "success": true, - "data": { - "data": { - "uid": "user33", - "name": "user 31", - "avatar": "https:__data-eu.cometchat.io_assets_images_avatars_cometchat-uid-1.webp", - "metadata": { - "key": "value" - }, - "status": "offline", - "role": "default", - "lastActiveAt": 1673421419, - "deactivatedAt": 1673421419, - "createdAt": 1673421419, - "updatedAt": 1674155164 - }, - - } - } - } -} -``` - -## Next steps - -To learn more about importing data in to CometChat, visit our [Data import API docs](https://api-explorer.cometchat.com/reference/data-import) diff --git a/fundamentals/limits.mdx b/fundamentals/limits.mdx deleted file mode 100644 index 156ed8690..000000000 --- a/fundamentals/limits.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Limits" ---- - -To ensure a reliable and seamless chat experience while minimizing downtime and errors, certain limits are in place. - - - -The limits may vary based on your subscription plan. If you have any questions, feel free to [contact us](https://www.cometchat.com/contact). - - - -### Groups - -1. Groups with all features enabled can support up to 300 members. -2. Groups without delivery/read receipts and typing indicators can support up to 100,000 members. - -### Users - -1. A single user can join a maximum of 2,000 groups. -2. A user can have up to 1,000 friends. -3. Presence subscriptions are capped at 1,000 concurrently online users. Once this threshold is exceeded, presence events (online/offline) will no longer be emitted. - -### Messages - -1. Each message, including metadata, must not exceed 65,536 characters (\~65KB). - -### Voice & Video Calling - -1. For the best experience, a maximum of 50 participants can join a single video call. - -### API - -1. REST API calls are rate-limited as follows: - - * **Standard operations**: 20,000 API calls per minute. - * **Core operations**: 10,000 API calls per minute (e.g., creating/deleting users, joining/leaving groups). All other operations fall under standard operations. diff --git a/fundamentals/live-data-migration.mdx b/fundamentals/live-data-migration.mdx deleted file mode 100644 index a639e8e29..000000000 --- a/fundamentals/live-data-migration.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Live Data Migration" ---- - -Upon integrating with our messaging solution, you may encounter a scenario where your application is transitioning from a homegrown chat feature to our comprehensive services. During this transition phase, a live migration process is necessary to ensure continuity of communication. - -Live migration accommodates the interaction between the legacy chat system and the new implementation. It ensures that users on different versions of your app—with some utilizing the original chat and others leveraging the latest version with CometChat integrated—can communicate seamlessly. - -Implementing live migration effectively bridges the gap between the two systems during the upgrade cycle, until all users have transitioned to the updated application featuring our robust messaging capabilities. - -To initiate live migration, please contact our [Sales team](https://www.cometchat.com/contact-sales). diff --git a/fundamentals/multi-tenancy-best-practices.mdx b/fundamentals/multi-tenancy-best-practices.mdx deleted file mode 100644 index c43b92ff2..000000000 --- a/fundamentals/multi-tenancy-best-practices.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Best Practices" ---- - -## Configuration as code - -Rather than configure apps manually in the CometChat app dashboard, it is advantageous, especially with high volume app creation, to create and manage apps using the CometChat App Management API. By using a configuration template and/or a process based code pattern, apps can be created and managed in a consistent manner. - -## Tenancy and apps - -Tenancy can be modeled in CometChat based on the inherent tenancy of the use case. - -In most multi-tenant use cases, the CometChat App is also associated to some type of entity related to the use case, such as a location, customer or partner. The CometChat App ID for each such app created should be stored as an associated data with that entity. - -The app configuration other than App ID and credentials is best stored only in CometChat after app creation and initial configuration. The configuration can be queried and modified using the API. Instead of storing the app configuration outside CometChat, simply use code patterns to get and set the app configuration within CometChat based on the logic related to the use case. - -## Metrics and Usage - -Because all multi-tenant apps consume from the limits associated with the base app, it is recommended to use the stats and metrics APIs to review usage for each app to determine any usage irregularities on a per app basis. diff --git a/fundamentals/multi-tenancy-overview.mdx b/fundamentals/multi-tenancy-overview.mdx deleted file mode 100644 index 1a3773097..000000000 --- a/fundamentals/multi-tenancy-overview.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Multi Tenancy Plans And Apps" -sidebarTitle: "Overview" ---- - -## What is an app? - -CometChat apps are a way to combine a set of users, groups, roles and other configuration that results in a particular experience for chat users. - -## What is a multi-app setup? - -To provide different experiences to a different set of users, a developer can create many CometChat apps. - -Each of these apps have their own data within them, like it's users, messages, etc., and do not interact or share data with other apps. Similarly, each of these apps have their own billing plans and cycles which do not interact with each other. - -## What is a multi-tenant setup? - -To provide a similar experience to a different set of users, a developer can create many similar CometChat apps that consume from the limits and quotas of the same CometChat billing plan. The data is still not shared between apps, but the billing plan is. - -This provides economies of scale as well as a streamlined experience in configuring, deploying and managing many CometChat apps. - -## When should you use a multi-tenant plan? - -Multi-tenant plans are quite suitable for certain use cases such as for aggregators and vertical-specific software. Think of situations such as\ -the following or ones adjacent to it. - -* You're building an app that allows schools and teachers to communicate with students and parents. You'd create a multi tenant account for yourself and each school, their students, teachers, announcements etc. would be an app of their own. -* A business app that lets business owners or franchises of a particular chain, their employees, and customers talk to each other. Something like Slack. Each business would be a separate app in this case, and the account would work on multi tenancy mode. - -These, and many more similar use cases can be addressed using a multi-tenant model. As an example of something that is not a great use case for multi-tenant but rather multi-app is, is when you are running 2 or 3 apps within the same organization with different user bases, separate P & Ls, or are owned by different departments for different purposes. Multi-app setup with clearly separate billing and metrics are a better choice in such cases. - -## Setting up a multi-tenant plan - -To begin using the multi-tenant functionality of CometChat, an account must be enabled for multi-tenancy. File a support ticket to learn more and enable multi-tenancy for your account. Upon approval, the account will be configured with a base app that is associated with a billing plan and all other apps created in the multi-tenant account will be associated with this base app. - -## Multi-tenant usage, billing and features - -All usage from all apps created in the mulit-tenant account will consume from the quotas (MAU, PCC, Voice and Video Minutes) of the base app. This usage will be added as a pooled bill on the base app, including overages, and charged as a combined bill to the payment method of the base app. All apps created in a multi-tenant account will have access to all the features included in the plan and configurations associated with the base app. - -## App Management APIs - -Once an account has been enabled for muti-tenant usage, an App Management key and secret will be provided to you. The key and secret allow for the use of the App Management APIs to programmatically create and configure CometChat apps. - -App Management APIs provide the capabilities to manage apps including enable, disabling and configuring extensions, managing app team members, configuring webhooks and managing widgets. diff --git a/fundamentals/multi-tenancy.mdx b/fundamentals/multi-tenancy.mdx new file mode 100644 index 000000000..d2ac872d5 --- /dev/null +++ b/fundamentals/multi-tenancy.mdx @@ -0,0 +1,59 @@ +--- +title: "Multi-Tenancy" +sidebarTitle: "Multi-Tenancy" +--- + +Multi-tenancy in CometChat enables you to manage multiple isolated chat environments under a single billing plan, providing economies of scale and streamlined management for applications serving multiple organizations or customer segments. + +## Understanding Apps and Multi-Tenancy + +### What is a CometChat App? + +A CometChat app represents a self-contained chat environment with its own users, groups, messages, roles, and configurations. Each app operates independently with isolated data. + +### Multi-App vs Multi-Tenant Setup + +**Multi-App Setup**: Create separate CometChat apps with independent billing plans and configurations. Best suited for: +- Different products within an organization +- Separate departments with distinct P&Ls +- Applications requiring completely independent billing and metrics + +**Multi-Tenant Setup**: Create multiple CometChat apps that share quotas and billing from a single base plan. Best suited for: +- SaaS platforms serving multiple customers +- Aggregator applications +- Vertical-specific software (education, healthcare, etc.) + +## Common Use Cases + +Multi-tenancy works well for scenarios like: + +- **Education platforms**: Each school operates as a separate app, with teachers, students, and parents communicating within their school's isolated environment +- **Business communication tools**: Each business or franchise gets its own app, keeping employee and customer conversations separate +- **White-label solutions**: Provide branded chat experiences to multiple clients while managing everything from a single account + +## How Multi-Tenancy Works + +When multi-tenancy is enabled for your account: + +1. A **base app** is created and associated with your billing plan +2. All additional apps created in the account consume from the base app's quotas (MAU, PCC, Voice/Video minutes) +3. Usage across all apps is pooled and billed together through the base app +4. All apps inherit features and configurations from the base plan + +## App Management APIs + +Once multi-tenancy is enabled, you receive App Management credentials (key and secret) that allow you to programmatically: + +- Create and configure new apps +- Enable/disable extensions +- Manage app team members +- Configure webhooks +- Manage widgets + +This enables automation and "configuration as code" patterns for managing large numbers of apps consistently. + +## Getting Started + +To enable multi-tenancy for your account, [contact our support team](https://www.cometchat.com/contact-sales). Once approved, you'll receive your App Management credentials and can begin creating tenant apps. + +For detailed API documentation on managing apps programmatically, refer to the [Management REST APIs](/rest-api/management-apis). diff --git a/fundamentals/webhooks-events.mdx b/fundamentals/webhooks-events.mdx deleted file mode 100644 index 44289fa52..000000000 --- a/fundamentals/webhooks-events.mdx +++ /dev/null @@ -1,2183 +0,0 @@ ---- -title: "Events" ---- - -### Why is Idempotency Important? - -Idempotency ensures that your system processes webhook events reliably, even in cases duplicate events due to retries. Webhooks are inherently asynchronous, and network issues or endpoint failures can lead to retries. Without idempotency, the same event could be processed multiple times, causing unintended side effects such as duplicate records, inconsistent states, or incorrect business logic execution. - -By implementing idempotency, you can: - -Prevent Duplicate Processing: Ensure that the same event is not processed more than once, even if it is retried. Maintain Data Integrity: Avoid creating duplicate records or inconsistent states in your database. Improve System Reliability: Handle retries gracefully and ensure your system behaves predictably under all circumstances. Enhance Debugging and Monitoring: Easily identify and resolve issues related to duplicate or failed events. - -## Messaging events - -### message\_sent - -The hook triggers after the message is sent. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.message.id` -* **Purpose**: Ensures the message is processed only once. - -```json -{ - "trigger": "message_sent", - "data": { - "message": { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "message", - "type": "text", - "data": { - "text": "hi", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "updatedAt": 1696934912 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_edited - -The hook triggers after the message is edited. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.message.id` & `data.message.editedAt` -* **Purpose**: Tracks edits to ensure the same edit is not processed multiple times. - -```json -{ - "trigger": "message_edited", - "data": { - "message": { - "id": "2", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "action", - "type": "message", - "data": { - "action": "edited", - "entities": { - "by": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "message", - "type": "text", - "data": { - "text": "hello", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "role": "default", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "role": "default", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "editedAt": 1696934985, - "editedBy": "cometchat-uid-1", - "deliveredAt": 1696934912, - "readAt": 1696934950, - "updatedAt": 1696934985 - }, - "entityType": "message" - } - }, - }, - "sentAt": 1696934985, - "updatedAt": 1696934985 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_deleted - -The hook triggers after the message is deleted. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger` & `data.message.id` -* **Purpose**: Tracks deletions to prevent duplicate processing. - -```json -{ - "trigger": "message_deleted", - "data": { - "message": { - "id": "3", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "action", - "type": "message", - "data": { - "action": "deleted", - "entities": { - "by": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "2", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "message", - "type": "text", - "data": { - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "role": "default", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "lastActiveAt": 1696934440 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "role": "default", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1696934912, - "deliveredAt": 1696934912, - "readAt": 1696934950, - "deletedAt": 1696935005, - "updatedAt": 1696935005, - "deletedBy": "cometchat-uid-1" - }, - "entityType": "message" - } - }, - }, - "sentAt": 1696935005, - "updatedAt": 1696935005 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_delivery\_receipt - -The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.body.messageId`,`data.body.timestamp` & `data.sender` -* **Purpose**: Tracks delivery receipts to ensure they are processed only once. - -```json -{ - "trigger": "message_delivery_receipt", - "data": { - "receiver": "cometchat-uid-1", - "receiverType": "user", - "type": "receipts", - "sender": "cometchat-uid-2", - "messageSender": "cometchat-uid-1", - "body": { - "action": "delivered", - "messageId": "57", - "user": { - "hasBlockedMe": false, - "blockedByMe": false, - "deactivatedAt": 0, - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "lastActiveAt": 1696934489, - "role": "default", - "status": "online" - }, - "timestamp": 1696934912 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_read\_receipt - -The hook triggers when the client chat application confirms with Cometchat servers that a message was read. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.body.messageId`,`data.body.timestamp` & `data.sender` -* **Purpose**: Tracks read receipts to ensure they are processed only once. - -```json -{ - "trigger": "message_read_receipt", - "data": { - "receiver": "cometchat-uid-1", - "receiverType": "user", - "type": "receipts", - "sender": "cometchat-uid-2", - "messageSender": "cometchat-uid-1", - "body": { - "action": "read", - "messageId": "57", - "user": { - "hasBlockedMe": false, - "blockedByMe": false, - "deactivatedAt": 0, - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "lastActiveAt": 1696934489, - "role": "default", - "status": "online" - }, - "timestamp": 1696934950 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_reaction\_added - -The hook triggers after a user reacts to a message. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.reaction.id` & `data.reaction.uid` -* **Purpose**: Tracks reactions to ensure they are processed only once. - -```json -{ - "trigger": "message_reaction_added", - "data": { - "reaction": { - "id": "", - "messageId": "", - "reaction": "🏒", - "uid": "cometchat-uid-1", - "reactedAt": 1700655536, - "reactedBy": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1700652818 - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_reaction\_removed - -The hook triggers after a user un-reacts to a message. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.reaction.id` & `data.reaction.uid` -* **Purpose**: Tracks reaction removals to ensure they are processed only once. - -```json -{ - "trigger": "message_reaction_removed", - "data": { - "reaction": { - "id": "", - "messageId": "", - "reaction": "🏒", - "uid": "cometchat-uid-1", - "reactedAt": 1700231289, - "reactedBy": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1700652818 - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### user\_mentioned - -The hook triggers after a user is mentioned in the message. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.message.id` & `data.message.mentions.uid` -* **Purpose**: Tracks mentions to ensure they are processed only once. - -```json -{ - "trigger": "user_mentioned", - "data": { - "message": { - "id": "4", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "message", - "type": "text", - "data": { - "text": "Hi <@uid:cometchat-uid-2>", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "George Alan", - "status": "offline", - "role": "default", - "createdAt": 1702025699 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-2", - "name": "cometchat-uid-1", - "status": "available", - "role": "default", - "lastActiveAt": 1702028122, - "createdAt": 1701931840, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - }, - "mentions": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "cometchat-uid-1", - "status": "available", - "role": "default", - "lastActiveAt": 1702028122, - "createdAt": 1701931840, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - } - }, - "sentAt": 1702028666, - "updatedAt": 1702028666 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_delivered\_to\_all - -The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered to all the participants of the group. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.body.messageId` & `data.body.timestamp` -* **Purpose**: Tracks group delivery to ensure it is processed only once. - -```json -{ - "trigger": "message_delivered_to_all", - "data": { - "receiver": "group__1720436412627", - "receiverType": "group", - "type": "receipts", - "sender": "app_system", - "messageSender": "superhero2", - "body": { - "messageId": "385", - "timestamp": 1722245922, - "action": "deliveredToAll", - "user": { - "uid": "app_system", - "name": "System", - "avatar": "", - "role": "default", - "status": "offline" - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### message\_read\_by\_all - -The hook triggers when the client chat application confirms with Cometchat servers that a message was read by all the participants of a group. - -**Idempotency Details** - -* **Key**: `webhook`,`trigger`,`data.body.messageId` & `data.body.timestamp` -* **Purpose**: Tracks group read receipts to ensure they are processed only once. - -```json -{ - "trigger": "message_read_by_all", - "data": { - "receiver": "group__1720436412627", - "receiverType": "group", - "type": "receipts", - "sender": "app_system", - "messageSender": "superhero2", - "body": { - "messageId": "385", - "timestamp": 1722245922, - "action": "readByAll", - "user": { - "uid": "app_system", - "name": "System", - "avatar": "", - "role": "default", - "status": "offline" - } - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - - - -The following events will be available only if the **Enhanced Messaging Status** feature is enabled for your app. - -* `message_delivered_to_all`, -* `message_read_by_all` - - - -## User-related events - -### user\_blocked - -The hook triggers when a user blocks another user. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.users.uid` -* **Purpose**: Tracks user block events to ensure they are processed only once. - -```json -{ - "trigger": "user_blocked", - "data": { - "users": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696935105 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### user\_unblocked - -The hook triggers when a user unblocks another user. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.users.uid` -* **Purpose**: Tracks user unblock events to ensure they are processed only once. - -```json -{ - "trigger": "user_unblocked", - "data": { - "users": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696934491, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696935105 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### user\_connection\_status\_changed - -The hook triggers after a user connects/disconnects from the websocket server. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.user.uid`+`data.user.status`+`data.timestamp` -* **Purpose**: Tracks user connection status changes to ensure they are processed only once. - -```json -{ - "trigger": "user_connection_status_changed", - "data": { - "timestamp": 1696935103114, - "user": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1693916686 - }, - "status": "offline", - "currentConnection": { - "action": "disconnected", - "appInfo": { - "version": "3.0.12", - "apiVersion": "v3.0", - "origin": "http://localhost:5173", - "uts": 1696934440846, - "clientIp": "3.128.113.92" - }, - "platform": "javascript", - "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", - "connectedAt": 1696934440982 - }, - "userPresenceChanged": true - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -## Group events - -### group\_member\_banned - -This hooks triggers after members are banned from a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member bans to ensure they are processed only once. - -```json -{ - "trigger": "group_member_banned", - "data": { - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_group__1696932914913", - "createdAt": 1696932915, - "owner": "cometchat-uid-1", - "updatedAt": 1696933533, - "onlineMembersCount": 1 - }, - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_unbanned - -The hook triggers after members are unbanned from a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member unbans to ensure they are processed only once. - -```json -{ - "trigger": "group_member_unbanned", - "data": { - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1696932915, - "owner": "cometchat-uid-1", - "updatedAt": 1696933533, - "onlineMembersCount": 1 - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_scope\_changed - -The hook triggers if the scope of a member changes in a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member scope changes to ensure they are processed only once. - -```json -{ - "trigger": "group_member_scope_changed", - "data": { - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933928, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "scope": "admin", - "oldScope": "participant" - } - }, - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695722891, - "owner": "cometchat-uid-1", - "updatedAt": 1696933925, - "onlineMembersCount": 2 - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_created - -The hook triggers after the group is created. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.group.createdAt` -* **Purpose**: Tracks group creation to ensure it is processed only once. - -```json -{ - "trigger":"group_created", - "data":{ - "group":{ - "guid":"cometchat-guid-1", - "name":"Hiking Group", - "type":"public", - "scope":"admin", - "membersCount":1, - "joinedAt":1696932915, - "conversationId":"group_cometchat-guid-1", - "hasJoined":true, - "createdAt":1696932915, - "owner":"cometchat-uid-1" - }, - "members":{ - "cometchat-uid-1":{ - "uid":"cometchat-uid-1", - "name":"Andrew Joseph", - "status":"available", - "role":"default", - "lastActiveAt":1696932834 - } - } - }, - "appId":"", - "region":"", - "webhook":"" -} -``` - -### group\_updated - -The hook triggers after the group is updated. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.group.updatedAt` -* **Purpose**: Tracks group updates to ensure they are processed only once. - -```json -{ - "trigger": "group_updated", - "data": { - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695728507, - "owner": "cometchat-uid-2", - "updatedAt": 1696934048, - "updatedBy": "cometchat-uid-1", - "onlineMembersCount": 2 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_deleted - -The hook triggers after the group is deleted. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.group.createdAt` -* **Purpose**: Tracks group deletions to ensure they are processed only once. - -```json -{ - "trigger": "group_deleted", - "data": { - "group": { - "guid": "cometchat-guid-1", - "name": "1234", - "type": "public", - "membersCount": 1, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695722912, - "owner": "cometchat-uid-1", - "updatedAt": 1695817083, - "updatedBy": "cometchat-uid-1", - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_joined - -The hook triggers after a user joins a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member joins to ensure they are processed only once. - -```json -{ - "trigger": "group_member_joined", - "data": { - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689 - } - }, - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695728507, - "owner": "cometchat-uid-1", - "updatedAt": 1696933691, - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_left - -The hook triggers after a user leaves the group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member departures to ensure they are processed only once. - -```json -{ - "trigger": "group_member_left", - "data": { - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689 - } - }, - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695722891, - "owner": "cometchat-uid-1", - "updatedAt": 1696933827, - "onlineMembersCount": 1 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_added - -The hook triggers after members are added to a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member additions to ensure they are processed only once. - -```json -{ - "trigger": "group_member_added", - "data": { - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1696932915, - "owner": "cometchat-uid-1", - "onlineMembersCount": 1 - }, - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1695751453, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696932834 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_member\_kicked - -This hook triggers after members are kicked from a group. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.members.uid`+`data.group.updatedAt` -* **Purpose**: Tracks group member removals to ensure they are processed only once. - -```json -{ - "trigger": "group_member_kicked", - "data": { - "members": { - "cometchat-uid-2": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933689, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - } - }, - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 1, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695722891, - "owner": "cometchat-uid-1", - "updatedAt": 1696933889, - "onlineMembersCount": 8 - }, - "by": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933881 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### group\_owner\_transferred - -The hook triggers if the owner of the group is changed. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.group.guid`+`data.group.updatedAt` -* **Purpose**: Tracks group ownership transfers to ensure they are processed only once. - -```json -{ - "trigger": "group_owner_transferred", - "data": { - "group": { - "guid": "cometchat-guid-1", - "name": "Hiking Group", - "type": "public", - "membersCount": 2, - "conversationId": "group_cometchat-guid-1", - "createdAt": 1695728507, - "owner": "cometchat-uid-2", - "updatedAt": 1696933737, - "updatedBy": "cometchat-uid-1", - "onlineMembersCount": 2, - "oldOwner": "cometchat-uid-1" - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -## Call & Meeting events - -### call\_initiated - -The hook triggers when the call is initiated. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.call.id`+`data.call.sentAt` -* **Purpose**: Tracks call initiation to ensure it is processed only once. - -```json -{ - "trigger": "call_initiated", - "data": { - "call": { - "id": "52", - "conversationId": "cometchat-uid-1_user_cometchat-uid-5", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-5", - "category": "call", - "type": "audio", - "data": { - "action": "initiated", - "entities": { - "by": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "cometchat-uid-5", - "name": "John Paul", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", - "status": "offline", - "role": "default", - "conversationId": "cometchat-uid-1_user_cometchat-uid-5" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "", - "conversationId": "cometchat-uid-1_user_cometchat-uid-5", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-5", - "status": "initiated", - "type": "audio", - "data": { - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1696933934 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-5", - "name": "John Paul", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp",, - "status": "offline", - "role": "default", - "conversationId": "cometchat-uid-1_user_cometchat-uid-5" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1696934199, - "joinedAt": 1696934199 - }, - "entityType": "call" - } - }, - "resource": "WEB-3_0_12-acfa8397-42f0-4f19-bc28-bc7db316ecaf-1696933879599" - }, - "sentAt": 1696934199, - "updatedAt": 1696934199 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_started - -The hook triggers when the call is started. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.created_at` -* **Purpose**: Tracks call start events to ensure they are processed only once. - -```json -{ - "trigger": "call_started", - "data": { - "created_at": 1696934572, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_participant\_joined - -The hook triggers when a participant joins the call. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.occupant.joined_at` -* **Purpose**: Tracks participant joins to ensure they are processed only once. - -```json -{ - "trigger": "call_participant_joined", - "data": { - "occupant": { - "joined_at": 1696934573, - "audio_call": "true", - "name": "Andrew Joseph" - }, - "initial_config": { - "is_video_muted": "false", - "start_recording_on_call_start": "false", - "call_version": "2.3.0", - "is_audio_muted": "false", - "sdk": "react", - "mode": "DEFAULT", - "platform": "web", - "is_audio_only": "true" - }, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_participant\_left - -The hook triggers when a participant leaves the call. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.occupant.left_at` -* **Purpose**: Tracks participant departures to ensure they are processed only once. - -```json -{ - "trigger": "call_participant_left", - "data": { - "occupant": { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934553, - "name": "George Alan" - }, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_ended - -The hook triggers when the call is ended. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.destroyed_at` -* **Purpose**: Tracks call end events to ensure they are processed only once. - -```json -{ - "trigger": "call_ended", - "data": { - "all_occupants": [ - { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934553, - "name": "George Alan" - }, - { - "joined_at": 1696934501, - "audio_call": "true", - "left_at": 1696934551, - "name": "Andrew Joseph" - } - ], - "destroyed_at": 1696934553, - "created_at": 1696934501, - "sessionId": "" - }, - "type": "call", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_busy - -This hook is triggered when a 1-on-1 call cannot be connected because the recipient is already on another call (i.e., their line is busy). Note: This event is exclusive to 1-on-1 calls. In group calls, all participants can join at any time, so a "busy" state does not apply. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.call.id`+`data.call.sentAt` -* **Purpose**: Tracks call busy events to ensure they are processed only once. - -```json -{ - "trigger": "call_busy", - "data": { - "call": { - "id": "43414", - "conversationId": "superhero1_user_superhero3", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero1", - "category": "call", - "type": "audio", - "data": { - "action": "busy", - "entities": { - "by": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "status": "available", - "role": "default", - "lastActiveAt": 1744959907 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero1", - "name": "Iron Man New 2", - "metadata": { - "metadata": "updated_653" - }, - "status": "available", - "lastActiveAt": 1744960245, - "conversationId": "superhero1_user_superhero3" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "v1.us.258520c054f20343.1744960250fba0641a3d6f635262e35c07dca5acfb6fa94127", - "conversationId": "superhero1_user_superhero3", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero3", - "status": "busy", - "type": "audio", - "data": { - "entities": { - "receiver": { - "entity": { - "conversationId": "superhero1_user_superhero3", - "lastActiveAt": 1744959907, - "name": "Spiderman", - "role": "default", - "status": "available", - "uid": "superhero3" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "lastActiveAt": 1744960245, - "metadata": { - "metadata": "updated_653" - }, - "name": "Iron Man New 2", - "status": "available", - "uid": "superhero1" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1744960250 - }, - "entityType": "call" - } - }, - "resource": "WEB-4_0_10-942b534c-b606-4d44-90c3-878c60eb3a63-1744959889623" - }, - "sentAt": 1744960250, - "updatedAt": 1744960250 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_cancelled - -The hook triggers when the call is cancelled. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.call.id`+`data.call.sentAt` -* **Purpose**: Tracks call cancelled events to ensure they are processed only once. - -```json -{ - "trigger": "call_cancelled", - "data": { - "call": { - "id": "43408", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero4", - "receiverType": "user", - "receiver": "superhero3", - "category": "call", - "type": "audio", - "data": { - "action": "cancelled", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "status": "available", - "role": "default", - "lastActiveAt": 1744959814 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "status": "available", - "role": "default", - "lastActiveAt": 1744959907, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "v1.us.258520c054f20343.1744960108582f85230d0552516bdac185a6bd862eeac55f78", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero4", - "receiverType": "user", - "receiver": "superhero3", - "status": "cancelled", - "type": "audio", - "data": { - "entities": { - "receiver": { - "entity": { - "conversationId": "superhero3_user_superhero4", - "lastActiveAt": 1744959907, - "name": "Spiderman", - "role": "default", - "status": "available", - "uid": "superhero3" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "lastActiveAt": 1744959814, - "name": "Wolverine", - "role": "default", - "status": "available", - "uid": "superhero4" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1744960108 - }, - "entityType": "call" - } - }, - "resource": "WEB-4_0_10-837115e3-f277-4105-8f1f-4e19a1a7f2be-1744959734040" - }, - "sentAt": 1744960111, - "updatedAt": 1744960111 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_rejected - -This hook is triggered when a 1-on-1 call is explicitly rejected by the recipient. In group calls, this event is not triggered—since the call remains active as long as at least one member joins, even if others reject it. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.call.id`+`data.call.sentAt` -* **Purpose**: Tracks call rejected events to ensure they are processed only once. - -```json -{ - "trigger": "call_rejected", - "data": { - "call": { - "id": "43406", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero4", - "category": "call", - "type": "audio", - "data": { - "action": "rejected", - "entities": { - "by": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "status": "available", - "role": "default", - "lastActiveAt": 1744959907 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "status": "available", - "role": "default", - "lastActiveAt": 1744959814, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "v1.us.258520c054f20343.1744960087681ed39d02b69199ee4e0cf9d9173dc6c643461e", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero4", - "receiverType": "user", - "receiver": "superhero3", - "status": "rejected", - "type": "audio", - "data": { - "entities": { - "receiver": { - "entity": { - "conversationId": "superhero3_user_superhero4", - "lastActiveAt": 1744959907, - "name": "Spiderman", - "role": "default", - "status": "available", - "uid": "superhero3" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "lastActiveAt": 1744959814, - "name": "Wolverine", - "role": "default", - "status": "available", - "uid": "superhero4" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1744960087 - }, - "entityType": "call" - } - }, - "resource": "WEB-4_0_10-942b534c-b606-4d44-90c3-878c60eb3a63-1744959889623" - }, - "sentAt": 1744960092, - "updatedAt": 1744960092 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### call\_unanswered - -This hook is triggered when a call goes unanswered. For group calls, the call is considered unanswered only if none of the members join. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.call.id`+`data.call.sentAt` -* **Purpose**: Tracks call unanswered events to ensure they are processed only once. - -```json -{ - "trigger": "call_unanswered", - "data": { - "call": { - "id": "43410", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero4", - "receiverType": "user", - "receiver": "superhero3", - "category": "call", - "type": "audio", - "data": { - "action": "unanswered", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "status": "available", - "role": "default", - "lastActiveAt": 1744959814 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "status": "available", - "role": "default", - "lastActiveAt": 1744959907, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "on": { - "entity": { - "sessionid": "v1.us.258520c054f20343.17449601247f75e0a5c7b9601b32e9fb26645c34975bc6c93d", - "conversationId": "superhero3_user_superhero4", - "sender": "superhero4", - "receiverType": "user", - "receiver": "superhero3", - "status": "unanswered", - "type": "audio", - "data": { - "entities": { - "receiver": { - "entity": { - "conversationId": "superhero3_user_superhero4", - "lastActiveAt": 1744959907, - "name": "Spiderman", - "role": "default", - "status": "available", - "uid": "superhero3" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "lastActiveAt": 1744959814, - "name": "Wolverine", - "role": "default", - "status": "available", - "uid": "superhero4" - }, - "entityType": "user" - } - } - }, - "initiatedAt": 1744960124 - }, - "entityType": "call" - } - }, - "resource": "WEB-4_0_10-837115e3-f277-4105-8f1f-4e19a1a7f2be-1744959734040" - }, - "sentAt": 1744960170, - "updatedAt": 1744960170 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### meeting\_started - -The hook triggers when a meeting is started. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.created_at` -* **Purpose**: Tracks meeting start events to ensure they are processed only once. - -```json -{ - "trigger": "meeting_started", - "data": { - "created_at": 1696934692, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### recording\_generated - -The hook triggers when the recording is generated. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.startTime` -* **Purpose**: Tracks recording generation to ensure it is processed only once. - -```json -{ - "trigger": "recording_generated", - "data": { - "recordingDate": "2023-10-10", - "duration": "21.433000", - "startTime": "1696937627", - "sessionId": "", - "recording_url": "" - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### meeting\_participant\_joined - -The hook triggers when a participant joins the meeting. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.occupant.joined_at` -* **Purpose**: Tracks participant joins in meetings to ensure they are processed only once. - -```json -{ - "trigger": "meeting_participant_joined", - "data": { - "occupant": { - "joined_at": 1696934692, - "audio_call": "false", - "name": "Andrew Joseph" - }, - "initial_config": { - "is_video_muted": "false", - "start_recording_on_call_start": "false", - "call_version": "2.3.0", - "is_audio_muted": "false", - "sdk": "react", - "mode": "DEFAULT", - "platform": "web", - "is_audio_only": "false" - }, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### meeting\_participant\_left - -The hook triggers when a participant leaves the meeting. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.occupant.left_at` -* **Purpose**: Tracks participant departures in meetings to ensure they are processed only once. - -```json -{ - "trigger": "meeting_participant_left", - "data": { - "occupant": { - "joined_at": 1696934692, - "audio_call": "false", - "left_at": 1696934730, - "name": "Andrew Joseph" - }, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - -### meeting\_ended - -The hook triggers when the meeting is ended. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.sessionId`+`data.destroyed_at` -* **Purpose**: Tracks meeting end events to ensure they are processed only once. - -```json -{ - "trigger": "meeting_ended", - "data": { - "all_occupants": [ - { - "joined_at": 1696934692, - "audio_call": "false", - "left_at": 1696934730, - "name": "Andrew Joseph" - } - ], - "destroyed_at": 1696934730, - "created_at": 1696934692, - "sessionId": "" - }, - "type": "meet", - "appId": "", - "region": "", - "webhook": "" -} -``` - -## Moderation Events - -### moderation\_engine\_approved - -The hook triggers when a message is marked as approved by the moderation engine. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.message.id`+`data.message.sentAt` -* **Purpose**: Tracks moderation approvals to ensure they are processed only once. - -```json -{ - "trigger": "moderation_engine_approved", - "data": { - "message": { - "id": "38437", - "muid": "_4b6na3agb", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "text": "hello", - "resource": "WEB-4_0_10-a10f2a72-8d27-4fbc-aceb-05a2258e98f4-1738586366602", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1738591120, - "updatedAt": 1738591120 - } - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### moderation\_engine\_blocked - -The hook triggers when a message is marked as disapproved by the moderation engine. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.message.id`+`data.message.updatedAt` -* **Purpose**: Tracks moderation blocks to ensure they are processed only once. - -```json -{ - "trigger": "moderation_engine_blocked", - "data": { - "message": { - "id": "38439", - "muid": "_zhovsxqdo", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "text": "andrew@gmail.com", - "resource": "WEB-4_0_10-a10f2a72-8d27-4fbc-aceb-05a2258e98f4-1738586366602", - "moderation": { - "status": "disapproved", - "rule": { - "id": "email_filter", - "name": "Email Filter" - } - }, - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1738591286, - "updatedAt": 1738591286 - }, - "moderation": [ - { - "condition": { - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" - ], - "message": "Text message contains a pattern matching an email address" - }, - "rule": { - "id": "email_filter", - "name": "Email filter", - "revisionId": "2531882e5e289115_contact_email_filter_7", - "action": [ - "blockMessage" - ], - "blockedAt": 1738591286 - } - } - ] - }, - "appId": "", - "region": "", - "webhook": "" -} -``` - -### moderation\_manual\_approved - -The hook triggers when a blocked message is manually marked as approved. - -**Idempotency Details** - -* **Key**: `webhook`+`trigger`+`data.message.id`+`data.message.updatedAt` -* **Purpose**: Tracks manual moderation approvals to ensure they are processed only once. - -```json -{ - "trigger": "moderation_manual_approved", - "data": { - "message": { - "id": "38439", - "muid": "_zhovsxqdo", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "text": "andrew@gmail.com", - "resource": "WEB-4_0_10-a10f2a72-8d27-4fbc-aceb-05a2258e98f4-1738586366602", - "moderation": { - "status": "approved" - }, - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "available", - "role": "default", - "lastActiveAt": 1738589887, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1738591286, - "updatedAt": 1738591286 - }, - "moderation": [ - { - "rule": { - "id": "email_filter", - "name": "Email filter", - "revisionId": "2531882e5e289115_contact_email_filter_7", - "action": [ - "blockMessage" - ], - "blockedAt": 1738591286, - "condition": { - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" - ], - "message": "Text message contains a pattern matching an email address" - } - } - } - ] - }, - "appId": "", - "region": "", - "webhook": "" -} -``` diff --git a/fundamentals/webhooks-legacy-events.mdx b/fundamentals/webhooks-legacy-events.mdx deleted file mode 100644 index fff674976..000000000 --- a/fundamentals/webhooks-legacy-events.mdx +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: "Events" ---- - -## Message events - -### before\_message - -The endpoint will be triggered when a message is in-flight. - -```json -{ - "trigger": "before_message", - "data": { - "conversationId": "cometchat-uid-4_user_cometchat-uid-5", - "sender": "cometchat-uid-5", - "receiverType": "user", - "receiver": "cometchat-uid-4", - "category": "message", - "type": "text", - "data": { - "text": "Hi Webhook Test", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-5", - "name": "John Paul", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", - "status": "offline", - "role": "default" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-4", - "name": "Susan Marie", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", - "status": "offline", - "role": "default" - }, - "entityType": "user" - } - } - }, - "sentAt": 1586435925, - "updatedAt": 1586435925, - }, - "appId": "167*****1529", - "webhook": "send-message" -} -``` - -### after\_message - -The endpoint will be triggered after a message is sent. - -```json -{ - "trigger": "after_message", - "data": { - "id": "1", - "conversationId": "cometchat-uid-4_user_cometchat-uid-5", - "sender": "cometchat-uid-5", - "receiverType": "user", - "receiver": "cometchat-uid-4", - "category": "message", - "type": "text", - "data": { - "text": "Hi Webhook Test", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-5", - "name": "John Paul", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", - "status": "offline", - "role": "default" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-4", - "name": "Susan Marie", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", - "status": "offline", - "role": "default" - }, - "entityType": "user" - } - } - }, - "sentAt": 1586435925, - "updatedAt": 1586435925, - }, - "appId": "167*****1529", - "webhook": "send-message" -} -``` - -### message\_delivery\_receipt - -The endpoint will be triggered when a message is marked delivered. - -```json -{ - "trigger": "message_delivery_receipt", - "appId": "167*****1529", - "origin": { - "platform": "WEBSOCKET" - }, - "chatAPIVersion?": "3.0", - "region?": "us|eu|other", - "webhook": "webhook_name", - "data": { - "messageId": "MESSAGE_ID", - "receiptType": "delivered", - "deliveredAt": 1673017183, - "messageSender":"messageSenderUID", - "receiptSender":"receiptSenderUID", - "receiptReceiver":"uid|guid", - "receiverType": "user|group" - } -} -``` - -### message\_read\_receipt - -The endpoint will be triggered when a message is marked read. - -```json -{ - "trigger": "message_read_receipt", - "appId": "167*****1529", - "origin": { - "platform": "WEBSOCKET" - }, - "chatAPIVersion?": "3.0", - "region?": "us|eu|other", - "webhook": "webhook_name", - "data": { - "messageId": "MESSAGE_ID", - "receiptType": "read", - "readAt": 1673017183, - "messageSender":"messageSenderUID", - "receiptSender":"receiptSenderUID", - "receiptReceiver":"uid|guid", - "receiverType": "user|group" - } -} -``` - -## User-related events - -### user\_connection\_status\_change - -The endpoint will be triggered when a users logs in or logs out of CometChat. - -```json -{ - "trigger": "after_connection_status_changed", - "appId": "167*****1529", - "origin": { - "platform": "API|MGNT-API|WEBSOCKET|WEBRTC" - }, - "chatAPIVersion?": "3.0", - "region?": "us|eu|other", - "webhook": "webhook_name", - "data": { - "user": { - "uid": "uid of the user", - "status": "online|offline", - "status_updated": true, - "status_updated_at": "unixtimestamp in millisec" - }, - "event": { - "type": "connected|disconnected", - "at": "unixtimestamp in millisec", - "event_for": { - "connected_at": "unixtimestamp in millisec", - "cometchat_device_id": "unique device id used by cometchat to identify the device(random string)", - "session_id": "unique id to indetify the unique session of users", - "platform": "android|ios|web" - } - }, - "connections": [ - { - "connected_at": "unixtimestamp in millisec", - "cometchat_device_id": "unique device id used by cometchat to identify the device(random string)", - "session_id": "unique id to indetify the unique session of users", - "platform": "android|ios|web" - }, - { - "connected_at": "unixtimestamp in millisec", - "cometchat_device_id": "unique device id used by cometchat to identify the device(random string)", - "session_id": "unique id to indetify the unique session of users", - "platform": "android|ios|web" - } - ] - } -} -``` diff --git a/fundamentals/webhooks-legacy-management.mdx b/fundamentals/webhooks-legacy-management.mdx deleted file mode 100644 index fb5b9fac5..000000000 --- a/fundamentals/webhooks-legacy-management.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Managing Legacy Webhook Triggers" -sidebarTitle: "Managing Triggers" ---- - -You can manage and configure legacy webhooks in CometChat either from the **dashboard UI** or programmatically via **Management APIs**. - -*** - -## Option 1: Manage from the Dashboard - -To manage webhooks using the CometChat dashboard: - - - - - -### Steps: - -1. Log in to your [CometChat Dashboard](https://app.cometchat.com/login) and select your app. - -2. Go to **Settings** > **Legacy Webhooks** from the left menu. - -3. Click on **Add New Webhook**. - -4. Fill in the configuration: - - * **Webhook ID**: A unique identifier for your webhook. - * **URL**: Endpoint where event payloads will be delivered. - * **Triggers**: Select the events you want to receive. - * **Security**: (Recommended) Enable authentication. - -5. Enable the webhook. - -6. Save the configuration. - -*** - -## Option 2: Manage via Management APIs - -CometChat also provides Management APIs to automate webhook and trigger management. - -### Webhook Management Endpoints - -| Operation | API Reference | -| -------------------------- | ----------------------------------------------------------------------------- | -| Create a new webhook | [Create Webhook](https://api-explorer.cometchat.com/reference/create-webhook) | -| Update an existing webhook | [Update Webhook](https://api-explorer.cometchat.com/reference/update-webhook) | -| List all webhooks | [List Webhooks](https://api-explorer.cometchat.com/reference/list-webhooks) | -| Get a webhook by ID | [Get Webhook](https://api-explorer.cometchat.com/reference/get-webhook) | -| Delete a webhook | [Delete Webhook](https://api-explorer.cometchat.com/reference/delete-webhook) | - -### Trigger Management Endpoints - -| Operation | API Reference | -| ------------------------------ | ------------------------------------------------------------------------------- | -| Add triggers to a webhook | [Add Triggers](https://api-explorer.cometchat.com/reference/add-triggers) | -| List all triggers of a webhook | [List Triggers](https://api-explorer.cometchat.com/reference/list-triggers) | -| Remove triggers from a webhook | [Remove Triggers](https://api-explorer.cometchat.com/reference/remove-triggers) | - -*** - -Choose the method that best suits your workflow—dashboard for manual setup or APIs for automated, scalable integration. diff --git a/fundamentals/webhooks-legacy-overview.mdx b/fundamentals/webhooks-legacy-overview.mdx deleted file mode 100644 index f322368c8..000000000 --- a/fundamentals/webhooks-legacy-overview.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Legacy Webhooks Overview" -sidebarTitle: "Overview" ---- - -CometChat legacy webhooks enable real-time event-driven communication with your system. They allow you to receive HTTP POST requests whenever specific events occur—such as sending a message or a user coming online. These webhooks are ideal for integrating external services like SMS, email, analytics, or auditing systems. - -*** - -## Webhook Endpoint Requirements - -To ensure reliable delivery and security, your webhook endpoint must meet the following requirements: - -1. **HTTPS Required**: Your endpoint must use `HTTPS` to ensure secure data transmission. -2. **Public Accessibility**: It must be accessible from the public internet. -3. **Support for POST Requests**: The endpoint must accept `HTTP POST` requests with a `Content-Type` of `application/json`. -4. **Immediate Acknowledgment**: Your server must respond with an `HTTP 200 OK` status quickly to acknowledge receipt. - -*** - -## Security - -It is strongly recommended to use **Basic Authentication** to protect your webhook endpoints. - -### Header Format - -When enabled, every webhook request from CometChat will include the following HTTP header: - -```html -Authorization: Basic -``` - -> Set your username and password while configuring the webhook on the CometChat dashboard. - -*** - -## Webhook Triggers - -Below are the legacy webhook events supported by CometChat: - -### Message Events - -These events are triggered during the lifecycle of a message. - -| Event | Description | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| [before\_message](./webhooks-legacy-events#before_message) | Triggered when a message is in-flight—just before it is processed by CometChat. | -| [after\_message](./webhooks-legacy-events#after_message) | Triggered after a message has been successfully sent. | -| [message\_delivery\_receipt](./webhooks-legacy-events#message_delivery_receipt) | Triggered when a message is marked as delivered to a user. | -| [message\_read\_receipt](./webhooks-legacy-events#message_read_receipt) | Triggered when a message is marked as read by the recipient. | - -### User Events - -These events relate to changes in user presence status. - -| Event | Description | -| ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | -| [user\_connection\_status\_change](./webhooks-legacy-events#user_connection_status_change) | Triggered when a user connects or disconnects from the CometChat platform. | - -*** - -Next Steps: - -* [Manage Webhooks](/fundamentals/webhooks-legacy-management) -* [View Full Event Payloads](/fundamentals/webhooks-legacy-events) diff --git a/fundamentals/webhooks-management.mdx b/fundamentals/webhooks-management.mdx deleted file mode 100644 index aa9bcd1ef..000000000 --- a/fundamentals/webhooks-management.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Managing Webhook Triggers" -sidebarTitle: "Managing Triggers" ---- - -CometChat allows you to configure and manage webhook triggers either through the **CometChat Dashboard** or by using the **Management APIs**. This guide walks you through both methods. - -*** - -## Option 1: Managing Webhooks via Dashboard - -You can easily configure webhook triggers through the CometChat dashboard. - -### Steps to Configure: - -1. Log in to the [CometChat Dashboard](https://app.cometchat.com/login) and select your app. - -2. Navigate to **Settings** > **Webhooks** in the left-hand menu. - -3. Click **Add Webhook** to create a new webhook. - -4. Provide the following details: - - * **Webhook ID** – A unique identifier. - * **URL** – Your server endpoint where event payloads will be sent. - * **Triggers** – Enable events you wish to listen to. - * **Security** – Enable authentication for enhanced security. - -5. Enable the webhook. - -6. Click **Save** to apply your configuration. - - - - - -*** - -## Option 2: Managing Webhooks via Management APIs - -If you prefer automation or need to manage webhooks programmatically, you can use our REST APIs. - -### Webhook Operations - -| Operation | API Reference | -| -------------------------- | --------------------------------------------------------------------------------- | -| Create a new webhook | [Create Webhook](/rest-api/management-apis/webhooks/create-webhook) | -| Update an existing webhook | [Update Webhook](/rest-api/management-apis/webhooks/update-webhook) | -| List all webhooks | [List Webhooks](/rest-api/management-apis/webhooks/list-webhooks) | -| Get webhook by ID | [Get Webhook](/rest-api/management-apis/webhooks/get-webhook) | -| Delete a webhook | [Delete Webhook](/rest-api/management-apis/webhooks/delete-webhook) | - -### Trigger Operations - -| Operation | API Reference | -| ------------------------------ | ----------------------------------------------------------------------------------- | -| Add triggers to a webhook | [Add Triggers](/rest-api/management-apis/webhooks/add-triggers) | -| List triggers for a webhook | [List Triggers](/rest-api/management-apis/webhooks/list-triggers) | -| Remove triggers from a webhook | [Remove Triggers](/rest-api/management-apis/webhooks/remove-triggers) | - -*** - -Choose the method that best fits your use case—Dashboard for quick setup, or APIs for advanced and automated configurations. diff --git a/fundamentals/webhooks-overview.mdx b/fundamentals/webhooks-overview.mdx deleted file mode 100644 index 5950d4e2e..000000000 --- a/fundamentals/webhooks-overview.mdx +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: "Webhooks Overview" -sidebarTitle: "Overview" ---- - -CometChat Webhooks enable real-time, event-driven communication with your server by sending HTTP POST requests for specific events such as messages, user actions, group updates, calls, and moderation results. - -You can use webhooks to build custom workflows such as sending SMS or email notifications, logging activity, syncing with external systems, or triggering automation. - -*** - -## Setting Up Your Webhook Endpoint - -To successfully receive and process events from CometChat, your webhook endpoint must meet the following criteria: - -1. **Use HTTPS** – All webhook URLs must be secured with SSL. -2. **Be publicly accessible** – Your server should be reachable from the internet. -3. **Support POST method** – Events will be delivered as `HTTP POST` requests with `application/json` content. -4. **Return a 200 OK** – Your endpoint must acknowledge receipt by responding with `HTTP 200`. - -*** - -## Securing Your Webhook - -### Basic Authentication (Recommended) - -To ensure only authorized systems can access your endpoint, use Basic Authentication: - -```html -Authorization: Basic -``` - -You can configure this with a username and password known only to your system. - -### Token-based files access - -Token-based file access provides improved control over media files through pre-signed URLs. When this feature is enabled, media URLs in webhook payloads may return a 401 Unauthorized response. - -You can enable this feature in the **Settings** section under **Chats** in the CometChat dashboard. Once enabled, it cannot be disabled. - - - - - -To access media files, use the media URL from the webhook payload to obtain a URL secured with a file access token (FAT). This URL redirects to a pre-signed URL that remains valid for 5 minutes. - -**Sample request:** - -```html -curl --location 'https://files-.cometchat.io//media/audio3.mp3' \ - --header 'appId: ' \ - --header 'apiKey: ' -``` - -**Sample response:** - -```json -{ - "data": { - "url": "https://files-.cometchat.io//media/audio3.mp3?fat=" - } -} -``` - -*** - -## Webhook Best Practices - -To maximize reliability and avoid common issues, follow these recommendations: - -### 1. Handle Retries Gracefully - -* Use the `retryOnFailure` flag when setting up webhooks. - -* If enabled, CometChat retries failed deliveries: - - * First retry: after 10 seconds. - * Second retry: after 30 seconds. - -* Use unique event IDs from payloads to **deduplicate** retries. - -### 2. Respond Quickly - -* Respond within **2 seconds** to prevent timeouts. -* For long processing tasks, enqueue events to systems like **Kafka, RabbitMQ, or AWS SQS**, and process them asynchronously. - -### 3. Log and Monitor - -* Maintain detailed logs of all incoming webhook requests and your server responses. -* Track failures, latency, and retry attempts. - -### 4. Implement Robust Error Handling - -* Return appropriate HTTP status codes: - - * `200 OK` for success. - * `4xx` for client-side errors (e.g., bad request). - * `5xx` for server-side issues. - -### 5. Thoroughly Test Before Production - -* Simulate various conditions: successful delivery, retries, and failures. -* Ensure your implementation handles all cases gracefully. - -*** - -## Webhook Event Triggers - -CometChat supports webhook triggers for different categories of events. Click each event name to see its payload and details. - -*** - -### Message Events - -| Event | Description | -| ----------------------------------------------------------------------------------------- | ---------------------------------------------------- | -| [message\_sent](/fundamentals/webhooks-events#message_sent) | Triggered after a message is sent. | -| [message\_edited](/fundamentals/webhooks-events#message_edited) | Triggered after a message is edited. | -| [message\_deleted](/fundamentals/webhooks-events#message_deleted) | Triggered after a message is deleted. | -| [message\_delivery\_receipt](/fundamentals/webhooks-events#message_delivery_receipt) | Triggered when a message is delivered to the client. | -| [message\_read\_receipt](/fundamentals/webhooks-events#message_read_receipt) | Triggered when a message is marked as read. | -| [message\_reaction\_added](/fundamentals/webhooks-events#message_reaction_added) | Triggered when a user reacts to a message. | -| [message\_reaction\_removed](/fundamentals/webhooks-events#message_reaction_removed) | Triggered when a reaction is removed. | -| [user\_mentioned](/fundamentals/webhooks-events#user_mentioned) | Triggered when a user is mentioned in a message. | - -*** - -### User Events - -| Event | Description | -| ------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -| [user\_blocked](/fundamentals/webhooks-events#user_blocked) | Triggered when a user blocks another user. | -| [user\_unblocked](/fundamentals/webhooks-events#user_unblocked) | Triggered when a user unblocks another user. | -| [user\_connection\_status\_changed](/fundamentals/webhooks-events#user_connection_status_changed) | Triggered when a user connects/disconnects. | - -*** - -### Group Events - -| Event | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------- | -| [group\_created](/fundamentals/webhooks-events#group_created) | Triggered after a group is created. | -| [group\_updated](/fundamentals/webhooks-events#group_updated) | Triggered after a group is updated. | -| [group\_deleted](/fundamentals/webhooks-events#group_deleted) | Triggered after a group is deleted. | -| [group\_member\_added](/fundamentals/webhooks-events#group_member_added) | Triggered when a member is added. | -| [group\_member\_removed](/fundamentals/webhooks-events#group_member_removed) | Triggered when a member is removed. | -| [group\_member\_banned](/fundamentals/webhooks-events#group_member_banned) | Triggered when a member is banned. | -| [group\_member\_unbanned](/fundamentals/webhooks-events#group_member_unbanned) | Triggered when a member is unbanned. | -| [group\_member\_joined](/fundamentals/webhooks-events#group_member_joined) | Triggered when a user joins a group. | -| [group\_member\_left](/fundamentals/webhooks-events#group_member_left) | Triggered when a user leaves a group. | -| [group\_member\_kicked](/fundamentals/webhooks-events#group_member_kicked) | Triggered when a member is kicked. | -| [group\_member\_scope\_changed](/fundamentals/webhooks-events#group_member_scope_changed) | Triggered when a member's scope changes. | -| [group\_owner\_transferred](/fundamentals/webhooks-events#group_owner_transferred) | Triggered when group ownership is transferred. | - -*** - -### Call and Meeting Events - -| Event | Description | -| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| [call\_initiated](/fundamentals/webhooks-events#call_initiated) | Triggered when a call is initiated. | -| [call\_started](/fundamentals/webhooks-events#call_started) | Triggered when a call starts. | -| [call\_ended](/fundamentals/webhooks-events#call_ended) | Triggered when a call ends. | -| [call\_participant\_joined](/fundamentals/webhooks-events#call_participant_joined) | Triggered when a participant joins a call. | -| [call\_participant\_left](/fundamentals/webhooks-events#call_participant_left) | Triggered when a participant leaves a call. | -| [call\_busy](/fundamentals/webhooks-events#call_busy) | This hook is triggered when a 1-on-1 call cannot be connected because the recipient is already on another call (i.e., their line is busy). | -| [call\_cancelled](/fundamentals/webhooks-events#call_cancelled) | The hook triggers when the call is cancelled. | -| [call\_rejected](/fundamentals/webhooks-events#call_rejected) | This hook is triggered when a 1-on-1 call is explicitly rejected by the recipient. | -| [call\_unanswered](/fundamentals/webhooks-events#call_unanswered) | This hook is triggered when a call goes unanswered. | -| [meeting\_started](/fundamentals/webhooks-events#meeting_started) | Triggered when a meeting starts. | -| [meeting\_ended](/fundamentals/webhooks-events#meeting_ended) | Triggered when a meeting ends. | -| [meeting\_participant\_joined](/fundamentals/webhooks-events#meeting_participant_joined) | Triggered when a participant joins a meeting. | -| [meeting\_participant\_left](/fundamentals/webhooks-events#meeting_participant_left) | Triggered when a participant leaves a meeting. | -| [recording\_generated](/fundamentals/webhooks-events#recording_generated) | Triggered when a recording is generated. | - -*** - -### Moderation Events - -| Event | Description | -| --------------------------------------------------------------------------------------------- | ------------------------------------------------------ | -| [moderation\_engine\_approved](/fundamentals/webhooks-events#moderation_engine_approved) | Triggered when a message is auto-approved. | -| [moderation\_engine\_blocked](/fundamentals/webhooks-events#moderation_engine_blocked) | Triggered when a message is auto-blocked. | -| [moderation\_manual\_approved](/fundamentals/webhooks-events#moderation_manual_approved) | Triggered when a blocked message is manually approved. | - -*** - -By following this guide, you can seamlessly integrate CometChat webhooks into your system and build event-driven experiences at scale. diff --git a/fundamentals/webhooks.mdx b/fundamentals/webhooks.mdx new file mode 100644 index 000000000..ea378b7cc --- /dev/null +++ b/fundamentals/webhooks.mdx @@ -0,0 +1,65 @@ +--- +title: "Webhooks" +sidebarTitle: "Webhooks" +--- + +CometChat Webhooks enable real-time, event-driven communication with your server by sending HTTP POST requests whenever specific events occur in your chat application. + +## What Are Webhooks? + +Webhooks are automated notifications that CometChat sends to your server when events happen—such as messages being sent, users coming online, or group membership changes. Instead of polling for updates, your server receives instant notifications, enabling real-time integrations. + +## Common Use Cases + +Webhooks enable you to build powerful integrations and automations: + +- **Notifications**: Send SMS, email, or push notifications when users receive messages +- **Analytics**: Track messaging activity and user engagement in your analytics platform +- **Moderation**: Trigger content review workflows when messages are flagged +- **Sync**: Keep external systems (CRM, support tools, databases) in sync with chat activity +- **Automation**: Trigger business workflows based on chat events + +## Supported Events + +CometChat webhooks cover a comprehensive range of events across different categories: + +### Message Events +Notifications for message lifecycle events including sent, edited, deleted, delivered, read, and reactions. + +### User Events +Notifications for user actions such as blocking/unblocking users and connection status changes (online/offline). + +### Group Events +Notifications for group lifecycle and membership events including creation, updates, member joins/leaves, bans, and scope changes. + +### Call and Meeting Events +Notifications for voice/video call events including initiation, start, end, participant joins/leaves, and recording generation. + +### Moderation Events +Notifications for content moderation outcomes including auto-approved, auto-blocked, and manually approved messages. + +## Webhook Requirements + +Your webhook endpoint must: + +- Use **HTTPS** for secure communication +- Be **publicly accessible** from the internet +- Accept **HTTP POST** requests with JSON content +- Respond with **HTTP 200 OK** to acknowledge receipt + +## Security + +CometChat supports **Basic Authentication** to secure your webhook endpoints. When configured, every webhook request includes an Authorization header with your credentials, ensuring only authorized requests are processed. + +## Best Practices + +- **Handle retries gracefully**: Use event IDs to deduplicate retried deliveries +- **Respond quickly**: Return 200 OK within 2 seconds; queue longer processing tasks +- **Log everything**: Maintain detailed logs for debugging and monitoring +- **Test thoroughly**: Simulate various conditions before going to production + +## Getting Started + +You can configure webhooks through the CometChat Dashboard or programmatically via the Management APIs. + +For detailed setup instructions and API documentation, refer to the [Webhooks REST APIs](/rest-api/management-apis/webhooks/overview). diff --git a/rest-api/api-keys.mdx b/rest-api/api-keys.mdx index 85df40e37..f3ff29516 100644 --- a/rest-api/api-keys.mdx +++ b/rest-api/api-keys.mdx @@ -13,3 +13,10 @@ The following table lists the properties that the APIKey API supports. | **apiKey** | string | apiKey used for authentication. character length - 40 | | **createdAt** | integer | UNIX Timestamp indicating the time when the apiKey was created | +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| API Key name | 100 characters (UTF8mb4) | Supports all languages and emojis (one emoji uses two characters) | +| Maximum API keys per app | 25 | Contact support if you need additional API keys | + diff --git a/rest-api/calls.mdx b/rest-api/calls.mdx index 7d6e025fa..95599f579 100644 --- a/rest-api/calls.mdx +++ b/rest-api/calls.mdx @@ -46,3 +46,14 @@ Recordings: | **endTime** | integer | 10-digit Unix timestamp indicating when the recording was ended. | | **recording\_url** | string | Indicates the S3 URL of the call recording. | + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum users in a call | 50 | Supports both one-on-one and group calling; works best with 50 participants | +| Default video frame rate | 30 FPS | May adapt based on network conditions | +| Video resolution | 180p - 720p | Depends on layout selected and user bandwidth | +| Media encryption | SRTP | Ensures secure real-time communication | +| Audio codec | OPUS | Optimized for low-latency voice communication | +| Video codec | H.264 | Widely supported for cross-platform compatibility | diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 36faa30ad..f8ee66efb 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -47,15 +47,14 @@ curl -X GET \ ## Error codes -CometChat provides a comprehensive reference for understanding and troubleshooting various error codes that may be encountered while interacting with the API.\ -Each error code is accompanied by a clear description of its meaning and potential causes, along with suggested actions to resolve or mitigate the issue.\ -More about error codes can be found [here](/rest-api/constraints-rate-limits-and-errors#errors): +CometChat provides error codes to help you understand and troubleshoot issues when interacting with the API.\ +Each error code is accompanied by a description of its meaning and potential causes. Error codes specific to each API are documented in their respective API reference pages. ## Rate limits The Rate Limits provides information about the limits on the number of API calls you can make in a certain period.\ By defining and enforcing rate limits, the API maintains optimal performance, prevents abuse, and ensures fair usage for all users.\ -More about rate limits can be found [here](/rest-api/constraints-rate-limits-and-errors#rate-limits) +More about rate limits can be found [here](/rest-api/rate-limits). ## Data Center Hosting diff --git a/rest-api/constraints-rate-limits-and-errors.mdx b/rest-api/constraints-rate-limits-and-errors.mdx deleted file mode 100644 index 862c0147f..000000000 --- a/rest-api/constraints-rate-limits-and-errors.mdx +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: "Constraints, Rate Limits And Errors" ---- - -### Properties and Constraints: - -#### **API Keys: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ---------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------- | -| API Keys | 100 characters (UTF8mb4 Characters) | This covers all the languages and even emojis. (One emoji uses two characters). | -| Maximum number of APIs keys that can be created for an app | 25 | Contact support if you need additional API keys for your application. | - -#### **Users and Groups: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| Character limits for UIDs and GUIDs | 100 characters | Use alphanumeric characters with dashes only; spaces are not allowed. | -| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators. | -| Maximum users in a group (without delivery & read receipts) | 50,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance. | -| Maximum groups a user can be a part of | 2000 | Users exceeding this limit must leave existing groups before joining new ones. | -| Maximum number of friends for a user | 1000 | Friend relationships are bidirectional and count toward both users' limits. | -| Maximum tokens for a user | No limits | Multiple auth tokens allow users to stay logged in across different devices. | -| Maximum Number of Bot users that can be created | 25 | Bot users are special accounts for automated messaging and integrations. | -| Bot UID character limit | 50 characters | Bot UIDs have a shorter limit than regular user UIDs. | -| Maximum number of groups | No limits | Create as many groups as needed; billing is based on active users. | -| Maximum number of unread messages per user | No limits | Unread counts are tracked per conversation for accurate badge displays. | -| Maximum number of users that can be created for an app | No limits | User creation is unlimited; pricing is based on Monthly Active Users (MAU). | -| User and Group ID | 100 characters, alpha-dash (a-z, 0-9 with -and \_) without spaces . | CometChat forces the UID to all lowercase. | -| User and Group name | 100 characters, UTF8mb4 set | This covers all the languages and even emojis. | -| User and Group avatar | Must be a URL, limit of 3000 characters | CometChat doesn't save the image on its servers.. There is no limit on the image resolution. It depends on the implementation. | -| User profile | Must be a URL, limit of 3000 characters | Same as above | -| User and Group metadata | The API limit for the POST request length is 10 KB. Hence, the user's metadata information must fit in the same limit and must not exceed 5 KB. | Use metadata to store custom key-value pairs for users and groups. | -| User and Group tag | A user can have up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4 | Tags enable filtering and searching users/groups by custom categories. | -| Group password | String up to 100 characters | Only applicable for password-protected group types. | -| Group description | 255 characters, UTF8mb4 set | Provide a brief summary of the group's purpose for members. | -| Maximum active presence subscriptions | The presence subscription will be active until 1000 users are online for a single app. if more than 1000 users go online, the presence notification starting from the 1001st user will not be sent to other users. | Note, this is the higher limit applicable across subscription for friends, users with certain roles and all users | -| Typing indicators for groups | Typing indicator will be sent for a group of up to 1000 online users. | Disabled for larger groups to optimize real-time performance. | -| Unread message counts for groups | For a group with more than 300 members, the conversations and unread message counts are not updated. | Use message history APIs to track read status in large groups. | -| Delivery and read receipts for groups | Delivery and read receipts will be sent for a group of up to 300 online users. | Receipts are disabled in large groups to reduce server load. | - -#### **Roles: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------- | -| Maximum number of Roles that can be created | Maximum 25 | Roles define permissions and access levels for users. | -| Role UID | 100 characters, alpha-dash (a-z, 0-9 with -and \_) without spaces | CometChat forces the UID to lowercase. | -| Role name | 100 characters, UTF8mb4 | This covers all the languages and even emojis. | -| Role description | 255 characters, UTF8mb4 set, any language. | Describe the role's purpose and permissions clearly. | -| Metadata | No limit | Store additional role configuration as JSON key-value pairs. | - -#### **Messages: Properties and Constraints** -| Item | Property or Constraint | Notes | -| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| Maximum message size | 65 KB (~65,536 characters including metadata) | Total size limit for the entire message payload. | -| File size | Maximum file size per message: 100 MB | Applies to the uploaded file associated with the message. | -| Message Data | Arbitrary JSON (UTF-8/utf8mb4), up to 10 KB for the data object; keys with special meaning to CometChat: `text`, `attachments`, `customData`, `metadata` | Attachment properties (for example, URL and size) can be included here; the actual file limit is defined under File size. | -| Groups → Unread message count | For groups with more than 300 members, conversation and unread message counts are not updated | Use message history APIs to track read status in large groups. | -| Groups → Mark as unread | For groups with more than 300 members, the unread message counts are not updated | Feature disabled for performance optimization in large groups. | -| Groups → Message receipts | Delivery and read receipts are sent for groups with up to 300 members | Receipts are disabled in large groups to reduce server load. | -| Tags | Up to 25 tags per message; 100 characters per tag (UTF-8/utf8mb4) | Tags can be in any language. | -| User mentions | Up to 10 distinct users can be mentioned in a message | Format: `<@uid:{uid of the user}>` (example: `<@uid:cometchat-uid-1>`). | -| Reactions | Maximum 25 distinct reactions per message; reaction text up to 45 characters (UTF-8/utf8mb4) | Character counts are by Unicode code points. Emoji are supported and may use multiple code points. | - -#### **Calling: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ---------------------------------- | ------------------------------ | --------------------------------------------------------------------------------- | -| Maximum users in a call | 50 | Supports both one-on-one and group calling scenarios and it works the best with 50. | -| Default frame rate for video calls | 30 FPS | Frame rate may adapt based on network conditions. | -| Resolution for video calls | Maximum - 720p, Minimum - 180p | This depends on the layout selected and the bandwidth available at the user's end | -| Media encryption used | SRTP | Ensures secure real-time communication for all calls. | -| Audio codec used | OPUS | Optimized for low-latency voice communication. | -| Video codec used | H.264 | Widely supported codec for cross-platform compatibility. | - -#### **Webhooks: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------- | -| Webhook URL | Valid URL, maximum 255 characters | Must be a publicly accessible HTTPS endpoint. | -| Webhook ID | 50 characters, UTF8mb4 set, alphanumeric (without spaces) | Unique identifier used to manage and reference the webhook. | -| Webhook authentication username | 50 characters, alphanumeric (without spaces) | Used for HTTP Basic Authentication when calling your endpoint. | -| Webhook authentication password | 100 characters, alphanumeric (without spaces) | Keep this secure; used to verify webhook requests to your server. | - -### Rate Limits -| **Operation Type** | **Rate Limit** | **Examples / Notes** | -| ------------------------ | -------------------------- | --------------------------------------------------------------------------------- | -| Core operations | 10,000 requests/min | User connection, create/delete user, create/join/leave group | -| Standard operations | 20,000 requests/min | All other operations (sending messages, fetching conversations, updating profiles) | -| Build plan (free) | 500 requests/min | Applies to both core and standard operations | -| Send message | 30 messages/min | Per user rate limit for sending messages | -| Mark as unread | 5 requests/min | Per user rate limit for marking messages as unread | -| Data import | 60 requests/min | Rate limit for bulk data import operations | - -### Errors -| Error Code | Error Description | -| ---- | ---- | -| **Auth Errors** | | -| `AUTH_ERR_EMPTY_APPID` | Indicates empty appId in the headers. | -| `AUTH_ERR_INVALID_APPID` | Indicates invalid appId or it does not exist in a region. | -| `AUTH_ERR_EMPTY_APIKEY` | Indicates empty API Key in the headers. | -| `AUTH_ERR_APIKEY_NOT_FOUND` | Indicates incorrect API Key in the headers. | -| `AUTH_ERR_NO_ACCESS` | Indicates API Key in the headers can not be used to perform the action.

For example, the API key with authOnly scope cannot be used to create a user. | -| `AUTH_ERR_EMPTY_AUTH_TOKEN` | Indicates empty auth token in the headers. | -| `AUTH_ERR_AUTH_TOKEN_NOT_FOUND` | Indicates incorrect auth token. | -| **API Key Errors** | | -| `ERR_APIKEY_NOT_FOUND` | Indicates that the api key does not exists. | -| `ERR_APIKEY_NO_SELF_ACTION` | Indicates that the API key in the headers is same as the API key in the path param and it is performing action on it self.

The API Key should not update/delete itself. | -| **Auth Token Errors** | | -| `ERR_AUTH_TOKEN_NOT_FOUND` | Indicates that the auth token does not exists. | -| `ERR_AUTH_TOKEN_DELETE_FAILED` | Indicates that the API failed to delete the auth token. | -| `ERR_AUTH_TOKENS_DELETE_FAILED` | Indicates that the API failed to delete the auth tokens associated with the UID | -| `ERR_AUTHTOKEN_UNAVAILABLE` | Indicates that the auth token is mapped with another device. | -| `ERR_AUTHTOKEN_NOT_ACCESSIBLE` | Indicates that the auth token is mapped with another user. | -| **Subscription Errors** | | -| `ERR_PLAN_RESTRICTION` | Indicates that the feature is not available with the plan. | -| `ERR_SUBSCRIPTION_EXPIRED` | Indicates that the subscription has expired and must resubscribe to continue using the service. | -| `ERR_PLAN_QUOTA_RESTRICTION` | Indicates that the allowed limit for the feature has reached. | -| **Role Errors** | | -| `ERR_ROLE_NOT_FOUND` | Indicates that the role does not exist. | -| `ERR_ROLE_DELETE_FAILED` | Indicates that the API failed to delete the role. | -| `ERR_ROLE_DELETE_DENIED` | Indicates that the API cannot delete the role as the default role can not be deleted. | -| **User Errors** | | -| `ERR_UID_NOT_FOUND` | Indicates any one of the following:
1. UID does not exist.
2. User is soft deleted. | -| `ERR_UID_DELETE_FAILED` | Indicates that the API failed to delete the user. | -| **Bots Errors** | | -| `ERR_BOT_NOT_FOUND` | Indicates that a bot is not associated with the UID. | -| `ERR_BOT_ALREADY_EXISTS` | Indicates that a bot is already associated with the UID. | -| **Group Errors** | | -| `ERR_GUID_NOT_FOUND` | Indicates that the GUID does not exist. | -| `ERR_EMPTY_GROUP_PASS` | Indicates one from the below:
1. Empty password for password type group to create group API.
2. Empty password for pasword type group to join group API. | -| `ERR_GROUP_DELETE_FAILED` | Indicates that the API failed to delete the group. | -| `ERR_NOT_A_MEMBER` | Indicates that the user is not a member of the group. | -| `ERR_WRONG_GROUP_PASS` | Indicates password mismatch for the password type group. | -| `ERR_ALREADY_JOINED` | Indicates that the user has already joined the group. | -| `ERR_GROUP_NOT_JOINED` | Indicates that the user is trying to access the group feature without joining it. | -| `ERR_GROUP_JOIN_NOT_ALLOWED` | Indicates that the user is trying to join the private group. | -| `ERR_MEMBER_DELETE_FAILED` | Indicates that the API has failed to remove a user from the group. | -| `ERR_NO_VACANCY` | Indicates that the group is full. | -| `ERR_SAME_SCOPE` | Indicates that the existing and new scope are same. | -| `ERR_MEMBER_SCOPE_CHANGE_FAILED` | Indicates that the has failed to change the scope. | -| `ERR_NOT_A_BANNED_USER` | Indicates that the API is trying to unban non-banned user. | -| `ERR_BANNED_GROUPMEMBER` | Indicates that the banned user is trying to access the group features. | -| `ERR_ALREADY_BANNED` | Indicates that the API is trying to ban an already banned user. | -| `ERR_MEMBER_BAN_FAILED` | Indicates that the API has failed to ban a user from the group. | -| `ERR_MEMBER_UNBAN_FAILED` | Indicates that the API has failed to unban a user for the group. | -| `ERR_GROUP_NO_CLEARANCE` | Indicates that the user does not have permission to perform the action in the group.

For example, user with participant scope can not kick users with admin or moderator scope. | -| `ERR_GROUP_NO_ADMIN_SCOPE` | Indicates that the user does not have admin scope in the group. | -| `ERR_GROUP_NO_MODERATOR_SCOPE` | Indicates that the user does not have moderator scope in the group. | -| `ERR_GROUP_NO_SCOPE_CLEARANCE` | Indicates that the user does not have permission to change scope of other user. | -| `ERR_GROUP_NO_SELF_ACTION` | Indicates that the user is not allowed to perform action on himself.

For example, changing his own scope. | -| **Message Errors** | | -| `ERR_EMPTY_RECEIVER` | Indicates that the receiver cannot be empty. | -| `ERR_INVALID_RECEIVER_TYPE` | Indicates that the invalid receiver type. | -| `ERR_CONVERSATION_NOT_FOUND` | Indicates that the conversation id does not exists. | -| `ERR_CONVERSATION_NOT_ACCESSIBLE` | Indicates that the conversation id not accessible to the user.
1. A user can access his own one-to-one conversations.
2. A user can access the group conversations if he is member of the group. | -| `ERR_USER_MESSAGE_DELETE_FAILED` | Indicates that the API has failed to delete a one-to-one message. | -| `ERR_MESSAGE_ID_NOT_FOUND` | Indicates that the message does not exist. | -| `ERR_INVALID_MESSAGE_DATA` | Indicates invalid message body. | -| `ERR_EMPTY_MESSAGE_TEXT` | Indicates empty messages text for a text message. | -| `ERR_INVALID_MESSAGE_TEXT` | Indicates that the message text should be string. | -| `ERR_EMPTY_MESSAGE_CATEGORY` | Indicates message category cannot be empty. | -| `ERR_INVALID_MESSAGE_CATEGORY` | Indicates invalid message category. | -| `ERR_EMPTY_MESSAGE_TYPE` | Indicates message type cannot be empty. | -| `ERR_INVALID_MESSAGE_TYPE` | Indicates invalid message type. | -| `ERR_EMPTY_MESSAGE_FILE` | Indicates empty FILE for the media message. | -| `ERR_MESSAGE_NOT_A_SENDER` | Indicates that only sender can edit/delete the message. | -| `ERR_MESSAGE_NO_ACCESS` | Indicates user does not have access to the message.
1. For one-to-one message user should either be sender or receiver of the message.
2. For group message user should be the member of the group. | -| `ERR_MESSAGE_ACTION_NOT_ALLOWED` | Indicates that the message can not be edited or deleted.

For example, Action messages cannot be edited or deleted by the API. | -| `ERR_EMPTY_CUSTOM_DATA` | Indicates `data.customData` can not be empty for custom message. | -| `ERR_INVALID_MEDIA_MESSAGE` | Indicates invalid media message. | -| `ERR_INVALID_CUSTOM_DATA` | Indicates invalid data.customData. The customData should be valid JSON. | -| `ERR_INVALID_METADATA` | Indicates invalid data.metadata. The metadata should be valid JSON. | -| `ERR_WRONG_MESSAGE_THREAD` | Indicates conversation mismatch for parent and a new threaded message. | -| `ERR_MESSAGE_THREAD_NESTING` | Indicates nested message threading. | -| `ERR_WRONG_MESSAGE_THREAD_CATEGORY` | Indicates conversation mismatch for parent and a new threaded message. | -| **Calling Errors** | | -| `ERR_CALLING_SELF` | Indicates user is initiating call with himself. | -| `ERR_CALL_BUSY_SELF` | Indicates initiator of the call is participant of another ongoing call. | -| `ERR_CALL_BUSY_GROUP` | Indicates that for a group call, the group has and existing ongoing call. | -| `ERR_CALL_BUSY_USER` | Indicates that the recipient of the call is already busy on another call. | -| `ERR_EMPTY_CALL_SESSION_ID` | Indicates empty session id. | -| `ERR_CALL_SESSION_NOT_FOUND` | Indicates that the call does not exist. | -| `ERR_CALL_TERMINATED` | Indicates that a call is terminated.

The error response is generated when a user tries to update the status of an ended call. | -| `ERR_CALL_GROUP_ALREADY_JOINED` | Indicates that the user is already a member of the group call. | -| `ERR_CALL_GROUP_ALREADY_LEFT` | Indicates that the user trying to leave the group call has already left the call. | -| `ERR_CALL_INVALID_INIT` | Indicates that call status cannot be updated to `initiated`. | -| `ERR_CALL_USER_ALREADY_JOINED` | Indicates that the one-to-one call was already joined by the recipient of the call. | -| `ERR_CALL_GROUP_INVALID_STATUS` | Indicates invalid call status for a group call.

For example, group call cannot have a busy status. | -| `ERR_CALL_ONGOING_TO_INVALID` | Indicates updating invalid status for an ongoing call.

For example, ongoing call can not become a busy call. | -| `ERR_CALL_NOT_A_PART` | Indicates that the user is not part of the call.

For example, a third user tries to join a one-to-one call. | -| `ERR_CALL_EMPTY_JOINED_AT` | Indicates that the `joinedAt` body param is required to join a group. | -| `ERR_CALL_NOT_STARTED` | Indicates that status of call cannot be changed from initiated to ended directly. | -| **Friends Errors** | | -| `ERR_ALREADY_FRIEND` | Indicates that the users are already friends. | -| `ERR_NOT_A_FRIEND` | Indicates unfriending non-friended users. | -| `ERR_CANNOT_FORM_SELF_RELATION` | Indicates user cannot friend himself. | -| `ERR_FAILED_TO_ADD_FRIEND` | Indicates that the API has failed to add friend. | -| **Block Users Errors** | | -| `ERR_CANNOT_BLOCK_SELF` | Indicates that user cannot block himself. | -| `ERR_BLOCKED_RECEIVER` | Indicates user has blocked the receiver of the message/call. | -| `ERR_BLOCKED_SENDER` | Indicates that the iniator of the call is blocked by the recipient. | -| **Extension Errors** | | -| `ERR_EXTENSION_NOT_FOUND` | Indicates extension does not exist. | -| `ERR_BLOCKED_BY_EXTENSION` | Indicates that the message is blocked by the extension.

For example, human moderation extension can block the message sending. | -| **Webhook Errors** | | -| `ERR_WEBHOOK_NOT_FOUND` | Indicates that the webhook does not exist. | -| `ERR_BLOCKED_BY_WEBHOOK` | Indicates that the message is blocked by the extension. | -| `ERR_TRIGGER_NOT_FOUND` | Indicates trigger does not exist. | -| **Data Import Errors** | | -| `ERR_IMPORT_MUID_ALREADY_EXISTS` | The message `muid` is expected to be unique. The muid will be a unique Identifier of the message. | -| `ERR_IMPORT_INVALID_MESSAGE_FORMAT` | The value for messages property should be an array of message objects. | -| `ERR_IMPORT_INVALID_USER_FORMAT` | The value for users property should be an array of user objects. | -| `ERR_IMPORT_INVALID_MEMBER_FORMAT` | The value for members property should be an array of member objects. | -| `ERR_IMPORT_INVALID_JOINEDAT` | The value for `joinedAt` should be greater than `createdAt` and less than the current timestamp. | -| `ERR_IMPORT_INVALID_GROUP_FORMAT` | The value for groups property should be an array of group objects. | -| **General Errors** | | -| `ERR_INVALID_API_VERSION` | Indicates invalid API version. | -| `ERR_API_NOT_FOUND` | Indicates one from the list below:
1. API endpoint does not exist.
2. The endpoint does not use HTTP request method using which API is called. | -| `ERR_MISSION_FAILED` | Indicates one from the list below:
1. Fatal error.
2. Database Connection Timeout. | -| `ERR_BAD_REQUEST` | Indicates the failed validations for the body params. | -| `ERR_OPERATION_FAILED` | Indicates database operation failure. | -| `ERR_EXCEPTION` | Indicates incorrectly/poorly handled exception. | -| `ERR_TOO_MANY_REQUESTS` | Indicates rate limiting. | -| `ERR_BAD_ERROR_RESPONSE` | Indicates one from the list below:
1. The API developer has used unknown error code.
2. The API developer hasn't reassigned the error code. | -| **Websocket Errors** | | -| `ERR_WS_INIT_FAILED` | Indicates failure at Web Socket Server. | -| `ERR_WS_APP_INIT_FAILED` | Indicates App creation failure at Web Socket Server. | -| `ERR_WS_APP_DESTROY_FAILED` | Indicates App delete failure at Web Socket Server. | -| `ERR_WS_ROLE_CREATION_FAILED` | Indicates role creation failure at Web Socket Server. | -| `ERR_WS_ROLE_DELETION_FAILED` | Indicates role deletion failure at Web Socket Server. | -| `ERR_WS_USER_CREATION_FAILED` | Indicates user creation failure at Web Socket Server. | -| `ERR_WS_USER_UPDATION_FAILED` | Indicates user updation failure at Web Socket Server. | -| `ERR_WS_GROUP_CREATION_FAILED` | Indicates group creation failure at Web Socket Server. | -| `ERR_WS_GROUP_DELETION_FAILED` | Indicates group deletion failure at Web Socket Server. | -| `ERR_WS_GROUP_JOIN_FAILED` | Indicates group member join failure at Web Socket Server. | diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index 23c9c98d1..caeeb2d6c 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -59,14 +59,9 @@ curl -X POST \ *Replace appId, apiKey and region in the curl request.* -## Sample Code +## Constraints -To further assist you in integrating CometChat's Data Import API into your application, we provide sample code snippets in popular programming languages such as JavaScript, Python, NodeJS, and PHP. These snippets demonstrate how to make API requests and handle responses, helping you kickstart your development process.\` - - - - - -## Support - -If you encounter any issues or have questions regarding CometChat's REST API, our dedicated support team is here to assist you. Feel free to create a [support ticket](https://help.cometchat.com/hc/en-us/requests/new) or seek real-time support via the [CometChat Dashboard](https://app.cometchat.com/). we'll be more than happy to help you resolve any issues promptly. \ No newline at end of file +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Entities per request | 50 | Transmit up to 50 entities within a single request for efficient processing | +| Requests per minute | 60 | Rate limit for data import endpoints; exceeding returns a rate limit error | \ No newline at end of file diff --git a/rest-api/data-migration-constraints-rate-limits-and-errors.mdx b/rest-api/data-migration-constraints-rate-limits-and-errors.mdx deleted file mode 100644 index 8ec1ed4d2..000000000 --- a/rest-api/data-migration-constraints-rate-limits-and-errors.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Constraints, Rate Limits And Errors" ---- - -## Properties and Constraints: - -| Item | Property or Constraint | Notes | -| ------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Number of entities required in each request | 50 | Our API boosts the efficiency of processing requests by enabling users to transmit up to 50 entities within a single request. | -| Number of requests allowed in a minute | 60 | To ensure equitable usage and uphold service quality standards, CometChat enforces rate limits on each API endpoint. Specifically, a maximum of 60 requests per minute is permitted for these data import endpoints. Upon exceeding this limit, the API will respond with a rate limit error. | - -## Errors: - -| Error | Description | -| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| `ERR_IMPORT_MUID_ALREADY_EXISTS` | The message `muid` is expected to be unique. The muid will be a unique Identifier of the message. | -| `ERR_IMPORT_INVALID_MESSAGE_FORMAT` | The value for messages property should be an array of message objects | -| `ERR_IMPORT_INVALID_USER_FORMAT` | The value for users property should be an array of user objects. | -| `ERR_IMPORT_INVALID_MEMBER_FORMAT` | The value for members property should be an array of member objects. | -| `ERR_IMPORT_INVALID_JOINEDAT` | The value for `joinedAt` should be greater than `createdAt` and less than the current timestamp. | -| `ERR_IMPORT_INVALID_GROUP_FORMAT` | The value for groups property should be an array of group objects. | -| `ERR_TOO_MANY_REQUESTS` | Too many requests for data import API. 60 per minute is the maximum request allowed. Please retry for seconds after 58. | - diff --git a/rest-api/groups.mdx b/rest-api/groups.mdx index cb0ae5926..9a44699f5 100644 --- a/rest-api/groups.mdx +++ b/rest-api/groups.mdx @@ -30,3 +30,18 @@ The following table lists the properties that the Group API supports. | **membersCount** | integer | Specifies the number of members in the group. | | **createdAt** | integer | UNIX Timestamp specifies the time when the group was created. | | **conversationId** | string | Specifies the conversation ID of the group. | + + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators | +| Maximum users in a group (without receipts) | 50,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance | +| Group password | 100 characters max | Only applicable for password-protected groups | +| Group description | 255 characters (UTF8mb4) | Brief summary of the group's purpose | +| Maximum groups | No limit | Create as many groups as needed; billing based on active users | +| Typing indicators for groups | Up to 1000 online users | Disabled for larger groups to optimize performance | +| Unread message counts for groups | Up to 300 members | Not updated for groups with more than 300 members | +| Delivery and read receipts for groups | Up to 300 online users | Disabled in large groups to reduce server load | +| Active presence subscriptions | Up to 1000 online users | Presence notifications not sent beyond this limit | diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 86f6cbbd0..3647810c5 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -41,3 +41,11 @@ curl -X POST \ *key and secret need to be replaced in the curl request.* + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| App name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| App version | v3 | Only option available | +| Maximum collaborators per app | 25 | Team management limit | diff --git a/rest-api/management-apis/webhooks/overview.mdx b/rest-api/management-apis/webhooks/overview.mdx index 835817d04..b7dd5e502 100644 --- a/rest-api/management-apis/webhooks/overview.mdx +++ b/rest-api/management-apis/webhooks/overview.mdx @@ -33,6 +33,16 @@ Here is the list of properties associated with Webhook. | password | string | This field should contain the secret password that corresponds to the provided username. | | enabled | boolean | The enabled field is a boolean flag that determines whether a webhook is currently active and capable of receiving and processing incoming events | +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum webhooks per app | 25 | Contact support if you need more | +| Webhook URL | 255 characters max | Must be a publicly accessible HTTPS endpoint | +| Webhook ID | 50 characters, alphanumeric (UTF8mb4, no spaces) | Unique identifier for managing the webhook | +| Authentication username | 50 characters, alphanumeric (no spaces) | Used for HTTP Basic Authentication | +| Authentication password | 100 characters, alphanumeric (no spaces) | Keep secure; used to verify webhook requests | + ### The list of triggers that are supported: | triggerId | Description | diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index 16e74cf72..1964c181f 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -21,6 +21,19 @@ Messaging is one of the core features of CometChat. We've thoughtfully created A +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum message size | 65 KB (~65,536 characters including metadata) | Total size limit for the entire message payload | +| File size per message | 100 MB | Applies to the uploaded file associated with the message | +| Message data object | 10 KB max (UTF8mb4) | Keys with special meaning: text, attachments, customData, metadata | +| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Tags can be in any language | +| User mentions | Up to 10 distinct users | Format: `<@uid:{uid of the user}>` | +| Reactions | Max 25 distinct reactions, 45 characters each (UTF8mb4) | Emoji supported (may use multiple code points) | +| Unread message count (groups) | Up to 300 members | Not updated for larger groups | +| Message receipts (groups) | Up to 300 online users | Delivery/read receipts disabled in large groups | + The following table lists the properties that the Message API supports. | Parameters | Type | Description | @@ -29,275 +42,3 @@ The following table lists the properties that the Message API supports. | `apiKey` | String | Authentication key for the app | | `region` | String | Geographic region for the app | | `baseUrl` | String | Base URL for API requests | - -## Interactive Messages: - -## Element List: - -The following mentioned elements will come inside `formFields` key mentioned above: - -## 1. LabelElement - - - -```json JSON -{ - "elementType": "label", - "elementId": "", - "text": "Something to show" -} -``` - - - -| JSON Property | Type | Description | -| ------------- | ------ | --------------------------------------------------- | -| text | String | Required, text to be displayed in the label element | - -## 2. TextInputElement - - - -```json JSON -{ - "elementType": "textInput", - "elementId": "", - "optional": false, - "label": "name", - "maxLines": 5, - "placeholder": { - "text": "Enter digits" - } -} -``` - - - -| JSON Property | Type | Description | Default Value | -| ------------- | ------- | ------------------------------------------------------------------- | ------------- | -| optional | boolean | Optional, will be validated when doing the submission based on this | true | - -## 3. ButtonElement - - - -```javascript JSON -{ - "elementType": "button", - "elementId": "", - "buttonText": "Press it", - "disableAfterInteracted": true - "action": { - "url" : "" - "method": "" - "payload": payload; - "headers":"headers"; - "dataKey":""; - "type": "apiAction", - "url": "https//abc.com", - "payload": "", - "headers": "" - } -} -``` - - - -### a. apiAction - - - -```json JSON -{ - "method": "", - "payload": {}, - "headers": {}, - "dataKey": "", - "actionType": "apiAction", - "url": "https//abc.com" -} -``` - - - -### b. urlNavigation(both fields are mandatory) - - - -```json JSON -{ - "url": "", - "actionType": "urlNavigation" -} -``` - - - -| JSON Property | Type | Description | Default Value | -| ------------- | ------ | ----------- | ------------- | -| url | String | Required, | | -| actionType | String | required | urlNavigation | - -### c. DeepLinking(both fields are mandatory) - - - -```json JSON -{ - "url": "", - "actionType": "deepLinkAction" -} -``` - - - -| JSON Property | Type | Description | Default Value | -| ------------- | ------ | ----------- | -------------- | -| url | String | Required, | | -| actionType | String | required | deepLinkAction | - -### d. CustomAction (only actionType is mandatory): - - - -```json JSON -{ - "actionType": "customAction" -} -``` - - - -## 4. CheckboxElement - - - -```json JSON -{ - "elementType": "checkbox", - "elementId": "", - "optional": false, - "label": "Select multiple", - "defaultValue": [ - "", - "" - ], - "options": [ - { - "value": "option1", - "label": "This is option 1" - }, - { - "value": "option1", - "label": "This is option 1" - } - ] -} -``` - - - -| JSON Property | Type | Description | Default Value | -| ------------- | --------------- | ----------- | ------------- | -| optional | boolean | optional, | true | -| label | String | required | | -| defaultValue | Array of string | optional | | - -## 5. DropdownElement/SpinnerElement(Android) - - - -```json JSON -{ - "elementType": "dropdown", - "elementId": "", - "optional": true, - "label": "Select multiple", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "This is option 1" - }, - { - "value": "option1", - "label": "This is option 1" - } - ] -} -``` - - - -## 6. RadioButtonElement - - - -```json JSON -{ - "elementType": "radio", - "elementId": "", - "optional": false, - "label": "Select multiple", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "This is option 1" - }, - { - "value": "option2", - "label": "This is option 1" - } - ] -} -``` - - - -## 7. SingleSelectElement - - - -```json JSON -{ - "elementType": "singleSelect", - "elementId": "", - "optional": false, - "label": "Select multiple", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "This is option 1" - }, - { - "value": "option2", - "label": "This is option 1" - } - ] -} -``` - - - -## 8. DateTimeElement - - - -```json JSON -{ - "elementType": "dateTime", - "elementId": "element1", - "optional": false, - "label": "Contact Number", - "defaultValue": false, - "dateTimeFormat": "Y-m-d H:i:ss", - "mode": "date", - "timezoneCode": "Asia/Kolkata", - "from": "2024-06-23", - "to": "2024-06-24" -} -``` - - diff --git a/rest-api/multi-tenancy-constraints-rate-limits-and-errors.mdx b/rest-api/multi-tenancy-constraints-rate-limits-and-errors.mdx deleted file mode 100644 index e185b13eb..000000000 --- a/rest-api/multi-tenancy-constraints-rate-limits-and-errors.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Constraints, Rate Limits And Errors" ---- - -## Properties and Constraints: - -### Multi-Tenancy Apps: - -| Item | Property or Constraint | Notes | -| ------------------------------------------------------------- | --------------------------- | --------------------------------- | -| App length | 100 characters, UTF8mb4 set | | -| App version | v3 | This is the only option available | -| Number of Collaborators that can be created (team management) | Maximum 25 | | - -### Webhooks: - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------ | --------------------------------------------------------- | --------- | -| Maximum number of webhooks in an app | Maximum 25 | | -| Webhook URL | Valid URL, maximum 255 characters | | -| Webhook ID | 50 characters, UTF8mb4 set, alphanumeric (without spaces) | | -| Webhook authentication username | 50 characters, alphanumeric (without spaces) | | -| Webhook authentication password | 100 characters, alphanumeric (without spaces) | | - -## Errors: - -### Multi-Tenancy Apps: - -| Code | Description | -| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Apps** | | -| `ERR_APP_CREATION_FAILED_MAX_LIMIT` | You have reached the maximum number of complimentary apps allowed. To proceed, consider deleting an existing app or upgrading one of your apps to a paid plan. Once you've made the necessary adjustments, you can try again. | -| `ERR_APP_ARCHIVED` | The app has been archived and would be permanently deleted after 30 days | -| `ERR_APP_DELETION` | The application with the returned App ID is currently associated with a paid subscription plan. This means that it is actively being used with paid features and services. If you are considering deleting the application despite its active subscription, we recommend reaching out to the CometChat support team for further assistance and guidance. | -| `ERR_APP_NOT_FOUND` | Indicates any one of the following: 1. AppId does not exist. 2. AppId is archived. | -| **Extensions** | | -| `ERR_EXTENSION_NOT_FOUND` | The provided extension ID does not correspond to any existing microservice. Please verify the ID and try again. | -| `ERR_EXTENSION_INACTIVE` | The operation failed because the provided extension ID is currently inactive. | -| **Team Management** | | -| `ERR_ALREADY_AN_OWNER` | The user trying to perform the operation is already registered as an owner of the App. | -| `ERR_SELF_ACTION_DENIED` | The user cannot add itself as a collaborator | -| `ERR_NOT_A_COLLABORATOR` | The user identified by the entered email is not a collaborator for the requested app. | - -### Webhooks: - -| Code | Description | -| ------------------------------ | ---------------------------------------------- | -| ERR\_WEBHOOK\_NOT\_FOUND | Indicates the webhook does not exist. | -| ERR\_BAD\_REQUEST | Indicates a validation error. | -| AUTH\_ERR\_EMPTY\_AUTH\_HEADER | Indicates the authentication header is missing | diff --git a/rest-api/rate-limits.mdx b/rest-api/rate-limits.mdx new file mode 100644 index 000000000..64fe948ba --- /dev/null +++ b/rest-api/rate-limits.mdx @@ -0,0 +1,40 @@ +--- +title: "Rate Limits" +--- + +CometChat enforces rate limits to ensure fair usage and maintain service quality across all applications. These limits apply to API requests made to CometChat servers. + +## Global Rate Limits + +| Operation Type | Rate Limit | Examples | +| -------------- | ---------- | -------- | +| Core operations | 10,000 requests/min | User connection, create/delete user, create/join/leave group | +| Standard operations | 20,000 requests/min | Sending messages, fetching conversations, updating profiles | +| Build plan (free) | 500 requests/min | Applies to both core and standard operations | + +## Per-User Rate Limits + +| Operation | Rate Limit | Notes | +| --------- | ---------- | ----- | +| Send message | 30 messages/min | Per user limit for sending messages | +| Mark as unread | 5 requests/min | Per user limit for marking messages as unread | + +## Data Import Rate Limits + +| Operation | Rate Limit | Notes | +| --------- | ---------- | ----- | +| Data import | 60 requests/min | Rate limit for bulk data import operations | + +## Handling Rate Limits + +When you exceed a rate limit, the API will return the following error: + +| Error Code | Description | +| ---------- | ----------- | +| `ERR_TOO_MANY_REQUESTS` | Too many requests. You have exceeded the rate limit. Please retry after the specified time. | + +To handle rate limits gracefully: + +1. Implement exponential backoff when retrying failed requests +2. Monitor your API usage to stay within limits +3. Contact support if you need higher limits for your use case diff --git a/rest-api/roles.mdx b/rest-api/roles.mdx index 2a426eb68..2cd580008 100644 --- a/rest-api/roles.mdx +++ b/rest-api/roles.mdx @@ -14,4 +14,13 @@ The following table lists the properties that the Role API supports. | **metadata** | nested object | (optional)\_ Specifies a JSON object to store up to 1.6K characters (JSON stringified metadata) for additional role information. | | **settings** | array | (optional)\_ Role settings that is used for restricting list users/send message API. Possible values for listUsers & sendMessagesTo are `all` and `friendsOnly` | | **settings.listUsers** | string | (optional)\_ Restricts users listing to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | -| **settings.sendMessagesTo** | string | Restricts sending message to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | \ No newline at end of file +| **settings.sendMessagesTo** | string | Restricts sending message to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Role UID | 100 characters, alpha-dash (a-z, 0-9, -, _) | CometChat forces the UID to lowercase | +| Role name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Role description | 255 characters (UTF8mb4) | Describe the role's purpose and permissions | +| Metadata | No limit | Store additional role configuration as JSON key-value pairs | \ No newline at end of file diff --git a/rest-api/users.mdx b/rest-api/users.mdx index f7933c2a8..f5a16e929 100644 --- a/rest-api/users.mdx +++ b/rest-api/users.mdx @@ -22,3 +22,20 @@ The following table lists the properties that the User API supports. | **withAuthToken** | boolean | (optional)\_ Includes authToken of the created user in the response.If set to true, you do not have to make a separate API call to create authToken. | | **createdAt** | Integer | UNIX Timestamp indicates the time when the user was created. | +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| UID/GUID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | +| User/Group name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Avatar URL | 3000 characters max | CometChat doesn't store the image; no resolution limit | +| Profile URL | 3000 characters max | Same as avatar | +| Metadata | 5 KB max (within 10 KB POST limit) | Store custom key-value pairs | +| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Enable filtering and searching | +| Maximum groups per user | 2000 | Must leave existing groups to join new ones beyond limit | +| Maximum friends per user | 1000 | Bidirectional relationships count toward both users' limits | +| Maximum auth tokens per user | No limit | Allows login across multiple devices | +| Maximum Bot users per app | 25 | Special accounts for automated messaging | +| Bot UID character limit | 50 characters | Shorter than regular user UIDs | +| Maximum users per app | No limit | Pricing based on Monthly Active Users (MAU) | + From 58da44300b78b2ccb0368c91f9786e5de5ea9f37 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Thu, 12 Feb 2026 20:11:35 +0530 Subject: [PATCH 10/56] cac changes --- chat-apis.json | 88 ++------------------------ data-import-apis.json | 4 +- rest-api/moderation/delete-message.mdx | 3 + rest-api/moderation/get-message.mdx | 3 + rest-api/moderation/list-messages.mdx | 3 + rest-api/moderation/send-message.mdx | 3 + rest-api/moderation/update-message.mdx | 3 + 7 files changed, 21 insertions(+), 86 deletions(-) create mode 100644 rest-api/moderation/delete-message.mdx create mode 100644 rest-api/moderation/get-message.mdx create mode 100644 rest-api/moderation/list-messages.mdx create mode 100644 rest-api/moderation/send-message.mdx create mode 100644 rest-api/moderation/update-message.mdx diff --git a/chat-apis.json b/chat-apis.json index c9ffc7799..cb308fbbc 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -2487,7 +2487,7 @@ "Messages" ], "summary": "Delete Message", - "description": "Deletes a message from the conversation. By default, soft-deletes showing 'message deleted' placeholder. Use 'permanent=true' query param for complete removal. Triggers real-time events to update connected clients.", + "description": "Deletes a message from the conversation. By default, soft-deletes showing 'message deleted' placeholder. Use 'permanent=true' query param for complete removal.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -2633,86 +2633,6 @@ ] } }, - "/messages/{id}/interacted": { - "patch": { - "tags": [ - "Messages" - ], - "summary": "Mark message as Interacted", - "description": "Marks a message as interacted by a user. Requires 'onBehalfOf' header. Use to track engagement with interactive messages like polls, buttons, or cards for analytics.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "interactions": { - "description": "A list of element Ids to be marked as interacted!", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Marking Message as Interacted", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The message id 7 has been marked as interacted for the user superhero1." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, "/messages/{id}/reactions": { "get": { "tags": [ @@ -7228,7 +7148,7 @@ } }, "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", "type": "object", "default": { "uids": [ @@ -16046,7 +15966,7 @@ "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", + "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", "properties": { "uids": { "description": "Array of user UIDs to receive the message", @@ -16733,7 +16653,7 @@ "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", + "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", "properties": { "uids": { "description": "Array of user UIDs to receive the message", diff --git a/data-import-apis.json b/data-import-apis.json index 54887fb00..ffe330da1 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -2782,7 +2782,7 @@ "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", + "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", "properties": { "uids": { "description": "Array of user UIDs to receive the message", @@ -3469,7 +3469,7 @@ "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. Cannot be used with 'receiver' parameter", + "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", "properties": { "uids": { "description": "Array of user UIDs to receive the message", diff --git a/rest-api/moderation/delete-message.mdx b/rest-api/moderation/delete-message.mdx new file mode 100644 index 000000000..0a1cb157f --- /dev/null +++ b/rest-api/moderation/delete-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/messages/{id} +--- \ No newline at end of file diff --git a/rest-api/moderation/get-message.mdx b/rest-api/moderation/get-message.mdx new file mode 100644 index 000000000..4c4c5f00d --- /dev/null +++ b/rest-api/moderation/get-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/messages/{id} +--- \ No newline at end of file diff --git a/rest-api/moderation/list-messages.mdx b/rest-api/moderation/list-messages.mdx new file mode 100644 index 000000000..1a07498b4 --- /dev/null +++ b/rest-api/moderation/list-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/messages +--- \ No newline at end of file diff --git a/rest-api/moderation/send-message.mdx b/rest-api/moderation/send-message.mdx new file mode 100644 index 000000000..7cf12c0d0 --- /dev/null +++ b/rest-api/moderation/send-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/messages +--- \ No newline at end of file diff --git a/rest-api/moderation/update-message.mdx b/rest-api/moderation/update-message.mdx new file mode 100644 index 000000000..c0c9c61c2 --- /dev/null +++ b/rest-api/moderation/update-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/messages/{id} +--- \ No newline at end of file From 8b0b3d5603dca59588fe496ae98e3e859b0135cb Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Fri, 13 Feb 2026 01:07:23 +0530 Subject: [PATCH 11/56] Updated the moderation section. --- docs.json | 269 ++++++++++-------- fundamentals/multi-tenancy.mdx | 11 +- .../management-apis/webhooks/overview.mdx | 14 +- 3 files changed, 169 insertions(+), 125 deletions(-) diff --git a/docs.json b/docs.json index 18b6bd028..0f63070cc 100644 --- a/docs.json +++ b/docs.json @@ -5096,63 +5096,108 @@ "tab": "AI Moderation", "pages": [ "moderation/overview", - "moderation/getting-started", - "moderation/rules-management", - "moderation/lists-management", - "moderation/flagged-messages", - "moderation/blocked-messages", - "moderation/reviewed-messages", - "moderation/constraints-and-limits", { - "group": "OpenAI", + "group": "Setup", "pages": [ - "moderation/open-ai/openai-overview", - "moderation/open-ai/openai-custom" + "moderation/getting-started", + "moderation/rules-management", + "moderation/lists-management" ] }, { - "group": "Custom API", + "group": "Message Management", "pages": [ - "moderation/custom/custom-api-overview", - "moderation/custom/custom-api" + "moderation/flagged-messages", + "moderation/blocked-messages", + "moderation/reviewed-messages" ] }, { - "group": "Resources", + "group": "Providers", "pages": [ { - "group": "Moderation APIs", + "group": "OpenAI", "pages": [ - "moderation/api-explorer", - "moderation/apis/list-rules", - "moderation/apis/add-rule", - "moderation/apis/get-rule", - "moderation/apis/update-rule", - "moderation/apis/remove-rule", - "moderation/apis/list-keywords", - "moderation/apis/add-keywords", - "moderation/apis/get-keyword", - "moderation/apis/update-keyword", - "moderation/apis/remove-keyword", - "moderation/apis/get-rule-revisions", - "moderation/apis/list-blocked-messages", - "moderation/apis/approve-blocked-messages", - "moderation/apis/review-blocked-message", - "moderation/apis/list-flagged-messages", - "moderation/apis/blockreview-flagged-message", - "moderation/apis/list-reviewed-messages", - "moderation/apis/flag-a-message", - "moderation/apis/create-reasons", - "moderation/apis/list-reasons", - "moderation/apis/get-reason-details", - "moderation/apis/update-reason-details", - "moderation/apis/delete-reasons" + "moderation/open-ai/openai-overview", + "moderation/open-ai/openai-custom" ] }, + { + "group": "Custom API", + "pages": [ + "moderation/custom/custom-api-overview", + "moderation/custom/custom-api" + ] + } + ] + }, + { + "group": "Reference", + "pages": [ + "moderation/constraints-and-limits", "moderation/legacy-extensions" ] } ] + }, + { + "tab": "APIs", + "pages": [ + "moderation/api-explorer", + { + "group": "Rules", + "pages": [ + "moderation/apis/list-rules", + "moderation/apis/add-rule", + "moderation/apis/get-rule", + "moderation/apis/update-rule", + "moderation/apis/remove-rule", + "moderation/apis/get-rule-revisions" + ] + }, + { + "group": "Keywords", + "pages": [ + "moderation/apis/list-keywords", + "moderation/apis/add-keywords", + "moderation/apis/get-keyword", + "moderation/apis/update-keyword", + "moderation/apis/remove-keyword" + ] + }, + { + "group": "Blocked Messages", + "pages": [ + "moderation/apis/list-blocked-messages", + "moderation/apis/approve-blocked-messages", + "moderation/apis/review-blocked-message" + ] + }, + { + "group": "Flagged Messages", + "pages": [ + "moderation/apis/list-flagged-messages", + "moderation/apis/blockreview-flagged-message", + "moderation/apis/flag-a-message" + ] + }, + { + "group": "Reviewed Messages", + "pages": [ + "moderation/apis/list-reviewed-messages" + ] + }, + { + "group": "Reasons", + "pages": [ + "moderation/apis/create-reasons", + "moderation/apis/list-reasons", + "moderation/apis/get-reason-details", + "moderation/apis/update-reason-details", + "moderation/apis/delete-reasons" + ] + } + ] } ] }, @@ -5192,50 +5237,7 @@ "notifications/constraints-and-limits" ] }, - { - "group": "Resources", - "pages": [ - { - "group": "Push APIs", - "pages": [ - "notifications/apis/push/list-fcm-providers", - "notifications/apis/push/add-fcm-provider", - "notifications/apis/push/update-fcm-provider", - "notifications/apis/push/delete-fcm-provider", - "notifications/apis/push/change-default-fcm-provider", - "notifications/apis/push/list-apns-providers", - "notifications/apis/push/add-apns-provider", - "notifications/apis/push/update-apns-providers", - "notifications/apis/push/delete-apns-providers", - "notifications/apis/push/change-default-apns-provider", - "notifications/apis/push/register-push-token", - "notifications/apis/push/list-push-tokens", - "notifications/apis/push/delete-push-token", - "notifications/apis/push/unregister-push-tokens", - "notifications/apis/push/get-custom-provider", - "notifications/apis/push/save-custom-provider", - "notifications/apis/push/update-custom-provider", - "notifications/apis/push/delete-custom-provider", - "notifications/apis/push/list-settings", - "notifications/apis/push/update-settings", - "notifications/apis/push/reset-settings", - "notifications/apis/push/list-preferences", - "notifications/apis/push/update-preferences", - "notifications/apis/push/reset-preferences", - "notifications/apis/push/get-timezone", - "notifications/apis/push/update-timezone", - "notifications/apis/push/get-contact-details", - "notifications/apis/push/update-contact-details", - "notifications/apis/push/delete-contact-details", - "notifications/apis/push/mute-conversations", - "notifications/apis/push/unmute-conversations", - "notifications/apis/push/list-muted-conversations", - "notifications/apis/push/notifications-logs" - ] - }, - "notifications/push-notifications-extension-legacy" - ] - } + "notifications/push-notifications-extension-legacy" ] }, { @@ -5246,25 +5248,7 @@ "notifications/email-preferences", "notifications/email-templates", "notifications/email-custom-providers", - { - "group": "Resources", - "pages": [ - { - "group": "Email APIs", - "pages": [ - "notifications/apis/email/get-sendgrid-credentials", - "notifications/apis/email/save-sendgrid-credentials", - "notifications/apis/email/update-sendgrid-credentials", - "notifications/apis/email/delete-sendgrid-credentials", - "notifications/apis/email/get-custom-provider", - "notifications/apis/email/save-custom-provider", - "notifications/apis/email/update-custom-provider", - "notifications/apis/email/delete-custom-provider" - ] - }, - "notifications/email-notifications-extension-legacy" - ] - } + "notifications/email-notifications-extension-legacy" ] }, { @@ -5275,23 +5259,74 @@ "notifications/sms-preferences", "notifications/sms-templates", "notifications/sms-custom-providers", + "notifications/sms-notifications-extension-legacy" + ] + }, + { + "tab": "APIs", + "pages": [ { - "group": "Resources", + "group": "Push APIs", "pages": [ - { - "group": "SMS APIs", - "pages": [ - "notifications/apis/sms/get-twilio-credentials", - "notifications/apis/sms/save-twilio-credentials", - "notifications/apis/sms/update-twilio-credentials", - "notifications/apis/sms/delete-twilio-credentials", - "notifications/apis/sms/get-custom-provider", - "notifications/apis/sms/save-custom-provider", - "notifications/apis/sms/update-custom-provider", - "notifications/apis/sms/delete-custom-provider" - ] - }, - "notifications/sms-notifications-extension-legacy" + "notifications/apis/push/list-fcm-providers", + "notifications/apis/push/add-fcm-provider", + "notifications/apis/push/update-fcm-provider", + "notifications/apis/push/delete-fcm-provider", + "notifications/apis/push/change-default-fcm-provider", + "notifications/apis/push/list-apns-providers", + "notifications/apis/push/add-apns-provider", + "notifications/apis/push/update-apns-providers", + "notifications/apis/push/delete-apns-providers", + "notifications/apis/push/change-default-apns-provider", + "notifications/apis/push/register-push-token", + "notifications/apis/push/list-push-tokens", + "notifications/apis/push/delete-push-token", + "notifications/apis/push/unregister-push-tokens", + "notifications/apis/push/get-custom-provider", + "notifications/apis/push/save-custom-provider", + "notifications/apis/push/update-custom-provider", + "notifications/apis/push/delete-custom-provider", + "notifications/apis/push/list-settings", + "notifications/apis/push/update-settings", + "notifications/apis/push/reset-settings", + "notifications/apis/push/list-preferences", + "notifications/apis/push/update-preferences", + "notifications/apis/push/reset-preferences", + "notifications/apis/push/get-timezone", + "notifications/apis/push/update-timezone", + "notifications/apis/push/get-contact-details", + "notifications/apis/push/update-contact-details", + "notifications/apis/push/delete-contact-details", + "notifications/apis/push/mute-conversations", + "notifications/apis/push/unmute-conversations", + "notifications/apis/push/list-muted-conversations", + "notifications/apis/push/notifications-logs" + ] + }, + { + "group": "Email APIs", + "pages": [ + "notifications/apis/email/get-sendgrid-credentials", + "notifications/apis/email/save-sendgrid-credentials", + "notifications/apis/email/update-sendgrid-credentials", + "notifications/apis/email/delete-sendgrid-credentials", + "notifications/apis/email/get-custom-provider", + "notifications/apis/email/save-custom-provider", + "notifications/apis/email/update-custom-provider", + "notifications/apis/email/delete-custom-provider" + ] + }, + { + "group": "SMS APIs", + "pages": [ + "notifications/apis/sms/get-twilio-credentials", + "notifications/apis/sms/save-twilio-credentials", + "notifications/apis/sms/update-twilio-credentials", + "notifications/apis/sms/delete-twilio-credentials", + "notifications/apis/sms/get-custom-provider", + "notifications/apis/sms/save-custom-provider", + "notifications/apis/sms/update-custom-provider", + "notifications/apis/sms/delete-custom-provider" ] } ] diff --git a/fundamentals/multi-tenancy.mdx b/fundamentals/multi-tenancy.mdx index d2ac872d5..6cb0dd4b0 100644 --- a/fundamentals/multi-tenancy.mdx +++ b/fundamentals/multi-tenancy.mdx @@ -23,6 +23,15 @@ A CometChat app represents a self-contained chat environment with its own users, - Aggregator applications - Vertical-specific software (education, healthcare, etc.) +## Authentication + +All Management API requests must be authenticated using the key and secret provided when multi-tenancy is enabled for your account. Include these credentials in the request headers: + +``` +key: YOUR_KEY +secret: YOUR_SECRET +``` + ## Common Use Cases Multi-tenancy works well for scenarios like: @@ -54,6 +63,6 @@ This enables automation and "configuration as code" patterns for managing large ## Getting Started -To enable multi-tenancy for your account, [contact our support team](https://www.cometchat.com/contact-sales). Once approved, you'll receive your App Management credentials and can begin creating tenant apps. +To enable multi-tenancy for your account, [contact our support team](https://www.cometchat.com/contact-sales). Once approved, you'll receive your App Management key and secret, and can begin creating tenant apps. For detailed API documentation on managing apps programmatically, refer to the [Management REST APIs](/rest-api/management-apis). diff --git a/rest-api/management-apis/webhooks/overview.mdx b/rest-api/management-apis/webhooks/overview.mdx index b7dd5e502..1ed9bd278 100644 --- a/rest-api/management-apis/webhooks/overview.mdx +++ b/rest-api/management-apis/webhooks/overview.mdx @@ -10,7 +10,7 @@ title: "Overview" -### Please review the following requirements for setting up your webhook endpoint: +### Please review the following requirements for setting up your webhook endpoint 1. Your webhook endpoint must be accessible over HTTPS. This is essential to ensure the security and integrity of data transmission. @@ -43,7 +43,7 @@ Here is the list of properties associated with Webhook. | Authentication username | 50 characters, alphanumeric (no spaces) | Used for HTTP Basic Authentication | | Authentication password | 100 characters, alphanumeric (no spaces) | Keep secure; used to verify webhook requests | -### The list of triggers that are supported: +### The list of triggers that are supported | triggerId | Description | | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | @@ -80,9 +80,9 @@ Here is the list of properties associated with Webhook. | [`recording_generated`](#recording_generated) | The hook triggers when the recording is generated. | -### Payload structure of events: +### Payload structure of events -#### Groups: +#### Groups ##### group\_created: @@ -523,7 +523,7 @@ Here is the list of properties associated with Webhook. -#### Messages: +#### Messages ##### message\_sent: @@ -812,7 +812,7 @@ Here is the list of properties associated with Webhook. -#### Users: +#### Users ##### user\_connection\_status\_changed: @@ -937,7 +937,7 @@ Here is the list of properties associated with Webhook. -#### Calls & Meetings: +#### Calls & Meetings ##### call\_initiated: From 7b262777c284bc21d3372b50efc0d9615a0801f1 Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Fri, 13 Feb 2026 01:29:48 +0530 Subject: [PATCH 12/56] Corrected openAI docs. --- moderation/open-ai/openai-custom.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/moderation/open-ai/openai-custom.mdx b/moderation/open-ai/openai-custom.mdx index 9cbeeabfa..ef19ddc7b 100644 --- a/moderation/open-ai/openai-custom.mdx +++ b/moderation/open-ai/openai-custom.mdx @@ -15,8 +15,8 @@ CometChat allows you to integrate OpenAI for real-time message moderation, enabl 2. **Navigate to Moderation Settings** - Go to **Moderation → Settings** in the left-hand menu. -3. **Open OpenAI Settings Tab** - - Click on the **OpenAI Settings** tab within the Moderation Settings. +3. **Open Advanced Settings Tab** + - Click on the **Advanced Settings** tab within the Moderation Settings. 4. **Fill in the OpenAI Configuration** @@ -32,7 +32,7 @@ CometChat allows you to integrate OpenAI for real-time message moderation, enabl - **Set Context Window** - Specify the number of previous messages in a conversation that will be used for OpenAI context. -5. **Click Save Settings** +5. **Click Save** ### **Step 2: Enable OpenAI Moderation** From 91262a68585fd19b866bec20b1963fd0d25cf6d9 Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Fri, 13 Feb 2026 08:07:46 +0530 Subject: [PATCH 13/56] Renamed providers to Integrations. --- docs.json | 6 ++++- moderation/api-explorer.mdx | 38 +++++++++++++++++++++++++-- moderation/constraints-and-limits.mdx | 34 +++--------------------- 3 files changed, 44 insertions(+), 34 deletions(-) diff --git a/docs.json b/docs.json index 0f63070cc..ee7773e86 100644 --- a/docs.json +++ b/docs.json @@ -5098,6 +5098,7 @@ "moderation/overview", { "group": "Setup", + "icon": "gear", "pages": [ "moderation/getting-started", "moderation/rules-management", @@ -5106,6 +5107,7 @@ }, { "group": "Message Management", + "icon": "envelope-open-text", "pages": [ "moderation/flagged-messages", "moderation/blocked-messages", @@ -5113,7 +5115,8 @@ ] }, { - "group": "Providers", + "group": "Integrations", + "icon": "plug", "pages": [ { "group": "OpenAI", @@ -5133,6 +5136,7 @@ }, { "group": "Reference", + "icon": "book", "pages": [ "moderation/constraints-and-limits", "moderation/legacy-extensions" diff --git a/moderation/api-explorer.mdx b/moderation/api-explorer.mdx index 8233a485c..22c1b062d 100644 --- a/moderation/api-explorer.mdx +++ b/moderation/api-explorer.mdx @@ -5,8 +5,6 @@ sidebarTitle: "Overview" The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. - - Below is an overview of the key functionalities provided by the Moderation Service API: 1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions @@ -37,3 +35,39 @@ Following are the labels that are available for Image/Video moderation: | Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. + +--- + +## API Constraints + + +**Need higher limits?** Contact [CometChat Support](https://www.cometchat.com/contact) to discuss enterprise options for increased limits. + + + + + | Parameter | Limit | + |-----------|-------| + | **Rule ID** | Max 100 characters, no spaces or special characters | + | **Name** | Max 100 characters | + | **Description** | Max 255 characters | + | **Filters per rule** | Max 10 filters | + | **Conditions per rule** | Max 10 conditions | + | **Rules per app** | Max 25 custom rules (excludes default rules) | + + + | Parameter | Limit | + |-----------|-------| + | **List ID** | Max 100 characters, no spaces or special characters | + | **Name** | Max 100 characters | + | **Description** | Max 255 characters | + | **CSV file size** | Max 1 MB | + | **Lists per app** | Max 25 custom lists (excludes default lists) | + + + | Parameter | Limit | + |-----------|-------| + | **AI Context** | Max 50 messages sent to OpenAI/Custom API for analysis | + | **Custom Flag Reasons** | Max 5 per app | + + diff --git a/moderation/constraints-and-limits.mdx b/moderation/constraints-and-limits.mdx index 1e3b00b58..840c2f473 100644 --- a/moderation/constraints-and-limits.mdx +++ b/moderation/constraints-and-limits.mdx @@ -8,37 +8,9 @@ This page outlines the system constraints and limitations for CometChat's Modera **Need higher limits?** Contact [CometChat Support](https://www.cometchat.com/contact) to discuss enterprise options for increased limits. ---- - -## Constraints - - - - | Parameter | Limit | - |-----------|-------| - | **Rule ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **Filters per rule** | Max 10 filters | - | **Conditions per rule** | Max 10 conditions | - | **Rules per app** | Max 25 custom rules (excludes default rules) | - - - | Parameter | Limit | - |-----------|-------| - | **List ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **CSV file size** | Max 1 MB | - | **Lists per app** | Max 25 custom lists (excludes default lists) | - - - | Parameter | Limit | - |-----------|-------| - | **AI Context** | Max 50 messages sent to OpenAI/Custom API for analysis | - | **Custom Flag Reasons** | Max 5 per app | - - + +For detailed API parameter constraints (Rules, Lists, Advanced Settings), see the [API Overview](/moderation/api-explorer#api-constraints). + --- From b29e8e6c3e45bd930fcc80f28943acb5e207dc2b Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Tue, 17 Feb 2026 13:06:33 +0530 Subject: [PATCH 14/56] Updated the constraints on each file. --- docs.json | 2 +- moderation/blocked-messages.mdx | 20 ++++++------------- moderation/constraints-and-limits.mdx | 20 ++++++------------- moderation/flagged-messages.mdx | 2 +- moderation/getting-started.mdx | 12 ++++------- moderation/lists-management.mdx | 20 ++++++------------- moderation/overview.mdx | 17 ---------------- moderation/reviewed-messages.mdx | 20 ++++++------------- moderation/rules-management.mdx | 20 ++++++------------- rest-api/api-keys.mdx | 7 ------- rest-api/api-keys/create.mdx | 10 +++++++++- rest-api/calls.mdx | 12 ----------- .../data-import-apis/users/import-users.mdx | 9 ++++++++- rest-api/data-import.mdx | 9 +-------- rest-api/groups.mdx | 15 -------------- rest-api/groups/create.mdx | 18 ++++++++++++++++- rest-api/list-calls.mdx | 13 +++++++++++- rest-api/management-apis.mdx | 8 -------- rest-api/management-apis/app/create.mdx | 10 +++++++++- rest-api/messages.mdx | 13 ------------ rest-api/messages/send-message.mdx | 15 +++++++++++++- rest-api/roles.mdx | 11 +--------- rest-api/roles/create.mdx | 11 +++++++++- rest-api/users.mdx | 17 ---------------- rest-api/users/create.mdx | 19 +++++++++++++++++- 25 files changed, 135 insertions(+), 195 deletions(-) diff --git a/docs.json b/docs.json index ee7773e86..a675c13e9 100644 --- a/docs.json +++ b/docs.json @@ -5096,11 +5096,11 @@ "tab": "AI Moderation", "pages": [ "moderation/overview", + "moderation/getting-started", { "group": "Setup", "icon": "gear", "pages": [ - "moderation/getting-started", "moderation/rules-management", "moderation/lists-management" ] diff --git a/moderation/blocked-messages.mdx b/moderation/blocked-messages.mdx index fa8bb8a20..bf0ab2983 100644 --- a/moderation/blocked-messages.mdx +++ b/moderation/blocked-messages.mdx @@ -97,20 +97,12 @@ Mark a message as reviewed without approving it: ## Best Practices - - - Check blocked messages weekly to catch false positives and refine rules. - - - Look for patterns in blocked content to identify if rules need adjustment. - - - Filter by date range to focus on recent blocks or investigate specific incidents. - - - If you see many false positives, adjust confidence levels in [Rules Management](/moderation/rules-management). - - +| Practice | Description | +|----------|-------------| +| **Review Regularly** | Check blocked messages weekly to catch false positives and refine rules. | +| **Track Patterns** | Look for patterns in blocked content to identify if rules need adjustment. | +| **Use Date Filters** | Filter by date range to focus on recent blocks or investigate specific incidents. | +| **Refine Rules** | If you see many false positives, adjust confidence levels in [Rules Management](/moderation/rules-management). | --- diff --git a/moderation/constraints-and-limits.mdx b/moderation/constraints-and-limits.mdx index 840c2f473..62e6d979d 100644 --- a/moderation/constraints-and-limits.mdx +++ b/moderation/constraints-and-limits.mdx @@ -42,20 +42,12 @@ Other image and video formats are not currently supported for AI moderation. ## Quick Reference - - - Maximum custom rules per app - - - Maximum custom lists per app - - - Maximum filters per rule - - - Maximum conditions per rule - - +| Limit | Value | +|-------|-------| +| **Maximum custom rules per app** | 25 | +| **Maximum custom lists per app** | 25 | +| **Maximum filters per rule** | 10 | +| **Maximum conditions per rule** | 10 | --- diff --git a/moderation/flagged-messages.mdx b/moderation/flagged-messages.mdx index 12bd5e4cb..b531007e9 100644 --- a/moderation/flagged-messages.mdx +++ b/moderation/flagged-messages.mdx @@ -5,7 +5,7 @@ title: "Flagged Messages" Flagged Messages allows moderators to review messages that have been flagged for potentially violating moderation rules. Messages can be flagged automatically by the rule engine or manually by end users who find content inappropriate. -**Two-step moderation.** Unlike blocked messages which are hidden immediately, flagged messages remain visible until a moderator reviews and takes action (approve or block). +Flagged messages remain visible to users until a moderator reviews and takes action. --- diff --git a/moderation/getting-started.mdx b/moderation/getting-started.mdx index 7631e6edc..9cb381f69 100644 --- a/moderation/getting-started.mdx +++ b/moderation/getting-started.mdx @@ -13,14 +13,10 @@ With Moderation Integration, you can define flexible rules, receive real-time up ## Choose Your Integration Method - - - **Zero code required** — Moderation is built into CometChat UI Kits. Simply configure rules in the Dashboard and the UI Kit handles everything automatically. - - - **Full control** — Use the CometChat SDK to handle moderation programmatically in your custom UI implementation. - - +| Method | Description | +|--------|-------------| +| **UI Kit (Recommended)** | Zero code required — Moderation is built into CometChat UI Kits. Simply configure rules in the Dashboard and the UI Kit handles everything automatically. | +| **SDK Integration** | Full control — Use the CometChat SDK to handle moderation programmatically in your custom UI implementation. | --- diff --git a/moderation/lists-management.mdx b/moderation/lists-management.mdx index 3d9b78ed0..74d245f2e 100644 --- a/moderation/lists-management.mdx +++ b/moderation/lists-management.mdx @@ -129,20 +129,12 @@ Pre-configured lists ready to use with your rules: ## Best Practices - - - Use default lists first, then create custom lists only for gaps in coverage. - - - Scammers constantly change wording. Sentence similarity catches variations automatically. - - - Test regex patterns before deploying. A bad pattern can block legitimate content. - - - Check blocked messages monthly and update lists based on new patterns. - - +| Practice | Description | +|----------|-------------| +| **Start with Defaults** | Use default lists first, then create custom lists only for gaps in coverage. | +| **Use Sentence Similarity for Scams** | Scammers constantly change wording. Sentence similarity catches variations automatically. | +| **Test Regex Patterns** | Test regex patterns before deploying. A bad pattern can block legitimate content. | +| **Review Regularly** | Check blocked messages monthly and update lists based on new patterns. | ### Tips for Effective Lists diff --git a/moderation/overview.mdx b/moderation/overview.mdx index def574d36..56a2906c5 100644 --- a/moderation/overview.mdx +++ b/moderation/overview.mdx @@ -45,23 +45,6 @@ flowchart LR -## Getting Started - - - - Navigate to the [CometChat Dashboard](https://app.cometchat.com) and go to **Moderation** section - - - Set up rules to automatically detect and handle inappropriate content. See [Rules Management](/moderation/rules-management) - - - Customize the reasons users can select when reporting messages. Go to **Moderation > Advanced Settings** - - - Enable moderation features in your UI Kit or implement using the SDK/REST API - - - ## Platform Integration Moderation is supported across all CometChat platforms. Choose your integration method: diff --git a/moderation/reviewed-messages.mdx b/moderation/reviewed-messages.mdx index e9383893d..a42c03998 100644 --- a/moderation/reviewed-messages.mdx +++ b/moderation/reviewed-messages.mdx @@ -68,20 +68,12 @@ Each reviewed message includes: ## Use Cases - - - Maintain records of all moderation decisions for regulatory compliance. - - - Track moderator activity and decision patterns. - - - Analyze which rules generate the most reviews to optimize your setup. - - - Reference historical decisions when users dispute moderation actions. - - +| Use Case | Description | +|----------|-------------| +| **Compliance Audits** | Maintain records of all moderation decisions for regulatory compliance. | +| **Moderator Performance** | Track moderator activity and decision patterns. | +| **Rule Effectiveness** | Analyze which rules generate the most reviews to optimize your setup. | +| **Dispute Resolution** | Reference historical decisions when users dispute moderation actions. | --- diff --git a/moderation/rules-management.mdx b/moderation/rules-management.mdx index 10829fd84..4ca0b81d1 100644 --- a/moderation/rules-management.mdx +++ b/moderation/rules-management.mdx @@ -140,20 +140,12 @@ Enable moderation in under 2 minutes: ## Best Practices - - - Enable default rules first, then customize based on your needs. Don't try to configure everything at once. - - - Test rules in a staging environment. Send test messages to verify rules work as expected. - - - Check the [Blocked Messages](/moderation/blocked-messages) dashboard regularly to catch false positives. - - - Review [Rule Revisions](#rule-revisions) to track changes and refine rules over time. - - +| Practice | Description | +|----------|-------------| +| **Start with Defaults** | Enable default rules first, then customize based on your needs. Don't try to configure everything at once. | +| **Test Before Launch** | Test rules in a staging environment. Send test messages to verify rules work as expected. | +| **Monitor Regularly** | Check the [Blocked Messages](/moderation/blocked-messages) dashboard regularly to catch false positives. | +| **Iterate & Refine** | Review [Rule Revisions](#rule-revisions) to track changes and refine rules over time. | ### Tips for Effective Moderation diff --git a/rest-api/api-keys.mdx b/rest-api/api-keys.mdx index f3ff29516..85df40e37 100644 --- a/rest-api/api-keys.mdx +++ b/rest-api/api-keys.mdx @@ -13,10 +13,3 @@ The following table lists the properties that the APIKey API supports. | **apiKey** | string | apiKey used for authentication. character length - 40 | | **createdAt** | integer | UNIX Timestamp indicating the time when the apiKey was created | -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| API Key name | 100 characters (UTF8mb4) | Supports all languages and emojis (one emoji uses two characters) | -| Maximum API keys per app | 25 | Contact support if you need additional API keys | - diff --git a/rest-api/api-keys/create.mdx b/rest-api/api-keys/create.mdx index 9619ca155..1452a223c 100644 --- a/rest-api/api-keys/create.mdx +++ b/rest-api/api-keys/create.mdx @@ -1,3 +1,11 @@ --- openapi: post /apikeys ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| API Key name | 100 characters (UTF8mb4) | Supports all languages and emojis (one emoji uses two characters) | +| Maximum API keys per app | 25 | Contact support if you need additional API keys | +| Required scope | fullAccess | Requires an existing API key with fullAccess scope to create new keys | \ No newline at end of file diff --git a/rest-api/calls.mdx b/rest-api/calls.mdx index 95599f579..7df44f38a 100644 --- a/rest-api/calls.mdx +++ b/rest-api/calls.mdx @@ -45,15 +45,3 @@ Recordings: | **startTime** | integer | 10-digit Unix timestamp indicating when the recording was started. | | **endTime** | integer | 10-digit Unix timestamp indicating when the recording was ended. | | **recording\_url** | string | Indicates the S3 URL of the call recording. | - - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Maximum users in a call | 50 | Supports both one-on-one and group calling; works best with 50 participants | -| Default video frame rate | 30 FPS | May adapt based on network conditions | -| Video resolution | 180p - 720p | Depends on layout selected and user bandwidth | -| Media encryption | SRTP | Ensures secure real-time communication | -| Audio codec | OPUS | Optimized for low-latency voice communication | -| Video codec | H.264 | Widely supported for cross-platform compatibility | diff --git a/rest-api/data-import-apis/users/import-users.mdx b/rest-api/data-import-apis/users/import-users.mdx index 67047002e..850f08f56 100644 --- a/rest-api/data-import-apis/users/import-users.mdx +++ b/rest-api/data-import-apis/users/import-users.mdx @@ -1,3 +1,10 @@ --- openapi: post /data_import/users ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Entities per request | 50 | Transmit up to 50 entities within a single request for efficient processing | +| Requests per minute | 60 | Rate limit for data import endpoints; exceeding returns a rate limit error | \ No newline at end of file diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index caeeb2d6c..fa6a13747 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -57,11 +57,4 @@ curl -X POST \ -*Replace appId, apiKey and region in the curl request.* - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Entities per request | 50 | Transmit up to 50 entities within a single request for efficient processing | -| Requests per minute | 60 | Rate limit for data import endpoints; exceeding returns a rate limit error | \ No newline at end of file +*Replace appId, apiKey and region in the curl request.* \ No newline at end of file diff --git a/rest-api/groups.mdx b/rest-api/groups.mdx index 9a44699f5..cb0ae5926 100644 --- a/rest-api/groups.mdx +++ b/rest-api/groups.mdx @@ -30,18 +30,3 @@ The following table lists the properties that the Group API supports. | **membersCount** | integer | Specifies the number of members in the group. | | **createdAt** | integer | UNIX Timestamp specifies the time when the group was created. | | **conversationId** | string | Specifies the conversation ID of the group. | - - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators | -| Maximum users in a group (without receipts) | 50,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance | -| Group password | 100 characters max | Only applicable for password-protected groups | -| Group description | 255 characters (UTF8mb4) | Brief summary of the group's purpose | -| Maximum groups | No limit | Create as many groups as needed; billing based on active users | -| Typing indicators for groups | Up to 1000 online users | Disabled for larger groups to optimize performance | -| Unread message counts for groups | Up to 300 members | Not updated for groups with more than 300 members | -| Delivery and read receipts for groups | Up to 300 online users | Disabled in large groups to reduce server load | -| Active presence subscriptions | Up to 1000 online users | Presence notifications not sent beyond this limit | diff --git a/rest-api/groups/create.mdx b/rest-api/groups/create.mdx index 289f06286..5ee25bdcf 100644 --- a/rest-api/groups/create.mdx +++ b/rest-api/groups/create.mdx @@ -1,3 +1,19 @@ --- openapi: post /groups ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| GUID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | +| Group name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators | +| Maximum users in a group (without receipts) | 50,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance | +| Group password | 100 characters max | Only applicable for password-protected groups | +| Group description | 255 characters (UTF8mb4) | Brief summary of the group's purpose | +| Maximum groups | No limit | Create as many groups as needed; billing based on active users | +| Typing indicators for groups | Up to 1000 online users | Disabled for larger groups to optimize performance | +| Unread message counts for groups | Up to 300 members | Not updated for groups with more than 300 members | +| Delivery and read receipts for groups | Up to 300 online users | Disabled in large groups to reduce server load | +| Active presence subscriptions | Up to 1000 online users | Presence notifications not sent beyond this limit | \ No newline at end of file diff --git a/rest-api/list-calls.mdx b/rest-api/list-calls.mdx index 8dacc1447..6a06b3481 100644 --- a/rest-api/list-calls.mdx +++ b/rest-api/list-calls.mdx @@ -1,3 +1,14 @@ --- openapi: get /calls ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum users in a call | 50 | Supports both one-on-one and group calling; works best with 50 participants | +| Default video frame rate | 30 FPS | May adapt based on network conditions | +| Video resolution | 180p - 720p | Depends on layout selected and user bandwidth | +| Media encryption | SRTP | Ensures secure real-time communication | +| Audio codec | OPUS | Optimized for low-latency voice communication | +| Video codec | H.264 | Widely supported for cross-platform compatibility | \ No newline at end of file diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 3647810c5..86f6cbbd0 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -41,11 +41,3 @@ curl -X POST \ *key and secret need to be replaced in the curl request.* - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| App name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| App version | v3 | Only option available | -| Maximum collaborators per app | 25 | Team management limit | diff --git a/rest-api/management-apis/app/create.mdx b/rest-api/management-apis/app/create.mdx index 0a2ec5395..b9f1bb287 100644 --- a/rest-api/management-apis/app/create.mdx +++ b/rest-api/management-apis/app/create.mdx @@ -1,3 +1,11 @@ --- openapi: post /apps ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| App name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| App version | v3 | Only option available | +| Maximum collaborators per app | 25 | Team management limit | \ No newline at end of file diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index 1964c181f..18b6e4a26 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -21,19 +21,6 @@ Messaging is one of the core features of CometChat. We've thoughtfully created A -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Maximum message size | 65 KB (~65,536 characters including metadata) | Total size limit for the entire message payload | -| File size per message | 100 MB | Applies to the uploaded file associated with the message | -| Message data object | 10 KB max (UTF8mb4) | Keys with special meaning: text, attachments, customData, metadata | -| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Tags can be in any language | -| User mentions | Up to 10 distinct users | Format: `<@uid:{uid of the user}>` | -| Reactions | Max 25 distinct reactions, 45 characters each (UTF8mb4) | Emoji supported (may use multiple code points) | -| Unread message count (groups) | Up to 300 members | Not updated for larger groups | -| Message receipts (groups) | Up to 300 online users | Delivery/read receipts disabled in large groups | - The following table lists the properties that the Message API supports. | Parameters | Type | Description | diff --git a/rest-api/messages/send-message.mdx b/rest-api/messages/send-message.mdx index d42f8f2de..8440e6176 100644 --- a/rest-api/messages/send-message.mdx +++ b/rest-api/messages/send-message.mdx @@ -1,3 +1,16 @@ --- openapi: post /messages ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Maximum message size | 65 KB (~65,536 characters including metadata) | Total size limit for the entire message payload | +| File size per message | 100 MB | Applies to the uploaded file associated with the message | +| Message data object | 10 KB max (UTF8mb4) | Keys with special meaning: text, attachments, customData, metadata | +| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Tags can be in any language | +| User mentions | Up to 10 distinct users | Format: `<@uid:{uid of the user}>` | +| Reactions | Max 25 distinct reactions, 45 characters each (UTF8mb4) | Emoji supported (may use multiple code points) | +| Unread message count (groups) | Up to 300 members | Not updated for larger groups | +| Message receipts (groups) | Up to 300 online users | Delivery/read receipts disabled in large groups | \ No newline at end of file diff --git a/rest-api/roles.mdx b/rest-api/roles.mdx index 2cd580008..2a426eb68 100644 --- a/rest-api/roles.mdx +++ b/rest-api/roles.mdx @@ -14,13 +14,4 @@ The following table lists the properties that the Role API supports. | **metadata** | nested object | (optional)\_ Specifies a JSON object to store up to 1.6K characters (JSON stringified metadata) for additional role information. | | **settings** | array | (optional)\_ Role settings that is used for restricting list users/send message API. Possible values for listUsers & sendMessagesTo are `all` and `friendsOnly` | | **settings.listUsers** | string | (optional)\_ Restricts users listing to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | -| **settings.sendMessagesTo** | string | Restricts sending message to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Role UID | 100 characters, alpha-dash (a-z, 0-9, -, _) | CometChat forces the UID to lowercase | -| Role name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| Role description | 255 characters (UTF8mb4) | Describe the role's purpose and permissions | -| Metadata | No limit | Store additional role configuration as JSON key-value pairs | \ No newline at end of file +| **settings.sendMessagesTo** | string | Restricts sending message to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | \ No newline at end of file diff --git a/rest-api/roles/create.mdx b/rest-api/roles/create.mdx index eae827e3b..a5200e6c5 100644 --- a/rest-api/roles/create.mdx +++ b/rest-api/roles/create.mdx @@ -1,3 +1,12 @@ --- openapi: post /roles ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| Role UID | 100 characters, alpha-dash (a-z, 0-9, -, _) | CometChat forces the UID to lowercase | +| Role name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Role description | 255 characters (UTF8mb4) | Describe the role's purpose and permissions | +| Metadata | No limit | Store additional role configuration as JSON key-value pairs | \ No newline at end of file diff --git a/rest-api/users.mdx b/rest-api/users.mdx index f5a16e929..f7933c2a8 100644 --- a/rest-api/users.mdx +++ b/rest-api/users.mdx @@ -22,20 +22,3 @@ The following table lists the properties that the User API supports. | **withAuthToken** | boolean | (optional)\_ Includes authToken of the created user in the response.If set to true, you do not have to make a separate API call to create authToken. | | **createdAt** | Integer | UNIX Timestamp indicates the time when the user was created. | -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| UID/GUID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | -| User/Group name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| Avatar URL | 3000 characters max | CometChat doesn't store the image; no resolution limit | -| Profile URL | 3000 characters max | Same as avatar | -| Metadata | 5 KB max (within 10 KB POST limit) | Store custom key-value pairs | -| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Enable filtering and searching | -| Maximum groups per user | 2000 | Must leave existing groups to join new ones beyond limit | -| Maximum friends per user | 1000 | Bidirectional relationships count toward both users' limits | -| Maximum auth tokens per user | No limit | Allows login across multiple devices | -| Maximum Bot users per app | 25 | Special accounts for automated messaging | -| Bot UID character limit | 50 characters | Shorter than regular user UIDs | -| Maximum users per app | No limit | Pricing based on Monthly Active Users (MAU) | - diff --git a/rest-api/users/create.mdx b/rest-api/users/create.mdx index 119d78256..17b877b97 100644 --- a/rest-api/users/create.mdx +++ b/rest-api/users/create.mdx @@ -1,3 +1,20 @@ --- openapi: post /users ---- \ No newline at end of file +--- + +## Constraints + +| Item | Constraint | Notes | +| ---- | ---------- | ----- | +| UID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | +| User name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Avatar URL | 3000 characters max | CometChat doesn't store the image; no resolution limit | +| Profile URL | 3000 characters max | Same as avatar | +| Metadata | 5 KB max (within 10 KB POST limit) | Store custom key-value pairs | +| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Enable filtering and searching | +| Maximum groups per user | 2000 | Must leave existing groups to join new ones beyond limit | +| Maximum friends per user | 1000 | Bidirectional relationships count toward both users' limits | +| Maximum auth tokens per user | No limit | Allows login across multiple devices | +| Maximum Bot users per app | 25 | Special accounts for automated messaging | +| Bot UID character limit | 50 characters | Shorter than regular user UIDs | +| Maximum users per app | No limit | Pricing based on Monthly Active Users (MAU) | \ No newline at end of file From b65256d1db1870da11609f8419df7a2a20a59193 Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Tue, 17 Feb 2026 13:31:34 +0530 Subject: [PATCH 15/56] Corrected the constraints. --- chat-apis.json | 10 +++++----- data-import-apis.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index cb308fbbc..3cef94bb5 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -32,7 +32,7 @@ "API Keys" ], "summary": "Create", - "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).

**Limitations:** API key name max length is 100 characters. Maximum API keys per app is 10. Requires an existing API key with fullAccess scope to create new keys.", + "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).", "requestBody": { "content": { "application/json": { @@ -358,7 +358,7 @@ "Users" ], "summary": "Create", - "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.

**Limitations:** UID must be unique across your app (case-insensitive). UID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", + "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.", "requestBody": { "content": { "application/json": { @@ -1109,7 +1109,7 @@ "Groups" ], "summary": "Create", - "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.

**Limitations:** GUID must be unique across your app (case-sensitive). GUID max length is 100 characters (alphanumeric, underscore, hyphen allowed). Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB (JSON object). Maximum 10 tags per group, each tag max 50 characters. Maximum 100 members can be added during creation. Requires API key with fullAccess or groups scope.", + "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1741,7 +1741,7 @@ "Messages" ], "summary": "Send Message", - "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 65KB.", + "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -6450,7 +6450,7 @@ "Roles" ], "summary": "Create", - "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.

**Use cases:** Create different permission levels (admin, moderator, member, guest), restrict messaging to friends only for certain user types, control which users can see other users in the user list, and implement tiered access for freemium apps.

**Role settings:** listUsers controls who appears in user lists (all shows everyone, friendsOnly shows only friends), and sendMessagesTo controls who can receive messages (all allows messaging anyone, friendsOnly restricts to friends).

**Limitations:** Role identifier max length is 100 characters. Role name max length is 100 characters. Role identifier must be unique within your app. Role identifier cannot be changed after creation. Requires API key with fullAccess scope.", + "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.

**Use cases:** Create different permission levels (admin, moderator, member, guest), restrict messaging to friends only for certain user types, control which users can see other users in the user list, and implement tiered access for freemium apps.

**Role settings:** listUsers controls who appears in user lists (all shows everyone, friendsOnly shows only friends), and sendMessagesTo controls who can receive messages (all allows messaging anyone, friendsOnly restricts to friends).", "requestBody": { "content": { "application/json": { diff --git a/data-import-apis.json b/data-import-apis.json index ffe330da1..afc83685f 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -649,7 +649,7 @@ "Users" ], "summary": "Import Users", - "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.

**Limitations:** Maximum 100 users per request. UID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per user. Requires API key with fullAccess scope.", + "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.", "requestBody": { "content": { "application/json": { From 284e3ba9314afdaa92a82e08e52d00b93f4c7886 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Tue, 17 Feb 2026 14:40:20 +0530 Subject: [PATCH 16/56] cac changes --- chat-apis.json | 114 +++++++++++++++++++++--------------------- data-import-apis.json | 6 +-- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 3cef94bb5..e6cd932f1 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -97,7 +97,7 @@ "API Keys" ], "summary": "List", - "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.

**Use cases:** Audit which API keys exist and their permission levels. Find API keys by name when you need to update or delete them. Verify API key scopes before using them in integrations.

**Limitations:** Requires API key with fullAccess scope. API key values are partially masked for security.", + "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.

**Use cases:** Audit which API keys exist and their permission levels. Find API keys by name when you need to update or delete them. Verify API key scopes before using them in integrations.", "parameters": [ { "name": "scope", @@ -185,7 +185,7 @@ "API Keys" ], "summary": "Get", - "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", + "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.", "parameters": [ { "name": "apiKey", @@ -233,7 +233,7 @@ "API Keys" ], "summary": "Update", - "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.

**Limitations:** The API key value itself cannot be changed (create a new key instead). API key name max length is 100 characters. Requires API key with fullAccess scope.", + "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.", "parameters": [ { "name": "apiKey", @@ -304,7 +304,7 @@ "API Keys" ], "summary": "Delete", - "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.

**Limitations:** Cannot delete the last fullAccess API key (at least one must remain). Requires API key with fullAccess scope. Returns 404 if the API key does not exist.", + "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.", "parameters": [ { "name": "apiKey", @@ -484,7 +484,7 @@ "Users" ], "summary": "List", - "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.

**Use cases:** Building user directories or contact lists. Searching for users by name or UID. Filtering users by role or tags for admin dashboards. Syncing user data with your backend.

**Pagination:** Results are paginated with configurable page size (default: 100, max: 1000). Use page parameter to navigate through results. Response includes meta.pagination with total count and page info. Use cursor for efficient real-time sync of user updates.

**Limitations:** Maximum 1000 users per request (perPage). Search performs prefix matching (LIKE%) on UID and name. Requires API key with fullAccess scope for full user data.", + "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.

**Use cases:** Building user directories or contact lists. Searching for users by name or UID. Filtering users by role or tags for admin dashboards. Syncing user data with your backend.

**Pagination:** Results are paginated with configurable page size (default: 100, max: 1000). Use page parameter to navigate through results. Response includes meta.pagination with total count and page info. Use cursor for efficient real-time sync of user updates.", "parameters": [ { "name": "searchKey", @@ -697,7 +697,7 @@ "Users" ], "summary": "Reactivate", - "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.

**Limitations:** Only works on deactivated users (not deleted users). Users must have been previously deactivated via the Deactivate API. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", + "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.", "requestBody": { "content": { "application/json": { @@ -764,7 +764,7 @@ "Users" ], "summary": "Deactivate", - "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.

**Limitations:** Users must exist (non-existent UIDs are ignored). Already deactivated users are skipped. Maximum batch size depends on your subscription plan. Requires API key with fullAccess scope.", + "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.", "requestBody": { "content": { "application/json": { @@ -829,7 +829,7 @@ "Users" ], "summary": "Get", - "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.

**When to use:** Displaying user profile information, verifying a user exists before sending messages, checking user's online/offline status, or fetching user metadata for your application.

**Response includes:** Basic profile info (name, avatar, link), current online/offline status, role and metadata, timestamps (createdAt, updatedAt), and block status if using onBehalfOf parameter.

**Limitations:** UID must exist in your app. Private metadata (@private) is only visible via admin API. Requires API key with fullAccess scope for complete data. Deactivated users return 404 unless accessed via admin API.", + "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.

**When to use:** Displaying user profile information, verifying a user exists before sending messages, checking user's online/offline status, or fetching user metadata for your application.

**Response includes:** Basic profile info (name, avatar, link), current online/offline status, role and metadata, timestamps (createdAt, updatedAt), and block status if using onBehalfOf parameter.", "parameters": [ { "name": "uid", @@ -890,7 +890,7 @@ "Users" ], "summary": "Update", - "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.

**Limitations:** UID cannot be changed after user creation. User must exist (returns 404 if not found). Name max length is 100 characters. Metadata max size is 100KB. Avatar URL max length is 2048 characters. Link URL max length is 2048 characters. Maximum 25 tags per user, each tag max length is 100 characters. Requires API key with fullAccess or authOnly scope.", + "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.", "parameters": [ { "name": "uid", @@ -1038,7 +1038,7 @@ "Users" ], "summary": "Delete", - "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.

**Limitations:** User must exist (returns 404 if not found). Permanent deletion cannot be undone. Requires API key with fullAccess scope.", + "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.", "parameters": [ { "name": "uid", @@ -1276,7 +1276,7 @@ "Groups" ], "summary": "List", - "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.

**Use cases:** Building a group discovery/browse interface, searching for groups by name or tags, syncing group data with your backend using cursor pagination, or listing groups a specific user has joined.

**Pagination:** Offset-based uses page and perPage parameters. Cursor-based uses updatedAt and affix parameters for efficient syncing.

**Limitations:** Maximum 1000 groups per request (perPage). Default returns 100 groups per page. Search is case-insensitive but may have slight delays on large datasets. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.

**Use cases:** Building a group discovery/browse interface, searching for groups by name or tags, syncing group data with your backend using cursor pagination, or listing groups a specific user has joined.

**Pagination:** Offset-based uses page and perPage parameters. Cursor-based uses updatedAt and affix parameters for efficient syncing.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1516,7 +1516,7 @@ "Groups" ], "summary": "Get", - "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.

**Use cases:** Displaying group profile/details page, checking if a group exists before performing operations, fetching current group settings and metadata, or getting member count and owner information.

**Response includes:** Basic info (name, description, icon, type), membership (membersCount, owner, hasJoined if onBehalfOf used), metadata (custom data, tags, timestamps), and conversation (conversationId for messaging).

**Limitations:** GUID must exist (returns 404 if not found). Private group details visible only to members (when using onBehalfOf). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.

**Use cases:** Displaying group profile/details page, checking if a group exists before performing operations, fetching current group settings and metadata, or getting member count and owner information.

**Response includes:** Basic info (name, description, icon, type), membership (membersCount, owner, hasJoined if onBehalfOf used), metadata (custom data, tags, timestamps), and conversation (conversationId for messaging).", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1573,7 +1573,7 @@ "Groups" ], "summary": "Update", - "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.

**Limitations:** GUID cannot be changed after creation. Name max length is 100 characters. Description max length is 500 characters. Metadata max size is 100KB. Maximum 10 tags, each up to 50 characters. Owner field ignored when onBehalfOf header is present. Only admins can update group (when using onBehalfOf). Requires API key with fullAccess or groups scope.", + "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1696,7 +1696,7 @@ "Groups" ], "summary": "Delete", - "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.

**Limitations:** Action is irreversible (data cannot be recovered). Only group owner or admin can delete (when using onBehalfOf). GUID must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -1741,7 +1741,7 @@ "Messages" ], "summary": "Send Message", - "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration.", + "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 65KB.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -3122,7 +3122,7 @@ "Conversations" ], "summary": "List conversations", - "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details. Use this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.

**Limitations:** perPage default is 100, maximum 1000 conversations per request. Standard API rate limits apply. Requires API key with fullAccess or restrictedAccess scope. Large conversation lists should use cursor-based pagination (useCursoredIndex=1) for better performance.", + "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details. Use this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.", "parameters": [ { "name": "onBehalfOf", @@ -3414,7 +3414,7 @@ "Conversations" ], "summary": "Get conversation", - "description": "DEPRECATED: This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.

Retrieves details of a specific conversation including the last message, unread count, and participant information.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations.", + "description": "DEPRECATED: This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.

Retrieves details of a specific conversation including the last message, unread count, and participant information.", "parameters": [ { "name": "onBehalfOf", @@ -3547,7 +3547,7 @@ "Conversations" ], "summary": "Delete Conversation", - "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. conversationId format is user_{uid} for one-on-one or group_{guid} for group conversations. This action cannot be undone.", + "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.", "parameters": [ { "name": "onBehalfOf", @@ -3599,7 +3599,7 @@ "Conversations" ], "summary": "Get User Conversation", - "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.

Use this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.

**Limitations:** Requires onBehalfOf header to identify the viewing user. Requires API key with fullAccess or restrictedAccess scope. Both users must exist in the app. Returns 404 if no conversation exists between the users.", + "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.

Use this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.", "parameters": [ { "name": "onBehalfOf", @@ -3726,7 +3726,7 @@ "Conversations" ], "summary": "Update User Conversation", - "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.

Use this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Tags are user-specific and do not affect the other participant's view. Maximum 10 tags per conversation. Each tag maximum length is 100 characters.", + "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.

Use this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.", "parameters": [ { "$ref": "#/components/parameters/uid--conversation" @@ -3876,7 +3876,7 @@ "Conversations" ], "summary": "Reset User Conversation", - "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess scope. Permanent deletion cannot be undone. preserveOrder maintains conversation position in list after reset.", + "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.", "parameters": [ { "name": "onBehalfOf", @@ -3951,7 +3951,7 @@ "Conversations" ], "summary": "Mark User Conversation As Delivered", - "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as delivered for other users.", + "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.", "parameters": [ { "name": "onBehalfOf", @@ -4017,7 +4017,7 @@ "Conversations" ], "summary": "Mark User Conversation As Read", - "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Cannot mark messages as read for other users.", + "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.", "parameters": [ { "name": "onBehalfOf", @@ -4081,7 +4081,7 @@ "Conversations" ], "summary": "Mark conversation messages as unread", - "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. messageId must be a valid message in the conversation. Only affects the onBehalfOf user's view of the conversation.", + "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.", "parameters": [ { "name": "onBehalfOf", @@ -4491,7 +4491,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Delivered", - "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.

**Limitations:** Requires onBehalfOf header to identify the receiving user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", + "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.", "parameters": [ { "name": "onBehalfOf", @@ -4557,7 +4557,7 @@ "Conversations" ], "summary": "Mark Group Conversation As Read", - "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.

**Limitations:** Requires onBehalfOf header to identify the reading user. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation.", + "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.", "parameters": [ { "name": "onBehalfOf", @@ -4621,7 +4621,7 @@ "Conversations" ], "summary": "Mark Group Conversation As unread", - "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.

**Limitations:** Requires onBehalfOf header to identify the user context. Requires API key with fullAccess or restrictedAccess scope. User must be a member of the group. messageId must be a valid message in the group conversation. Only affects the onBehalfOf user's view of the conversation.", + "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.", "parameters": [ { "name": "onBehalfOf", @@ -4687,7 +4687,7 @@ "Auth Tokens" ], "summary": "Create", - "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.

**Limitations:** User must exist before creating an auth token. Requires API key with fullAccess scope. Maximum 10 active auth tokens per user.", + "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.", "parameters": [ { "name": "uid", @@ -4750,7 +4750,7 @@ "Auth Tokens" ], "summary": "List", - "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.

**Use cases:** Session auditing (see all active sessions for a user), security review (identify potentially compromised tokens), and multi-device management (track which devices a user is logged into).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user does not exist.", + "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.

**Use cases:** Session auditing (see all active sessions for a user), security review (identify potentially compromised tokens), and multi-device management (track which devices a user is logged into).", "parameters": [ { "name": "uid", @@ -4818,7 +4818,7 @@ "Auth Tokens" ], "summary": "Flush", - "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Returns 404 if user does not exist.", + "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).", "parameters": [ { "name": "uid", @@ -4872,7 +4872,7 @@ "Auth Tokens" ], "summary": "Get", - "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.

**Use cases:** Token validation (verify if a specific token is still active), session lookup (get details about a specific user session), and debugging (troubleshoot authentication issues).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", + "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.

**Use cases:** Token validation (verify if a specific token is still active), session lookup (get details about a specific user session), and debugging (troubleshoot authentication issues).", "parameters": [ { "name": "uid", @@ -4928,7 +4928,7 @@ "Auth Tokens" ], "summary": "Update", - "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.

**Use cases:** Device tracking (record which device/platform is using each token), app analytics (track which app versions are in use), and session management (store custom session metadata).

**Limitations:** Cannot change the token value itself. Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", + "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.

**Use cases:** Device tracking (record which device/platform is using each token), app analytics (track which app versions are in use), and session management (store custom session metadata).", "parameters": [ { "name": "uid", @@ -5020,7 +5020,7 @@ "Auth Tokens" ], "summary": "Delete", - "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).

**Limitations:** Requires API key with fullAccess scope. Returns 404 if user or token does not exist.", + "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).", "parameters": [ { "name": "uid", @@ -5089,7 +5089,7 @@ "Group Members" ], "summary": "Add members", - "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).

**Limitations:** Maximum 100 users can be added per request (across all scope arrays). Users must exist (non-existent UIDs are skipped with error in response). Cannot add users who are already members (returns error for that UID). Cannot add banned users as members (unban first). When using onBehalfOf, the acting user must be admin or moderator. Requires API key with fullAccess or groups scope.", + "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5430,7 +5430,7 @@ "Group Members" ], "summary": "List", - "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.

**Use cases:** Displaying group member list in UI, checking who is in a group before sending messages, building member management interfaces, or filtering members by online status or role.

**Response includes for each member:** User details (uid, name, avatar, status), group-specific info (scope as admin/moderator/participant, joinedAt), and conversation ID for direct messaging.

**Limitations:** Maximum 1000 members per request (perPage). Default returns 100 members per page. Group must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.

**Use cases:** Displaying group member list in UI, checking who is in a group before sending messages, building member management interfaces, or filtering members by online status or role.

**Response includes for each member:** User details (uid, name, avatar, status), group-specific info (scope as admin/moderator/participant, joinedAt), and conversation ID for direct messaging.", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5573,7 +5573,7 @@ "Group Members" ], "summary": "Change Scope", - "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.

**Limitations:** User must be an existing member of the group. Cannot change scope of the group owner. When using onBehalfOf, acting user must be admin. Admins cannot demote other admins (only owner can). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5655,7 +5655,7 @@ "Group Members" ], "summary": "Kick", - "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.

**Limitations:** Cannot kick the group owner. Cannot kick yourself (use leave group instead). When using onBehalfOf, acting user must be admin or moderator. Moderators cannot kick admins. User must be a current member (returns error if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5703,7 +5703,7 @@ "Banned Users" ], "summary": "Ban", - "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.

**Limitations:** Cannot ban the group owner. Cannot ban yourself. When using onBehalfOf, acting user must be admin or moderator. Moderators cannot ban admins. User must exist (returns error if UID not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5749,7 +5749,7 @@ "Banned Users" ], "summary": "Unban", - "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.

**Limitations:** User must be currently banned (returns error if not banned). When using onBehalfOf, acting user must be admin or moderator. Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -5797,7 +5797,7 @@ "Banned Users" ], "summary": "List", - "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.

**Use cases:** Displaying banned users list in admin panel, reviewing bans for potential appeals, auditing group moderation actions, or building ban management interfaces.

**Response includes for each banned user:** User details (uid, name, avatar, status, role), timestamps (createdAt, updatedAt), and conversation ID for reference.

**Limitations:** Maximum 100 banned users per request (default). Group must exist (returns 404 if not found). Rate limit is 100 requests per minute. Requires API key with fullAccess or groups scope.", + "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.

**Use cases:** Displaying banned users list in admin panel, reviewing bans for potential appeals, auditing group moderation actions, or building ban management interfaces.

**Response includes for each banned user:** User details (uid, name, avatar, status, role), timestamps (createdAt, updatedAt), and conversation ID for reference.", "parameters": [ { "$ref": "#/components/parameters/guid" @@ -5986,7 +5986,7 @@ "Friends" ], "summary": "List Friends", - "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.

**Use cases:** Displaying a user's friend/contact list. Searching for specific friends by name or UID. Building friend suggestion features. Syncing friend lists with your application.

**Response includes:** Full user profile for each friend. Online/offline status. Block status if applicable. Conversation ID for direct messaging. Pagination metadata for large friend lists.

**Limitations:** Maximum 1000 friends per page. Default page size is 100 friends. Search performs prefix matching on UID and name. Requires API key with fullAccess scope.", + "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.

**Use cases:** Displaying a user's friend/contact list. Searching for specific friends by name or UID. Building friend suggestion features. Syncing friend lists with your application.

**Response includes:** Full user profile for each friend. Online/offline status. Block status if applicable. Conversation ID for direct messaging. Pagination metadata for large friend lists.", "parameters": [ { "$ref": "#/components/parameters/uid" @@ -6172,7 +6172,7 @@ "Blocked Users" ], "summary": "Block User", - "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.

**Limitations:** Cannot block yourself. Both users must exist in your app. Blocking is one-directional (A blocks B doesn't mean B blocks A). Requires API key with fullAccess scope.", + "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.", "parameters": [ { "name": "uid", @@ -6254,7 +6254,7 @@ "Blocked Users" ], "summary": "Unblock User", - "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.

**Limitations:** Can only unblock users that were previously blocked. Both users must exist in your app. Unblocking is one-directional (if both users blocked each other, both must unblock). Requires API key with fullAccess scope.", + "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.", "parameters": [ { "name": "uid", @@ -6336,7 +6336,7 @@ "Blocked Users" ], "summary": "List Blocked Users", - "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.

**When to use:** Displaying a user's blocked users list in settings, checking block status before initiating communication, admin review of user blocking patterns, or syncing block lists with your application.

**Response includes:** Full user profile for each blocked user, block timestamp (blockedAt, blockedByMeAt), block status flags (blockedByMe), and pagination metadata for large block lists.

**Limitations:** Only returns users blocked BY the specified user. Does not show users who have blocked the specified user. Maximum 100 users per page (default). Requires API key with fullAccess scope.", + "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.

**When to use:** Displaying a user's blocked users list in settings, checking block status before initiating communication, admin review of user blocking patterns, or syncing block lists with your application.

**Response includes:** Full user profile for each blocked user, block timestamp (blockedAt, blockedByMeAt), block status flags (blockedByMe), and pagination metadata for large block lists.", "parameters": [ { "name": "uid", @@ -6822,7 +6822,7 @@ "Restrict Features" ], "summary": "Restrict Features", - "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).

**Limitations:** Requires API key with fullAccess scope. Cannot restrict features for the default role. Returns 404 if role does not exist.", + "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).", "parameters": [ { "name": "role", @@ -8211,7 +8211,7 @@ "Messages" ], "summary": "Send Bot Message", - "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.

**Limitations:** Bot UID must exist and have the bot role. Message text max length is 65535 characters. Metadata max size is 65KB. Custom data max size is 65KB. Maximum 25 tags per message. Tag max length is 100 characters each. Receiver must be a valid user UID or group GUID. Requires API key with fullAccess scope. Rate limit is 30 requests per second per app.", + "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.", "parameters": [ { "name": "uid", @@ -9579,7 +9579,7 @@ "Notifications" ], "summary": "Register push token", - "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).

**Limitations:** Requires API key with fullAccess scope. Auth token must be valid and not expired. Push token must be obtained from FCM or APNS. Maximum 10 active tokens per user. Rate limit is 50 requests per minute.", + "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).", "requestBody": { "content": { "application/json": { @@ -9764,7 +9764,7 @@ "Notifications" ], "summary": "Delete the given push token", - "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.

**Limitations:** This action cannot be undone. Requires API key with fullAccess scope. Push token must exist in the system. Rate limit is 50 requests per minute.", + "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.", "parameters": [ { "$ref": "#/components/parameters/pushToken" @@ -10765,7 +10765,7 @@ "Notifications" ], "summary": "Get Custom Provider for Push Notifications", - "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.

**How it works:** CometChat sends notification payloads to your webhook URL. Your server receives the payload and delivers notifications using your preferred method. Useful for custom notification routing, logging, or using alternative push services.

**Response fields:** webhookURL (the endpoint that receives notification payloads), isEnabled (whether the custom provider is active), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).

**Limitations:** Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", + "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.

**How it works:** CometChat sends notification payloads to your webhook URL. Your server receives the payload and delivers notifications using your preferred method. Useful for custom notification routing, logging, or using alternative push services.

**Response fields:** webhookURL (the endpoint that receives notification payloads), isEnabled (whether the custom provider is active), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).", "responses": { "200": { "description": "A list of push notification's custom provider", @@ -10802,7 +10802,7 @@ "Notifications" ], "summary": "Save Custom Provider for Push Notifications", - "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.

**Limitations:** Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", + "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.", "requestBody": { "content": { "application/json": { @@ -11657,7 +11657,7 @@ "Moderation" ], "summary": "Add Rule", - "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).

**Limitations:** Rule ID max length is 100 characters. Rule ID must be unique within your app. AI moderation features may require specific subscription plans. Requires API key with fullAccess scope.", + "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).", "requestBody": { "required": true, "content": { @@ -11733,7 +11733,7 @@ "Moderation" ], "summary": "List Rules", - "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.

**Rule categories:** Text Profanity (keyword-based filtering for text messages), Custom Profanity (keyword filtering for custom message types), Image Moderation (AI-powered image content analysis), Video Moderation (AI-powered video content analysis), and Pattern Filters (regex-based filtering for emails, phone numbers).

**Limitations:** Maximum 50 rules per request (use limit parameter). Requires API key with fullAccess scope.", + "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.

**Rule categories:** Text Profanity (keyword-based filtering for text messages), Custom Profanity (keyword filtering for custom message types), Image Moderation (AI-powered image content analysis), Video Moderation (AI-powered video content analysis), and Pattern Filters (regex-based filtering for emails, phone numbers).", "parameters": [ { "name": "limit", @@ -12041,7 +12041,7 @@ "Moderation" ], "summary": "Get Rule", - "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.

**Limitations:** Requires API key with fullAccess scope. Returns 404 if rule does not exist.", + "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12097,7 +12097,7 @@ "Moderation" ], "summary": "Update Rule", - "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.

**Limitations:** Rule ID cannot be changed. Cannot modify default system rules. Requires API key with fullAccess scope.", + "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -12178,7 +12178,7 @@ "Moderation" ], "summary": "Remove rule", - "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.

**Limitations:** This action cannot be undone. Cannot delete default system rules. Requires API key with fullAccess scope. Returns 404 if rule does not exist.", + "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.", "parameters": [ { "$ref": "#/components/parameters/ruleId" @@ -14303,7 +14303,7 @@ "Metrics" ], "summary": "Usage Metrics", - "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.

**Available metrics:** audio_minutes (total minutes of audio calls), video_minutes (total minutes of video calls), recorded_minutes (total minutes of recorded calls), active_users (number of unique users who were active), and concurrent_users (peak concurrent users during the period).

**Limitations:** Maximum date range is 90 days. Data retention is 12 months. Timestamps must be in milliseconds. Requires API key with fullAccess scope.", + "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.

**Available metrics:** audio_minutes (total minutes of audio calls), video_minutes (total minutes of video calls), recorded_minutes (total minutes of recorded calls), active_users (number of unique users who were active), and concurrent_users (peak concurrent users during the period).", "parameters": [ { "name": "fromDate", @@ -14369,7 +14369,7 @@ "Metrics" ], "summary": "Message Metrics", - "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.

**Available metrics per interval:** messagesSent (number of messages sent during the interval), readReceipts (number of read receipts received), and deliveryReceipts (number of delivery receipts received). Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.

**Limitations:** Returns last 1 hour of data only. Data points are in 5-minute intervals. Real-time data may have up to 5 minutes delay. Requires API key with fullAccess scope.", + "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.

**Available metrics per interval:** messagesSent (number of messages sent during the interval), readReceipts (number of read receipts received), and deliveryReceipts (number of delivery receipts received). Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.", "responses": { "200": { "description": "Message metrics broken down into 5-minute intervals. Use this to visualize message activity over time.", diff --git a/data-import-apis.json b/data-import-apis.json index afc83685f..9f84b2c33 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -32,7 +32,7 @@ "Messages" ], "summary": "Import Messages", - "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.

**Limitations:** Maximum 100 messages per request. MUID max length is 100 characters. Message data max size is 100KB per message. Attachment URLs must be publicly accessible. Maximum 5 attachments per message. Each attachment URL max length is 2048 characters. Maximum 25 tags per message. Requires API key with fullAccess scope. sentAt timestamp is required for each message.", + "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.", "requestBody": { "content": { "application/json": { @@ -802,7 +802,7 @@ "Groups" ], "summary": "Import Groups", - "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.

**Limitations:** Maximum 100 groups per request. GUID max length is 100 characters. Name max length is 100 characters. Metadata max size is 100KB per group. Requires API key with fullAccess scope.", + "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.", "requestBody": { "content": { "application/json": { @@ -1001,7 +1001,7 @@ "Groups" ], "summary": "Import Group Members", - "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.

**Limitations:** Maximum 100 memberships per request. Member ID format must be {guid}_member_{uid}. GUID max length is 100 characters. UID max length is 100 characters. Valid scope values are admin, moderator, participant. Requires API key with fullAccess scope. Group and user must exist or be provided in groupDetails/userDetails.", + "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.", "requestBody": { "content": { "application/json": { From 6c73e3201f0bcc463ed30ac18e6085cf6c41e867 Mon Sep 17 00:00:00 2001 From: Pranav Kamble Date: Wed, 18 Feb 2026 20:07:04 +0530 Subject: [PATCH 17/56] cac changes --- chat-apis.json | 62 +++++++++++++++++++++---------------------- data-import-apis.json | 12 ++++----- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index e6cd932f1..d162f09ea 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -43,7 +43,7 @@ ], "properties": { "name": { - "description": "A descriptive name to identify this API key's purpose. Use names like 'iOS App Key', 'Backend Server Key', or 'Analytics Integration'. Max 100 characters.", + "description": "A descriptive name to identify this API key's purpose. Use names like 'iOS App Key', 'Backend Server Key', or 'Analytics Integration'.", "type": "string" }, "scope": { @@ -251,7 +251,7 @@ "schema": { "properties": { "name": { - "description": "Updated display name for the API key. Use descriptive names to identify the key's purpose. Max 100 characters.", + "description": "Updated display name for the API key. Use descriptive names to identify the key's purpose.", "type": "string" }, "scope": { @@ -369,19 +369,19 @@ ], "properties": { "uid": { - "description": "Unique identifier for the user within your app. This ID is used to identify the user across all CometChat operations. Must be unique (case-insensitive), contain only alphanumeric characters, underscores, or hyphens, and be between 1-100 characters. Cannot be changed after creation.", + "description": "Unique identifier for the user within your app. This ID is used to identify the user across all CometChat operations. Must be unique (case-insensitive) and contain only alphanumeric characters, underscores, or hyphens. Cannot be changed after creation.", "type": "string" }, "name": { - "description": "Display name shown to other users in chat interfaces, user lists, and notifications. Can be updated later. Maximum 100 characters.", + "description": "Display name shown to other users in chat interfaces, user lists, and notifications. Can be updated later.", "type": "string" }, "avatar": { - "description": "URL to the user's profile picture. Must be a valid, publicly accessible URL. Displayed in chat bubbles, user lists, and notifications. Recommended size: 200x200 pixels. Maximum URL length: 2048 characters.", + "description": "URL to the user's profile picture. Must be a valid, publicly accessible URL. Displayed in chat bubbles, user lists, and notifications. Recommended size: 200x200 pixels.", "type": "string" }, "link": { - "description": "URL to the user's profile page in your application. Can be used to link back to your app's user profile. Maximum URL length: 2048 characters.", + "description": "URL to the user's profile page in your application. Can be used to link back to your app's user profile.", "type": "string" }, "role": { @@ -393,7 +393,7 @@ "type": "string" }, "metadata": { - "description": "Custom JSON object for storing additional user information. Use the `@private` key for sensitive data (email, phone) that should not be visible to other users. Private metadata is only returned to the user themselves or via admin APIs. Maximum size: 100KB.", + "description": "Custom JSON object for storing additional user information. Use the `@private` key for sensitive data (email, phone) that should not be visible to other users. Private metadata is only returned to the user themselves or via admin APIs.", "properties": { "@private": { "description": "Private metadata not visible to other users. Ideal for storing email addresses and phone numbers for notification extensions.", @@ -419,7 +419,7 @@ } }, "tags": { - "description": "Array of tags for categorizing and filtering users. Useful for segmenting users by department, location, or custom criteria. Maximum 25 tags, each up to 100 characters.", + "description": "Array of tags for categorizing and filtering users. Useful for segmenting users by department, location, or custom criteria.", "type": "array", "items": { "type": "string" @@ -914,15 +914,15 @@ "schema": { "properties": { "name": { - "description": "Updated display name for the user. Shown in chat interfaces and user lists. Maximum 100 characters.", + "description": "Updated display name for the user. Shown in chat interfaces and user lists.", "type": "string" }, "avatar": { - "description": "Updated URL to the user's profile picture. Must be a valid, publicly accessible URL. Maximum 2048 characters.", + "description": "Updated URL to the user's profile picture. Must be a valid, publicly accessible URL.", "type": "string" }, "link": { - "description": "Updated URL to the user's profile page in your application. Maximum 2048 characters.", + "description": "Updated URL to the user's profile page in your application.", "type": "string" }, "role": { @@ -934,7 +934,7 @@ "type": "string" }, "metadata": { - "description": "Updated custom JSON object for storing additional user information. This replaces the entire metadata object. Use `@private` key for sensitive data. Maximum size: 100KB.", + "description": "Updated custom JSON object for storing additional user information. This replaces the entire metadata object. Use `@private` key for sensitive data.", "properties": { "@private": { "description": "Private metadata not visible to other users.", @@ -960,7 +960,7 @@ } }, "tags": { - "description": "Updated array of tags for the user. This replaces all existing tags. Maximum 25 tags, each up to 100 characters.", + "description": "Updated array of tags for the user. This replaces all existing tags.", "type": "array", "items": { "type": "string" @@ -1126,11 +1126,11 @@ ], "properties": { "guid": { - "description": "A unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore (_), and hyphen (-). Max length: 100 characters. This cannot be changed after creation.", + "description": "A unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore (_), and hyphen (-). This cannot be changed after creation.", "type": "string" }, "name": { - "description": "Display name of the group shown to users in the UI. Max length: 100 characters. Can be updated later.", + "description": "Display name of the group shown to users in the UI. Can be updated later.", "type": "string" }, "type": { @@ -1151,11 +1151,11 @@ "type": "string" }, "description": { - "description": "A brief description of the group's purpose. Max length: 500 characters. Displayed to users when viewing group details.", + "description": "A brief description of the group's purpose. Displayed to users when viewing group details.", "type": "string" }, "metadata": { - "description": "Custom JSON object for storing additional group data (e.g., settings, preferences, custom fields). Max size: 100KB. Useful for app-specific configurations.", + "description": "Custom JSON object for storing additional group data (e.g., settings, preferences, custom fields). Useful for app-specific configurations.", "type": "object" }, "owner": { @@ -1163,7 +1163,7 @@ "type": "string" }, "tags": { - "description": "Array of tags for categorizing and filtering groups. Max 10 tags, each up to 50 characters. Useful for organizing groups by topic, department, or custom categories.", + "description": "Array of tags for categorizing and filtering groups. Useful for organizing groups by topic, department, or custom categories.", "type": "array", "items": { "type": "string" @@ -1173,7 +1173,7 @@ ] }, "members": { - "description": "Object containing arrays of UIDs to add as members with different permission levels during group creation. Max 100 total members.", + "description": "Object containing arrays of UIDs to add as members with different permission levels during group creation.", "properties": { "admins": { "description": "Array of UIDs to add as admins. Admins can manage members, change settings, and moderate content.", @@ -1588,7 +1588,7 @@ "schema": { "properties": { "name": { - "description": "New display name for the group. Max length: 100 characters. Leave empty to keep current name.", + "description": "New display name for the group. Leave empty to keep current name.", "type": "string" }, "type": { @@ -1609,11 +1609,11 @@ "type": "string" }, "description": { - "description": "New description for the group. Max length: 500 characters. Use 'unset' parameter to remove.", + "description": "New description for the group. Use 'unset' parameter to remove.", "type": "string" }, "metadata": { - "description": "New custom metadata object. Replaces existing metadata entirely. Max size: 100KB. Use 'unset' parameter to remove.", + "description": "New custom metadata object. Replaces existing metadata entirely. Use 'unset' parameter to remove.", "type": "object" }, "owner": { @@ -1621,7 +1621,7 @@ "type": "string" }, "tags": { - "description": "New array of tags. Replaces all existing tags. Max 10 tags, each up to 50 characters. Pass empty array to remove all tags.", + "description": "New array of tags. Replaces all existing tags. Pass empty array to remove all tags.", "type": "array", "items": { "type": "string" @@ -1741,7 +1741,7 @@ "Messages" ], "summary": "Send Message", - "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration. Max message size: 65KB.", + "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration.", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -6661,7 +6661,7 @@ "Roles" ], "summary": "Update", - "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Role name max length is 100 characters. Cannot update the default role's core settings. Requires API key with fullAccess scope.", + "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Cannot update the default role's core settings. Requires API key with fullAccess scope.", "parameters": [ { "name": "role", @@ -16496,11 +16496,11 @@ "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", "properties": { "guid": { - "description": "Unique identifier for the group. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", + "description": "Unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { - "description": "Display name of the group shown in chat interfaces. Max length: 100 characters", + "description": "Display name of the group shown in chat interfaces", "type": "string" }, "description": { @@ -16544,7 +16544,7 @@ "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific group data. Max size: 100KB", + "description": "Custom key-value pairs for storing application-specific group data", "type": "object" }, "tags": { @@ -18201,11 +18201,11 @@ "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", "properties": { "uid": { - "description": "Unique identifier for the user. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", + "description": "Unique identifier for the user. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { - "description": "Display name of the user shown in chat interfaces. Max length: 100 characters", + "description": "Display name of the user shown in chat interfaces", "type": "string" }, "avatar": { @@ -18217,7 +18217,7 @@ "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific user data. Max size: 100KB", + "description": "Custom key-value pairs for storing application-specific user data", "properties": { "email": { "description": "Example metadata field - you can store any custom data here", diff --git a/data-import-apis.json b/data-import-apis.json index 9f84b2c33..61f9913a2 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -3312,11 +3312,11 @@ "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", "properties": { "guid": { - "description": "Unique identifier for the group. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", + "description": "Unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { - "description": "Display name of the group shown in chat interfaces. Max length: 100 characters", + "description": "Display name of the group shown in chat interfaces", "type": "string" }, "description": { @@ -3360,7 +3360,7 @@ "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific group data. Max size: 100KB", + "description": "Custom key-value pairs for storing application-specific group data", "type": "object" }, "tags": { @@ -5017,11 +5017,11 @@ "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", "properties": { "uid": { - "description": "Unique identifier for the user. Must be unique across your app. Max length: 100 characters. Allowed characters: alphanumeric, underscore, and hyphen", + "description": "Unique identifier for the user. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { - "description": "Display name of the user shown in chat interfaces. Max length: 100 characters", + "description": "Display name of the user shown in chat interfaces", "type": "string" }, "avatar": { @@ -5033,7 +5033,7 @@ "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific user data. Max size: 100KB", + "description": "Custom key-value pairs for storing application-specific user data", "properties": { "email": { "description": "Example metadata field - you can store any custom data here", From 176503641830d420078bd8b64cc2dee6fc91281f Mon Sep 17 00:00:00 2001 From: siva-cometchat Date: Thu, 19 Feb 2026 02:57:44 +0530 Subject: [PATCH 18/56] Added the greedy regex info in moderation. --- moderation/legacy-extensions.mdx | 18 ++++++++++++++++++ moderation/lists-management.mdx | 18 +++++++++++++++++- moderation/overview.mdx | 4 ++++ moderation/rules-management.mdx | 4 ++++ rest-api/rate-limits.mdx | 2 +- 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/moderation/legacy-extensions.mdx b/moderation/legacy-extensions.mdx index 258bb16a5..f631395a7 100644 --- a/moderation/legacy-extensions.mdx +++ b/moderation/legacy-extensions.mdx @@ -105,6 +105,12 @@ Open the Extension's settings page and click "View Reports" to Delete or Ignore Hide phone numbers, email addresses, and other sensitive information in messages. + +**Do not use alongside Rules-based Moderation:** If you have enabled any moderation rules in [Rules Management](/moderation/rules-management), disable this Data Masking extension. Running both will cause each message to be processed twice, resulting in performance issues and message delivery delays. + +We recommend using [Rules Management](/moderation/rules-management) instead, which includes Contact Details Filter and Email Filter rules with better performance. + + **Settings** 1. Enable the extension @@ -147,6 +153,12 @@ if (metadata != null) { Mask or hide profanity in messages using a customizable blacklist. + +**Do not use alongside Rule-based Moderation:** If you have enabled any moderation rules in [Rules Management](/moderation/rules-management), disable this Profanity Filter extension. Running both will cause each message to be processed twice, resulting in performance issues and message delivery delays. + +We recommend using [Rules Management](/moderation/rules-management) instead, which offers the same profanity filtering plus advanced AI-powered detection and more flexible configuration options. + + **Settings** 1. Enable the extension @@ -187,6 +199,12 @@ if (metadata != null) { AI-powered image moderation to detect unsafe content. + +**Do not use alongside Rules-based Moderation:** If you have enabled any moderation rules in [Rules Management](/moderation/rules-management), disable this Image Moderation extension. Running both will cause each image to be processed twice, resulting in performance issues and message delivery delays. + +We recommend using [Rules Management](/moderation/rules-management) instead, which includes AI Image Moderation and OpenAI-powered image rules with better performance and more detection categories. + + Images are classified into: - Explicit Nudity - Suggestive Nudity diff --git a/moderation/lists-management.mdx b/moderation/lists-management.mdx index 74d245f2e..3e22cbe25 100644 --- a/moderation/lists-management.mdx +++ b/moderation/lists-management.mdx @@ -50,6 +50,21 @@ Create a custom keyword list in under 2 minutes: - Custom data formats **Example:** `\b\d{3}[-.]?\d{3}[-.]?\d{4}\b` (US phone numbers) + + + **Greedy Regex Not Allowed:** For system performance and security, greedy regex patterns (using `*`, `+`, `{n,}` without proper boundaries) are not permitted. Greedy patterns can cause excessive backtracking and impact system performance. + + **Examples of prohibited patterns:** + - `.*` (matches everything) + - `.+` (matches one or more of anything) + - `(a+)+` (nested quantifiers) + - `\d{10,}` (unbounded quantifier) + + **Use specific, bounded patterns instead:** + - `\d{3,10}` instead of `\d+` + - `[a-z]{1,50}` instead of `[a-z]+` + - `\b\w{3,20}\b` instead of `\w+` + AI-powered semantic matching. Use for: @@ -133,7 +148,8 @@ Pre-configured lists ready to use with your rules: |----------|-------------| | **Start with Defaults** | Use default lists first, then create custom lists only for gaps in coverage. | | **Use Sentence Similarity for Scams** | Scammers constantly change wording. Sentence similarity catches variations automatically. | -| **Test Regex Patterns** | Test regex patterns before deploying. A bad pattern can block legitimate content. | +| **Test Regex Patterns** | Test regex patterns before deploying. A bad pattern can block legitimate content. Avoid greedy patterns that can impact system performance. | +| **Avoid Greedy Regex** | Do not use unbounded quantifiers (`*`, `+`, `{n,}`) without proper boundaries. Always specify maximum lengths (e.g., `\d{3,10}` instead of `\d+`). | | **Review Regularly** | Check blocked messages monthly and update lists based on new patterns. | ### Tips for Effective Lists diff --git a/moderation/overview.mdx b/moderation/overview.mdx index 56a2906c5..6cfdc2af4 100644 --- a/moderation/overview.mdx +++ b/moderation/overview.mdx @@ -4,6 +4,10 @@ title: "Overview" The Moderation feature provides a comprehensive suite of capabilities designed to manage and enforce message moderation rules across various types of messages, ensuring your platform remains safe and compliant for all users. + +**Using legacy moderation extensions?** Disable legacy extensions (Profanity Filter, Data Masking, Image Moderation) from the [Extensions page](/moderation/legacy-extensions) before creating moderation rules. Running both will cause performance issues and message delays as each message gets processed twice. + + ## Key Benefits - **Automated Content Filtering** - Automatically detect and handle inappropriate content before it reaches users diff --git a/moderation/rules-management.mdx b/moderation/rules-management.mdx index 4ca0b81d1..30cf98831 100644 --- a/moderation/rules-management.mdx +++ b/moderation/rules-management.mdx @@ -417,6 +417,10 @@ Actions determine what happens when content matches the conditions: 3. Click **Save** 4. **Enable** the rule to start moderating + +**Regex Pattern Restrictions:** When using Word patterns (regex) in conditions, avoid greedy patterns like `.*`, `.+`, or unbounded quantifiers (`\d+`, `\w+`). Use bounded patterns instead (e.g., `\d{3,10}` instead of `\d+`) to prevent performance issues. See [Lists Management](/moderation/lists-management) for more details. + + ### List Rules All configured rules are displayed in the Rules tab with their name, status, and actions. diff --git a/rest-api/rate-limits.mdx b/rest-api/rate-limits.mdx index 64fe948ba..395ea179f 100644 --- a/rest-api/rate-limits.mdx +++ b/rest-api/rate-limits.mdx @@ -9,7 +9,7 @@ CometChat enforces rate limits to ensure fair usage and maintain service quality | Operation Type | Rate Limit | Examples | | -------------- | ---------- | -------- | | Core operations | 10,000 requests/min | User connection, create/delete user, create/join/leave group | -| Standard operations | 20,000 requests/min | Sending messages, fetching conversations, updating profiles | +| Standard operations | 20,000 requests/min | All operations not classified as core operations (e.g., sending messages, fetching conversations, updating profiles) | | Build plan (free) | 500 requests/min | Applies to both core and standard operations | ## Per-User Rate Limits From 782cde1f52ff4171c85fd2c24b932bcbd6b6f60a Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 23 Mar 2026 19:35:50 +0530 Subject: [PATCH 19/56] =?UTF-8?q?fix:=20REST=20API=20docs=20review=20?= =?UTF-8?q?=E2=80=94=20broken=20links,=20contradictions,=20enriched=20Rela?= =?UTF-8?q?ted=20cards?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix broken link /rest-api/group-members/add → /rest-api/group-members/add-members (users/create.mdx) - Fix broken link /rest-api/group-members/update → /rest-api/group-members/change-scope (roles.mdx) - Add Common errors and Next steps to groups/create.mdx for consistency - Fix auth token limit contradiction: 'No limit' → '100 active (rolling retention)' in users/create.mdx and properties-and-constraints.mdx to match auth-tokens.mdx - Fix authOnly scope description in api-keys.mdx: can create users + auth tokens, not just tokens - Fix blocking description in users.mdx: bidirectional, not just incoming - Fix metadata limit in properties-and-constraints.mdx: 1.6 KB → 5 KB to match users.mdx - Enrich Related cards on all 49 notification endpoint pages with contextual sibling cross-links --- articles/error-guide.mdx | 2 +- articles/limits.mdx | 37 ---- articles/properties-and-constraints.mdx | 175 +++++++++--------- rest-api/api-keys.mdx | 37 +++- rest-api/api-keys/delete.mdx | 24 ++- rest-api/api-keys/get.mdx | 24 ++- rest-api/api-keys/list.mdx | 20 +- rest-api/api-keys/update.mdx | 24 ++- rest-api/auth-tokens.mdx | 42 ++++- rest-api/auth-tokens/create.mdx | 24 ++- rest-api/auth-tokens/delete.mdx | 25 ++- rest-api/auth-tokens/flush.mdx | 24 ++- rest-api/auth-tokens/get.mdx | 25 ++- rest-api/auth-tokens/list.mdx | 24 ++- rest-api/auth-tokens/update.mdx | 25 ++- rest-api/banned-users.mdx | 30 ++- rest-api/banned-users/ban.mdx | 25 ++- rest-api/banned-users/list.mdx | 24 ++- rest-api/banned-users/unban.mdx | 25 ++- rest-api/blocked-users.mdx | 26 ++- rest-api/blocked-users/block-user.mdx | 27 ++- rest-api/blocked-users/list-blocked-users.mdx | 24 ++- rest-api/blocked-users/unblock-user.mdx | 27 ++- rest-api/chat-apis.mdx | 14 +- .../conversations/get-group-conversation.mdx | 30 ++- .../conversations/get-user-conversation.mdx | 30 ++- rest-api/conversations/list-conversations.mdx | 20 +- .../mark-conversation-messages-as-unread.mdx | 30 ++- .../mark-group-conversation-as-delivered.mdx | 30 ++- .../mark-group-conversation-as-read.mdx | 30 ++- .../mark-group-conversation-as-unread.mdx | 30 ++- .../mark-user-conversation-as-delivered.mdx | 30 ++- .../mark-user-conversation-as-read.mdx | 30 ++- .../reset-group-conversation.mdx | 30 ++- .../conversations/reset-user-conversation.mdx | 30 ++- .../update-group-conversation.mdx | 30 ++- .../update-user-conversation.mdx | 30 ++- .../groups/import-group-members.mdx | 20 +- .../data-import-apis/groups/import-groups.mdx | 20 +- .../messages/import-messages.mdx | 20 +- .../data-import-apis/users/import-users.mdx | 20 +- rest-api/friends.mdx | 24 ++- rest-api/friends/add-friends.mdx | 24 ++- rest-api/friends/list-friends.mdx | 24 ++- rest-api/friends/remove-friends.mdx | 24 ++- rest-api/get-call.mdx | 21 ++- rest-api/group-members/add-members.mdx | 24 ++- rest-api/group-members/change-scope.mdx | 25 ++- rest-api/group-members/kick.mdx | 25 ++- rest-api/group-members/list.mdx | 24 ++- rest-api/groups/create.mdx | 54 ++++-- rest-api/groups/delete.mdx | 24 ++- rest-api/groups/get.mdx | 24 ++- rest-api/groups/list.mdx | 23 ++- rest-api/groups/update.mdx | 24 ++- rest-api/management-apis.mdx | 4 +- rest-api/management-apis/app/create.mdx | 27 ++- rest-api/management-apis/app/delete.mdx | 19 +- rest-api/management-apis/app/fetch-usage.mdx | 19 +- rest-api/management-apis/app/list.mdx | 18 +- .../extensions/bitly-delete-settings.mdx | 19 +- .../extensions/bitly-get-settings.mdx | 19 +- .../extensions/bitly-store-settings.mdx | 19 +- .../extensions/bitly-update-settings.mdx | 19 +- .../extensions/chat-widgets-create.mdx | 19 +- .../extensions/chat-widgets-list.mdx | 19 +- .../extensions/chat-widgets-update.mdx | 19 +- .../extensions/chatwoot-delete-settings.mdx | 19 +- .../extensions/chatwoot-get-settings.mdx | 19 +- .../extensions/chatwoot-store-settings.mdx | 19 +- .../extensions/chatwoot-update-settings.mdx | 19 +- .../data-masking-delete-settings.mdx | 19 +- .../extensions/data-masking-get-settings.mdx | 19 +- .../data-masking-store-or-update-settings.mdx | 19 +- .../email-notification-delete-settings.mdx | 19 +- .../email-notification-get-settings.mdx | 19 +- .../email-notification-store-settings.mdx | 19 +- .../email-notification-update-settings.mdx | 19 +- .../email-replies-delete-settings.mdx | 19 +- .../extensions/email-replies-get-settings.mdx | 19 +- .../email-replies-store-settings.mdx | 19 +- .../email-replies-update-settings.mdx | 19 +- .../extensions/enabledisable.mdx | 19 +- .../end-to-end-encryption-delete-settings.mdx | 19 +- .../end-to-end-encryption-get-settings.mdx | 19 +- .../end-to-end-encryption-store-settings.mdx | 19 +- .../end-to-end-encryption-update-settings.mdx | 19 +- .../giphy-delete-settings-for-giphy.mdx | 19 +- .../extensions/giphy-get-settings.mdx | 19 +- .../extensions/giphy-store-settings.mdx | 19 +- .../extensions/giphy-update-settings.mdx | 19 +- .../image-moderation-delete-settings.mdx | 19 +- .../image-moderation-get-settings.mdx | 19 +- .../image-moderation-store-settings.mdx | 19 +- .../image-moderation-update-settings.mdx | 19 +- ...ght-message-moderation-delete-settings.mdx | 19 +- ...flight-message-moderation-get-settings.mdx | 19 +- ...ight-message-moderation-store-settings.mdx | 19 +- ...ght-message-moderation-update-settings.mdx | 19 +- .../extensions/intercom-delete-settings.mdx | 19 +- .../extensions/intercom-get-settings.mdx | 19 +- .../extensions/intercom-store-settings.mdx | 19 +- .../extensions/intercom-update-settings.mdx | 19 +- .../extensions/list-extensions.mdx | 19 +- .../message-shortcuts-delete-settings.mdx | 19 +- .../message-shortcuts-get-settings.mdx | 19 +- .../message-shortcuts-store-settings.mdx | 19 +- .../message-shortcuts-update-settings.mdx | 19 +- .../profanity-filter-adds-settings.mdx | 19 +- .../profanity-filter-delete-settings.mdx | 19 +- .../profanity-filter-get-settings.mdx | 19 +- .../profanity-filter-update-settings.mdx | 19 +- .../push-notification-delete-settings.mdx | 19 +- .../push-notification-get-certificate.mdx | 19 +- .../push-notification-get-settings.mdx | 19 +- .../push-notification-store-settings.mdx | 19 +- .../push-notification-update-settings.mdx | 19 +- ...sh-notification-upload-p12-certificate.mdx | 19 +- ...ush-notification-upload-p8-certificate.mdx | 19 +- .../report-message-delete-settings.mdx | 19 +- .../report-message-get-settings.mdx | 19 +- .../report-message-store-settings.mdx | 19 +- .../report-message-update-settings.mdx | 19 +- .../report-user-delete-settings.mdx | 19 +- .../extensions/report-user-get-settings.mdx | 19 +- .../extensions/report-user-store-settings.mdx | 19 +- .../report-user-update-settings.mdx | 19 +- .../rich-media-preview-delete-settings.mdx | 19 +- .../rich-media-preview-get-settings.mdx | 19 +- .../rich-media-preview-store-settings.mdx | 19 +- .../rich-media-preview-update-settings.mdx | 19 +- .../sentiment-analysis-delete-settings.mdx | 19 +- .../sentiment-analysis-get-settings.mdx | 19 +- .../sentiment-analysis-store-settings.mdx | 19 +- .../sentiment-analysis-update-settings.mdx | 19 +- .../sms-notification-delete-settings.mdx | 19 +- .../sms-notification-get-settings.mdx | 19 +- .../sms-notification-store-settings.mdx | 19 +- .../sms-notification-update-settings.mdx | 19 +- .../stickers-extension-delete-settings.mdx | 19 +- .../stickers-extension-get-settings.mdx | 19 +- .../stickers-extension-update-settings.mdx | 19 +- .../extensions/stipop-delete-settings.mdx | 19 +- .../extensions/stipop-get-settings.mdx | 19 +- .../extensions/stipop-store-settings.mdx | 19 +- .../extensions/stipop-update-settings.mdx | 19 +- .../extensions/tenor-gifs-delete-settings.mdx | 19 +- .../extensions/tenor-gifs-get-settings.mdx | 19 +- .../extensions/tenor-gifs-store-settings.mdx | 19 +- .../extensions/tenor-gifs-update-settings.mdx | 19 +- .../extensions/tinyurl-delete-settings.mdx | 19 +- .../extensions/tinyurl-get-settings.mdx | 19 +- .../extensions/tinyurl-store-settings.mdx | 19 +- .../extensions/tinyurl-update-settings.mdx | 19 +- .../video-broadcasting-delete-settings.mdx | 19 +- .../video-broadcasting-get-settings.mdx | 19 +- .../video-broadcasting-store-settings.mdx | 19 +- .../video-broadcasting-update-settings.mdx | 19 +- .../virus-malware-scanner-delete-settings.mdx | 19 +- .../virus-malware-scanner-get-settings.mdx | 19 +- .../virus-malware-scanner-store-settings.mdx | 19 +- .../virus-malware-scanner-update-settings.mdx | 19 +- .../voice-transcription-delete-settings.mdx | 19 +- .../voice-transcription-get-settings.mdx | 19 +- .../voice-transcription-store-settings.mdx | 19 +- .../voice-transcription-update-settings.mdx | 19 +- .../extensions/xss-filter-delete-settings.mdx | 19 +- .../extensions/xss-filter-get-settings.mdx | 19 +- .../extensions/xss-filter-store-settings.mdx | 19 +- .../extensions/xss-filter-update-settings.mdx | 19 +- .../settings/list-settings.mdx | 19 +- .../settings/maps-settings.mdx | 19 +- .../settings/unmaps-settings.mdx | 19 +- .../addsremove-collaborators.mdx | 19 +- .../team-management/list-collaborators.mdx | 19 +- .../management-apis/tenants/add-tenant.mdx | 3 - .../management-apis/webhooks/add-triggers.mdx | 20 +- .../webhooks/create-webhook.mdx | 19 +- .../webhooks/delete-webhook.mdx | 20 +- .../management-apis/webhooks/get-webhook.mdx | 20 +- .../webhooks/list-triggers.mdx | 20 +- .../webhooks/list-webhooks.mdx | 19 +- .../webhooks/remove-triggers.mdx | 20 +- .../webhooks/update-webhook.mdx | 20 +- rest-api/messages/add-reaction.mdx | 24 ++- rest-api/messages/delete-message.mdx | 24 ++- rest-api/messages/get-message.mdx | 24 ++- rest-api/messages/list-all-reactions.mdx | 24 ++- rest-api/messages/list-group-messages.mdx | 24 ++- rest-api/messages/list-messages.mdx | 23 ++- ...eactions-with-a-specific-emojiunicodes.mdx | 24 ++- rest-api/messages/list-threaded-messages.mdx | 24 ++- rest-api/messages/list-user-messages.mdx | 24 ++- .../messages/mark-message-as-interacted.mdx | 24 ++- rest-api/messages/remove-reaction.mdx | 24 ++- rest-api/messages/send-bot-message.mdx | 24 ++- rest-api/messages/send-threaded-message.mdx | 24 ++- rest-api/messages/update-message.mdx | 24 ++- rest-api/metrics/message-metrics.mdx | 20 +- rest-api/metrics/usage-metrics.mdx | 20 +- rest-api/moderation/add-keywords.mdx | 18 ++ rest-api/moderation/add-rule.mdx | 20 +- .../moderation/approve-blocked-messages.mdx | 21 ++- .../blockreview-flagged-message.mdx | 19 ++ rest-api/moderation/create-reasons.mdx | 20 +- rest-api/moderation/delete-message.mdx | 21 ++- rest-api/moderation/delete-reasons.mdx | 19 ++ rest-api/moderation/flag-a-message.mdx | 21 ++- rest-api/moderation/get-keyword.mdx | 21 ++- rest-api/moderation/get-message.mdx | 21 ++- rest-api/moderation/get-reason-details.mdx | 19 ++ rest-api/moderation/get-rule-revisions.mdx | 21 ++- rest-api/moderation/get-rule.mdx | 21 ++- rest-api/moderation/list-blocked-messages.mdx | 20 +- rest-api/moderation/list-flagged-messages.mdx | 20 +- rest-api/moderation/list-keywords.mdx | 20 +- rest-api/moderation/list-messages.mdx | 20 +- rest-api/moderation/list-reasons.mdx | 18 ++ .../moderation/list-reviewed-messages.mdx | 20 +- rest-api/moderation/list-rules.mdx | 20 +- rest-api/moderation/remove-keyword.mdx | 21 ++- rest-api/moderation/remove-rule.mdx | 21 ++- .../moderation/review-blocked-message.mdx | 21 ++- rest-api/moderation/send-message.mdx | 20 +- rest-api/moderation/update-keyword.mdx | 21 ++- rest-api/moderation/update-message.mdx | 21 ++- rest-api/moderation/update-reason-details.mdx | 19 ++ rest-api/moderation/update-rule.mdx | 21 ++- rest-api/notifications/add-apns-provider.mdx | 29 ++- rest-api/notifications/add-fcm-provider.mdx | 29 ++- .../change-default-apns-provider.mdx | 29 ++- .../change-default-fcm-provider.mdx | 29 ++- .../notifications/delete-apns-providers.mdx | 29 ++- .../notifications/delete-contact-details.mdx | 29 ++- .../notifications/delete-fcm-provider.mdx | 29 ++- .../delete-sendgrid-credentials.mdx | 29 ++- ...ustom-provider-for-email-notifications.mdx | 29 ++- ...custom-provider-for-push-notifications.mdx | 29 ++- ...-custom-provider-for-sms-notifications.mdx | 29 ++- .../delete-the-given-push-token.mdx | 29 ++- .../delete-twilio-credentials.mdx | 29 ++- .../notifications/get-contact-details.mdx | 29 ++- ...ustom-provider-for-email-notifications.mdx | 29 ++- ...custom-provider-for-push-notifications.mdx | 29 ++- ...-custom-provider-for-sms-notifications.mdx | 29 ++- .../get-sendgrid-credentials.mdx | 29 ++- rest-api/notifications/get-timezone.mdx | 26 ++- .../notifications/get-twilio-credentials.mdx | 29 ++- .../notifications/list-apns-providers.mdx | 29 ++- rest-api/notifications/list-fcm-providers.mdx | 29 ++- .../list-muted-conversations.mdx | 29 ++- rest-api/notifications/list-preferences.mdx | 29 ++- rest-api/notifications/list-push-tokens.mdx | 29 ++- rest-api/notifications/list-settings.mdx | 23 ++- .../mute-notifications-for-conversations.mdx | 29 ++- rest-api/notifications/notifications-logs.mdx | 26 ++- .../notifications/register-push-token.mdx | 29 ++- rest-api/notifications/reset-preferences.mdx | 29 ++- rest-api/notifications/reset-settings.mdx | 23 ++- ...ustom-provider-for-email-notifications.mdx | 29 ++- ...custom-provider-for-push-notifications.mdx | 29 ++- ...-custom-provider-for-sms-notifications.mdx | 29 ++- .../save-sendgrid-credentials.mdx | 29 ++- .../notifications/save-twilio-credentials.mdx | 29 ++- ...unmute-notifications-for-conversations.mdx | 29 ++- .../unregister-push-tokens-for-authtoken.mdx | 29 ++- .../notifications/update-apns-providers.mdx | 29 ++- .../notifications/update-contact-details.mdx | 29 ++- ...ustom-provider-for-email-notifications.mdx | 29 ++- ...custom-provider-for-push-notifications.mdx | 29 ++- ...-custom-provider-for-sms-notifications.mdx | 29 ++- .../notifications/update-fcm-provider.mdx | 29 ++- rest-api/notifications/update-preferences.mdx | 29 ++- .../update-sendgrid-credentials.mdx | 29 ++- rest-api/notifications/update-settings.mdx | 23 ++- rest-api/notifications/update-timezone.mdx | 26 ++- .../update-twilio-credentials.mdx | 29 ++- rest-api/rbac/list-role-permissions.mdx | 24 ++- rest-api/rbac/list-scope-permissions.mdx | 31 +++- rest-api/rbac/set-role-permissions.mdx | 24 ++- rest-api/rbac/set-scope-permissions.mdx | 31 +++- rest-api/rbac/unset-role-permissions.mdx | 28 ++- rest-api/rbac/unset-scope-permissions.mdx | 32 +++- rest-api/restrict-features/allow-features.mdx | 24 ++- .../list-restricted-features.mdx | 24 ++- .../restrict-features/restrict-features.mdx | 24 ++- rest-api/roles.mdx | 65 +++++-- rest-api/roles/delete.mdx | 24 ++- rest-api/roles/get.mdx | 24 ++- rest-api/roles/list.mdx | 23 ++- rest-api/roles/update.mdx | 24 ++- rest-api/users.mdx | 71 +++++-- rest-api/users/create.mdx | 55 ++++-- rest-api/users/deactivate.mdx | 24 ++- rest-api/users/delete.mdx | 31 +++- rest-api/users/get.mdx | 23 ++- rest-api/users/list.mdx | 23 ++- rest-api/users/reactivate.mdx | 24 ++- rest-api/users/update.mdx | 24 ++- 299 files changed, 6515 insertions(+), 507 deletions(-) delete mode 100644 articles/limits.mdx delete mode 100644 rest-api/management-apis/tenants/add-tenant.mdx diff --git a/articles/error-guide.mdx b/articles/error-guide.mdx index 4a8c9742d..c8b4029d2 100644 --- a/articles/error-guide.mdx +++ b/articles/error-guide.mdx @@ -31,7 +31,7 @@ sidebarTitle: "Help Center" | `ERR_ROLE_DELETE_FAILED` | Indicates that the API failed to delete the role. | | `ERR_ROLE_DELETE_DENIED` | Indicates that the API cannot delete the role as the default role can not be deleted. | | **User Errors** | | -| `ERR_UID_NOT_FOUND` | Indicates any one of the following: 1. UID does not exist. 2. User is soft deleted. | +| `ERR_UID_NOT_FOUND` | Indicates any one of the following: 1. UID does not exist. 2. User is deactivated. | | `ERR_UID_DELETE_FAILED` | Indicates that the API failed to delete the user. | | **Bots Errors** | | | `ERR_BOT_NOT_FOUND` | Indicates that a bot is not associated with the UID. | diff --git a/articles/limits.mdx b/articles/limits.mdx deleted file mode 100644 index 156ed8690..000000000 --- a/articles/limits.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Limits" ---- - -To ensure a reliable and seamless chat experience while minimizing downtime and errors, certain limits are in place. - - - -The limits may vary based on your subscription plan. If you have any questions, feel free to [contact us](https://www.cometchat.com/contact). - - - -### Groups - -1. Groups with all features enabled can support up to 300 members. -2. Groups without delivery/read receipts and typing indicators can support up to 100,000 members. - -### Users - -1. A single user can join a maximum of 2,000 groups. -2. A user can have up to 1,000 friends. -3. Presence subscriptions are capped at 1,000 concurrently online users. Once this threshold is exceeded, presence events (online/offline) will no longer be emitted. - -### Messages - -1. Each message, including metadata, must not exceed 65,536 characters (\~65KB). - -### Voice & Video Calling - -1. For the best experience, a maximum of 50 participants can join a single video call. - -### API - -1. REST API calls are rate-limited as follows: - - * **Standard operations**: 20,000 API calls per minute. - * **Core operations**: 10,000 API calls per minute (e.g., creating/deleting users, joining/leaving groups). All other operations fall under standard operations. diff --git a/articles/properties-and-constraints.mdx b/articles/properties-and-constraints.mdx index 5cf74c756..561216aa9 100644 --- a/articles/properties-and-constraints.mdx +++ b/articles/properties-and-constraints.mdx @@ -1,99 +1,98 @@ --- -title: "Properties And Constraints" +title: "Properties and Constraints" --- -This page lists the properties and limits which are applicable to various CometChat systems. +This page lists the properties and constraints applicable to various CometChat systems. -## **Chat widgets:** **Properties and Constraints** +## Chat Widgets -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------------------ | ------------------------------------------ | ----------------------------- | -| Number of Widgets that can be created for an app | Maximum 25 | | -| Widget name | UTF8mb4, 100 chars, No new line characters | | -| Widget version | v2 | Cannot be set programatically | -| Docked layout icon | Docked layout icon: PNG,JPG,GIF,SVG | | +| **Property** | **Constraint** | **Notes** | +| ------------------------------------------------ | ---------------------------------------------- | ------------------------------ | +| Number of widgets that can be created for an app | Maximum 25 | | +| Widget name | 100 characters, UTF8mb4, no newline characters | | +| Widget version | v2 | Cannot be set programmatically | +| Docked layout icon | PNG, JPG, GIF, SVG | | -## **Webhooks: Properties** **and Constraints** +## Webhooks -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------ | --------------------------------------------------------- | --------- | -| Maximum number of webhooks in an app | Maximum 25 | | -| Webhook URL | Valid URL, maximum 255 characters | | -| Webhook ID | 50 characters, UTF8mb4 set, alphanumeric (without spaces) | | -| Webhook authentication username | 50 characters, alphanumeric (without spaces) | | -| Webhook authentication password | 100 characters, alphanumeric (without spaces) | | +| **Property** | **Constraint** | **Notes** | +| ------------------------------------ | --------------------------------------------- | --------- | +| Maximum number of webhooks in an app | Maximum 25 | | +| Webhook URL | Valid URL, maximum 255 characters | | +| Webhook ID | 50 characters, alphanumeric (without spaces) | | +| Webhook authentication username | 50 characters, alphanumeric (without spaces) | | +| Webhook authentication password | 100 characters, alphanumeric (without spaces) | | -## **Management APIs:** **Properties and Constraints** +## Management APIs -| Item | Property or Constraint | Notes | +| **Property** | **Constraint** | **Notes** | | ------------------------------------------------------------- | --------------------------- | --------------------------------- | -| App length | 100 characters, UTF8mb4 set | | +| App name length | 100 characters, UTF8mb4 set | | | App version | v3 | This is the only option available | -| Number of Collaborators that can be created (team management) | Maximum 25 | | - -**REST APIs:** **Properties** **and Constraints** - -Also see REST API documentation for further information on properties and constraints for each endpoint. - -| **Item** | **Property or Constraint** | **Notes** | -| -------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------- | -| Number of Bot users that can be created | Maximum 25 | | -| API Keys | 100 characters (UTF8mb4 Characters) | This covers all the languages and even emojis. (One emoji uses two characters). | -| Number of APIs keys that can be created for an app | Maximum 25 | | - -## **Users and Groups:** **Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| Character limits for UIDs and GUIDs | 100 characters | | -| Maximum users in a group (v3) | 100000 | | -| Maximum groups a user can be a part of | No limits | | -| Maximum number of friends for a user | No limits | | -| Maximum tokens for a user | No limits | | -| Maximum number of groups | No limits | | -| Maximum number of unread messages per user | No limits | | -| Maximum number of users that can be created for an app | No limits | | -| User and Group ID | 100 characters, alpha-dash (a-z, 0-9 with -and \_) without spaces . | CometChat forces the UID to all lowercase. | -| User and Group name | 100 characters, UTF8mb4 set | This covers all the languages and even emojis. | -| User and Group avatar | Must be a URL, limit of 3000 characters | CometChat doesn’t save the image on its servers.. There is no limit on the image resolution. It depends on the implementation. | -| User profile | Must be a URL, limit of 3000 characters | Same as above | -| User and Group metadata | The API limit for the POST request length is 10 KB. Hence, the user’s metadata information must fit in the same limit and must not exceed 1.6 KB. | | -| User and Group tag | A user can have up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4 | | -| Group password | String up to 100 characters | | -| Group description | 255 characters, UTF8mb4 set | | -| Maximum active presence subscriptions | The presence subscription will be active until 1000 users are online for a single app. if more than 1000 users go online, the presence notification starting from the 1001st user will not be sent to other users. | Note, this is the higher limit applicable across subscription for friends, users with certain roles and all users | -| Typing indicators for groups | Typing indicator will be sent for a group of up to 1000 online users. | | -| Unread message counts for groups | For a group with more than 300 members, the conversations and unread message counts are not updated. | | -| Delivery and read receipts for groups | Delivery and read receipts will be sent for for a group of up to 300 online users. | | - -## **Roles: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------- | -| Maximum number of Roles that can be created | Maximum 25 | | -| Role UID | 100 characters, alpha-dash (a-z, 0-9 with -and \_) without spaces | CometChat forces the UID to lowercase. | -| Role name | 100 characters, UTF8mb4 | This covers all the languages and even emojis. | -| Role description | 255 characters, UTF8mb4 set, any language. | | -| Metadata | No limit | | - -## **Messages: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | -| Maximum file attachment size | 100 MB per message | (Includes not just the file size but entire POST body (including chat text and custom data) | -| Message data (Applicable for API calls) | Data is an arbitrary JSON structure. It accepts utf8mb4. It can have any user defined properties. but the below properties have meaning for CometChat: text, attachments, custome\_data, metadata. Note: The attachment size is separate. Here, the attachment is only the attachment properties (such as URL, size, etc.). The size must not exceed 10KB for the data object. | | -| Message tags | A message can have up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | -| User and Group conversation tags | A conversation can have up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | -| Does CometChat keep soft deleted messages in its database? | Yes | | -| Does CometChat keep permanently deleted messages (by API) in its database? | No | | - -## **Calling: Properties and Constraints** - -| **Item** | **Property or Constraint** | **Notes** | -| ---------------------------------- | ------------------------------ | --------------------------------------------------------------------------------- | -| Maximum users in a call | 50 | | -| Default frame rate for video calls | 30 FPS | | -| Resolution for video calls | Maximum - 720p, Minimum - 180p | This depends on the layout selected and the bandwidth available at the user’s end | -| Media encryption used | SRTP | | -| Audio codec used | OPUS | | -| Video codec used | H.264 | | +| Number of collaborators that can be created (team management) | Maximum 25 | | + +## REST APIs + +| **Property** | **Constraint** | **Notes** | +| ------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------- | +| Number of bot users that can be created | Maximum 25 | | +| API keys | 100 characters (UTF8mb4 characters) | This covers all languages and even emojis. One emoji uses two characters. | +| Number of API keys that can be created for an app | Maximum 25 | | + +## Users and Groups + +| **Property** | **Constraint** | **Notes** | +| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| Maximum users in a group (all features enabled) | 300 | Groups with delivery/read receipts and typing indicators enabled | +| Maximum users in a group (without delivery/read receipts and typing indicators) | 100,000 | | +| Maximum groups a user can be a part of | 2,000 | | +| Maximum number of friends for a user | 1,000 | | +| Maximum tokens for a user | 100 active (rolling retention — oldest tokens are archived when limit is exceeded) | | +| Maximum number of groups | No limit | | +| Maximum number of unread messages per user | No limit | | +| Maximum number of users that can be created for an app | No limit | | +| User and Group ID | 100 characters, alpha-dash (a-z, 0-9 with - and \_) without spaces | CometChat forces the UID to all lowercase | +| User and Group name | 100 characters, UTF8mb4 set | This covers all languages and even emojis | +| User and Group avatar | Must be a URL, limit of 3,000 characters | CometChat doesn't save the image on its servers. There is no limit on the image resolution. It depends on the implementation. | +| User profile | Must be a URL, limit of 3,000 characters | Same as above | +| User and Group metadata | 5 KB max (within the 10 KB POST request limit). | | +| User and Group tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | +| Group password | String up to 100 characters | | +| Group description | 255 characters, UTF8mb4 set | | +| Maximum active presence subscriptions | The presence subscription will be active until 1,000 users are online for a single app. If more than 1,000 users go online, the presence notification starting from the 1,001st user will not be sent to other users. | This is the upper limit applicable across subscription for friends, users with certain roles, and all users | +| Typing indicators for groups | Typing indicators will be sent for a group of up to 1,000 online users. | | +| Unread message counts for groups | For a group with more than 300 members, the conversations and unread message counts are not updated. | | +| Delivery and read receipts for groups | Delivery and read receipts will be sent for a group of up to 300 online users. | | + +## Roles + +| **Property** | **Constraint** | **Notes** | +| ------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------- | +| Maximum number of roles that can be created | Maximum 25 | | +| Role ID | 100 characters, alpha-dash (a-z, 0-9 with - and \_) without spaces | CometChat forces the Role ID to lowercase | +| Role name | 100 characters, UTF8mb4 | This covers all languages and even emojis | +| Role description | 255 characters, UTF8mb4 set, any language | | +| Metadata | No limit | | + +## Messages + +| **Property** | **Constraint** | **Notes** | +| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| Maximum file upload size | 100 MB per message | Includes the file and the entire POST body (chat text, custom data, etc.) | +| Maximum message size (including metadata) | 65,536 characters (~65 KB) | Applies to the message JSON payload, not file uploads | +| Message data (applicable for API calls) | Data is an arbitrary JSON structure. It accepts UTF8mb4. It can have any user-defined properties, but the following properties have meaning for CometChat: text, attachments, custom_data, metadata. The attachment size is separate. Here, the attachment is only the attachment properties (such as URL, size, etc.). The size must not exceed 10 KB for the data object. | | +| Message tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | +| User and Group conversation tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | +| Does CometChat keep soft-deleted messages in its database? | Yes | | +| Does CometChat keep permanently deleted messages (by API) in its database? | No | | + +## Calling + +| **Property** | **Constraint** | **Notes** | +| ---------------------------------- | -------------------------- | --------------------------------------------------------------------------------- | +| Maximum users in a call | 50 | | +| Default frame rate for video calls | 30 FPS | | +| Resolution for video calls | Maximum 720p, Minimum 180p | This depends on the layout selected and the bandwidth available at the user's end | +| Media encryption used | SRTP | | +| Audio codec used | OPUS | | +| Video codec used | H.264 | | diff --git a/rest-api/api-keys.mdx b/rest-api/api-keys.mdx index 85df40e37..d1da6fdc6 100644 --- a/rest-api/api-keys.mdx +++ b/rest-api/api-keys.mdx @@ -1,15 +1,36 @@ --- title: "Overview" +description: "Manage API keys that authenticate REST API requests to your CometChat app." --- -The API requests must be authenticated by the CometChat server. To do this you need to generate the apiKeys and use it for making network calls. +**API Keys** are credentials used to authenticate REST API requests. Every request to the CometChat REST API must include a valid API key in the `apikey` header. CometChat supports two types of API keys with different access levels. -The following table lists the properties that the APIKey API supports. +### Key types -| Parameters | Type | Description | -| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **name** | string | (mandatory)\_ Specifies the name of the apiKey. Maximum length is 50 characters. | -| **scope** | string | (optional)\_ Specifies the scope of the apiKey. Possible values: fullAccess, authOnly.

The authOnly key can be used to create & login users. Recommended to use in client-side code during development. The fullAccess key can be used to perform any CometChat operation usually in your server-side code. | -| **apiKey** | string | apiKey used for authentication. character length - 40 | -| **createdAt** | integer | UNIX Timestamp indicating the time when the apiKey was created | +- **Full Access** — Can perform all operations including creating/deleting users, managing groups, and sending messages. Use this for server-side integrations only. +- **Auth Only** — Can create users and generate auth tokens. Suitable for quick demos and prototyping, but not recommended for production (see warning below). + +Never expose a Full Access API key in client-side code. Keep Full Access keys on your server only. + +The Auth Only key (`authOnly` scope) is intended **for quick demos and prototyping only** — it should not be used in production. In a production environment, auth tokens should be generated from your backend server during your application's own authentication flow, and then passed to the client. This ensures that no API key is exposed on the client side. + + + +### API key properties + +| Property | Type | Description | +| ------------- | ------- | ------------------------------------------------------------------------------ | +| **apiKey** | string | The unique API key string used in the `apikey` header for authentication. | +| **name** | string | A human-readable label for the key (e.g., "Production Server", "Mobile Auth"). | +| **scope** | string | Access level: `fullAccess` or `authOnly`. | +| **createdAt** | integer | UNIX timestamp of when the key was created. | + +### Error handling + +| Error Code | Description | +| ---------------------- | ------------------------------------------- | +| `ERR_APIKEY_NOT_FOUND` | The specified API key does not exist | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/api-keys/delete.mdx b/rest-api/api-keys/delete.mdx index bd00e0f8e..7afef7fb8 100644 --- a/rest-api/api-keys/delete.mdx +++ b/rest-api/api-keys/delete.mdx @@ -1,3 +1,25 @@ --- openapi: delete /apikeys/{apiKey} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_APIKEY_NOT_FOUND` | 404 | No API key exists with the specified key | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Generate a replacement API key. + + + View all remaining API keys. + + diff --git a/rest-api/api-keys/get.mdx b/rest-api/api-keys/get.mdx index 47c443341..1b42cc794 100644 --- a/rest-api/api-keys/get.mdx +++ b/rest-api/api-keys/get.mdx @@ -1,3 +1,25 @@ --- openapi: get /apikeys/{apiKey} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_APIKEY_NOT_FOUND` | 404 | No API key exists with the specified key | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify an existing API key's name or scope. + + + Revoke an API key. + + diff --git a/rest-api/api-keys/list.mdx b/rest-api/api-keys/list.mdx index 7ce3b85ef..65a83f644 100644 --- a/rest-api/api-keys/list.mdx +++ b/rest-api/api-keys/list.mdx @@ -1,3 +1,21 @@ --- openapi: get /apikeys ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Generate a new API key for your app. + + diff --git a/rest-api/api-keys/update.mdx b/rest-api/api-keys/update.mdx index cd4d90bd6..6dab3f00a 100644 --- a/rest-api/api-keys/update.mdx +++ b/rest-api/api-keys/update.mdx @@ -1,3 +1,25 @@ --- openapi: put /apikeys/{apiKey} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_APIKEY_NOT_FOUND` | 404 | No API key exists with the specified key | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve details of a specific API key. + + + View all API keys for your app. + + diff --git a/rest-api/auth-tokens.mdx b/rest-api/auth-tokens.mdx index 3e3b22002..9677750e3 100644 --- a/rest-api/auth-tokens.mdx +++ b/rest-api/auth-tokens.mdx @@ -1,11 +1,43 @@ --- title: "Overview" +description: "Manage authentication tokens that allow users to log in via CometChat SDKs." --- -This authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. +An **Auth Token** is a credential that allows a user to authenticate with CometChat SDKs on the client side. Each token is tied to a specific user and can be used across multiple devices. -The following table lists the properties that the Auth Tokens API supports. +### How auth tokens work -| Parameters | Type | Description | -| ---------- | ------- | ------------------------------------------------- | -| force | boolean | (*optional*) Generates new auth token forcefully. | +1. Your server creates a user via the [Create User API](/rest-api/users/create) (optionally with `withAuthToken: true`). +2. If not created during user creation, your server generates an auth token via [Create Auth Token](/rest-api/auth-tokens/create). +3. Your server passes the auth token to the client application. +4. The client SDK uses the token to log in: `CometChat.login(authToken)`. + + +Auth tokens do not expire by default, enabling persistent sessions across multiple devices simultaneously. + +To prevent token accumulation and potential abuse, CometChat enforces a **rolling retention policy**: only the most recent **100 auth tokens** per user are kept active. When a new token is issued and the limit is exceeded, the oldest tokens are automatically archived and invalidated. This ensures system integrity without requiring manual token management. + +If your application requires explicit session control, use the [Flush Auth Tokens](/rest-api/auth-tokens/flush) endpoint to revoke all active tokens for a user, or [Delete](/rest-api/auth-tokens/delete) to revoke a specific token. + + + +### Relationships + +- **Users** — Every auth token belongs to a specific [User](/rest-api/users). The user must exist before a token can be created. +- **Sessions** — Each auth token represents an active session. Flushing all tokens logs the user out of every device. + +### Auth token properties + +| Property | Type | Description | +| ------------- | ------- | ------------------------------------------------ | +| **authToken** | string | The token string used to authenticate SDK login. | +| **uid** | string | The UID of the user this token belongs to. | +| **createdAt** | integer | UNIX timestamp of when the token was created. | + +### Error handling + +| Error Code | Description | +| -------------------------- | --------------------------------------- | +| `ERR_AUTH_TOKEN_NOT_FOUND` | The specified auth token does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/auth-tokens/create.mdx b/rest-api/auth-tokens/create.mdx index 12ec7c8cd..d291ab861 100644 --- a/rest-api/auth-tokens/create.mdx +++ b/rest-api/auth-tokens/create.mdx @@ -1,3 +1,25 @@ --- openapi: post /users/{uid}/auth_tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Create the user before generating a token. + + + View all active tokens for a user. + + diff --git a/rest-api/auth-tokens/delete.mdx b/rest-api/auth-tokens/delete.mdx index 1853fe49c..43825a033 100644 --- a/rest-api/auth-tokens/delete.mdx +++ b/rest-api/auth-tokens/delete.mdx @@ -1,3 +1,26 @@ --- openapi: delete /users/{uid}/auth_tokens/{authToken} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | +| `ERR_AUTH_TOKEN_NOT_FOUND` | 404 | The specified auth token does not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Revoke all tokens at once to log out everywhere. + + + Generate a replacement token. + + diff --git a/rest-api/auth-tokens/flush.mdx b/rest-api/auth-tokens/flush.mdx index cf26c88d4..20822b526 100644 --- a/rest-api/auth-tokens/flush.mdx +++ b/rest-api/auth-tokens/flush.mdx @@ -1,3 +1,25 @@ --- openapi: delete /users/{uid}/auth_tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Disable the user account entirely. + + + Generate a new token after flushing. + + diff --git a/rest-api/auth-tokens/get.mdx b/rest-api/auth-tokens/get.mdx index c9ff2f5de..df6ad8413 100644 --- a/rest-api/auth-tokens/get.mdx +++ b/rest-api/auth-tokens/get.mdx @@ -1,3 +1,26 @@ --- openapi: get /users/{uid}/auth_tokens/{authToken} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | +| `ERR_AUTH_TOKEN_NOT_FOUND` | 404 | The specified auth token does not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Update metadata on a specific token. + + + Revoke a specific token. + + diff --git a/rest-api/auth-tokens/list.mdx b/rest-api/auth-tokens/list.mdx index 296d21a9b..5733e6c69 100644 --- a/rest-api/auth-tokens/list.mdx +++ b/rest-api/auth-tokens/list.mdx @@ -1,3 +1,25 @@ --- openapi: get /users/{uid}/auth_tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Generate a new auth token for a user. + + + Log a user out of all devices. + + diff --git a/rest-api/auth-tokens/update.mdx b/rest-api/auth-tokens/update.mdx index b5df69eef..689846423 100644 --- a/rest-api/auth-tokens/update.mdx +++ b/rest-api/auth-tokens/update.mdx @@ -1,3 +1,26 @@ --- openapi: put /users/{uid}/auth_tokens/{authToken} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | +| `ERR_AUTH_TOKEN_NOT_FOUND` | 404 | The specified auth token does not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve details of a specific token. + + + View all tokens for the user. + + diff --git a/rest-api/banned-users.mdx b/rest-api/banned-users.mdx index 0d0fc4971..2f3fc9d52 100644 --- a/rest-api/banned-users.mdx +++ b/rest-api/banned-users.mdx @@ -1,17 +1,29 @@ --- title: "Overview" +description: "Ban and unban users from groups to manage group membership and moderation." --- -Certain actions can be performed on the group members: +The **Banned Users** API allows group admins and moderators to ban users from a group. Banned users are removed from the group and cannot rejoin until they are unbanned. -1. Kick a member from the group -2. Ban a member from the group. -3. Unban a member from the group. -4. Update the scope of the member of the group. +### Key behaviors -All the above actions can only be performed by the Admin or the Moderator of the group. +- Only users with `admin` or `moderator` scope in a group can ban/unban members. +- Banning removes the user from the group immediately. +- Banned users cannot rejoin the group (even if it's public) until unbanned. +- A user can be banned during [group creation](/rest-api/groups/create) via the `usersToBan` array. -Banning a user API doesn't accept body parameters.\ -It simply bans the UID mentioned in the path parameter of the request. +### Relationships -The banned user will be no longer part of the group and can not perform any actions in the group. A banned user cannot rejoin the same group without being unbanned. +- **Groups** — Bans are scoped to a specific [Group](/rest-api/groups), identified by its GUID. +- **Group Members** — Banning removes the user from [Group Members](/rest-api/group-members). +- **Users** — The banned entity is a [User](/rest-api/users). + +### Error handling + +| Error Code | Description | +| ---------- | ----------- | +| `ERR_GUID_NOT_FOUND` | The specified group does not exist | +| `ERR_UID_NOT_FOUND` | The specified user does not exist | +| `ERR_NOT_A_MEMBER` | The user is not a member of this group | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/banned-users/ban.mdx b/rest-api/banned-users/ban.mdx index b22e0639e..290ecf8ac 100644 --- a/rest-api/banned-users/ban.mdx +++ b/rest-api/banned-users/ban.mdx @@ -1,3 +1,26 @@ --- openapi: post /groups/{guid}/bannedusers/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all banned users in a group. + + + Restore a banned user's access. + + diff --git a/rest-api/banned-users/list.mdx b/rest-api/banned-users/list.mdx index 93a90ff5f..ceb443866 100644 --- a/rest-api/banned-users/list.mdx +++ b/rest-api/banned-users/list.mdx @@ -1,3 +1,25 @@ --- openapi: get /groups/{guid}/bannedusers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Ban a user from the group. + + + Restore a user's access to the group. + + diff --git a/rest-api/banned-users/unban.mdx b/rest-api/banned-users/unban.mdx index ea77b00fd..efd3fee8f 100644 --- a/rest-api/banned-users/unban.mdx +++ b/rest-api/banned-users/unban.mdx @@ -1,3 +1,26 @@ --- openapi: delete /groups/{guid}/bannedusers/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-ban a user if needed. + + + Add the unbanned user back to the group. + + diff --git a/rest-api/blocked-users.mdx b/rest-api/blocked-users.mdx index f07d05402..b3ae67a6a 100644 --- a/rest-api/blocked-users.mdx +++ b/rest-api/blocked-users.mdx @@ -1,13 +1,25 @@ --- title: "Overview" +description: "Manage user blocking to control who can communicate with whom in your CometChat app." --- -A user can block another user if the user doesn't wish to receive any messages or notifications from the blocked user.\ -Once any user is blocked, all the communication to and from the respective user will be completely blocked.\ -Once the user is unblocked, the newly sent messages will start to receive. However the messages that was sent during the blocked period won't be visible. +The **Blocked Users** API lets a user block or unblock other users. When User A blocks User B, User A will no longer be able to send messages to User B. User B can still send messages, but those messages will be silently dropped and will not be delivered to User A. -The following table lists the properties that the Blocked User API supports. +### Key behaviors -| Parameters | Type | Description | -| ----------- | ---------------- | ----------------------------------------------------------------- | -| blockedUids | array of strings | (*optional*) Indicates the list of uids that needs to be blocked. | +- When A blocks B, **A cannot send messages to B**, and **messages sent by B to A are silently dropped** — B is not notified that they have been blocked and can still send messages as usual from their perspective. +- Blocking is **unidirectional** — if A blocks B, B can still independently block A. Both users must unblock the other separately to restore communication between them. +- Blocking does not remove users from shared groups, but direct messages between the two users are affected as described above. + +### Relationships + +- **Users** — Blocking operates between two [Users](/rest-api/users). The `onBehalfOf` header specifies which user is performing the block action. +- **Messages** — The blocker (A) cannot send messages to the blocked user (B). Messages sent by the blocked user (B) to the blocker (A) are silently dropped. B is not informed that their messages are not being delivered. + +### Error handling + +| Error Code | Description | +| ---------- | ----------- | +| `ERR_UID_NOT_FOUND` | The specified user does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/blocked-users/block-user.mdx b/rest-api/blocked-users/block-user.mdx index 1ba97a30b..783793163 100644 --- a/rest-api/blocked-users/block-user.mdx +++ b/rest-api/blocked-users/block-user.mdx @@ -1,3 +1,28 @@ --- openapi: post /users/{uid}/blockedusers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all users blocked by this user. + + + Remove a user from the block list. + + diff --git a/rest-api/blocked-users/list-blocked-users.mdx b/rest-api/blocked-users/list-blocked-users.mdx index 12c62d41f..d363183c5 100644 --- a/rest-api/blocked-users/list-blocked-users.mdx +++ b/rest-api/blocked-users/list-blocked-users.mdx @@ -1,3 +1,25 @@ --- openapi: get /users/{uid}/blockedusers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Add a user to the block list. + + + Remove a user from the block list. + + diff --git a/rest-api/blocked-users/unblock-user.mdx b/rest-api/blocked-users/unblock-user.mdx index 101c474bb..b10c3c08e 100644 --- a/rest-api/blocked-users/unblock-user.mdx +++ b/rest-api/blocked-users/unblock-user.mdx @@ -1,3 +1,28 @@ --- openapi: delete /users/{uid}/blockedusers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Block a user again if needed. + + + View the current block list. + + diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index f8ee66efb..7674cd42b 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -2,7 +2,7 @@ title: "Overview" --- -Welcome to the CometChat's REST API documentation! This documentation provides detailed information on the CHAT APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. +Welcome to CometChat's REST API documentation! This documentation provides detailed information on the CHAT APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. ## Introduction @@ -43,7 +43,7 @@ curl -X GET \ -*Replace appId, apiKey and region in the curl request.* +_Replace appId, apiKey and region in the curl request._ ## Error codes @@ -60,14 +60,14 @@ More about rate limits can be found [here](/rest-api/rate-limits). The CometChat API is presently situated in three regions: -* US -* EU -* IN +- US +- EU +- IN For instance: ```javascript -https://.api-us.cometchat.io/v3 +https://.api-us.cometchat.io/v3 https://.api-eu.cometchat.io/v3 https://.api-in.cometchat.io/v3 -``` \ No newline at end of file +``` diff --git a/rest-api/conversations/get-group-conversation.mdx b/rest-api/conversations/get-group-conversation.mdx index 61fc411d2..a813a1a6e 100644 --- a/rest-api/conversations/get-group-conversation.mdx +++ b/rest-api/conversations/get-group-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: get /groups/{guid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Update tags on this conversation. + + + Clear unread count. + + diff --git a/rest-api/conversations/get-user-conversation.mdx b/rest-api/conversations/get-user-conversation.mdx index e53dfdcb6..3b96e96b7 100644 --- a/rest-api/conversations/get-user-conversation.mdx +++ b/rest-api/conversations/get-user-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: get /users/{uid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Update tags on this conversation. + + + Clear unread count. + + diff --git a/rest-api/conversations/list-conversations.mdx b/rest-api/conversations/list-conversations.mdx index 579aa5506..c93948b44 100644 --- a/rest-api/conversations/list-conversations.mdx +++ b/rest-api/conversations/list-conversations.mdx @@ -1,3 +1,21 @@ --- openapi: get /conversations ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve details of a specific conversation. + + diff --git a/rest-api/conversations/mark-conversation-messages-as-unread.mdx b/rest-api/conversations/mark-conversation-messages-as-unread.mdx index a18567307..3a3276319 100644 --- a/rest-api/conversations/mark-conversation-messages-as-unread.mdx +++ b/rest-api/conversations/mark-conversation-messages-as-unread.mdx @@ -1,3 +1,31 @@ --- openapi: delete /users/{uid}/conversation/read ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Clear unread count again. + + + Check unread count. + + diff --git a/rest-api/conversations/mark-group-conversation-as-delivered.mdx b/rest-api/conversations/mark-group-conversation-as-delivered.mdx index 7a0432da5..875669999 100644 --- a/rest-api/conversations/mark-group-conversation-as-delivered.mdx +++ b/rest-api/conversations/mark-group-conversation-as-delivered.mdx @@ -1,3 +1,31 @@ --- openapi: post /groups/{guid}/conversation/delivered ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Also mark messages as read. + + + Check delivery status. + + diff --git a/rest-api/conversations/mark-group-conversation-as-read.mdx b/rest-api/conversations/mark-group-conversation-as-read.mdx index da7257cc3..10facda59 100644 --- a/rest-api/conversations/mark-group-conversation-as-read.mdx +++ b/rest-api/conversations/mark-group-conversation-as-read.mdx @@ -1,3 +1,31 @@ --- openapi: post /groups/{guid}/conversation/read ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Mark messages back as unread. + + + Check read status. + + diff --git a/rest-api/conversations/mark-group-conversation-as-unread.mdx b/rest-api/conversations/mark-group-conversation-as-unread.mdx index ad84e051e..c49f79510 100644 --- a/rest-api/conversations/mark-group-conversation-as-unread.mdx +++ b/rest-api/conversations/mark-group-conversation-as-unread.mdx @@ -1,3 +1,31 @@ --- openapi: delete /groups/{guid}/conversation/read ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Clear unread count. + + + Check unread count. + + diff --git a/rest-api/conversations/mark-user-conversation-as-delivered.mdx b/rest-api/conversations/mark-user-conversation-as-delivered.mdx index e53ed2d0c..e570e3e9e 100644 --- a/rest-api/conversations/mark-user-conversation-as-delivered.mdx +++ b/rest-api/conversations/mark-user-conversation-as-delivered.mdx @@ -1,3 +1,31 @@ --- openapi: post /users/{uid}/conversation/delivered ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Also mark messages as read. + + + Check delivery status. + + diff --git a/rest-api/conversations/mark-user-conversation-as-read.mdx b/rest-api/conversations/mark-user-conversation-as-read.mdx index f7cad6a9f..b6ef5b910 100644 --- a/rest-api/conversations/mark-user-conversation-as-read.mdx +++ b/rest-api/conversations/mark-user-conversation-as-read.mdx @@ -1,3 +1,31 @@ --- openapi: post /users/{uid}/conversation/read ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Mark messages back as unread. + + + Check read status. + + diff --git a/rest-api/conversations/reset-group-conversation.mdx b/rest-api/conversations/reset-group-conversation.mdx index 7d39bb6cd..2a2c337aa 100644 --- a/rest-api/conversations/reset-group-conversation.mdx +++ b/rest-api/conversations/reset-group-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: delete /groups/{guid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View remaining conversations. + + + Check conversation state. + + diff --git a/rest-api/conversations/reset-user-conversation.mdx b/rest-api/conversations/reset-user-conversation.mdx index 3a678d4b0..6eb89d98f 100644 --- a/rest-api/conversations/reset-user-conversation.mdx +++ b/rest-api/conversations/reset-user-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: delete /users/{uid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View remaining conversations. + + + Check conversation state before resetting. + + diff --git a/rest-api/conversations/update-group-conversation.mdx b/rest-api/conversations/update-group-conversation.mdx index b8baa12bf..fc6d34c77 100644 --- a/rest-api/conversations/update-group-conversation.mdx +++ b/rest-api/conversations/update-group-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: put /groups/{guid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View conversation details. + + + Delete this conversation. + + diff --git a/rest-api/conversations/update-user-conversation.mdx b/rest-api/conversations/update-user-conversation.mdx index 12a932708..76a2e83bf 100644 --- a/rest-api/conversations/update-user-conversation.mdx +++ b/rest-api/conversations/update-user-conversation.mdx @@ -1,3 +1,31 @@ --- openapi: put /users/{uid}/conversation ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View conversation details. + + + Delete this conversation. + + diff --git a/rest-api/data-import-apis/groups/import-group-members.mdx b/rest-api/data-import-apis/groups/import-group-members.mdx index 5d0d769e1..3c8bdb4e0 100644 --- a/rest-api/data-import-apis/groups/import-group-members.mdx +++ b/rest-api/data-import-apis/groups/import-group-members.mdx @@ -1,3 +1,21 @@ --- openapi: post /data_import/members ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all data import options. + + diff --git a/rest-api/data-import-apis/groups/import-groups.mdx b/rest-api/data-import-apis/groups/import-groups.mdx index 02667d948..832458c56 100644 --- a/rest-api/data-import-apis/groups/import-groups.mdx +++ b/rest-api/data-import-apis/groups/import-groups.mdx @@ -1,3 +1,21 @@ --- openapi: post /data_import/groups ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all data import options. + + diff --git a/rest-api/data-import-apis/messages/import-messages.mdx b/rest-api/data-import-apis/messages/import-messages.mdx index 61929c328..516c006af 100644 --- a/rest-api/data-import-apis/messages/import-messages.mdx +++ b/rest-api/data-import-apis/messages/import-messages.mdx @@ -1,3 +1,21 @@ --- openapi: post /data_import/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all data import options. + + diff --git a/rest-api/data-import-apis/users/import-users.mdx b/rest-api/data-import-apis/users/import-users.mdx index 850f08f56..00a2a2354 100644 --- a/rest-api/data-import-apis/users/import-users.mdx +++ b/rest-api/data-import-apis/users/import-users.mdx @@ -7,4 +7,22 @@ openapi: post /data_import/users | Item | Constraint | Notes | | ---- | ---------- | ----- | | Entities per request | 50 | Transmit up to 50 entities within a single request for efficient processing | -| Requests per minute | 60 | Rate limit for data import endpoints; exceeding returns a rate limit error | \ No newline at end of file +| Requests per minute | 60 | Rate limit for data import endpoints; exceeding returns a rate limit error | + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all data import options. + + diff --git a/rest-api/friends.mdx b/rest-api/friends.mdx index 7912474f3..82dfe52fe 100644 --- a/rest-api/friends.mdx +++ b/rest-api/friends.mdx @@ -1,13 +1,25 @@ --- title: "Overview" +description: "Manage friend relationships between users in your CometChat app." --- -If you want to associate friends with your users, you must handle friend management in your app.\ -Once two users are friends (i.e. they have accepted each other as friends), then you can associate them as friends in CometChat. +The **Friends** API manages bidirectional friend relationships between users. When User A adds User B as a friend, both users become friends with each other automatically. -The following table lists the properties that the Friends API supports +### Key behaviors -| Parameters | Type | Description | -| ---------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| accepted | array of strings | (*optional*) Indicates an array of UIDs that are to be made friends. Maximum of 25 users can be passed in the accepted array. | +- Friendships are **bidirectional** — adding a friend creates the relationship for both users and counts toward both users' friend limits. +- A user can have up to **1,000 friends**. +- Friends lists can be used to filter users in chat UIs or show online friends. +### Relationships + +- **Users** — Friends are [Users](/rest-api/users). The `onBehalfOf` header or path UID specifies which user's friend list to manage. + +### Error handling + +| Error Code | Description | +| --------------------- | --------------------------------- | +| `ERR_UID_NOT_FOUND` | The specified user does not exist | +| `ERR_ALREADY_FRIENDS` | The users are already friends | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/friends/add-friends.mdx b/rest-api/friends/add-friends.mdx index 2327f2ce4..1f468ab6c 100644 --- a/rest-api/friends/add-friends.mdx +++ b/rest-api/friends/add-friends.mdx @@ -1,3 +1,25 @@ --- openapi: post /users/{uid}/friends ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View the user's current friend list. + + + Remove users from the friend list. + + diff --git a/rest-api/friends/list-friends.mdx b/rest-api/friends/list-friends.mdx index 930cab604..9e1b77960 100644 --- a/rest-api/friends/list-friends.mdx +++ b/rest-api/friends/list-friends.mdx @@ -1,3 +1,25 @@ --- openapi: get /users/{uid}/friends ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Add new users to the friend list. + + + Remove users from the friend list. + + diff --git a/rest-api/friends/remove-friends.mdx b/rest-api/friends/remove-friends.mdx index e0035d55f..14c31ae98 100644 --- a/rest-api/friends/remove-friends.mdx +++ b/rest-api/friends/remove-friends.mdx @@ -1,3 +1,25 @@ --- openapi: delete /users/{uid}/friends ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-add users as friends. + + + View the updated friend list. + + diff --git a/rest-api/get-call.mdx b/rest-api/get-call.mdx index 03e507e1d..514721855 100644 --- a/rest-api/get-call.mdx +++ b/rest-api/get-call.mdx @@ -1,3 +1,22 @@ --- openapi: get /calls/{sessionId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_CALL_SESSION_NOT_FOUND` | 404 | No call session exists with the specified session ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all call records. + + diff --git a/rest-api/group-members/add-members.mdx b/rest-api/group-members/add-members.mdx index b89dbc136..a844edabe 100644 --- a/rest-api/group-members/add-members.mdx +++ b/rest-api/group-members/add-members.mdx @@ -1,3 +1,25 @@ --- openapi: post /groups/{guid}/members ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current group members. + + + Remove a member from the group. + + diff --git a/rest-api/group-members/change-scope.mdx b/rest-api/group-members/change-scope.mdx index fa12b25f5..8a754437f 100644 --- a/rest-api/group-members/change-scope.mdx +++ b/rest-api/group-members/change-scope.mdx @@ -1,3 +1,26 @@ --- openapi: put /groups/{guid}/members/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current member scopes. + + + Remove a member from the group. + + diff --git a/rest-api/group-members/kick.mdx b/rest-api/group-members/kick.mdx index 7778afaa3..7fb35dd02 100644 --- a/rest-api/group-members/kick.mdx +++ b/rest-api/group-members/kick.mdx @@ -1,3 +1,26 @@ --- openapi: delete /groups/{guid}/members/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Ban the user to prevent them from rejoining. + + + Re-add the user later if needed. + + diff --git a/rest-api/group-members/list.mdx b/rest-api/group-members/list.mdx index 3fe0bc254..6f24806c2 100644 --- a/rest-api/group-members/list.mdx +++ b/rest-api/group-members/list.mdx @@ -1,3 +1,25 @@ --- openapi: get /groups/{guid}/members ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Add users to this group. + + + Update a member's permission level. + + diff --git a/rest-api/groups/create.mdx b/rest-api/groups/create.mdx index 5ee25bdcf..0091aae5f 100644 --- a/rest-api/groups/create.mdx +++ b/rest-api/groups/create.mdx @@ -4,16 +4,44 @@ openapi: post /groups ## Constraints -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| GUID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | -| Group name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators | -| Maximum users in a group (without receipts) | 50,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance | -| Group password | 100 characters max | Only applicable for password-protected groups | -| Group description | 255 characters (UTF8mb4) | Brief summary of the group's purpose | -| Maximum groups | No limit | Create as many groups as needed; billing based on active users | -| Typing indicators for groups | Up to 1000 online users | Disabled for larger groups to optimize performance | -| Unread message counts for groups | Up to 300 members | Not updated for groups with more than 300 members | -| Delivery and read receipts for groups | Up to 300 online users | Disabled in large groups to reduce server load | -| Active presence subscriptions | Up to 1000 online users | Presence notifications not sent beyond this limit | \ No newline at end of file +| Item | Constraint | Notes | +| -------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------- | +| GUID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | +| Group name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Maximum users in a group (with all features) | 300 | Groups up to 300 members support all features including delivery/read receipts and typing indicators | +| Maximum users in a group (without receipts) | 100,000 (up to 10,000 concurrent) | Large groups disable delivery/read receipts and typing indicators for performance | +| Group password | 100 characters max | Only applicable for password-protected groups | +| Group description | 255 characters (UTF8mb4) | Brief summary of the group's purpose | +| Maximum groups | No limit | Create as many groups as needed; billing based on active users | +| Typing indicators for groups | Up to 1000 online users | Disabled for larger groups to optimize performance | +| Unread message counts for groups | Up to 300 members | Not updated for groups with more than 300 members | +| Delivery and read receipts for groups | Up to 300 online users | Disabled in large groups to reduce server load | +| Active presence subscriptions | Up to 1000 online users | Presence notifications not sent beyond this limit | + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ---------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_ALREADY_EXISTS` | 409 | A group with the same GUID already exists (GUIDs are case-insensitive) | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Next steps + + + + Add users to the newly created group. + + + Send the first message in the group. + + + Verify the group appears in your app's group list. + + + Modify group settings after creation. + + diff --git a/rest-api/groups/delete.mdx b/rest-api/groups/delete.mdx index 50402aaf7..2b8410bd3 100644 --- a/rest-api/groups/delete.mdx +++ b/rest-api/groups/delete.mdx @@ -1,3 +1,25 @@ --- openapi: delete /groups/{guid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View remaining groups. + + + Create a new group. + + diff --git a/rest-api/groups/get.mdx b/rest-api/groups/get.mdx index 62fd8d0b5..86f778424 100644 --- a/rest-api/groups/get.mdx +++ b/rest-api/groups/get.mdx @@ -1,3 +1,25 @@ --- openapi: get /groups/{guid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify group settings. + + + View members of this group. + + diff --git a/rest-api/groups/list.mdx b/rest-api/groups/list.mdx index 26ba6da3f..827e9cf38 100644 --- a/rest-api/groups/list.mdx +++ b/rest-api/groups/list.mdx @@ -1,3 +1,24 @@ --- openapi: get /groups ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Create a new group. + + + Retrieve details for a specific group. + + diff --git a/rest-api/groups/update.mdx b/rest-api/groups/update.mdx index b83b51d64..2bb52098a 100644 --- a/rest-api/groups/update.mdx +++ b/rest-api/groups/update.mdx @@ -1,3 +1,25 @@ --- openapi: put /groups/{guid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve current group details. + + + Add users to this group. + + diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 86f6cbbd0..56b3ad372 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -2,7 +2,7 @@ title: "Overview" --- -Welcome to the CometChat's Multi-Tenancy API documentation!\ +Welcome to CometChat's Multi-Tenancy API documentation!\ This comprehensive guide offers in-depth insights into the Multi-tenancy APIs provided by CometChat. Access to Multi-tenancy APIs is exclusive to clients with plans that support this feature. To verify feature availability in your plan, please refer to our pricing page: [https://www.cometchat.com/pricing](https://www.cometchat.com/pricing). ## Introduction @@ -40,4 +40,4 @@ curl -X POST \ -*key and secret need to be replaced in the curl request.* +_key and secret need to be replaced in the curl request._ diff --git a/rest-api/management-apis/app/create.mdx b/rest-api/management-apis/app/create.mdx index b9f1bb287..b05ef3514 100644 --- a/rest-api/management-apis/app/create.mdx +++ b/rest-api/management-apis/app/create.mdx @@ -4,8 +4,25 @@ openapi: post /apps ## Constraints -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| App name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| App version | v3 | Only option available | -| Maximum collaborators per app | 25 | Team management limit | \ No newline at end of file +| Item | Constraint | Notes | +| ----------------------------- | ------------------------ | --------------------------------- | +| App name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| App version | v3 | Only option available | +| Maximum collaborators per app | 25 | Team management limit | + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_EMPTY_APPID` | 401 | The `appId` is missing from the request | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/app/delete.mdx b/rest-api/management-apis/app/delete.mdx index 4ed04ec11..3cae6671f 100644 --- a/rest-api/management-apis/app/delete.mdx +++ b/rest-api/management-apis/app/delete.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | --------------------------------------------------------------- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/app/fetch-usage.mdx b/rest-api/management-apis/app/fetch-usage.mdx index a9fc7fbc1..c50a4d226 100644 --- a/rest-api/management-apis/app/fetch-usage.mdx +++ b/rest-api/management-apis/app/fetch-usage.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/usage ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | --------------------------------------------------------------- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/app/list.mdx b/rest-api/management-apis/app/list.mdx index 19881d052..697b02508 100644 --- a/rest-api/management-apis/app/list.mdx +++ b/rest-api/management-apis/app/list.mdx @@ -1,3 +1,19 @@ --- openapi: get /apps ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/bitly-delete-settings.mdx b/rest-api/management-apis/extensions/bitly-delete-settings.mdx index 56827931f..099b5ab19 100644 --- a/rest-api/management-apis/extensions/bitly-delete-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/url-shortener-bitly/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/bitly-get-settings.mdx b/rest-api/management-apis/extensions/bitly-get-settings.mdx index 964dbd985..1d4ca3b34 100644 --- a/rest-api/management-apis/extensions/bitly-get-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/url-shortener-bitly/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/bitly-store-settings.mdx b/rest-api/management-apis/extensions/bitly-store-settings.mdx index 5b727c1a5..df4c391f7 100644 --- a/rest-api/management-apis/extensions/bitly-store-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/url-shortener-bitly/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/bitly-update-settings.mdx b/rest-api/management-apis/extensions/bitly-update-settings.mdx index 5eef92541..42166e089 100644 --- a/rest-api/management-apis/extensions/bitly-update-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/url-shortener-bitly/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chat-widgets-create.mdx b/rest-api/management-apis/extensions/chat-widgets-create.mdx index 0875db62d..02c9d55d6 100644 --- a/rest-api/management-apis/extensions/chat-widgets-create.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-create.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/widget/v2/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chat-widgets-list.mdx b/rest-api/management-apis/extensions/chat-widgets-list.mdx index 5fe83887f..26ab49204 100644 --- a/rest-api/management-apis/extensions/chat-widgets-list.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-list.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/widget/v2/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chat-widgets-update.mdx b/rest-api/management-apis/extensions/chat-widgets-update.mdx index a176ef435..d48a517ec 100644 --- a/rest-api/management-apis/extensions/chat-widgets-update.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-update.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/widget/v2/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx b/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx index 4916af7d2..43a38b196 100644 --- a/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/chatwoot/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chatwoot-get-settings.mdx b/rest-api/management-apis/extensions/chatwoot-get-settings.mdx index 37ef60169..618bec50d 100644 --- a/rest-api/management-apis/extensions/chatwoot-get-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/chatwoot/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chatwoot-store-settings.mdx b/rest-api/management-apis/extensions/chatwoot-store-settings.mdx index 1f3374f52..9f9204ce6 100644 --- a/rest-api/management-apis/extensions/chatwoot-store-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/chatwoot/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/chatwoot-update-settings.mdx b/rest-api/management-apis/extensions/chatwoot-update-settings.mdx index fe21c6489..ca9beffa6 100644 --- a/rest-api/management-apis/extensions/chatwoot-update-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/chatwoot/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/data-masking-delete-settings.mdx b/rest-api/management-apis/extensions/data-masking-delete-settings.mdx index d527d45f6..3baf31cbb 100644 --- a/rest-api/management-apis/extensions/data-masking-delete-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/data-masking/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/data-masking-get-settings.mdx b/rest-api/management-apis/extensions/data-masking-get-settings.mdx index 1842c90da..4d363db08 100644 --- a/rest-api/management-apis/extensions/data-masking-get-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/data-masking/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx b/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx index cad417e3f..1cfe74bdf 100644 --- a/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/data-masking/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-notification-delete-settings.mdx b/rest-api/management-apis/extensions/email-notification-delete-settings.mdx index 651ba3601..c027f9ed5 100644 --- a/rest-api/management-apis/extensions/email-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/email-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-notification-get-settings.mdx b/rest-api/management-apis/extensions/email-notification-get-settings.mdx index 549ca1134..228ce3ad3 100644 --- a/rest-api/management-apis/extensions/email-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/email-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-notification-store-settings.mdx b/rest-api/management-apis/extensions/email-notification-store-settings.mdx index d8dc0314e..d84f704a9 100644 --- a/rest-api/management-apis/extensions/email-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/email-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-notification-update-settings.mdx b/rest-api/management-apis/extensions/email-notification-update-settings.mdx index 8f413b28a..ac62de355 100644 --- a/rest-api/management-apis/extensions/email-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/email-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-replies-delete-settings.mdx b/rest-api/management-apis/extensions/email-replies-delete-settings.mdx index e23208fa1..f94ebe6d0 100644 --- a/rest-api/management-apis/extensions/email-replies-delete-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/email-replies/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-replies-get-settings.mdx b/rest-api/management-apis/extensions/email-replies-get-settings.mdx index 1651f484b..001d01235 100644 --- a/rest-api/management-apis/extensions/email-replies-get-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/email-replies/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-replies-store-settings.mdx b/rest-api/management-apis/extensions/email-replies-store-settings.mdx index 3b0b88349..08dcf8bec 100644 --- a/rest-api/management-apis/extensions/email-replies-store-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/email-replies/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/email-replies-update-settings.mdx b/rest-api/management-apis/extensions/email-replies-update-settings.mdx index 8f313c307..2d5df2120 100644 --- a/rest-api/management-apis/extensions/email-replies-update-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/email-replies/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/enabledisable.mdx b/rest-api/management-apis/extensions/enabledisable.mdx index a51ab0211..0b093ee03 100644 --- a/rest-api/management-apis/extensions/enabledisable.mdx +++ b/rest-api/management-apis/extensions/enabledisable.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx index ef992a390..d34fa4e90 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/e2ee/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx index f16689049..f32322822 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/e2ee/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx index 7c0a0dae6..3acf1c860 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/e2ee/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx index 4ab216b56..26e35ae38 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/e2ee/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx b/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx index 6303452dc..28d455c94 100644 --- a/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx +++ b/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/gifs-giphy/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/giphy-get-settings.mdx b/rest-api/management-apis/extensions/giphy-get-settings.mdx index 78ff264c8..8b20cd91d 100644 --- a/rest-api/management-apis/extensions/giphy-get-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/gifs-giphy/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/giphy-store-settings.mdx b/rest-api/management-apis/extensions/giphy-store-settings.mdx index dc8d8c891..f29cf68d6 100644 --- a/rest-api/management-apis/extensions/giphy-store-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/gifs-giphy/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/giphy-update-settings.mdx b/rest-api/management-apis/extensions/giphy-update-settings.mdx index f3134d5dd..aea7ab219 100644 --- a/rest-api/management-apis/extensions/giphy-update-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/gifs-giphy/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx b/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx index 022d22fbd..1045791d1 100644 --- a/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/image-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/image-moderation-get-settings.mdx b/rest-api/management-apis/extensions/image-moderation-get-settings.mdx index bcbf7b66c..23fd201d1 100644 --- a/rest-api/management-apis/extensions/image-moderation-get-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/image-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/image-moderation-store-settings.mdx b/rest-api/management-apis/extensions/image-moderation-store-settings.mdx index 6e8389de8..00c143634 100644 --- a/rest-api/management-apis/extensions/image-moderation-store-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/image-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/image-moderation-update-settings.mdx b/rest-api/management-apis/extensions/image-moderation-update-settings.mdx index 19054260b..b4ad7ee5d 100644 --- a/rest-api/management-apis/extensions/image-moderation-update-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/image-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx index ef441c023..e7b9d8e57 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/human-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx index c025c3308..fa307f456 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/human-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx index 730987083..522019aad 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/human-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx index 37bdff3df..4921ffeaa 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/human-moderation/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/intercom-delete-settings.mdx b/rest-api/management-apis/extensions/intercom-delete-settings.mdx index 199f4824a..1293ccc4a 100644 --- a/rest-api/management-apis/extensions/intercom-delete-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/intercom/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/intercom-get-settings.mdx b/rest-api/management-apis/extensions/intercom-get-settings.mdx index be9f67f63..2a6579737 100644 --- a/rest-api/management-apis/extensions/intercom-get-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/intercom/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/intercom-store-settings.mdx b/rest-api/management-apis/extensions/intercom-store-settings.mdx index f7fda6ce4..140caffcd 100644 --- a/rest-api/management-apis/extensions/intercom-store-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/intercom/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/intercom-update-settings.mdx b/rest-api/management-apis/extensions/intercom-update-settings.mdx index c0597a723..33cea4306 100644 --- a/rest-api/management-apis/extensions/intercom-update-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/intercom/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/list-extensions.mdx b/rest-api/management-apis/extensions/list-extensions.mdx index 8026e3e52..20e0e3efa 100644 --- a/rest-api/management-apis/extensions/list-extensions.mdx +++ b/rest-api/management-apis/extensions/list-extensions.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx index f2a9576a8..72a59efc6 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/message-shortcuts/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx index b16f74878..d9bc715d0 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/message-shortcuts/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx index 95464751d..08f05ead2 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/message-shortcuts/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx index 9f0776f87..d5c9c4164 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/message-shortcuts/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx index 276268f1a..f20f138e5 100644 --- a/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/profanity-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx index 685e1339f..384ba9df6 100644 --- a/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/profanity-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx index 524f704ca..6722d0fe7 100644 --- a/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/profanity-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx index 61e88a7f2..a17ed5931 100644 --- a/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/profanity-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-delete-settings.mdx b/rest-api/management-apis/extensions/push-notification-delete-settings.mdx index d8bc61bf0..b0dc943b3 100644 --- a/rest-api/management-apis/extensions/push-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/push-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-get-certificate.mdx b/rest-api/management-apis/extensions/push-notification-get-certificate.mdx index d766be472..5ac4b41ad 100644 --- a/rest-api/management-apis/extensions/push-notification-get-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-get-certificate.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/push-notification/v1/query-certificates ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-get-settings.mdx b/rest-api/management-apis/extensions/push-notification-get-settings.mdx index 3b38e84d6..cec289e09 100644 --- a/rest-api/management-apis/extensions/push-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/push-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-store-settings.mdx b/rest-api/management-apis/extensions/push-notification-store-settings.mdx index 715f3cdca..934baee19 100644 --- a/rest-api/management-apis/extensions/push-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-update-settings.mdx b/rest-api/management-apis/extensions/push-notification-update-settings.mdx index 6a0f37d98..6e8119eb9 100644 --- a/rest-api/management-apis/extensions/push-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/push-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx b/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx index 65efa825b..03cee7a74 100644 --- a/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/upload-certificate-p12 ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx b/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx index 6e2ee7675..248f23738 100644 --- a/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/upload-certificate-p8 ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-message-delete-settings.mdx b/rest-api/management-apis/extensions/report-message-delete-settings.mdx index 036439eda..0184594f8 100644 --- a/rest-api/management-apis/extensions/report-message-delete-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/report-message/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-message-get-settings.mdx b/rest-api/management-apis/extensions/report-message-get-settings.mdx index c210f56b2..73d65cec7 100644 --- a/rest-api/management-apis/extensions/report-message-get-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/report-message/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-message-store-settings.mdx b/rest-api/management-apis/extensions/report-message-store-settings.mdx index c6e186b81..6fe3e2540 100644 --- a/rest-api/management-apis/extensions/report-message-store-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/report-message/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-message-update-settings.mdx b/rest-api/management-apis/extensions/report-message-update-settings.mdx index e71c412b8..93f537a71 100644 --- a/rest-api/management-apis/extensions/report-message-update-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/report-message/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-user-delete-settings.mdx b/rest-api/management-apis/extensions/report-user-delete-settings.mdx index 07bcea4c1..56bbea60a 100644 --- a/rest-api/management-apis/extensions/report-user-delete-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/report-user/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-user-get-settings.mdx b/rest-api/management-apis/extensions/report-user-get-settings.mdx index 4a16f99fc..660b2a159 100644 --- a/rest-api/management-apis/extensions/report-user-get-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/report-user/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-user-store-settings.mdx b/rest-api/management-apis/extensions/report-user-store-settings.mdx index 6524efcd1..39adcd8b2 100644 --- a/rest-api/management-apis/extensions/report-user-store-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/report-user/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/report-user-update-settings.mdx b/rest-api/management-apis/extensions/report-user-update-settings.mdx index 3e22ed3e6..c85494cbd 100644 --- a/rest-api/management-apis/extensions/report-user-update-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/report-user/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx index 035f86354..e825516c5 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/rich-media/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx index 2cd273e0a..3035771b7 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/rich-media/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx index e1a40bf1d..ecd4bf3ee 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/rich-media/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx index c3cbf24aa..125b7d322 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/rich-media/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx index 7d4cf1a8b..f7988d303 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/sentiment-analysis/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx index 4333656f8..5d4a77349 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/sentiment-analysis/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx index a27fc55fb..1358d77cb 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/sentiment-analysis/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx index 54038709e..66cd69fb3 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/sentiment-analysis/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx b/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx index a062a842e..f3d604afd 100644 --- a/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/sms-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sms-notification-get-settings.mdx b/rest-api/management-apis/extensions/sms-notification-get-settings.mdx index b95c12434..bf8cf94e7 100644 --- a/rest-api/management-apis/extensions/sms-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/sms-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sms-notification-store-settings.mdx b/rest-api/management-apis/extensions/sms-notification-store-settings.mdx index 1f4bf4e26..ecb8b677b 100644 --- a/rest-api/management-apis/extensions/sms-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/sms-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/sms-notification-update-settings.mdx b/rest-api/management-apis/extensions/sms-notification-update-settings.mdx index 205e4a6f3..d0c77abf5 100644 --- a/rest-api/management-apis/extensions/sms-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/sms-notification/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx index dec5a49b6..93ef67736 100644 --- a/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/stickers/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx index ee24e4419..d165d99d7 100644 --- a/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/stickers/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx index defc69164..d3a17b691 100644 --- a/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/stickers/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stipop-delete-settings.mdx b/rest-api/management-apis/extensions/stipop-delete-settings.mdx index 43ce97544..5a23eb493 100644 --- a/rest-api/management-apis/extensions/stipop-delete-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/stickers-stipop/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stipop-get-settings.mdx b/rest-api/management-apis/extensions/stipop-get-settings.mdx index 777df7eae..280d1bb26 100644 --- a/rest-api/management-apis/extensions/stipop-get-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/stickers-stipop/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stipop-store-settings.mdx b/rest-api/management-apis/extensions/stipop-store-settings.mdx index fc40390b9..4f0d25b50 100644 --- a/rest-api/management-apis/extensions/stipop-store-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/stickers-stipop/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/stipop-update-settings.mdx b/rest-api/management-apis/extensions/stipop-update-settings.mdx index f8d57ae0b..2541fbde6 100644 --- a/rest-api/management-apis/extensions/stipop-update-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/stickers-stipop/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx index 73308f493..b279b3045 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/gifs-tenor/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx index a6e30b8f8..30b6026a3 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/gifs-tenor/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx index c76b2d080..6f4a69f8a 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/gifs-tenor/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx index 71b495e84..213506399 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/gifs-tenor/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx b/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx index 91cc70eb5..1c077d04f 100644 --- a/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tinyurl-get-settings.mdx b/rest-api/management-apis/extensions/tinyurl-get-settings.mdx index 31a42ce80..91f36ec30 100644 --- a/rest-api/management-apis/extensions/tinyurl-get-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tinyurl-store-settings.mdx b/rest-api/management-apis/extensions/tinyurl-store-settings.mdx index e5a62e38d..bc6ee1f6d 100644 --- a/rest-api/management-apis/extensions/tinyurl-store-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/tinyurl-update-settings.mdx b/rest-api/management-apis/extensions/tinyurl-update-settings.mdx index c8d66246c..7fe3e67de 100644 --- a/rest-api/management-apis/extensions/tinyurl-update-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx index f1f493c38..d8e3c0b8a 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/broadcast/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx index 9f857a54a..90d56470b 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/broadcast/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx index 4c441b018..22de38208 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/broadcast/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx index 042f6d697..6b5fd3860 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/broadcast/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx index e216e830b..dcf4b3e29 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/virus-malware-scanner/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx index 4bef890f5..50d5dd85f 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/virus-malware-scanner/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx index dc32c0f64..efe704feb 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/virus-malware-scanner/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx index 0102e62ce..ef3faebc8 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/virus-malware-scanner/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx index acbaddd3e..1bd3486bf 100644 --- a/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/voice-transcription/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx index 1c32bbf38..74ef1b7b6 100644 --- a/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/voice-transcription/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx index 031309328..8efacdff6 100644 --- a/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/voice-transcription/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx index bcf947163..29df86d48 100644 --- a/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/voice-transcription/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx b/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx index cd63fa950..025f7ffa0 100644 --- a/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/extensions/xss-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/xss-filter-get-settings.mdx b/rest-api/management-apis/extensions/xss-filter-get-settings.mdx index 7498e4bcc..d0c2a7620 100644 --- a/rest-api/management-apis/extensions/xss-filter-get-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-get-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/extensions/xss-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/xss-filter-store-settings.mdx b/rest-api/management-apis/extensions/xss-filter-store-settings.mdx index e140fda9f..70f62590a 100644 --- a/rest-api/management-apis/extensions/xss-filter-store-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-store-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/extensions/xss-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/extensions/xss-filter-update-settings.mdx b/rest-api/management-apis/extensions/xss-filter-update-settings.mdx index 9d4f3b26b..927c28c0a 100644 --- a/rest-api/management-apis/extensions/xss-filter-update-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-update-settings.mdx @@ -1,3 +1,20 @@ --- openapi: put /apps/{appId}/extensions/xss-filter/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/settings/list-settings.mdx b/rest-api/management-apis/settings/list-settings.mdx index 33eb6271c..9d8751860 100644 --- a/rest-api/management-apis/settings/list-settings.mdx +++ b/rest-api/management-apis/settings/list-settings.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/settings/maps-settings.mdx b/rest-api/management-apis/settings/maps-settings.mdx index 62640cf85..b7c53713b 100644 --- a/rest-api/management-apis/settings/maps-settings.mdx +++ b/rest-api/management-apis/settings/maps-settings.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/settings/unmaps-settings.mdx b/rest-api/management-apis/settings/unmaps-settings.mdx index 9f4576165..7500f654e 100644 --- a/rest-api/management-apis/settings/unmaps-settings.mdx +++ b/rest-api/management-apis/settings/unmaps-settings.mdx @@ -1,3 +1,20 @@ --- openapi: delete /apps/{appId}/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/team-management/addsremove-collaborators.mdx b/rest-api/management-apis/team-management/addsremove-collaborators.mdx index dcc30a502..88bd2a78f 100644 --- a/rest-api/management-apis/team-management/addsremove-collaborators.mdx +++ b/rest-api/management-apis/team-management/addsremove-collaborators.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/collaborators ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/team-management/list-collaborators.mdx b/rest-api/management-apis/team-management/list-collaborators.mdx index 0109a9cf5..1f8ed9567 100644 --- a/rest-api/management-apis/team-management/list-collaborators.mdx +++ b/rest-api/management-apis/team-management/list-collaborators.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/collaborators ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/tenants/add-tenant.mdx b/rest-api/management-apis/tenants/add-tenant.mdx deleted file mode 100644 index 0b4c82878..000000000 --- a/rest-api/management-apis/tenants/add-tenant.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /tenants ---- \ No newline at end of file diff --git a/rest-api/management-apis/webhooks/add-triggers.mdx b/rest-api/management-apis/webhooks/add-triggers.mdx index a829fbc22..52d3751db 100644 --- a/rest-api/management-apis/webhooks/add-triggers.mdx +++ b/rest-api/management-apis/webhooks/add-triggers.mdx @@ -1,3 +1,21 @@ --- openapi: post /apps/{appId}/webhooks/{webhookId}/triggers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/create-webhook.mdx b/rest-api/management-apis/webhooks/create-webhook.mdx index bd3c61419..8f4987f54 100644 --- a/rest-api/management-apis/webhooks/create-webhook.mdx +++ b/rest-api/management-apis/webhooks/create-webhook.mdx @@ -1,3 +1,20 @@ --- openapi: post /apps/{appId}/webhooks ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/delete-webhook.mdx b/rest-api/management-apis/webhooks/delete-webhook.mdx index b4923de02..ba03e8fa5 100644 --- a/rest-api/management-apis/webhooks/delete-webhook.mdx +++ b/rest-api/management-apis/webhooks/delete-webhook.mdx @@ -1,3 +1,21 @@ --- openapi: delete /apps/{appId}/webhooks/{webhookId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/get-webhook.mdx b/rest-api/management-apis/webhooks/get-webhook.mdx index 531bb7c18..58dd67a6a 100644 --- a/rest-api/management-apis/webhooks/get-webhook.mdx +++ b/rest-api/management-apis/webhooks/get-webhook.mdx @@ -1,3 +1,21 @@ --- openapi: get /apps/{appId}/webhooks/{webhookId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/list-triggers.mdx b/rest-api/management-apis/webhooks/list-triggers.mdx index 390816a01..a9605375d 100644 --- a/rest-api/management-apis/webhooks/list-triggers.mdx +++ b/rest-api/management-apis/webhooks/list-triggers.mdx @@ -1,3 +1,21 @@ --- openapi: get /apps/{appId}/webhooks/{webhookId}/triggers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/list-webhooks.mdx b/rest-api/management-apis/webhooks/list-webhooks.mdx index 8e1a395c4..776dce78b 100644 --- a/rest-api/management-apis/webhooks/list-webhooks.mdx +++ b/rest-api/management-apis/webhooks/list-webhooks.mdx @@ -1,3 +1,20 @@ --- openapi: get /apps/{appId}/webhooks ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/remove-triggers.mdx b/rest-api/management-apis/webhooks/remove-triggers.mdx index 978a4ea6c..1a6ae86a7 100644 --- a/rest-api/management-apis/webhooks/remove-triggers.mdx +++ b/rest-api/management-apis/webhooks/remove-triggers.mdx @@ -1,3 +1,21 @@ --- openapi: delete /apps/{appId}/webhooks/{webhookId}/triggers ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/management-apis/webhooks/update-webhook.mdx b/rest-api/management-apis/webhooks/update-webhook.mdx index dde717a34..06a019ca9 100644 --- a/rest-api/management-apis/webhooks/update-webhook.mdx +++ b/rest-api/management-apis/webhooks/update-webhook.mdx @@ -1,3 +1,21 @@ --- openapi: put /apps/{appId}/webhooks/{webhookId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ----------------------------- | ----------- | ------------------------------------------------------ | +| `AUTH_ERR_INVALID_APPID` | 401 | The provided `appId` is invalid or does not exist | +| `AUTH_ERR_INVALID_SECRET_KEY` | 401 | The provided key and/or secret is invalid or incorrect | +| `ERR_WEBHOOK_NOT_FOUND` | 404 | No webhook exists with the specified webhook ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all management operations. + + diff --git a/rest-api/messages/add-reaction.mdx b/rest-api/messages/add-reaction.mdx index e7ff1e732..ec6afd9ac 100644 --- a/rest-api/messages/add-reaction.mdx +++ b/rest-api/messages/add-reaction.mdx @@ -1,3 +1,25 @@ --- openapi: post /messages/{id}/reactions/{reaction} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Remove this reaction. + + + View all reactions on the message. + + diff --git a/rest-api/messages/delete-message.mdx b/rest-api/messages/delete-message.mdx index ec5b61f95..57e2e06d9 100644 --- a/rest-api/messages/delete-message.mdx +++ b/rest-api/messages/delete-message.mdx @@ -1,3 +1,25 @@ --- openapi: delete /messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View remaining messages. + + + Send a new message. + + diff --git a/rest-api/messages/get-message.mdx b/rest-api/messages/get-message.mdx index ae5065cf8..94b65b90e 100644 --- a/rest-api/messages/get-message.mdx +++ b/rest-api/messages/get-message.mdx @@ -1,3 +1,25 @@ --- openapi: get /messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Edit this message. + + + Remove this message. + + diff --git a/rest-api/messages/list-all-reactions.mdx b/rest-api/messages/list-all-reactions.mdx index 8e347906b..eca576a53 100644 --- a/rest-api/messages/list-all-reactions.mdx +++ b/rest-api/messages/list-all-reactions.mdx @@ -1,3 +1,25 @@ --- openapi: get /messages/{id}/reactions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + React to this message. + + + Remove a reaction from this message. + + diff --git a/rest-api/messages/list-group-messages.mdx b/rest-api/messages/list-group-messages.mdx index c43c7f022..029cd72c1 100644 --- a/rest-api/messages/list-group-messages.mdx +++ b/rest-api/messages/list-group-messages.mdx @@ -1,3 +1,25 @@ --- openapi: get /groups/{guid}/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Send a message to this group. + + + View who is in this group. + + diff --git a/rest-api/messages/list-messages.mdx b/rest-api/messages/list-messages.mdx index cef8571e1..1362baf9a 100644 --- a/rest-api/messages/list-messages.mdx +++ b/rest-api/messages/list-messages.mdx @@ -1,3 +1,24 @@ --- openapi: get /messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Send a new message. + + + Retrieve a specific message by ID. + + diff --git a/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx b/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx index 46797606e..0b3a5d292 100644 --- a/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx +++ b/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx @@ -1,3 +1,25 @@ --- openapi: get /messages/{id}/reactions/{reaction} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all reactions on a message. + + + Remove a specific reaction. + + diff --git a/rest-api/messages/list-threaded-messages.mdx b/rest-api/messages/list-threaded-messages.mdx index 4741bf232..b3aa21775 100644 --- a/rest-api/messages/list-threaded-messages.mdx +++ b/rest-api/messages/list-threaded-messages.mdx @@ -1,3 +1,25 @@ --- openapi: get /messages/{id}/thread ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Reply in this thread. + + + View the parent message. + + diff --git a/rest-api/messages/list-user-messages.mdx b/rest-api/messages/list-user-messages.mdx index b4b8fc5b4..10972e850 100644 --- a/rest-api/messages/list-user-messages.mdx +++ b/rest-api/messages/list-user-messages.mdx @@ -1,3 +1,25 @@ --- openapi: get /users/{uid}/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Send a message to this user. + + + View messages across all conversations. + + diff --git a/rest-api/messages/mark-message-as-interacted.mdx b/rest-api/messages/mark-message-as-interacted.mdx index 0a218142f..c36d78451 100644 --- a/rest-api/messages/mark-message-as-interacted.mdx +++ b/rest-api/messages/mark-message-as-interacted.mdx @@ -1,3 +1,25 @@ --- openapi: patch /messages/{id}/interacted ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View message details and interaction data. + + + Browse messages in a conversation. + + diff --git a/rest-api/messages/remove-reaction.mdx b/rest-api/messages/remove-reaction.mdx index cdafcfb95..11676d627 100644 --- a/rest-api/messages/remove-reaction.mdx +++ b/rest-api/messages/remove-reaction.mdx @@ -1,3 +1,25 @@ --- openapi: delete /messages/{id}/reactions/{reaction} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Add a reaction to the message. + + + View remaining reactions. + + diff --git a/rest-api/messages/send-bot-message.mdx b/rest-api/messages/send-bot-message.mdx index 1a87f832f..2d6a70110 100644 --- a/rest-api/messages/send-bot-message.mdx +++ b/rest-api/messages/send-bot-message.mdx @@ -1,3 +1,25 @@ --- openapi: post /bots/{uid}/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_BOT_NOT_FOUND` | 404 | No bot exists with the specified UID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Send a regular user message. + + + Create the bot user first. + + diff --git a/rest-api/messages/send-threaded-message.mdx b/rest-api/messages/send-threaded-message.mdx index 9dffce1cc..40c09bc40 100644 --- a/rest-api/messages/send-threaded-message.mdx +++ b/rest-api/messages/send-threaded-message.mdx @@ -1,3 +1,25 @@ --- openapi: post /messages/{id}/thread ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all replies in this thread. + + + View the parent message. + + diff --git a/rest-api/messages/update-message.mdx b/rest-api/messages/update-message.mdx index f2e29e5fe..675d11bef 100644 --- a/rest-api/messages/update-message.mdx +++ b/rest-api/messages/update-message.mdx @@ -1,3 +1,25 @@ --- openapi: put /messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve the updated message. + + + Remove this message instead. + + diff --git a/rest-api/metrics/message-metrics.mdx b/rest-api/metrics/message-metrics.mdx index ec08b25ae..c3530f33f 100644 --- a/rest-api/metrics/message-metrics.mdx +++ b/rest-api/metrics/message-metrics.mdx @@ -1,3 +1,21 @@ --- openapi: get /stats/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View overall app usage statistics. + + diff --git a/rest-api/metrics/usage-metrics.mdx b/rest-api/metrics/usage-metrics.mdx index c6a20ffbd..fe812c018 100644 --- a/rest-api/metrics/usage-metrics.mdx +++ b/rest-api/metrics/usage-metrics.mdx @@ -1,3 +1,21 @@ --- openapi: get /stats ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View detailed message statistics. + + diff --git a/rest-api/moderation/add-keywords.mdx b/rest-api/moderation/add-keywords.mdx index 2a0094302..db8309ab8 100644 --- a/rest-api/moderation/add-keywords.mdx +++ b/rest-api/moderation/add-keywords.mdx @@ -1,3 +1,21 @@ --- openapi: post /moderation/keywords --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/add-rule.mdx b/rest-api/moderation/add-rule.mdx index b6e0847d5..7ec0a2dd4 100644 --- a/rest-api/moderation/add-rule.mdx +++ b/rest-api/moderation/add-rule.mdx @@ -1,3 +1,21 @@ --- openapi: post /moderation/rules ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/approve-blocked-messages.mdx b/rest-api/moderation/approve-blocked-messages.mdx index a8d32ff08..578bce6fa 100644 --- a/rest-api/moderation/approve-blocked-messages.mdx +++ b/rest-api/moderation/approve-blocked-messages.mdx @@ -1,3 +1,22 @@ --- openapi: patch /moderation/blocked-messages/{messageId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/blockreview-flagged-message.mdx b/rest-api/moderation/blockreview-flagged-message.mdx index 9fe7cdfc0..5df05af3d 100644 --- a/rest-api/moderation/blockreview-flagged-message.mdx +++ b/rest-api/moderation/blockreview-flagged-message.mdx @@ -1,3 +1,22 @@ --- openapi: patch /moderation/flagged-messages/{id} --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/create-reasons.mdx b/rest-api/moderation/create-reasons.mdx index b1886c5e7..4d41d693d 100644 --- a/rest-api/moderation/create-reasons.mdx +++ b/rest-api/moderation/create-reasons.mdx @@ -1,3 +1,21 @@ --- openapi: post /moderation/reasons ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/delete-message.mdx b/rest-api/moderation/delete-message.mdx index 0a1cb157f..b77f85509 100644 --- a/rest-api/moderation/delete-message.mdx +++ b/rest-api/moderation/delete-message.mdx @@ -1,3 +1,22 @@ --- openapi: delete /moderation/messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/delete-reasons.mdx b/rest-api/moderation/delete-reasons.mdx index 9e5d78ac4..ee7004095 100644 --- a/rest-api/moderation/delete-reasons.mdx +++ b/rest-api/moderation/delete-reasons.mdx @@ -1,3 +1,22 @@ --- openapi: delete /moderation/reasons/{id} --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/flag-a-message.mdx b/rest-api/moderation/flag-a-message.mdx index e54594bde..1b2577eb1 100644 --- a/rest-api/moderation/flag-a-message.mdx +++ b/rest-api/moderation/flag-a-message.mdx @@ -1,3 +1,22 @@ --- openapi: post /messages/{id}/flagged ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/get-keyword.mdx b/rest-api/moderation/get-keyword.mdx index fb49472ee..9bdf5f96b 100644 --- a/rest-api/moderation/get-keyword.mdx +++ b/rest-api/moderation/get-keyword.mdx @@ -1,3 +1,22 @@ --- openapi: get /moderation/keywords/{keywordId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/get-message.mdx b/rest-api/moderation/get-message.mdx index 4c4c5f00d..addeeee5b 100644 --- a/rest-api/moderation/get-message.mdx +++ b/rest-api/moderation/get-message.mdx @@ -1,3 +1,22 @@ --- openapi: get /moderation/messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/get-reason-details.mdx b/rest-api/moderation/get-reason-details.mdx index 715395c56..fb480e60f 100644 --- a/rest-api/moderation/get-reason-details.mdx +++ b/rest-api/moderation/get-reason-details.mdx @@ -1,3 +1,22 @@ --- openapi: get /moderation/reasons/{id} --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/get-rule-revisions.mdx b/rest-api/moderation/get-rule-revisions.mdx index 2be47942a..2ebfccd83 100644 --- a/rest-api/moderation/get-rule-revisions.mdx +++ b/rest-api/moderation/get-rule-revisions.mdx @@ -1,3 +1,22 @@ --- openapi: get /moderation/rules/{ruleId}/revisions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/get-rule.mdx b/rest-api/moderation/get-rule.mdx index bc4d530d0..95f16b99a 100644 --- a/rest-api/moderation/get-rule.mdx +++ b/rest-api/moderation/get-rule.mdx @@ -1,3 +1,22 @@ --- openapi: get /moderation/rules/{ruleId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-blocked-messages.mdx b/rest-api/moderation/list-blocked-messages.mdx index fecce1c50..9889d388a 100644 --- a/rest-api/moderation/list-blocked-messages.mdx +++ b/rest-api/moderation/list-blocked-messages.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/blocked-messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-flagged-messages.mdx b/rest-api/moderation/list-flagged-messages.mdx index 8ab472350..9c5f9b86e 100644 --- a/rest-api/moderation/list-flagged-messages.mdx +++ b/rest-api/moderation/list-flagged-messages.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/flagged-messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-keywords.mdx b/rest-api/moderation/list-keywords.mdx index 7cc9084cf..d4605c21e 100644 --- a/rest-api/moderation/list-keywords.mdx +++ b/rest-api/moderation/list-keywords.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/keywords ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-messages.mdx b/rest-api/moderation/list-messages.mdx index 1a07498b4..7221868f0 100644 --- a/rest-api/moderation/list-messages.mdx +++ b/rest-api/moderation/list-messages.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-reasons.mdx b/rest-api/moderation/list-reasons.mdx index cd563ff9b..63b0f4f52 100644 --- a/rest-api/moderation/list-reasons.mdx +++ b/rest-api/moderation/list-reasons.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/reasons --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-reviewed-messages.mdx b/rest-api/moderation/list-reviewed-messages.mdx index 9f592e0f0..b254000ec 100644 --- a/rest-api/moderation/list-reviewed-messages.mdx +++ b/rest-api/moderation/list-reviewed-messages.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/reviewed-messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/list-rules.mdx b/rest-api/moderation/list-rules.mdx index f6421a52f..a4cddd8a9 100644 --- a/rest-api/moderation/list-rules.mdx +++ b/rest-api/moderation/list-rules.mdx @@ -1,3 +1,21 @@ --- openapi: get /moderation/rules ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/remove-keyword.mdx b/rest-api/moderation/remove-keyword.mdx index 0075d1d2d..365630d31 100644 --- a/rest-api/moderation/remove-keyword.mdx +++ b/rest-api/moderation/remove-keyword.mdx @@ -1,3 +1,22 @@ --- openapi: delete /moderation/keywords/{keywordId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/remove-rule.mdx b/rest-api/moderation/remove-rule.mdx index 5823340a8..9a8793654 100644 --- a/rest-api/moderation/remove-rule.mdx +++ b/rest-api/moderation/remove-rule.mdx @@ -1,3 +1,22 @@ --- openapi: delete /moderation/rules/{ruleId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/review-blocked-message.mdx b/rest-api/moderation/review-blocked-message.mdx index 870108a6f..60476c19e 100644 --- a/rest-api/moderation/review-blocked-message.mdx +++ b/rest-api/moderation/review-blocked-message.mdx @@ -1,3 +1,22 @@ --- openapi: patch /moderation/blocked-messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/send-message.mdx b/rest-api/moderation/send-message.mdx index 7cf12c0d0..520d97022 100644 --- a/rest-api/moderation/send-message.mdx +++ b/rest-api/moderation/send-message.mdx @@ -1,3 +1,21 @@ --- openapi: post /moderation/messages ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/update-keyword.mdx b/rest-api/moderation/update-keyword.mdx index c9f4e0f4c..fba1e3a77 100644 --- a/rest-api/moderation/update-keyword.mdx +++ b/rest-api/moderation/update-keyword.mdx @@ -1,3 +1,22 @@ --- openapi: put /moderation/keywords/{keywordId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/update-message.mdx b/rest-api/moderation/update-message.mdx index c0c9c61c2..b9855d821 100644 --- a/rest-api/moderation/update-message.mdx +++ b/rest-api/moderation/update-message.mdx @@ -1,3 +1,22 @@ --- openapi: put /moderation/messages/{id} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/update-reason-details.mdx b/rest-api/moderation/update-reason-details.mdx index 1566528a4..81dcd2d60 100644 --- a/rest-api/moderation/update-reason-details.mdx +++ b/rest-api/moderation/update-reason-details.mdx @@ -1,3 +1,22 @@ --- openapi: put /moderation/reasons/{id} --- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/moderation/update-rule.mdx b/rest-api/moderation/update-rule.mdx index f13f1ab85..e32679218 100644 --- a/rest-api/moderation/update-rule.mdx +++ b/rest-api/moderation/update-rule.mdx @@ -1,3 +1,22 @@ --- openapi: put /moderation/rules/{ruleId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View moderation configuration options. + + diff --git a/rest-api/notifications/add-apns-provider.mdx b/rest-api/notifications/add-apns-provider.mdx index 24afcd43a..0c52834f1 100644 --- a/rest-api/notifications/add-apns-provider.mdx +++ b/rest-api/notifications/add-apns-provider.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/push/v1/providers/apns ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured APNS providers. + + + Modify an existing APNS provider. + + diff --git a/rest-api/notifications/add-fcm-provider.mdx b/rest-api/notifications/add-fcm-provider.mdx index 0337cd516..f2d3aee61 100644 --- a/rest-api/notifications/add-fcm-provider.mdx +++ b/rest-api/notifications/add-fcm-provider.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/push/v1/providers/fcm ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured FCM providers. + + + Modify an existing FCM provider. + + diff --git a/rest-api/notifications/change-default-apns-provider.mdx b/rest-api/notifications/change-default-apns-provider.mdx index ad2e37e42..8464d6e4a 100644 --- a/rest-api/notifications/change-default-apns-provider.mdx +++ b/rest-api/notifications/change-default-apns-provider.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/push/v1/providers/apns/default/{providerId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured APNS providers. + + + Set the default FCM provider instead. + + diff --git a/rest-api/notifications/change-default-fcm-provider.mdx b/rest-api/notifications/change-default-fcm-provider.mdx index 34ae19a92..62a568cec 100644 --- a/rest-api/notifications/change-default-fcm-provider.mdx +++ b/rest-api/notifications/change-default-fcm-provider.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/push/v1/providers/fcm/default/{providerId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured FCM providers. + + + Set the default APNS provider instead. + + diff --git a/rest-api/notifications/delete-apns-providers.mdx b/rest-api/notifications/delete-apns-providers.mdx index 4bf5fee50..2faec9928 100644 --- a/rest-api/notifications/delete-apns-providers.mdx +++ b/rest-api/notifications/delete-apns-providers.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/push/v1/providers/apns/{providerId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a new APNS provider. + + + View all configured APNS providers. + + diff --git a/rest-api/notifications/delete-contact-details.mdx b/rest-api/notifications/delete-contact-details.mdx index 02e9a5bd4..1364a391d 100644 --- a/rest-api/notifications/delete-contact-details.mdx +++ b/rest-api/notifications/delete-contact-details.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/v1/contact-details ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current contact details. + + + Modify contact details for a user. + + diff --git a/rest-api/notifications/delete-fcm-provider.mdx b/rest-api/notifications/delete-fcm-provider.mdx index e50963a79..bf0a67956 100644 --- a/rest-api/notifications/delete-fcm-provider.mdx +++ b/rest-api/notifications/delete-fcm-provider.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/push/v1/providers/fcm/{providerId} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a new FCM provider. + + + View all configured FCM providers. + + diff --git a/rest-api/notifications/delete-sendgrid-credentials.mdx b/rest-api/notifications/delete-sendgrid-credentials.mdx index 0b39ad501..1bbf26bc0 100644 --- a/rest-api/notifications/delete-sendgrid-credentials.mdx +++ b/rest-api/notifications/delete-sendgrid-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/email/v1/providers/sendgrid ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current SendGrid configuration. + + + Configure SendGrid for the first time. + + diff --git a/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx index 1d7c9377a..b82c97135 100644 --- a/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx +++ b/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/email/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom email provider. + + + Configure a custom email provider. + + diff --git a/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx index 9d2bfcb31..3593f432a 100644 --- a/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx +++ b/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/push/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom push provider. + + + Configure a custom push provider. + + diff --git a/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx index 98cbd5f8a..5739da4dd 100644 --- a/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx +++ b/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/sms/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom SMS provider. + + + Configure a custom SMS provider. + + diff --git a/rest-api/notifications/delete-the-given-push-token.mdx b/rest-api/notifications/delete-the-given-push-token.mdx index a8b28dd79..1b78ece22 100644 --- a/rest-api/notifications/delete-the-given-push-token.mdx +++ b/rest-api/notifications/delete-the-given-push-token.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/push/v1/tokens/{pushToken} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Register a new push token. + + + View all registered push tokens. + + diff --git a/rest-api/notifications/delete-twilio-credentials.mdx b/rest-api/notifications/delete-twilio-credentials.mdx index 9dcc13c94..0dc515d79 100644 --- a/rest-api/notifications/delete-twilio-credentials.mdx +++ b/rest-api/notifications/delete-twilio-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/sms/v1/providers/twilio ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current Twilio configuration. + + + Configure Twilio for the first time. + + diff --git a/rest-api/notifications/get-contact-details.mdx b/rest-api/notifications/get-contact-details.mdx index 67fa5020c..906839ef5 100644 --- a/rest-api/notifications/get-contact-details.mdx +++ b/rest-api/notifications/get-contact-details.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/v1/contact-details ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify contact details for a user. + + + Remove contact details for a user. + + diff --git a/rest-api/notifications/get-custom-provider-for-email-notifications.mdx b/rest-api/notifications/get-custom-provider-for-email-notifications.mdx index 315a6ea83..85cba0429 100644 --- a/rest-api/notifications/get-custom-provider-for-email-notifications.mdx +++ b/rest-api/notifications/get-custom-provider-for-email-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/email/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a custom email provider. + + + Remove the custom email provider. + + diff --git a/rest-api/notifications/get-custom-provider-for-push-notifications.mdx b/rest-api/notifications/get-custom-provider-for-push-notifications.mdx index 6f5984259..0aea56344 100644 --- a/rest-api/notifications/get-custom-provider-for-push-notifications.mdx +++ b/rest-api/notifications/get-custom-provider-for-push-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/push/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a custom push provider. + + + Remove the custom push provider. + + diff --git a/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx index a425fab8f..0efe7fbe1 100644 --- a/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx +++ b/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/sms/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a custom SMS provider. + + + Remove the custom SMS provider. + + diff --git a/rest-api/notifications/get-sendgrid-credentials.mdx b/rest-api/notifications/get-sendgrid-credentials.mdx index ccbd61abe..829b97434 100644 --- a/rest-api/notifications/get-sendgrid-credentials.mdx +++ b/rest-api/notifications/get-sendgrid-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/email/v1/providers/sendgrid ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure SendGrid for the first time. + + + Remove SendGrid configuration. + + diff --git a/rest-api/notifications/get-timezone.mdx b/rest-api/notifications/get-timezone.mdx index cc74c99b8..29b51e10a 100644 --- a/rest-api/notifications/get-timezone.mdx +++ b/rest-api/notifications/get-timezone.mdx @@ -1,3 +1,27 @@ --- openapi: get /notifications/v1/preferences/timezone ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Change the user's notification timezone. + + + Modify notification preferences. + + diff --git a/rest-api/notifications/get-twilio-credentials.mdx b/rest-api/notifications/get-twilio-credentials.mdx index 695f35454..22118d4b0 100644 --- a/rest-api/notifications/get-twilio-credentials.mdx +++ b/rest-api/notifications/get-twilio-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/sms/v1/providers/twilio ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure Twilio for the first time. + + + Remove Twilio configuration. + + diff --git a/rest-api/notifications/list-apns-providers.mdx b/rest-api/notifications/list-apns-providers.mdx index 525009aaf..b889bba4f 100644 --- a/rest-api/notifications/list-apns-providers.mdx +++ b/rest-api/notifications/list-apns-providers.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/push/v1/providers/apns ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a new APNS provider. + + + Remove an APNS provider. + + diff --git a/rest-api/notifications/list-fcm-providers.mdx b/rest-api/notifications/list-fcm-providers.mdx index 5a3e6f387..ff3b06e78 100644 --- a/rest-api/notifications/list-fcm-providers.mdx +++ b/rest-api/notifications/list-fcm-providers.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/push/v1/providers/fcm ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Configure a new FCM provider. + + + Remove an FCM provider. + + diff --git a/rest-api/notifications/list-muted-conversations.mdx b/rest-api/notifications/list-muted-conversations.mdx index 0671f2835..acef6e236 100644 --- a/rest-api/notifications/list-muted-conversations.mdx +++ b/rest-api/notifications/list-muted-conversations.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/v1/preferences/mute ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Mute notifications for specific conversations. + + + Re-enable notifications for muted conversations. + + diff --git a/rest-api/notifications/list-preferences.mdx b/rest-api/notifications/list-preferences.mdx index 055d62a1f..f2fe0ad6d 100644 --- a/rest-api/notifications/list-preferences.mdx +++ b/rest-api/notifications/list-preferences.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/v1/preferences ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify notification preferences. + + + Reset preferences to defaults. + + diff --git a/rest-api/notifications/list-push-tokens.mdx b/rest-api/notifications/list-push-tokens.mdx index 91260de64..443653d3a 100644 --- a/rest-api/notifications/list-push-tokens.mdx +++ b/rest-api/notifications/list-push-tokens.mdx @@ -1,3 +1,30 @@ --- openapi: get /notifications/push/v1/tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Register a new push token for a user. + + + Remove a specific push token. + + diff --git a/rest-api/notifications/list-settings.mdx b/rest-api/notifications/list-settings.mdx index 129f38f24..6b066de32 100644 --- a/rest-api/notifications/list-settings.mdx +++ b/rest-api/notifications/list-settings.mdx @@ -1,3 +1,24 @@ --- openapi: get /notifications/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify notification settings. + + + Reset settings to defaults. + + diff --git a/rest-api/notifications/mute-notifications-for-conversations.mdx b/rest-api/notifications/mute-notifications-for-conversations.mdx index 2d23d3eaa..5887c838d 100644 --- a/rest-api/notifications/mute-notifications-for-conversations.mdx +++ b/rest-api/notifications/mute-notifications-for-conversations.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/v1/preferences/mute ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-enable notifications for muted conversations. + + + View all currently muted conversations. + + diff --git a/rest-api/notifications/notifications-logs.mdx b/rest-api/notifications/notifications-logs.mdx index ff8036852..4d23d7227 100644 --- a/rest-api/notifications/notifications-logs.mdx +++ b/rest-api/notifications/notifications-logs.mdx @@ -1,3 +1,27 @@ --- openapi: get /notifications/v1/logs ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current notification settings. + + + View current notification preferences. + + diff --git a/rest-api/notifications/register-push-token.mdx b/rest-api/notifications/register-push-token.mdx index 47813893f..12e0faee5 100644 --- a/rest-api/notifications/register-push-token.mdx +++ b/rest-api/notifications/register-push-token.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/push/v1/tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all registered push tokens for a user. + + + Remove a specific push token. + + diff --git a/rest-api/notifications/reset-preferences.mdx b/rest-api/notifications/reset-preferences.mdx index 471b8f675..34770dfa2 100644 --- a/rest-api/notifications/reset-preferences.mdx +++ b/rest-api/notifications/reset-preferences.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/v1/preferences ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current notification preferences. + + + Modify notification preferences. + + diff --git a/rest-api/notifications/reset-settings.mdx b/rest-api/notifications/reset-settings.mdx index 55670cbd9..886601fe0 100644 --- a/rest-api/notifications/reset-settings.mdx +++ b/rest-api/notifications/reset-settings.mdx @@ -1,3 +1,24 @@ --- openapi: delete /notifications/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current notification settings. + + + Modify notification settings. + + diff --git a/rest-api/notifications/save-custom-provider-for-email-notifications.mdx b/rest-api/notifications/save-custom-provider-for-email-notifications.mdx index 4973ec7ce..8a93304fe 100644 --- a/rest-api/notifications/save-custom-provider-for-email-notifications.mdx +++ b/rest-api/notifications/save-custom-provider-for-email-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/email/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom email provider. + + + Remove the custom email provider. + + diff --git a/rest-api/notifications/save-custom-provider-for-push-notifications.mdx b/rest-api/notifications/save-custom-provider-for-push-notifications.mdx index 655b9dc8e..44f02cf06 100644 --- a/rest-api/notifications/save-custom-provider-for-push-notifications.mdx +++ b/rest-api/notifications/save-custom-provider-for-push-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/push/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom push provider. + + + Remove the custom push provider. + + diff --git a/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx index ad47dc15c..59472a170 100644 --- a/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx +++ b/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/sms/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom SMS provider. + + + Remove the custom SMS provider. + + diff --git a/rest-api/notifications/save-sendgrid-credentials.mdx b/rest-api/notifications/save-sendgrid-credentials.mdx index 73953af3e..837f66af2 100644 --- a/rest-api/notifications/save-sendgrid-credentials.mdx +++ b/rest-api/notifications/save-sendgrid-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/email/v1/providers/sendgrid ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current SendGrid configuration. + + + Modify SendGrid credentials. + + diff --git a/rest-api/notifications/save-twilio-credentials.mdx b/rest-api/notifications/save-twilio-credentials.mdx index b4a29c5d2..b369cb22d 100644 --- a/rest-api/notifications/save-twilio-credentials.mdx +++ b/rest-api/notifications/save-twilio-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: post /notifications/sms/v1/providers/twilio ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current Twilio configuration. + + + Remove Twilio configuration. + + diff --git a/rest-api/notifications/unmute-notifications-for-conversations.mdx b/rest-api/notifications/unmute-notifications-for-conversations.mdx index 5081d2d04..e5b077a1e 100644 --- a/rest-api/notifications/unmute-notifications-for-conversations.mdx +++ b/rest-api/notifications/unmute-notifications-for-conversations.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/v1/preferences/mute ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Mute notifications for specific conversations. + + + View all currently muted conversations. + + diff --git a/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx b/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx index 37092e991..9168622e2 100644 --- a/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx +++ b/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx @@ -1,3 +1,30 @@ --- openapi: delete /notifications/push/v1/tokens ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Register a new push token. + + + View all registered push tokens. + + diff --git a/rest-api/notifications/update-apns-providers.mdx b/rest-api/notifications/update-apns-providers.mdx index ff1ad53a6..aeb218120 100644 --- a/rest-api/notifications/update-apns-providers.mdx +++ b/rest-api/notifications/update-apns-providers.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/push/v1/providers/apns ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured APNS providers. + + + Remove an APNS provider. + + diff --git a/rest-api/notifications/update-contact-details.mdx b/rest-api/notifications/update-contact-details.mdx index 7cb77baba..ae47e6038 100644 --- a/rest-api/notifications/update-contact-details.mdx +++ b/rest-api/notifications/update-contact-details.mdx @@ -1,3 +1,30 @@ --- openapi: patch /notifications/v1/contact-details ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current contact details. + + + Remove contact details for a user. + + diff --git a/rest-api/notifications/update-custom-provider-for-email-notifications.mdx b/rest-api/notifications/update-custom-provider-for-email-notifications.mdx index f68ce03d9..26631029b 100644 --- a/rest-api/notifications/update-custom-provider-for-email-notifications.mdx +++ b/rest-api/notifications/update-custom-provider-for-email-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/email/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom email provider. + + + Remove the custom email provider. + + diff --git a/rest-api/notifications/update-custom-provider-for-push-notifications.mdx b/rest-api/notifications/update-custom-provider-for-push-notifications.mdx index c9fa8c655..013a2f33e 100644 --- a/rest-api/notifications/update-custom-provider-for-push-notifications.mdx +++ b/rest-api/notifications/update-custom-provider-for-push-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/push/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom push provider. + + + Remove the custom push provider. + + diff --git a/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx index 8e8345974..1d2380ea7 100644 --- a/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx +++ b/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/sms/v1/providers/custom ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current custom SMS provider. + + + Remove the custom SMS provider. + + diff --git a/rest-api/notifications/update-fcm-provider.mdx b/rest-api/notifications/update-fcm-provider.mdx index 79547565e..6cb309452 100644 --- a/rest-api/notifications/update-fcm-provider.mdx +++ b/rest-api/notifications/update-fcm-provider.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/push/v1/providers/fcm ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View all configured FCM providers. + + + Remove an FCM provider. + + diff --git a/rest-api/notifications/update-preferences.mdx b/rest-api/notifications/update-preferences.mdx index cc4e84bf3..ae26bcdfb 100644 --- a/rest-api/notifications/update-preferences.mdx +++ b/rest-api/notifications/update-preferences.mdx @@ -1,3 +1,30 @@ --- openapi: patch /notifications/v1/preferences ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current notification preferences. + + + Reset preferences to defaults. + + diff --git a/rest-api/notifications/update-sendgrid-credentials.mdx b/rest-api/notifications/update-sendgrid-credentials.mdx index 192bc2d6c..8439557c7 100644 --- a/rest-api/notifications/update-sendgrid-credentials.mdx +++ b/rest-api/notifications/update-sendgrid-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/email/v1/providers/sendgrid ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current SendGrid configuration. + + + Remove SendGrid configuration. + + diff --git a/rest-api/notifications/update-settings.mdx b/rest-api/notifications/update-settings.mdx index 646c550e4..4c54e3953 100644 --- a/rest-api/notifications/update-settings.mdx +++ b/rest-api/notifications/update-settings.mdx @@ -1,3 +1,24 @@ --- openapi: patch /notifications/v1/settings ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current notification settings. + + + Reset settings to defaults. + + diff --git a/rest-api/notifications/update-timezone.mdx b/rest-api/notifications/update-timezone.mdx index 82b84c8bb..9fb3a51f0 100644 --- a/rest-api/notifications/update-timezone.mdx +++ b/rest-api/notifications/update-timezone.mdx @@ -1,3 +1,27 @@ --- openapi: patch /notifications/v1/preferences/timezone ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View the current notification timezone. + + + Modify notification preferences. + + diff --git a/rest-api/notifications/update-twilio-credentials.mdx b/rest-api/notifications/update-twilio-credentials.mdx index e86449f59..5863f39f2 100644 --- a/rest-api/notifications/update-twilio-credentials.mdx +++ b/rest-api/notifications/update-twilio-credentials.mdx @@ -1,3 +1,30 @@ --- openapi: put /notifications/sms/v1/providers/twilio ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current Twilio configuration. + + + Remove Twilio configuration. + + diff --git a/rest-api/rbac/list-role-permissions.mdx b/rest-api/rbac/list-role-permissions.mdx index 771ed63b9..c21311f3b 100644 --- a/rest-api/rbac/list-role-permissions.mdx +++ b/rest-api/rbac/list-role-permissions.mdx @@ -1,3 +1,25 @@ --- openapi: get /roles/{role}/permissions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Update permissions for this role. + + + Remove specific permissions. + + diff --git a/rest-api/rbac/list-scope-permissions.mdx b/rest-api/rbac/list-scope-permissions.mdx index 8bcb9ac23..602ab963e 100644 --- a/rest-api/rbac/list-scope-permissions.mdx +++ b/rest-api/rbac/list-scope-permissions.mdx @@ -1,3 +1,32 @@ --- openapi: get /groups/{guid}/scopes/{scope}/permissions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_GROUP_SCOPE_NOT_FOUND` | 404 | The specified scope is not valid | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Update permissions for this scope. + + + Remove specific permissions. + + diff --git a/rest-api/rbac/set-role-permissions.mdx b/rest-api/rbac/set-role-permissions.mdx index 8995279e7..e526b4c38 100644 --- a/rest-api/rbac/set-role-permissions.mdx +++ b/rest-api/rbac/set-role-permissions.mdx @@ -1,3 +1,25 @@ --- openapi: put /roles/{role}/permissions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current permissions. + + + Remove permissions. + + diff --git a/rest-api/rbac/set-scope-permissions.mdx b/rest-api/rbac/set-scope-permissions.mdx index eda7b2984..db4181074 100644 --- a/rest-api/rbac/set-scope-permissions.mdx +++ b/rest-api/rbac/set-scope-permissions.mdx @@ -1,3 +1,32 @@ --- openapi: put /groups/{guid}/scopes/{scope}/permissions ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_GROUP_SCOPE_NOT_FOUND` | 404 | The specified scope is not valid | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current permissions. + + + Remove permissions. + + diff --git a/rest-api/rbac/unset-role-permissions.mdx b/rest-api/rbac/unset-role-permissions.mdx index 3b1cb3433..97796ccb0 100644 --- a/rest-api/rbac/unset-role-permissions.mdx +++ b/rest-api/rbac/unset-role-permissions.mdx @@ -1,3 +1,29 @@ --- openapi: delete /roles/{role}/permissions/{permission} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | +| `ERR_PERMISSION_NOT_FOUND` | 404 | The specified permission does not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-grant permissions. + + + View remaining permissions. + + diff --git a/rest-api/rbac/unset-scope-permissions.mdx b/rest-api/rbac/unset-scope-permissions.mdx index 1d1e0e815..2d445732f 100644 --- a/rest-api/rbac/unset-scope-permissions.mdx +++ b/rest-api/rbac/unset-scope-permissions.mdx @@ -1,3 +1,33 @@ --- openapi: delete /groups/{guid}/scopes/{scope}/permissions/{permission} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | 404 | No group exists with the specified GUID | +| `ERR_GROUP_SCOPE_NOT_FOUND` | 404 | The specified scope is not valid | +| `ERR_PERMISSION_NOT_FOUND` | 404 | The specified permission does not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-grant permissions. + + + View remaining permissions. + + diff --git a/rest-api/restrict-features/allow-features.mdx b/rest-api/restrict-features/allow-features.mdx index 25b4ab173..a8403102c 100644 --- a/rest-api/restrict-features/allow-features.mdx +++ b/rest-api/restrict-features/allow-features.mdx @@ -1,4 +1,26 @@ --- openapi: delete /roles/{role}/restrictedfeatures deprecated: true ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Re-apply restrictions. + + + View remaining restrictions. + + diff --git a/rest-api/restrict-features/list-restricted-features.mdx b/rest-api/restrict-features/list-restricted-features.mdx index 3e677cb6c..31125dd4b 100644 --- a/rest-api/restrict-features/list-restricted-features.mdx +++ b/rest-api/restrict-features/list-restricted-features.mdx @@ -1,4 +1,26 @@ --- openapi: get /roles/{role}/restrictedfeatures deprecated: true ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Add new restrictions. + + + Remove restrictions. + + diff --git a/rest-api/restrict-features/restrict-features.mdx b/rest-api/restrict-features/restrict-features.mdx index ff0f83e43..8e6b5f6b5 100644 --- a/rest-api/restrict-features/restrict-features.mdx +++ b/rest-api/restrict-features/restrict-features.mdx @@ -1,4 +1,26 @@ --- openapi: post /roles/{role}/restrictedfeatures deprecated: true ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View current restrictions. + + + Remove restrictions. + + diff --git a/rest-api/roles.mdx b/rest-api/roles.mdx index 2a426eb68..c6f7421e1 100644 --- a/rest-api/roles.mdx +++ b/rest-api/roles.mdx @@ -1,17 +1,60 @@ --- title: "Overview" +description: "Define and manage user roles to control permissions across your CometChat app." --- -Roles are assigned to each user created in CometChat. `default` role is assigned to the user by default if the role is not provided explicitly. +A **Role** defines a set of permissions that control what a user can do in your CometChat app. Every user is assigned exactly one role — if no role is specified during user creation, the `default` role is applied automatically. -The following table lists the properties that the Role API supports. +### How roles work -| Parameters | Type | Description | -| --------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **role** | string | (mandatory)\_ Specifies role's unique ID. Maximum length is 100 characters. Allowed characters: alpha-dash (a-z, 0-9 with -and \_ ) without spaces | -| **name** | string | (mandatory)\_ Specifies the role's name. Maximum length is 100 characters. | -| **description** | string | (optional)\_ Specifies the description of the user. If left empty, no description is set for the role. Maximum length is 255 characters. | -| **metadata** | nested object | (optional)\_ Specifies a JSON object to store up to 1.6K characters (JSON stringified metadata) for additional role information. | -| **settings** | array | (optional)\_ Role settings that is used for restricting list users/send message API. Possible values for listUsers & sendMessagesTo are `all` and `friendsOnly` | -| **settings.listUsers** | string | (optional)\_ Restricts users listing to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | -| **settings.sendMessagesTo** | string | Restricts sending message to either `all` OR `friendsOnly` for all users with this role. possible values: all, friendsOnly | \ No newline at end of file +- Roles are app-wide — they apply to a user across all groups and conversations. +- You can [restrict specific features](/rest-api/restrict-features) per role (e.g., prevent certain roles from sending attachments or creating groups). +- For fine-grained, role-based permission control, see [RBAC (Role-Based Access Control)](/rest-api/rbac-overview#rbac-role-based-access-control). + +### Roles vs. Group Member Scopes + +CometChat uses two layers of access control: + +| Layer | Applies to | Assigned via | Purpose | +| ------------ | -------------- | ------------------------------------------- | ------------------------------------------------------------------------- | +| Role (RBAC) | App-wide | [User creation/update](/rest-api/users) | Controls what a user can do globally (e.g., send messages, create groups) | +| Scope (SBAC) | Within a group | [Group membership](/rest-api/group-members) | Controls what a member can do inside a specific group | + +When a user joins a group, they are assigned one of three scopes: + +| Scope | Default assignment | Privileges | +| ------------- | -------------------- | ---------------------------------------------------------------------------------------------------- | +| `admin` | Group creator | Change member scopes, add/kick/ban members, update/delete group, send & receive messages & calls | +| `moderator` | Promoted by an admin | Change scope of participants, kick & ban participants, update group, send & receive messages & calls | +| `participant` | All other members | Send & receive messages & calls | + +For group operations, both RBAC and SBAC permissions must allow the action. A user's role is checked first (app-wide), then their group scope is checked (group-level). If either denies the action, the API returns `ERR_PERMISSION_DENIED`. + +For the full list of scope-based permissions, see [SBAC (Scope-Based Access Control)](/rest-api/rbac-overview#sbac-scope-based-access-control). + +### Relationships + +- **Users** — Each [User](/rest-api/users) has one role. Change it via the [Update User API](/rest-api/users/update). +- **Group Members** — Each member in a [Group](/rest-api/groups) has a scope (`admin`, `moderator`, or `participant`). Change it via the [Update Group Member Scope API](/rest-api/group-members/change-scope). +- **Restrict Features** — Use the [Restrict Features API](/rest-api/restrict-features) to limit what users with a specific role can do. +- **RBAC** — App-wide permissions per role. See [RBAC](/rest-api/rbac-overview#rbac-role-based-access-control). +- **SBAC** — Group-level permissions per scope. See [SBAC](/rest-api/rbac-overview#sbac-scope-based-access-control). + +### Role properties + +| Property | Type | Description | +| --------------- | ------- | ------------------------------------------------------ | +| **role** | string | Unique identifier for the role. | +| **name** | string | Human-readable display name. | +| **description** | string | Description of what this role is for. | +| **metadata** | object | JSON object for storing additional role configuration. | +| **createdAt** | integer | UNIX timestamp of when the role was created. | + +### Error handling + +| Error Code | Description | +| ------------------------- | ------------------------------------ | +| `ERR_ROLE_NOT_FOUND` | The specified role does not exist | +| `ERR_ROLE_ALREADY_EXISTS` | A role with this name already exists | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/roles/delete.mdx b/rest-api/roles/delete.mdx index dd7c95094..322a1f626 100644 --- a/rest-api/roles/delete.mdx +++ b/rest-api/roles/delete.mdx @@ -1,3 +1,25 @@ --- openapi: delete /roles/{role} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + View remaining roles. + + + Create a replacement role. + + diff --git a/rest-api/roles/get.mdx b/rest-api/roles/get.mdx index 95fcd142e..e7dad3146 100644 --- a/rest-api/roles/get.mdx +++ b/rest-api/roles/get.mdx @@ -1,3 +1,25 @@ --- openapi: get /roles/{role} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify an existing role. + + + Manage feature restrictions for this role. + + diff --git a/rest-api/roles/list.mdx b/rest-api/roles/list.mdx index e0d0c079f..34af325f7 100644 --- a/rest-api/roles/list.mdx +++ b/rest-api/roles/list.mdx @@ -1,3 +1,24 @@ --- openapi: get /roles ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Define a new role for your app. + + + Limit features for specific roles. + + diff --git a/rest-api/roles/update.mdx b/rest-api/roles/update.mdx index e22cc8152..533083c14 100644 --- a/rest-api/roles/update.mdx +++ b/rest-api/roles/update.mdx @@ -1,3 +1,25 @@ --- openapi: put /roles/{role} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | +| `ERR_ROLE_NOT_FOUND` | 404 | No role exists with the specified name | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve current role details. + + + View all roles in your app. + + diff --git a/rest-api/users.mdx b/rest-api/users.mdx index f7933c2a8..f3c30f011 100644 --- a/rest-api/users.mdx +++ b/rest-api/users.mdx @@ -1,24 +1,67 @@ --- title: "Overview" +description: "Manage users in your CometChat app — create, retrieve, update, and delete user accounts that power messaging and calling." --- -You should create a User in CometChat to be able to initiate communication in the platform. Users can chat in either 1-1 or groups. +A **User** is the core identity in CometChat. Every person (or bot) that sends messages, joins groups, or makes calls must exist as a User. Users are identified by a unique `uid` that you assign during creation and cannot change afterward. + +### How Users connect to other resources + +- **Auth Tokens** — A User needs an auth token to log in via the SDK. You can generate one during creation (`withAuthToken: true`) or separately via the [Auth Tokens API](/rest-api/auth-tokens). +- **Groups** — Users can join up to 2,000 [Groups](/rest-api/groups) and participate in group messaging and calling. +- **Messages** — Users send and receive [Messages](/rest-api/messages) in 1-on-1 or group conversations. +- **Friends** — Users can add up to 1,000 [Friends](/rest-api/friends). Friendships are bidirectional. +- **Roles** — Users can be assigned a [Role](/rest-api/roles) that controls permissions. If no role is set, the default role applies. +- **Blocked Users** — Users can [block other users](/rest-api/blocked-users) to prevent all direct communication in both directions. + +### Common workflow + +1. [Create a User](/rest-api/users/create) with `withAuthToken: true` to get an auth token in the same call. +2. Use the auth token to initialize the CometChat SDK on the client. +3. The user can now [send messages](/rest-api/messages), [join groups](/rest-api/groups), and [make calls](/rest-api/calls). -UIDs would be automatically converted to lowercase while creating a user. + UIDs are automatically converted to lowercase during creation. For example, + `CometChat-UID-1` becomes `cometchat-uid-1`. -The following table lists the properties that the User API supports. +### Available operations + +| Operation | Method | Endpoint | Description | +| ---------------------------------------- | -------- | -------------- | --------------------------------------------------------- | +| [List](/rest-api/users/list) | `GET` | `/users` | Retrieve a paginated list of users with filtering options | +| [Create](/rest-api/users/create) | `POST` | `/users` | Create a new user in your app | +| [Get](/rest-api/users/get) | `GET` | `/users/{uid}` | Retrieve a specific user's details | +| [Update](/rest-api/users/update) | `PUT` | `/users/{uid}` | Modify a user's profile (name, avatar, role, metadata) | +| [Delete](/rest-api/users/delete) | `DELETE` | `/users/{uid}` | Deactivate or permanently delete a user | +| [Deactivate](/rest-api/users/deactivate) | `DELETE` | `/users` | Temporarily disable users while preserving their data | +| [Reactivate](/rest-api/users/reactivate) | `PUT` | `/users` | Restore previously deactivated users | + +### User properties + +The following table lists the properties that the User object supports. + +| Property | Type | Description | +| ----------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **uid** | string | **Required.** User's unique identifier. Max 100 characters. Alphanumeric with dashes and underscores only, no spaces. Case-insensitive and immutable after creation. | +| **name** | string | **Required.** Display name shown in chat interfaces and notifications. Max 100 characters. Supports all languages and emojis (UTF8mb4). | +| **avatar** | string | URL to the user's profile picture. Max 3,000 characters. CometChat stores the URL, not the image itself. Recommended size: 200×200 pixels. | +| **link** | string | URL to the user's profile page in your application. Max 3,000 characters. | +| **role** | string | Role assigned to the user. Must be created beforehand using the [Create Role API](/rest-api/roles/create). Defaults to the default role if not set. | +| **metadata** | object | JSON object for storing additional user information (e.g., email, phone, preferences). Max 5 KB. Use the `@private` key for sensitive data that should only be visible to the user themselves and via admin APIs. | +| **tags** | array of strings | Tags for categorizing and filtering users. Max 25 tags per user, 100 characters each (UTF8mb4). Useful for segmenting by department, location, or custom criteria. | +| **withAuthToken** | boolean | When `true` on creation, includes the auth token in the response — saving a separate API call. Only applicable during [Create](/rest-api/users/create). | +| **createdAt** | integer | UNIX timestamp indicating when the user was created. System-generated, read-only. | + +### Error handling + +When API calls fail, CometChat returns structured error responses. The most common errors for User operations: -| Parameters | Type | Description | -| ----------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **uid** | string | (mandatory)\_ Specifies user's unique ID. Maximum length is 100 characters.Allowed characters: alpha-dash (a-z, 0-9 with -and \_ ) without spaces | -| **name** | string | (mandatory)\_ Specifies the user's name. Maximum length is 100 characters. | -| **avatar** | string | (optional)\_ Specifies the display picture of the user. If left empty, no display image is set for the user.\\Maximum length is 3000 characters. | -| **link** | string | (optional)\_ Specifies the URL to the profile page.Maximum length is 3000 characters. | -| **role** | string | (optional)\_ Indicates the role that is assigned to the user.The role must be created before-hand using the create role API.If role is not passed, then default role is assigned to the user. | -| **metadata** | nested object | (optional)\_ Specifies a JSON object to store up to 1.6K characters (JSON stringified metadata) for additional user information. | -| **tags** | array of strings | (optional)\_ Specifies a list of tags to be associated with certain users.Maximum of 25 tags can be associated with a single user. | -| **withAuthToken** | boolean | (optional)\_ Includes authToken of the created user in the response.If set to true, you do not have to make a separate API call to create authToken. | -| **createdAt** | Integer | UNIX Timestamp indicates the time when the user was created. | +| Error Code | Description | +| --------------------------- | ---------------------------------------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope (e.g., using an authOnly key for a fullAccess operation) | +| `ERR_UID_NOT_FOUND` | The specified UID does not exist, or the user has been deactivated | +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/users/create.mdx b/rest-api/users/create.mdx index 17b877b97..07bee68e0 100644 --- a/rest-api/users/create.mdx +++ b/rest-api/users/create.mdx @@ -4,17 +4,44 @@ openapi: post /users ## Constraints -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| UID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | -| User name | 100 characters (UTF8mb4) | Supports all languages and emojis | -| Avatar URL | 3000 characters max | CometChat doesn't store the image; no resolution limit | -| Profile URL | 3000 characters max | Same as avatar | -| Metadata | 5 KB max (within 10 KB POST limit) | Store custom key-value pairs | -| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Enable filtering and searching | -| Maximum groups per user | 2000 | Must leave existing groups to join new ones beyond limit | -| Maximum friends per user | 1000 | Bidirectional relationships count toward both users' limits | -| Maximum auth tokens per user | No limit | Allows login across multiple devices | -| Maximum Bot users per app | 25 | Special accounts for automated messaging | -| Bot UID character limit | 50 characters | Shorter than regular user UIDs | -| Maximum users per app | No limit | Pricing based on Monthly Active Users (MAU) | \ No newline at end of file +| Item | Constraint | Notes | +| ---------------------------- | -------------------------------------------- | ----------------------------------------------------------- | +| UID character limit | 100 characters | Alphanumeric with dashes only; spaces not allowed | +| User name | 100 characters (UTF8mb4) | Supports all languages and emojis | +| Avatar URL | 3000 characters max | CometChat doesn't store the image; no resolution limit | +| Profile URL | 3000 characters max | Same as avatar | +| Metadata | 5 KB max (within 10 KB POST limit) | Store custom key-value pairs | +| Tags | Up to 25 tags, 100 characters each (UTF8mb4) | Enable filtering and searching | +| Maximum groups per user | 2000 | Must leave existing groups to join new ones beyond limit | +| Maximum friends per user | 1000 | Bidirectional relationships count toward both users' limits | +| Maximum auth tokens per user | 100 active (rolling retention) | Oldest tokens are archived when limit is exceeded | +| Maximum Bot users per app | 25 | Special accounts for automated messaging | +| Maximum users per app | No limit | Pricing based on Monthly Active Users (MAU) | + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key has `authOnly` scope — creating users requires a `fullAccess` key | +| `ERR_UID_ALREADY_EXISTS` | 409 | A user with the same UID already exists (UIDs are case-insensitive) | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Next steps + + + + Generate an auth token so the user can log in via the SDK. + + + Add the newly created user to a group. + + + Send a message on behalf of the user. + + + Configure permissions by assigning a role. + + diff --git a/rest-api/users/deactivate.mdx b/rest-api/users/deactivate.mdx index d1aeb2ce6..a1d296b8e 100644 --- a/rest-api/users/deactivate.mdx +++ b/rest-api/users/deactivate.mdx @@ -1,3 +1,25 @@ --- openapi: delete /users ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | --------------------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key has `authOnly` scope — deactivating users requires a `fullAccess` key | +| `ERR_UID_NOT_FOUND` | 404 | One or more of the specified UIDs do not exist | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Restore deactivated users when they need access again. + + + Permanently delete a user instead of deactivating. + + diff --git a/rest-api/users/delete.mdx b/rest-api/users/delete.mdx index 7691cd3ff..cc33ef820 100644 --- a/rest-api/users/delete.mdx +++ b/rest-api/users/delete.mdx @@ -1,3 +1,32 @@ --- openapi: delete /users/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key has `authOnly` scope — deleting users requires a `fullAccess` key | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | + + + **Deactivate vs permanent delete:** By default, this deactivates the user — + the user's message history is preserved but they can no longer log in. Use the + `permanent` flag for complete removal of all user data, which cannot be + undone. + + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Temporarily disable users instead of deleting them. + + + Restore previously deactivated users. + + diff --git a/rest-api/users/get.mdx b/rest-api/users/get.mdx index ff2ed87bb..d5c5cdcb4 100644 --- a/rest-api/users/get.mdx +++ b/rest-api/users/get.mdx @@ -1,3 +1,24 @@ --- openapi: get /users/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Modify this user's profile information. + + + View all active sessions for this user. + + diff --git a/rest-api/users/list.mdx b/rest-api/users/list.mdx index a3776c02f..2fba3a01f 100644 --- a/rest-api/users/list.mdx +++ b/rest-api/users/list.mdx @@ -1,3 +1,24 @@ --- openapi: get /users ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve details for a specific user by UID. + + + Add a new user to your app. + + diff --git a/rest-api/users/reactivate.mdx b/rest-api/users/reactivate.mdx index 7214b14a4..1b5c4edbb 100644 --- a/rest-api/users/reactivate.mdx +++ b/rest-api/users/reactivate.mdx @@ -1,3 +1,25 @@ --- openapi: put /users ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| ---------- | ----------- | ----- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key has `authOnly` scope — reactivating users requires a `fullAccess` key | +| `ERR_UID_NOT_FOUND` | 404 | One or more of the specified UIDs do not exist or were not previously deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Temporarily disable users while preserving their data. + + + Filter users by status to find deactivated accounts. + + diff --git a/rest-api/users/update.mdx b/rest-api/users/update.mdx index 90b2a3c49..73a0c44a8 100644 --- a/rest-api/users/update.mdx +++ b/rest-api/users/update.mdx @@ -1,3 +1,25 @@ --- openapi: put /users/{uid} ---- \ No newline at end of file +--- + +## Common errors + +| Error Code | HTTP Status | Cause | +| --------------------------- | ----------- | ----------------------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key has `authOnly` scope — updating users requires a `fullAccess` key | +| `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID, or the user has been deactivated | + +For the complete error reference, see [Error Guide](/articles/error-guide). + +## Related + + + + Retrieve the current user details before updating. + + + Manage roles that can be assigned to users. + + From aa6ce89bf48377e32022b344254a9cb2ecb4a8f7 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 23 Mar 2026 20:10:02 +0530 Subject: [PATCH 20/56] fix: rewrite remaining overview pages to enriched format, add description frontmatter, fix typo in restrict-features --- rest-api/calls.mdx | 116 +++++++----- rest-api/chat-apis.mdx | 1 + rest-api/conversations.mdx | 69 +++++-- rest-api/data-import.mdx | 67 +++---- rest-api/extensions-overview.mdx | 1 + rest-api/group-members.mdx | 64 +++++-- rest-api/groups.mdx | 96 +++++++--- rest-api/management-apis.mdx | 1 + rest-api/messages.mdx | 80 +++++--- rest-api/moderation.mdx | 63 ++++--- rest-api/rate-limits.mdx | 25 +-- rest-api/rbac-overview.mdx | 308 ++++++++++++++++--------------- rest-api/restrict-features.mdx | 98 +++++----- rest-api/settings.mdx | 28 +-- 14 files changed, 598 insertions(+), 419 deletions(-) diff --git a/rest-api/calls.mdx b/rest-api/calls.mdx index 7df44f38a..9c9e30032 100644 --- a/rest-api/calls.mdx +++ b/rest-api/calls.mdx @@ -1,47 +1,77 @@ --- title: "Overview" +description: "Retrieve call logs and session details for audio and video calls in your CometChat app." --- -The Calls API provides programmatic access to the logs. Below, we have mentioned the key properties. - -| Parameters | Type | Description | -| -------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------- | -| **sessionId** | string | Specifies the call's unique ID. | -| **receiverType** | string | Specifies the receiver type of the call. Possible values: users/groups. | -| **totalAudioMinutes** | float | Indicates the total audio minutes of the call. | -| **totalVideoMinutes** | float | Indicates the total video minutes of the call. | -| **totalDurationInMinutes** | float | Indicates the total call minutes. Basically addition of audio & video minutes. | -| **totalDuration** | string | Representation of total call minutes in timer format. | -| **hasRecording** | boolean | Indicates if the call has recording in it. | -| **mode** | string | It represents the mode of the call. Possible values: call/meet/presenter | -| **startedAt** | integer | 10-digit unix timestamp indicating when the call was initiated. | -| **status** | string | It represents the current status of the call. Possible values: initiated, ongoing, ended, unanswered, rejected, canceled. | -| **type** | string | Indicating the type of the call. Possible values: audio/video | -| **totalParticipants** | integer | Indicating the participants count of the call. If a user joins from multiple devices, it would be accounted separately. | -| **endedAt** | integer | 10-digit unix timestamp indicating when the call was ended. | -| **participants** | array of objects | It includes details of individual participants who were a part of the call. | -| | | | - -Participants: - -| Parameters | Type | description | -| -------------------------- | ------- | -------------------------------------------------------------------------------- | -| **uid** | string | Indicates unique identifier of an user. | -| **totalAudioMinutes** | float | Indicates the total audio minutes that the user was a part of the call. | -| **totalVideoMinutes** | float | Indicates the total video minutes that the user was a part of the call. | -| **totalDurationInMinutes** | float | Indicates the total call minutes that the user was a part of. | -| **deviceId** | string | Unique identifier of the device from where the user joined the call. | -| **isJoined** | boolean | Indicates if the user joined the call. | -| **joinedAt** | integer | 10-digit Unix timestamp indicating the joining time of the user. | -| **state** | string | Current state of the user. Possible values: ongoing, ended, unanswered, rejected | -| **leftAt** | integer | 10-digit Unix timestamp indicating the leaving time of the user from the call. | - -Recordings: - -| Parameters | Type | description | -| ------------------ | ------- | ------------------------------------------------------------------ | -| **rid** | string | Indicates unique identifier of the recording. | -| **duration** | float | Indicates total recording time of the call. | -| **startTime** | integer | 10-digit Unix timestamp indicating when the recording was started. | -| **endTime** | integer | 10-digit Unix timestamp indicating when the recording was ended. | -| **recording\_url** | string | Indicates the S3 URL of the call recording. | +The **Calls** API provides access to call logs and session details. You can retrieve information about call duration, participants, recordings, and status for both audio and video calls. + +### Key behaviors + +- A call can have up to **50 participants**. +- Video calls support resolutions from **180p to 720p**, depending on layout and bandwidth. +- Media is encrypted using **SRTP**. Audio uses the **OPUS** codec; video uses **H.264**. +- If a participant joins from multiple devices, each device is counted separately in `totalParticipants`. + +### How calls connect to other resources + +- **Users** — Calls are initiated by and delivered to [Users](/rest-api/users). Each participant is identified by their UID. +- **Groups** — Calls can target a [Group](/rest-api/groups) when `receiverType` is `groups`. + +### Available operations + +| Operation | Method | Endpoint | Description | +| ---------------------------------- | ------ | ------------------ | ----------------------------------- | +| [List Calls](/rest-api/list-calls) | `GET` | `/calls` | Retrieve a paginated list of calls | +| [Get Call](/rest-api/get-call) | `GET` | `/calls/{session}` | Retrieve details of a specific call | + +### Call properties + +| Property | Type | Description | +| -------------------------- | ---------------- | ----------------------------------------------------------------------------------------- | +| **sessionId** | string | Unique call identifier. | +| **type** | string | Call type: `audio` or `video`. | +| **mode** | string | Call mode: `call`, `meet`, or `presenter`. | +| **receiverType** | string | Receiver type: `users` or `groups`. | +| **status** | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, or `canceled`. | +| **totalAudioMinutes** | float | Total audio minutes across all participants. | +| **totalVideoMinutes** | float | Total video minutes across all participants. | +| **totalDurationInMinutes** | float | Total call duration (audio + video minutes). | +| **totalDuration** | string | Total call duration in timer format (e.g., `00:05:30`). | +| **totalParticipants** | integer | Number of participant entries. Multi-device joins are counted separately. | +| **hasRecording** | boolean | Whether the call has a recording. | +| **startedAt** | integer | UNIX timestamp of when the call was initiated. | +| **endedAt** | integer | UNIX timestamp of when the call ended. | +| **participants** | array of objects | Details of individual participants (see below). | + +### Participant properties + +| Property | Type | Description | +| -------------------------- | ------- | ------------------------------------------------------------------- | +| **uid** | string | User's unique identifier. | +| **totalAudioMinutes** | float | Audio minutes for this participant. | +| **totalVideoMinutes** | float | Video minutes for this participant. | +| **totalDurationInMinutes** | float | Total call duration for this participant. | +| **deviceId** | string | Unique identifier of the device used to join. | +| **isJoined** | boolean | Whether the user joined the call. | +| **joinedAt** | integer | UNIX timestamp of when the user joined. | +| **leftAt** | integer | UNIX timestamp of when the user left the call. | +| **state** | string | Participant state: `ongoing`, `ended`, `unanswered`, or `rejected`. | + +### Recording properties + +| Property | Type | Description | +| ----------------- | ------- | --------------------------------------------- | +| **rid** | string | Unique recording identifier. | +| **duration** | float | Total recording duration in minutes. | +| **startTime** | integer | UNIX timestamp of when the recording started. | +| **endTime** | integer | UNIX timestamp of when the recording ended. | +| **recording_url** | string | URL to the call recording file. | + +### Error handling + +| Error Code | Description | +| --------------------------- | ------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 7674cd42b..790ee7c35 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "CometChat REST API documentation for integrating chat functionality into your server-side applications." --- Welcome to CometChat's REST API documentation! This documentation provides detailed information on the CHAT APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. diff --git a/rest-api/conversations.mdx b/rest-api/conversations.mdx index dc24d69d9..14d2f5863 100644 --- a/rest-api/conversations.mdx +++ b/rest-api/conversations.mdx @@ -1,29 +1,60 @@ --- title: "Overview" +description: "Retrieve and manage conversations that track the latest messages and unread counts for each user." --- - -**Constraint:** +A **Conversation** represents an ongoing message exchange between a user and another user (1-on-1) or a group. Each conversation tracks the last message, unread count, and metadata — making it easy to build a "Recent Chats" list. -1. Conversations will not be updated once the size of the group exceeds 300. -2. A conversation can have up to 25 tags with 100 characters per tag. +### Key behaviors - +- Conversations are automatically created when the first message is exchanged. +- For groups with more than **300 members**, conversations and unread message counts are not updated. +- Conversations can have up to **25 tags**, each up to 100 characters (UTF8mb4). +- The `lastMessage` property is not visible if the message has been deleted or if a new group has no messages yet. - -Conversations provide the last messages for every one-on-one and group conversation the logged-in user is a part of. This makes it easy for you to build a Recent Chats list. +### How conversations connect to other resources - +- **Users** — A 1-on-1 conversation is between two [Users](/rest-api/users). The `conversationWith` field contains the other user's details. +- **Groups** — A group conversation is tied to a [Group](/rest-api/groups). The `conversationWith` field contains the group's details. +- **Messages** — The `lastMessage` field reflects the most recent [Message](/rest-api/messages) in the conversation. -The following table lists the properties of a conversation in Conversation APIs. +### Available operations -| Parameters | Type | Description | -| ---------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **conversationId** | string | Specifies conversation's unique ID. | -| **conversationType** | string | Specifies the type of conversation.Available types are:
user
group | -| **unreadMessageCount** | string | Specifies count of unread messages in that conversation. | -| **createdAt** | integer | Specifies unix timestamp when conversation was created. | -| **updatedAt** | integer | Specifies unix timestamp when conversation was last updated. | -| **uid** | string | Specifies the user's unique ID for whom conversation is initiated. | -| **lastMessage** | nested object | Specifies details of that conversation's last message, including one-one and group. This makes it easy to build a Recent Chats list. Couple of scenarios where the *lastMessage* property won't be visible: a. If that message is deleted via SDK/API. b. If a new group is created and there is no message or no members are added to the group yet. | -| **conversationWith** | nested object | Specifies details of user or group with whom above mentioned user is having conversation. | +| Operation | Method | Endpoint | Description | +| ---------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------- | ------------------------------------------------------- | +| [List Conversations](/rest-api/conversations/list-conversations) | `GET` | `/users/{uid}/conversations` | Retrieve all conversations for a user | +| [Get Conversation](/rest-api/conversations/get-conversation) | `GET` | `/users/{uid}/conversations/{conversationId}` | Retrieve a specific conversation | +| [Get User Conversation](/rest-api/conversations/get-user-conversation) | `GET` | `/users/{uid}/conversations/user_{peerUid}` | Retrieve a 1-on-1 conversation with a specific user | +| [Get Group Conversation](/rest-api/conversations/get-group-conversation) | `GET` | `/users/{uid}/conversations/group_{guid}` | Retrieve a group conversation | +| [Update User Conversation](/rest-api/conversations/update-user-conversation) | `PUT` | `/users/{uid}/conversations/user_{peerUid}` | Update tags on a 1-on-1 conversation | +| [Update Group Conversation](/rest-api/conversations/update-group-conversation) | `PUT` | `/users/{uid}/conversations/group_{guid}` | Update tags on a group conversation | +| [Delete Conversation](/rest-api/conversations/delete-conversation) | `DELETE` | `/users/{uid}/conversations/{conversationId}` | Delete a conversation for a user | +| [Reset User Conversation](/rest-api/conversations/reset-user-conversation) | `DELETE` | `/users/{uid}/conversations/user_{peerUid}/reset` | Reset unread count for a 1-on-1 conversation | +| [Reset Group Conversation](/rest-api/conversations/reset-group-conversation) | `DELETE` | `/users/{uid}/conversations/group_{guid}/reset` | Reset unread count for a group conversation | +| [Mark User Conversation as Read](/rest-api/conversations/mark-user-conversation-as-read) | `PUT` | `/users/{uid}/conversations/user_{peerUid}/read` | Mark all messages as read in a 1-on-1 conversation | +| [Mark Group Conversation as Read](/rest-api/conversations/mark-group-conversation-as-read) | `PUT` | `/users/{uid}/conversations/group_{guid}/read` | Mark all messages as read in a group conversation | +| [Mark User Conversation as Delivered](/rest-api/conversations/mark-user-conversation-as-delivered) | `PUT` | `/users/{uid}/conversations/user_{peerUid}/delivered` | Mark all messages as delivered in a 1-on-1 conversation | +| [Mark Group Conversation as Delivered](/rest-api/conversations/mark-group-conversation-as-delivered) | `PUT` | `/users/{uid}/conversations/group_{guid}/delivered` | Mark all messages as delivered in a group conversation | +| [Mark Conversation as Unread](/rest-api/conversations/mark-conversation-messages-as-unread) | `POST` | `/users/{uid}/conversations/{conversationId}/unread` | Mark a conversation as unread | +| [Mark Group Conversation as Unread](/rest-api/conversations/mark-group-conversation-as-unread) | `POST` | `/users/{uid}/conversations/group_{guid}/unread` | Mark a group conversation as unread | + +### Conversation properties + +| Property | Type | Description | +| ---------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **conversationId** | string | Unique conversation identifier. Format: `user_{uid}` for 1-on-1 or `group_{guid}` for group conversations. | +| **conversationType** | string | Type of conversation: `user` or `group`. | +| **unreadMessageCount** | integer | Number of unread messages in this conversation. | +| **lastMessage** | object | Details of the most recent message in the conversation. Not present if the message was deleted or if a new group has no messages. | +| **conversationWith** | object | Details of the other user (for 1-on-1) or the group (for group conversations). | +| **createdAt** | integer | UNIX timestamp of when the conversation was created. | +| **updatedAt** | integer | UNIX timestamp of when the conversation was last updated. | + +### Error handling + +| Error Code | Description | +| ---------------------------- | ----------------------------------------- | +| `ERR_UID_NOT_FOUND` | The specified user does not exist | +| `ERR_CONVERSATION_NOT_FOUND` | The specified conversation does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index fa6a13747..761688b14 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -1,60 +1,39 @@ --- title: "Overview" +description: "Import users, groups, members, and message history from a previous chat system into CometChat." --- -The CometChat Data Import REST API provides an efficient way to import users, groups, group members, and messages from your previous chat system to CometChat. This API allows you to seamlessly transition from your previous chat system with minimal disruption to your users. +The **Data Import** API provides an efficient way to migrate data from your previous chat system to CometChat. You can import users, groups, group members, and full message history in bulk. -### Key Features +### Key capabilities -* **Import Users:** Create multiple users at once in your CometChat app by importing them from an existing data source. +- **Import Users** — Create multiple users at once from an existing data source. +- **Import Groups** — Migrate all existing groups into your CometChat app. +- **Import Members** — Add members to specific groups during migration. +- **Import Messages** — Migrate chat history including 1-on-1 and group messages. -* **Import Groups:** Easily migrate all your existing groups into your CometChat app. +### Getting started -* **Import Members:** Import members to join specific groups in your CometChat app. +All Data Import API requests require your `appId`, `apiKey`, and `region`, available from the [CometChat Dashboard](https://app.cometchat.com/). Requests must be made over HTTPS. -* **Import Messages:** Migrate your existing chat history, including one-on-one messages and group messages into your CometChat app. +Base URL: -### Getting Started - -To start using the CometChat Import REST API, you'll need your AppID, API Key and region, which can be obtained from your CometChat [Dashboard](https://app.cometchat.com/). All API requests must be made over HTTPS. - -The base URL for all CometChat Pro REST API requests is `https://.api-.cometchat.com/v3.0/data_import`. - -Be sure to replace `'appId'` and `'region'` with your actual App ID and region respectively in the API endpoint. - - - - - -## Authentication - -Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. CometChat employs industry-standard authentication mechanisms to ensure the security and integrity of your data. +``` +https://.api-.cometchat.io/v3.0/data_import +``` -## Endpoints +Replace `` and `` with your actual App ID and region. -CometChat's Data Import APIs are designed to be intuitive and easy to integrate into your application's backend infrastructure.\ -Example of a Import Users API request in curl command syntax: +### Rate limits - +Data import operations are rate-limited to **60 requests per minute**. See [Rate Limits](/rest-api/rate-limits) for details. -```swift cURL -curl -X POST \ --H "Content-Type: application/json" \ --H "apiKey: YOUR_APIKEY_HERE" \ --d '{ - "users": { - "test_uid": { - "uid": "test_uid", - "name": "Atlas" - }, - "test_uid2": { - "uid": "test_uid2", - "name": "Apollo" - } - } -}' "http://.api-.cometchat.io/v3.0/data_import/users" -``` +### Error handling - +| Error Code | Description | +| --------------------------- | ---------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_TOO_MANY_REQUESTS` | Rate limit exceeded — retry after the specified time | -*Replace appId, apiKey and region in the curl request.* \ No newline at end of file +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/extensions-overview.mdx b/rest-api/extensions-overview.mdx index 9459b4e07..50a4816b8 100644 --- a/rest-api/extensions-overview.mdx +++ b/rest-api/extensions-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Browse available CometChat extensions for enhanced chat functionality." --- ## Extension List: diff --git a/rest-api/group-members.mdx b/rest-api/group-members.mdx index c6d909588..c173f07db 100644 --- a/rest-api/group-members.mdx +++ b/rest-api/group-members.mdx @@ -1,31 +1,57 @@ --- title: "Overview" +description: "Add, remove, and manage members within CometChat groups." --- - -1. A maximum of 25 users can be added per API Call. -2. For a group with more than 300 members, the conversations and unread message counts are not updated. +The **Group Members** API manages the membership of users within a group. Each member is assigned a scope that determines their permissions inside the group. - +### Key behaviors -The following table lists the properties of an HTTP request that Group Members API supports. +- A maximum of **25 users** can be added per API call across all scope arrays (`admins`, `moderators`, `participants`, `usersToBan`). +- If the same UID appears in multiple scope arrays, the highest scope applies in the order: admin > moderator > participant. +- Individual member addition failures do not cause the overall request to fail — check the `error` objects in the response for per-member status. +- For groups with more than **300 members**, conversations and unread message counts are not updated. -| Parameters | Type | Description | -| ---------------- | ---------------- | ------------------------------------------------------------------------------- | -| **admins** | array of strings | A string array of UIDs of the existing users to be added as group admins. | -| **moderators** | array of strings | A string array of UIDs of the existing users to be added as group moderators. | -| **participants** | array of strings | A string array of UIDs of the existing users to be added as group participants. | -| **usersToBan** | array of strings | A string array of UIDs of the existing users to be added as group participants. | +### Member scopes -The individual member failure can be seen in the error objects in their respective scope. +| Scope | Default assignment | Privileges | +| ------------- | -------------------- | ---------------------------------------------------------------------------------------------------- | +| `admin` | Group creator | Change member scopes, add/kick/ban members, update/delete group, send & receive messages & calls | +| `moderator` | Promoted by an admin | Change scope of participants, kick & ban participants, update group, send & receive messages & calls | +| `participant` | All other members | Send & receive messages & calls | - -If the same UID is added to more than one scopes array then the UID will get the scopes in the order below +### How group members connect to other resources -1. admin -2. moderator -3. participant +- **Groups** — Members belong to a [Group](/rest-api/groups), identified by its GUID. +- **Users** — Each member is a [User](/rest-api/users), identified by their UID. +- **Banned Users** — Members can be [banned](/rest-api/banned-users) from a group by admins or moderators. +- **Roles & RBAC** — A member's app-wide [Role](/rest-api/roles) is checked alongside their group scope. Both must allow an action for it to succeed. See [RBAC & SBAC](/rest-api/rbac-overview). -For example, if the UID superhero1 is part of admins, moderators, and usersToBan arrays then it will appear in the only **members.admins** property in the response. +### Available operations - +| Operation | Method | Endpoint | Description | +| ---------------------------------------------------- | -------- | ------------------------------ | ------------------------------------------ | +| [List Members](/rest-api/group-members/list) | `GET` | `/groups/{guid}/members` | Retrieve all members of a group | +| [Add Members](/rest-api/group-members/add-members) | `POST` | `/groups/{guid}/members` | Add users to a group with specified scopes | +| [Change Scope](/rest-api/group-members/change-scope) | `PUT` | `/groups/{guid}/members/{uid}` | Change a member's scope within the group | +| [Kick Member](/rest-api/group-members/kick) | `DELETE` | `/groups/{guid}/members/{uid}` | Remove a member from the group | + +### Group member properties + +| Property | Type | Description | +| ---------------- | ---------------- | ------------------------------------------------ | +| **admins** | array of strings | UIDs of users to be added as group admins. | +| **moderators** | array of strings | UIDs of users to be added as group moderators. | +| **participants** | array of strings | UIDs of users to be added as group participants. | +| **usersToBan** | array of strings | UIDs of users to be banned from the group. | + +### Error handling + +| Error Code | Description | +| -------------------- | ------------------------------------------ | +| `ERR_GUID_NOT_FOUND` | The specified group does not exist | +| `ERR_UID_NOT_FOUND` | The specified user does not exist | +| `ERR_NOT_A_MEMBER` | The user is not a member of this group | +| `ERR_ALREADY_JOINED` | The user is already a member of this group | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/groups.mdx b/rest-api/groups.mdx index cb0ae5926..f733eedfa 100644 --- a/rest-api/groups.mdx +++ b/rest-api/groups.mdx @@ -1,32 +1,72 @@ --- title: "Overview" +description: "Create and manage groups for multi-user conversations — public, private, or password-protected." --- -1. Groups help your users to converse together in a single space. You can have three types of groups - private, public, and password protected. -2. A maximum of 100,000 users can be added to a single group. The following error code would be provided **ERR\_PLAN\_QUOTA\_RESTRICTION** if you're trying to add members greater than the limit. -3. They support typing indicators, unread count, transient messages and read receipts. -4. However, once the size of the group exceeds 300, the conversations and unread message counts are not updated. - - - -GUIDs would be automatically converted to lowercase while creating a group. - - - -The following table lists the properties that the Group API supports. - -| Parameters | Type | Description | -| ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **guid** | string | (mandatory) Specifies group's unique ID. Maximum length is 100 characters.Allowed characters: alpha-dash (a-z, 0-9 with -and \_ ) without spaces | -| **name** | string | (mandatory) Specifies the group's name. Maximum length is 100 characters.

It also supports emojis. | -| **type** | string | (optional) Specifies the type of the group.Allowed types are: public private passwordIf type is not passed, then by default public type is assigned. | -| **password** | string | (optional) Specifies the password required for a group. Only required incase of password protected group. | -| **icon** | string | (optional) Specifies the icon of the group. If left empty, no group icon is set for the group.

CometChat doesn’t save the image on its servers.. There is no limit on the image resolution. It depends on the implementation.Maximum length is 3,000 characters. | -| **description** | string | (optional) Specifies the group description.Maximum length is 255 characters. | -| **owner** | string | (optional) Specifies the owner of the group. If passed with the UID of an existing user, the User would be made the owner of the group.

If not passed, the system user would be considered the owner of the group. | -| **metadata** | nested object | (optional) Specifies a JSON object to store up to 1,600 characters (JSON stringified metadata) for additional user information. | -| **tags** | array of strings | (optional) Specifies a list of tags to be associated with certain groups.A maximum of 25 tags can be associated with a single group. | -| **members** | object | (optional) The members object allows adding members with the allowed member scopes and banning users.It can have the below optional properties:

- **admins**: A string array of UIDs of the existing users to be added as group admins.
- **moderators**: A string array of UIDs of the existing users to be added as group moderators.
- **participants**: A string array of UIDs of the existing users to be added as group participants.
- **usersToBan**: A string array of UIDs of the existing users to be added as group participants.

Failure to adding a member or banning a user does not result into create group API failure.
However, the individual member failure can be seen in the error objects in members.If the same UID is added to more than one members array then the scope UID will get the scopes in the order below admin, moderator, participant.
For example, if the UID superhero1 is part of admins, moderators and usersToBan arrays then it will appear in the only members.admins property in the response.A maximum of 25 users can be added across all the scopes of member objects. | -| **membersCount** | integer | Specifies the number of members in the group. | -| **createdAt** | integer | UNIX Timestamp specifies the time when the group was created. | -| **conversationId** | string | Specifies the conversation ID of the group. | +A **Group** is a shared conversation space where multiple users can exchange messages and make calls. Groups are identified by a unique `guid` that you assign during creation and cannot change afterward. + +CometChat supports three group types: + +| Type | Visibility | Join behavior | +| ---------- | -------------------------- | ----------------------------------------------- | +| `public` | Listed and searchable | Any user can join without approval | +| `private` | Hidden from group listings | Users must be added by an admin | +| `password` | Listed and searchable | Users must provide the correct password to join | + +If no type is specified during creation, the group defaults to `public`. + +### Key behaviors + +- A group can hold up to **100,000 members**. Groups with **300 or fewer members** support all features including delivery/read receipts, typing indicators, and unread message counts. Above 300 members, these features are disabled for performance. +- GUIDs are automatically converted to **lowercase** during creation. +- A user can be a member of up to **2,000 groups**. +- Up to **25 members** can be added in a single [Create Group](/rest-api/groups/create) call via the `members` object. + +### How groups connect to other resources + +- **Group Members** — Users join groups with a scope (`admin`, `moderator`, or `participant`). Manage membership via the [Group Members API](/rest-api/group-members). +- **Messages** — Users send and receive [Messages](/rest-api/messages) within a group conversation. +- **Banned Users** — Admins and moderators can [ban members](/rest-api/banned-users) from a group, preventing them from rejoining until unbanned. +- **Roles & RBAC** — A user's [Role](/rest-api/roles) controls app-wide permissions, while their group scope controls in-group permissions. See [RBAC & SBAC](/rest-api/rbac-overview). +- **Conversations** — Each group has a corresponding [Conversation](/rest-api/conversations) that tracks the last message and unread count. + +### Available operations + +| Operation | Method | Endpoint | Description | +| --------------------------------- | -------- | ---------------- | ---------------------------------------------- | +| [List](/rest-api/groups/list) | `GET` | `/groups` | Retrieve a paginated list of groups | +| [Create](/rest-api/groups/create) | `POST` | `/groups` | Create a new group | +| [Get](/rest-api/groups/get) | `GET` | `/groups/{guid}` | Retrieve a specific group's details | +| [Update](/rest-api/groups/update) | `PUT` | `/groups/{guid}` | Modify a group's name, icon, type, or metadata | +| [Delete](/rest-api/groups/delete) | `DELETE` | `/groups/{guid}` | Permanently delete a group | + +### Group properties + +| Property | Type | Description | +| ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **guid** | string | **Required.** Group's unique identifier. Max 100 characters. Alphanumeric with dashes and underscores only, no spaces. Case-insensitive and immutable after creation. | +| **name** | string | **Required.** Display name for the group. Max 100 characters. Supports all languages and emojis (UTF8mb4). | +| **type** | string | Group type: `public`, `private`, or `password`. Defaults to `public` if not specified. | +| **password** | string | Password for joining a password-protected group. Only applicable when `type` is `password`. | +| **icon** | string | URL to the group's icon image. Max 3,000 characters. CometChat stores the URL, not the image itself. | +| **description** | string | Brief description of the group. Max 255 characters (UTF8mb4). | +| **owner** | string | UID of the group owner. If not specified during creation, the system user is assigned as owner. | +| **metadata** | object | JSON object for storing additional group information. Max 5 KB. | +| **tags** | array of strings | Tags for categorizing and filtering groups. Max 25 tags per group, 100 characters each (UTF8mb4). | +| **members** | object | Used during creation to add initial members. Accepts `admins`, `moderators`, `participants`, and `usersToBan` arrays (max 25 users total across all scopes). If a UID appears in multiple arrays, the highest scope applies in the order: admin > moderator > participant. Individual member failures do not cause the create request to fail. | +| **membersCount** | integer | Number of members in the group. Read-only. | +| **conversationId** | string | Conversation ID associated with this group. Read-only. | +| **createdAt** | integer | UNIX timestamp indicating when the group was created. Read-only. | + +### Error handling + +| Error Code | Description | +| ---------------------------- | -------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope for this operation | +| `ERR_GUID_NOT_FOUND` | The specified GUID does not exist | +| `ERR_GUID_ALREADY_EXISTS` | A group with this GUID already exists | +| `ERR_PLAN_QUOTA_RESTRICTION` | The group has reached the maximum member limit (100,000) | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 56b3ad372..9b82cc486 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Manage CometChat applications at the account level with Multi-Tenancy APIs." --- Welcome to CometChat's Multi-Tenancy API documentation!\ diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index 18b6e4a26..0e12b8a75 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -1,31 +1,69 @@ --- title: "Overview" +description: "Send, retrieve, and manage messages in one-on-one and group conversations." --- -Messaging is one of the core features of CometChat. We've thoughtfully created APIs to help you send and retrieve message history. +A **Message** is the core unit of communication in CometChat. Users can send text, media files, and custom data to other users or groups. Messages support threading, reactions, read receipts, and delivery tracking. -1. Users can send messages to a user or group. -2. No limit to the number of unread messages per user. -3. No limit to the number of unread messages per group. -4. Soft deleted messages will be available in the database but permanently deleted messages will not be available. +### Key behaviors - -**Properties and constraints:** +- Maximum file upload size is **100 MB** per message (includes the file and the entire POST body). +- The message JSON payload (including metadata) can be up to **65,536 characters (~65 KB)**. +- The `data` object within a message must not exceed **10 KB**. It accepts any JSON structure with UTF8mb4 encoding. +- Messages can have up to **25 tags**, each up to 100 characters (UTF8mb4). +- Soft-deleted messages remain in the database. Permanently deleted messages (via API) are removed entirely. +- For groups with more than **300 members**, unread message counts and conversations are not updated. +- Delivery and read receipts are sent for groups of up to **300 online users**. -1. The maximum File size that can be uploaded per message is 100MB. -2. For a group with more than 300 members, the conversations and unread message counts are not updated. -3. Delivery and read receipts will be sent for a group of up to 300 online users. -4. Data is an arbitrary JSON structure. It accepts utf8mb4. It can have any user defined properties. but the below properties have meaning for CometChat: text, attachments, custome\_data, metadata\ - Note: The attachment size is separate. Here, the attachment is only the attachment properties (such as URL, size, etc.). The size must not exceed 10KB for the data object. -5. A message can have up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. +### How messages connect to other resources - +- **Users** — Messages are sent by and delivered to [Users](/rest-api/users). The sender must be authenticated. +- **Groups** — Messages can target a [Group](/rest-api/groups) by specifying the group's GUID as the receiver. +- **Conversations** — Each message exchange creates or updates a [Conversation](/rest-api/conversations) that tracks the last message and unread count. +- **Threads** — Any message can be a parent for a thread. Replies are managed via the [threaded messages](/rest-api/messages/list-threaded-messages) endpoints. +- **Reactions** — Users can [add](/rest-api/messages/add-reaction) or [remove](/rest-api/messages/remove-reaction) emoji reactions on messages. -The following table lists the properties that the Message API supports. +### Available operations -| Parameters | Type | Description | -| ---------- | ------ | ------------------------------ | -| `appId` | String | Unique identifier for the app | -| `apiKey` | String | Authentication key for the app | -| `region` | String | Geographic region for the app | -| `baseUrl` | String | Base URL for API requests | +| Operation | Method | Endpoint | Description | +| ------------------------------------------------------------------- | -------- | --------------------------- | ------------------------------------------------ | +| [Send Message](/rest-api/messages/send-message) | `POST` | `/messages` | Send a message to a user or group | +| [List Messages](/rest-api/messages/list-messages) | `GET` | `/messages` | Retrieve all messages for the authenticated user | +| [List User Messages](/rest-api/messages/list-user-messages) | `GET` | `/users/{uid}/messages` | Retrieve messages in a 1-on-1 conversation | +| [List Group Messages](/rest-api/messages/list-group-messages) | `GET` | `/groups/{guid}/messages` | Retrieve messages in a group conversation | +| [Get Message](/rest-api/messages/get-message) | `GET` | `/messages/{id}` | Retrieve a specific message by ID | +| [Update Message](/rest-api/messages/update-message) | `PUT` | `/messages/{id}` | Edit a sent message | +| [Delete Message](/rest-api/messages/delete-message) | `DELETE` | `/messages/{id}` | Soft-delete or permanently delete a message | +| [Send Threaded Message](/rest-api/messages/send-threaded-message) | `POST` | `/messages/{id}/replies` | Reply to a message in a thread | +| [List Threaded Messages](/rest-api/messages/list-threaded-messages) | `GET` | `/messages/{id}/replies` | Retrieve all replies in a thread | +| [Send Bot Message](/rest-api/messages/send-bot-message) | `POST` | `/bots/{uid}/messages` | Send a message as a bot user | +| [Add Reaction](/rest-api/messages/add-reaction) | `POST` | `/messages/{id}/reactions` | Add an emoji reaction to a message | +| [Remove Reaction](/rest-api/messages/remove-reaction) | `DELETE` | `/messages/{id}/reactions` | Remove an emoji reaction from a message | +| [List All Reactions](/rest-api/messages/list-all-reactions) | `GET` | `/messages/{id}/reactions` | List all reactions on a message | +| [Mark as Interacted](/rest-api/messages/mark-message-as-interacted) | `POST` | `/messages/{id}/interacted` | Mark a message as interacted with | + +### Message properties + +| Property | Type | Description | +| ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------- | +| **id** | integer | Unique message identifier. System-generated, read-only. | +| **type** | string | Message type: `text`, `image`, `audio`, `video`, `file`, or a custom type. | +| **category** | string | Message category: `message` or `custom`. | +| **data** | object | Arbitrary JSON structure (max 10 KB). Recognized keys: `text`, `attachments`, `custom_data`, `metadata`. Accepts UTF8mb4. | +| **tags** | array of strings | Tags for categorizing messages. Max 25 tags, 100 characters each (UTF8mb4). | +| **sender** | string | UID of the user who sent the message. Read-only. | +| **receiver** | string | UID (for user messages) or GUID (for group messages) of the recipient. | +| **receiverType** | string | Receiver type: `user` or `group`. | +| **sentAt** | integer | UNIX timestamp of when the message was sent. Read-only. | + +### Error handling + +| Error Code | Description | +| --------------------------- | ------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_MSG_NOT_FOUND` | The specified message does not exist | +| `ERR_UID_NOT_FOUND` | The receiver UID does not exist | +| `ERR_GUID_NOT_FOUND` | The receiver group GUID does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/moderation.mdx b/rest-api/moderation.mdx index d97a5f4c4..7d9f6123e 100644 --- a/rest-api/moderation.mdx +++ b/rest-api/moderation.mdx @@ -1,38 +1,55 @@ --- title: "Overview" +description: "Create and manage content moderation rules to maintain a safe environment across your CometChat app." --- -The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. +The **Moderation** API provides endpoints for managing content moderation rules and keyword lists. You can define rules that automatically detect and block inappropriate content in messages, including text profanity, AI-based image/video moderation, and custom keyword filters. +### Key behaviors +- Default rules cover text profanity, AI-based image/video moderation, custom profanity, contact details, and email content. +- Text and custom profanity filters scan for words (including regex patterns) and drop the message if a violation is detected. +- AI-based image/video moderation scans attachments and discards the message if a violation is found. +- When a rule is violated, the message is blocked. Optionally, the sender can be kicked or banned (in groups) or blocked (in 1-on-1 conversations). -Below is an overview of the key functionalities provided by the Moderation Service API: +### How moderation connects to other resources -1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions -2. The Keywords Management endpoints allow you to create and manage lists of keywords or regex patterns used for content moderation. -3. The list blocked messages endpoint allows you to fetch all the violated messages. -4. Fetches the historical revisions of a rule, detailing all updates made over time. +- **Messages** — Moderation rules are evaluated against [Messages](/rest-api/messages) in real time before delivery. +- **Groups** — Violations in group messages can trigger member kicks or bans via [Group Members](/rest-api/group-members) and [Banned Users](/rest-api/banned-users). +- **Blocked Users** — Violations in 1-on-1 messages can trigger a [block](/rest-api/blocked-users) on the sender. +### AI image and video moderation labels +The following labels can be attached to a rule to moderate specific categories of images and videos: -The default rules include text profanity, AI-based moderation for images and videos, custom profanity (custom messages), contact details, and email content, ensuring comprehensive content moderation. +| Label | Description | +| --------------------- | ------------------------------------------------------------------------------------------------ | +| Violence | Instruments or devices used to cause harm — firearms, sharp weapons, explosives, and ammunition. | +| Alcohol | Drinking alcoholic beverages from bottles or glasses. | +| Gambling | Participating in games of chance — cards, roulette, slot machines. | +| Drugs & Tobacco | Tablets, capsules, or the act of smoking cigarettes, cigars, e-cigarettes, hookah, or joints. | +| Rude gestures | Hand gesture with the middle finger extended. | +| Explicit Nudity | Visible human genitalia. | +| Non-Explicit Nudity | Exposed human back from neck to spine without full occlusion. | +| Swimwear or underwear | Swimwear or undergarments — bikinis, swim trunks, swim briefs, etc. | +| Visually Disturbing | Extremely thin, undernourished human bodies with severe physical wasting. | +| Hate symbols | Symbols, flags, or gestures associated with extremist or terrorist groups. | -The text profanity and custom profanity filters scan for words, including those matching regex patterns, and drop the message if a violation is detected. +### Available operations -The AI-based image and video moderation system scans for violations in images and videos and discards the message if a violation is detected. It allows the attachment of the following labels to a rule, enabling moderation for specific categories of images and videos.\ -Following are the labels that are available for Image/Video moderation: +| Operation | Description | +| --------------------- | ----------------------------------------------------------------------------------------- | +| Rules Management | Create, read, update, and delete moderation rules that define how content is evaluated. | +| Keywords Management | Create and manage keyword lists or regex patterns used for text-based content moderation. | +| List Blocked Messages | Retrieve all messages that violated moderation rules. | +| Rule Revision History | Fetch historical revisions of a rule, showing all updates made over time. | -| Labels | Definitions | -| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Violence | Instruments or devices used to cause harm or damage to living beings, structures, or systems. This includes firearms (e.g., guns, rifles, machine guns, etc.), sharp weapons (e.g., swords, knives, etc.), explosives and ammunition (e.g., missiles, bombs, bullets, etc.). | -| Alcohol | The act of drinking alcoholic beverages from bottles or glasses of alcohol or liquor. | -| Gambling | The act of participating in games of chance for a chance to win a prize in casinos, e.g., playing cards, blackjacks, roulette, slot machines at casinos, etc. | -| Drugs & Tobacco | Small, solid, often round or oval-shaped tables or capsules. The act of inhaling, exhaling, and lighting up burning substances including cigarettes, cigars, e-cigarettes, hookah, or joint. | -| Rude gestures | Visual depiction of a hand gesture with middle finger is extended upward while the other fingers are folded down. | -| Explicit Nudity | Human male/female genitalia, including the penis (whether erect or flaccid), the scrotum, and any discernible pubic hair. | -| Non-Explicit Nudity | Human posterior part where the majority of the skin is visible from the neck to the end of the spine. This term does not apply when the individual's back is partially or fully occluded. | -| Swimwear or underwear | Human clothing for female/male swimwear (e.g., one-piece swimsuits, bikinis, tankinis, swim trunks, boardshorts, swim briefs, etc) | -| Visually Disturbing | Human bodies that are extremely thin and undernourished with severe physical wasting and depletion of muscle and fat tissue. | -| Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | +### Error handling -When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. +| Error Code | Description | +| --------------------------- | ------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/rate-limits.mdx b/rest-api/rate-limits.mdx index 395ea179f..031ca6cf6 100644 --- a/rest-api/rate-limits.mdx +++ b/rest-api/rate-limits.mdx @@ -1,36 +1,37 @@ --- title: "Rate Limits" +description: "Understand the API rate limits enforced by CometChat to ensure fair usage and service quality." --- CometChat enforces rate limits to ensure fair usage and maintain service quality across all applications. These limits apply to API requests made to CometChat servers. ## Global Rate Limits -| Operation Type | Rate Limit | Examples | -| -------------- | ---------- | -------- | -| Core operations | 10,000 requests/min | User connection, create/delete user, create/join/leave group | +| Operation Type | Rate Limit | Examples | +| ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------- | +| Core operations | 10,000 requests/min | User connection, create/delete user, create/join/leave group | | Standard operations | 20,000 requests/min | All operations not classified as core operations (e.g., sending messages, fetching conversations, updating profiles) | -| Build plan (free) | 500 requests/min | Applies to both core and standard operations | +| Build plan (free) | 500 requests/min | Applies to both core and standard operations | ## Per-User Rate Limits -| Operation | Rate Limit | Notes | -| --------- | ---------- | ----- | -| Send message | 30 messages/min | Per user limit for sending messages | -| Mark as unread | 5 requests/min | Per user limit for marking messages as unread | +| Operation | Rate Limit | Notes | +| -------------- | --------------- | --------------------------------------------- | +| Send message | 30 messages/min | Per user limit for sending messages | +| Mark as unread | 5 requests/min | Per user limit for marking messages as unread | ## Data Import Rate Limits -| Operation | Rate Limit | Notes | -| --------- | ---------- | ----- | +| Operation | Rate Limit | Notes | +| ----------- | --------------- | ------------------------------------------ | | Data import | 60 requests/min | Rate limit for bulk data import operations | ## Handling Rate Limits When you exceed a rate limit, the API will return the following error: -| Error Code | Description | -| ---------- | ----------- | +| Error Code | Description | +| ----------------------- | ------------------------------------------------------------------------------------------- | | `ERR_TOO_MANY_REQUESTS` | Too many requests. You have exceeded the rate limit. Please retry after the specified time. | To handle rate limits gracefully: diff --git a/rest-api/rbac-overview.mdx b/rest-api/rbac-overview.mdx index ee046a202..3ff1ff07c 100644 --- a/rest-api/rbac-overview.mdx +++ b/rest-api/rbac-overview.mdx @@ -1,5 +1,6 @@ --- -title: Overview +title: "Overview" +description: "Configure role-based (RBAC) and scope-based (SBAC) access control permissions for your CometChat app." sidebar_label: Overview --- @@ -25,46 +26,51 @@ Role-Based Access Control (RBAC) enables fine-grained control over **what action - If a permission evaluation fails, the API returns an `ERR_PERMISSION_DENIED` error RBAC supports: + - **Binary permissions** (`allow` / `deny`) - **Conditional permissions** using additional configuration keys such as `mode`, `allowedRoles`, and `allowedMessageTypes` Permissions can be restricted by additional conditions such as: + - User relationships (all users vs friends) - Sender or receiver roles - Message categories and types ### RBAC Data Types -| Data Type | Description | Example Values | -|-----------|-------------|----------------| -| `string` | Single string value | `allow`, `deny`, `all`, `friends` | -| `stringArray` | Array of predefined strings | `["user", "group"]`, `["text", "image"]` | -| `rolesStringArray` | Array of role names | `["doctor", "patient"]` | -| `customStringArray` | Array of custom user-defined strings | `["custom-type-1", "custom-type-2"]` | +| Data Type | Description | Example Values | +| ------------------- | ------------------------------------ | ---------------------------------------- | +| `string` | Single string value | `allow`, `deny`, `all`, `friends` | +| `stringArray` | Array of predefined strings | `["user", "group"]`, `["text", "image"]` | +| `rolesStringArray` | Array of role names | `["doctor", "patient"]` | +| `customStringArray` | Array of custom user-defined strings | `["custom-type-1", "custom-type-2"]` | ### RBAC Permission Structure Each RBAC permission follows this structure: -| Attribute | Description | -|-----------|-------------| -| Key | The RBAC permission key used in APIs | -| Category | Logical grouping (Users, Messages, etc.) | -| Data Type | Expected value type | -| Available Values | Supported values | -| Default | Applied if not explicitly configured | +| Attribute | Description | +| ---------------- | ---------------------------------------- | +| Key | The RBAC permission key used in APIs | +| Category | Logical grouping (Users, Messages, etc.) | +| Data Type | Expected value type | +| Available Values | Supported values | +| Default | Applied if not explicitly configured | ### RBAC Permission Value Behavior When an array permission (e.g., `allowedRoles`, `mimeTypes`) has a value of `null`: + - It means **no restriction** - all values are allowed - This is equivalent to an empty array `[]` For `allow` / `deny` values: + - `allow`: The action is permitted - `deny`: The action is blocked, returns `ERR_PERMISSION_DENIED` For `mode` values: + - `all`: Action applies to all users - `friends`: Action is restricted to friends only @@ -72,98 +78,98 @@ For `mode` values: #### 1. Users -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| User Listing | Allow or deny user listing functionality | string | `listUsers` | allow, deny | allow | -| User Listing Mode | Choose who can be listed: all users or friends only | string | `listUsers.mode` | all, friends | all | -| User Listing Role Filter | Select which user roles can be listed | rolesStringArray | `listUsers.allowedRoles` | null | null | -| User Details Access | Allow or deny viewing detailed user information | string | `getUserDetails` | allow, deny | allow | -| User Details Mode | Choose whose details can be viewed: all users or friends only | string | `getUserDetails.mode` | all, friends | all | -| User Details Role Filter | Select which user roles' details can be viewed | rolesStringArray | `getUserDetails.allowedRoles` | null | null | -| Block User | Allow or deny user blocking functionality | string | `blockUser` | allow, deny | allow | -| Block User Role Filter | Select which user roles can be blocked | rolesStringArray | `blockUser.allowedRoles` | null | null | -| Blocked User Listing | Allow or deny listing blocked users | string | `listBlockedUser` | allow, deny | allow | -| Blocked User Listing Role Filter | Select which blocked user roles can be listed | rolesStringArray | `listBlockedUser.allowedRoles` | null | null | -| Unblock User | Allow or deny user unblocking functionality | string | `unblockedUser` | allow, deny | allow | -| Unblock User Role Filter | Select which user roles can be unblocked | rolesStringArray | `unblockedUser.allowedRoles` | null | null | -| Edit User Profile | Allow or deny user detail edits | string | `editProfile` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| -------------------------------- | ------------------------------------------------------------- | ---------------- | ------------------------------ | ---------------- | ------- | +| User Listing | Allow or deny user listing functionality | string | `listUsers` | allow, deny | allow | +| User Listing Mode | Choose who can be listed: all users or friends only | string | `listUsers.mode` | all, friends | all | +| User Listing Role Filter | Select which user roles can be listed | rolesStringArray | `listUsers.allowedRoles` | null | null | +| User Details Access | Allow or deny viewing detailed user information | string | `getUserDetails` | allow, deny | allow | +| User Details Mode | Choose whose details can be viewed: all users or friends only | string | `getUserDetails.mode` | all, friends | all | +| User Details Role Filter | Select which user roles' details can be viewed | rolesStringArray | `getUserDetails.allowedRoles` | null | null | +| Block User | Allow or deny user blocking functionality | string | `blockUser` | allow, deny | allow | +| Block User Role Filter | Select which user roles can be blocked | rolesStringArray | `blockUser.allowedRoles` | null | null | +| Blocked User Listing | Allow or deny listing blocked users | string | `listBlockedUser` | allow, deny | allow | +| Blocked User Listing Role Filter | Select which blocked user roles can be listed | rolesStringArray | `listBlockedUser.allowedRoles` | null | null | +| Unblock User | Allow or deny user unblocking functionality | string | `unblockedUser` | allow, deny | allow | +| Unblock User Role Filter | Select which user roles can be unblocked | rolesStringArray | `unblockedUser.allowedRoles` | null | null | +| Edit User Profile | Allow or deny user detail edits | string | `editProfile` | allow, deny | allow | #### 2. Messages -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Message Listing | Allow or deny message listing functionality | string | `listMessages` | allow, deny | allow | -| Message Listing Mode | Choose whose messages can be listed: all users or friends only | string | `listMessages.mode` | all, friends | all | -| Message List Receiver Filter | Select which receiver types are allowed in message lists | stringArray | `listMessages.allowedReceiverTypes` | user, group | null | -| Message List Sender Filter | Select which sender roles' messages can be listed | rolesStringArray | `listMessages.allowedSenderRoles` | null | null | -| Message List Category Filter | Select which message categories can be listed | stringArray | `listMessages.allowedMessageCategories` | message, custom | null | -| Message List Type Filter | Select which message types can be listed | stringArray | `listMessages.allowedMessageTypes` | text, image, audio, video, file | null | -| Message Details | Allow or deny fetching message details | string | `getMessageDetails` | allow, deny | allow | -| Message Details Mode | Choose whose message details can be viewed: all users or friends only | string | `getMessageDetails.mode` | all, friends | all | -| Message Sending | Allow or deny message sending functionality | string | `sendMessage` | allow, deny | allow | -| Message Sending Mode | Choose who can receive messages: all users or friends only | string | `sendMessage.mode` | all, friends | all | -| Message Send Receiver Filter | Select receiver types to which the messages can be sent | stringArray | `sendMessage.allowedReceiverTypes` | user, group | null | -| Message Send Role Filter | Select receiver roles to which the messages can be sent | rolesStringArray | `sendMessage.allowedReceiverRoles` | null | null | -| Message Send Category Filter | Select which message categories can be sent | stringArray | `sendMessage.allowedMessageCategories` | message, custom | null | -| Message Send Type Filter | Select which message types can be sent | stringArray | `sendMessage.allowedMessageTypes` | text, image, audio, video, file | null | -| Custom Message Types | Define custom message types that can be sent | customStringArray | `sendMessage.allowedCustomTypes` | null | null | -| MIME Type Access Control | Set MIME type filtering mode to allow or deny | string | `sendMessage.mimeTypeAccessControl` | allow, deny | allow | -| Media MIME Types | Define MIME types for media message filtering | customStringArray | `sendMessage.mimeTypes` | null | null | -| Message Editing | Allow or deny editing of own messages | string | `editMessage` | allow, deny | allow | -| Message Deletion | Allow or deny deletion of own messages | string | `deleteMessage` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ---------------------------- | --------------------------------------------------------------------- | ----------------- | --------------------------------------- | ------------------------------- | ------- | +| Message Listing | Allow or deny message listing functionality | string | `listMessages` | allow, deny | allow | +| Message Listing Mode | Choose whose messages can be listed: all users or friends only | string | `listMessages.mode` | all, friends | all | +| Message List Receiver Filter | Select which receiver types are allowed in message lists | stringArray | `listMessages.allowedReceiverTypes` | user, group | null | +| Message List Sender Filter | Select which sender roles' messages can be listed | rolesStringArray | `listMessages.allowedSenderRoles` | null | null | +| Message List Category Filter | Select which message categories can be listed | stringArray | `listMessages.allowedMessageCategories` | message, custom | null | +| Message List Type Filter | Select which message types can be listed | stringArray | `listMessages.allowedMessageTypes` | text, image, audio, video, file | null | +| Message Details | Allow or deny fetching message details | string | `getMessageDetails` | allow, deny | allow | +| Message Details Mode | Choose whose message details can be viewed: all users or friends only | string | `getMessageDetails.mode` | all, friends | all | +| Message Sending | Allow or deny message sending functionality | string | `sendMessage` | allow, deny | allow | +| Message Sending Mode | Choose who can receive messages: all users or friends only | string | `sendMessage.mode` | all, friends | all | +| Message Send Receiver Filter | Select receiver types to which the messages can be sent | stringArray | `sendMessage.allowedReceiverTypes` | user, group | null | +| Message Send Role Filter | Select receiver roles to which the messages can be sent | rolesStringArray | `sendMessage.allowedReceiverRoles` | null | null | +| Message Send Category Filter | Select which message categories can be sent | stringArray | `sendMessage.allowedMessageCategories` | message, custom | null | +| Message Send Type Filter | Select which message types can be sent | stringArray | `sendMessage.allowedMessageTypes` | text, image, audio, video, file | null | +| Custom Message Types | Define custom message types that can be sent | customStringArray | `sendMessage.allowedCustomTypes` | null | null | +| MIME Type Access Control | Set MIME type filtering mode to allow or deny | string | `sendMessage.mimeTypeAccessControl` | allow, deny | allow | +| Media MIME Types | Define MIME types for media message filtering | customStringArray | `sendMessage.mimeTypes` | null | null | +| Message Editing | Allow or deny editing of own messages | string | `editMessage` | allow, deny | allow | +| Message Deletion | Allow or deny deletion of own messages | string | `deleteMessage` | allow, deny | allow | #### 3. Message Thread -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Threaded Message Listing | Allow or deny listing of threaded messages | string | `listThreadedMessages` | allow, deny | allow | -| Thread Message Sending | Allow or deny sending messages in threads | string | `sendThreadedMessage` | allow, deny | allow | -| Thread Receiver Type Filter | Select which receiver types (user/group) can receive thread messages | stringArray | `sendThreadedMessage.allowedReceiverTypes` | user, group | null | -| Thread Role Filter | Select which receiver roles can receive thread messages (1-on-1 only) | rolesStringArray | `sendThreadedMessage.allowedReceiverRoles` | null | null | -| Thread Category Filter | Select which message categories can be sent in threads | stringArray | `sendThreadedMessage.allowedMessageCategories` | message, custom | null | -| Thread Type Filter | Select which message types can be sent in threads | stringArray | `sendThreadedMessage.allowedMessageTypes` | text, image, audio, video, file | null | -| Thread Custom Types | Define custom message types that can be sent in threads | customStringArray | `sendThreadedMessage.allowedCustomTypes` | null | null | -| Thread MIME Type Access Control | Set MIME type filtering mode for threads to allow or deny | string | `sendThreadedMessage.mimeTypeAccessControl` | allow, deny | allow | -| Thread Media MIME Types | Define MIME types for thread media message filtering | customStringArray | `sendThreadedMessage.mimeTypes` | null | null | -| Thread Message Editing | Allow or deny editing of thread messages | string | `editThreadedMessage` | allow, deny | allow | -| Thread Message Deletion | Allow or deny deletion of thread messages | string | `deleteThreadedMessage` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------------- | --------------------------------------------------------------------- | ----------------- | ---------------------------------------------- | ------------------------------- | ------- | +| Threaded Message Listing | Allow or deny listing of threaded messages | string | `listThreadedMessages` | allow, deny | allow | +| Thread Message Sending | Allow or deny sending messages in threads | string | `sendThreadedMessage` | allow, deny | allow | +| Thread Receiver Type Filter | Select which receiver types (user/group) can receive thread messages | stringArray | `sendThreadedMessage.allowedReceiverTypes` | user, group | null | +| Thread Role Filter | Select which receiver roles can receive thread messages (1-on-1 only) | rolesStringArray | `sendThreadedMessage.allowedReceiverRoles` | null | null | +| Thread Category Filter | Select which message categories can be sent in threads | stringArray | `sendThreadedMessage.allowedMessageCategories` | message, custom | null | +| Thread Type Filter | Select which message types can be sent in threads | stringArray | `sendThreadedMessage.allowedMessageTypes` | text, image, audio, video, file | null | +| Thread Custom Types | Define custom message types that can be sent in threads | customStringArray | `sendThreadedMessage.allowedCustomTypes` | null | null | +| Thread MIME Type Access Control | Set MIME type filtering mode for threads to allow or deny | string | `sendThreadedMessage.mimeTypeAccessControl` | allow, deny | allow | +| Thread Media MIME Types | Define MIME types for thread media message filtering | customStringArray | `sendThreadedMessage.mimeTypes` | null | null | +| Thread Message Editing | Allow or deny editing of thread messages | string | `editThreadedMessage` | allow, deny | allow | +| Thread Message Deletion | Allow or deny deletion of thread messages | string | `deleteThreadedMessage` | allow, deny | allow | #### 4. Message Reactions -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Reaction Listing | Allow or deny viewing message reactions | string | `listReactions` | allow, deny | allow | -| Reaction Management | Allow or deny adding/removing message reactions | string | `addReaction` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------- | ----------------------------------------------- | --------- | --------------- | ---------------- | ------- | +| Reaction Listing | Allow or deny viewing message reactions | string | `listReactions` | allow, deny | allow | +| Reaction Management | Allow or deny adding/removing message reactions | string | `addReaction` | allow, deny | allow | #### 5. Calls -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Call Initiation | Allow or deny call initiation functionality | string | `initiateCall` | allow, deny | allow | -| Call Receiver Type Filter | Select which receiver types can receive calls | stringArray | `initiateCall.allowedReceiverTypes` | user, group | null | -| Call Receiver Role Filter | Select which receiver roles can receive calls (1-on-1 only) | rolesStringArray | `initiateCall.allowedReceiverRoles` | null | null | -| Call Joining | Allow or deny joining 1-on-1 calls | string | `joinCall` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------- | ----------------------------------------------------------- | ---------------- | ----------------------------------- | ---------------- | ------- | +| Call Initiation | Allow or deny call initiation functionality | string | `initiateCall` | allow, deny | allow | +| Call Receiver Type Filter | Select which receiver types can receive calls | stringArray | `initiateCall.allowedReceiverTypes` | user, group | null | +| Call Receiver Role Filter | Select which receiver roles can receive calls (1-on-1 only) | rolesStringArray | `initiateCall.allowedReceiverRoles` | null | null | +| Call Joining | Allow or deny joining 1-on-1 calls | string | `joinCall` | allow, deny | allow | #### 6. Conversations -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| List Conversation | Allow or deny conversations listing functionality | string | `listConversations` | allow, deny | allow | -| Update Conversation | Allow or deny conversation update functionality | string | `updateConversation` | allow, deny | allow | -| Delete Conversation | Allow or deny conversation delete functionality | string | `deleteConversation` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------- | ------------------------------------------------- | --------- | -------------------- | ---------------- | ------- | +| List Conversation | Allow or deny conversations listing functionality | string | `listConversations` | allow, deny | allow | +| Update Conversation | Allow or deny conversation update functionality | string | `updateConversation` | allow, deny | allow | +| Delete Conversation | Allow or deny conversation delete functionality | string | `deleteConversation` | allow, deny | allow | #### 7. Groups -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Group Listing | Allow or deny group listing functionality | string | `listGroups` | allow, deny | allow | -| Group List Type Filter | Select which group types can be listed | stringArray | `listGroups.allowedGroupTypes` | public, password, private | null | -| Group Details | Allow or deny details for a group | string | `getGroupDetails` | allow, deny | allow | -| Group Details Type Filter | Select for which group types details can be fetched | stringArray | `getGroupDetails.allowedGroupTypes` | public, password, private | null | -| Group Creation | Allow or deny group creation functionality | string | `createGroup` | allow, deny | allow | -| Group Creation Type Filter | Select which group types can be created | stringArray | `createGroup.allowedGroupTypes` | public, password, private | null | -| Group Joining | Allow or deny group joining functionality | string | `joinGroup` | allow, deny | allow | -| Group Join Type Filter | Select which group types can be joined | stringArray | `joinGroup.allowedGroupTypes` | public, password | null | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| -------------------------- | --------------------------------------------------- | ----------- | ----------------------------------- | ------------------------- | ------- | +| Group Listing | Allow or deny group listing functionality | string | `listGroups` | allow, deny | allow | +| Group List Type Filter | Select which group types can be listed | stringArray | `listGroups.allowedGroupTypes` | public, password, private | null | +| Group Details | Allow or deny details for a group | string | `getGroupDetails` | allow, deny | allow | +| Group Details Type Filter | Select for which group types details can be fetched | stringArray | `getGroupDetails.allowedGroupTypes` | public, password, private | null | +| Group Creation | Allow or deny group creation functionality | string | `createGroup` | allow, deny | allow | +| Group Creation Type Filter | Select which group types can be created | stringArray | `createGroup.allowedGroupTypes` | public, password, private | null | +| Group Joining | Allow or deny group joining functionality | string | `joinGroup` | allow, deny | allow | +| Group Join Type Filter | Select which group types can be joined | stringArray | `joinGroup.allowedGroupTypes` | public, password | null | ### RBAC Example Configuration @@ -200,41 +206,45 @@ Scope-Based Access Control (SBAC) enables fine-grained control over **what actio - SBAC permissions are evaluated alongside RBAC rules. For group operations, both must allow the action SBAC supports: + - **Binary permissions** (`allow` / `deny`) - **Conditional permissions** using additional configuration keys such as `allowedScopes`, `allowedMessageTypes`, and `mimeTypes` Permissions can be restricted by additional conditions such as: + - Member scopes within the group - Message categories and types - Group-specific message history access ### SBAC Data Types -| Data Type | Description | Example Values | -|-----------|-------------|----------------| -| `string` | Single string value | `allow`, `deny` | -| `stringArray` | Array of predefined strings | `["admin", "moderator"]`, `["text", "image"]` | -| `customStringArray` | Array of custom user-defined strings | `["custom-type-1", "custom-type-2"]` | +| Data Type | Description | Example Values | +| ------------------- | ------------------------------------ | --------------------------------------------- | +| `string` | Single string value | `allow`, `deny` | +| `stringArray` | Array of predefined strings | `["admin", "moderator"]`, `["text", "image"]` | +| `customStringArray` | Array of custom user-defined strings | `["custom-type-1", "custom-type-2"]` | ### SBAC Permission Structure Each SBAC permission follows this structure: -| Attribute | Description | -|-----------|-------------| -| Key | The SBAC permission key used in APIs | -| Category | Logical grouping (Groups, Members, Messages, etc.) | -| Data Type | Expected value type | -| Available Values | Supported values | -| Default | Applied if not explicitly configured | +| Attribute | Description | +| ---------------- | -------------------------------------------------- | +| Key | The SBAC permission key used in APIs | +| Category | Logical grouping (Groups, Members, Messages, etc.) | +| Data Type | Expected value type | +| Available Values | Supported values | +| Default | Applied if not explicitly configured | ### SBAC Permission Value Behavior When an array permission (e.g., `allowedScopes`, `mimeTypes`) has a value of `null`: + - It means **no restriction** - all values are allowed - This is equivalent to an empty array `[]` For `allow` / `deny` values: + - `allow`: The action is permitted - `deny`: The action is blocked, returns `ERR_PERMISSION_DENIED` @@ -242,70 +252,70 @@ For `allow` / `deny` values: #### 1. Groups -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Group Edit Details | Allow or deny group edits | string | `editGroup` | allow, deny | admin: allow
moderator: deny
participant: deny | -| Group Delete | Allow or deny group deletes | string | `deleteGroup` | allow, deny | admin: deny
moderator: deny
participant: deny | -| Group Leave | Allow or deny group leave | string | `leaveGroup` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------ | --------------------------- | --------- | -------------- | ---------------- | ---------------------------------------------------------- | +| Group Edit Details | Allow or deny group edits | string | `editGroup` | allow, deny | admin: allow
moderator: deny
participant: deny | +| Group Delete | Allow or deny group deletes | string | `deleteGroup` | allow, deny | admin: deny
moderator: deny
participant: deny | +| Group Leave | Allow or deny group leave | string | `leaveGroup` | allow, deny | allow | #### 2. Members -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Member Listing | Allow or deny listing group members | string | `listMembers` | allow, deny | allow | -| Member List Scope Filter | Select which member scopes can be listed | stringArray | `listMembers.allowedScopes` | admin, moderator, participant | null | -| Member Addition | Allow or deny adding members to groups | string | `addMembers` | allow, deny | admin: allow
moderator: deny
participant: deny | -| Member Add Scope Filter | Select which member scopes can be added | stringArray | `addMembers.allowedScopes` | admin, moderator, participant | null | -| Member Removal | Allow or deny kicking members from groups | string | `kickMembers` | allow, deny | admin: allow
moderator: allow
participant: deny | -| Member Kick Scope Filter | Select which member scopes can be kicked | stringArray | `kickMembers.allowedScopes` | admin, moderator, participant | null | -| Banned Member Listing | Allow or deny listing banned members | string | `listBannedUsers` | allow, deny | admin: allow
moderator: allow
participant: deny | -| Member Banning | Allow or deny banning members from groups | string | `ban` | allow, deny | admin: allow
moderator: allow
participant: deny | -| Member Ban Scope Filter | Select which member scopes can be banned | stringArray | `ban.allowedScopes` | admin, moderator, participant | null | -| Member Unbanning | Allow or deny unbanning members from groups | string | `unban` | allow, deny | admin: allow
moderator: allow
participant: deny | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------ | ------------------------------------------- | ----------- | --------------------------- | ----------------------------- | ----------------------------------------------------------- | +| Member Listing | Allow or deny listing group members | string | `listMembers` | allow, deny | allow | +| Member List Scope Filter | Select which member scopes can be listed | stringArray | `listMembers.allowedScopes` | admin, moderator, participant | null | +| Member Addition | Allow or deny adding members to groups | string | `addMembers` | allow, deny | admin: allow
moderator: deny
participant: deny | +| Member Add Scope Filter | Select which member scopes can be added | stringArray | `addMembers.allowedScopes` | admin, moderator, participant | null | +| Member Removal | Allow or deny kicking members from groups | string | `kickMembers` | allow, deny | admin: allow
moderator: allow
participant: deny | +| Member Kick Scope Filter | Select which member scopes can be kicked | stringArray | `kickMembers.allowedScopes` | admin, moderator, participant | null | +| Banned Member Listing | Allow or deny listing banned members | string | `listBannedUsers` | allow, deny | admin: allow
moderator: allow
participant: deny | +| Member Banning | Allow or deny banning members from groups | string | `ban` | allow, deny | admin: allow
moderator: allow
participant: deny | +| Member Ban Scope Filter | Select which member scopes can be banned | stringArray | `ban.allowedScopes` | admin, moderator, participant | null | +| Member Unbanning | Allow or deny unbanning members from groups | string | `unban` | allow, deny | admin: allow
moderator: allow
participant: deny | #### 3. Messages -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Message Category Filter | Select which message categories can be listed in groups | stringArray | `listMessages.allowedMessageCategories` | message, custom | null | -| Message Type Filter | Select which message types can be listed in groups | stringArray | `listMessages.allowedMessageTypes` | text, image, audio, video, file | null | -| Message History | Allow or deny listing messages sent before joining the group | string | `listMessages.historyBeforeJoin` | allow, deny | allow | -| Group Message Sending | Allow or deny sending messages in groups | string | `sendMessage` | allow, deny | allow | -| Group Send Category Filter | Select which message categories can be sent in groups | stringArray | `sendMessage.allowedMessageCategories` | message, custom | null | -| Group Send Type Filter | Select which message types can be sent in groups | stringArray | `sendMessage.allowedMessageTypes` | text, image, audio, video, file | null | -| Group Custom Message Types | Define custom message types that can be sent in groups | customStringArray | `sendMessage.allowedCustomTypes` | null | null | -| Group MIME Type Access Control | Set MIME type filtering mode for group messages to allow or deny | string | `sendMessage.mimeTypeAccessControl` | allow, deny | allow | -| Group Media MIME Types | Define MIME types for group media message filtering | customStringArray | `sendMessage.mimeTypes` | null | null | -| Group Message Editing | Allow or deny editing messages in groups | string | `editMessage` | allow, deny | allow | -| Group Message Deletion | Allow or deny deleting messages in groups | string | `deleteMessage` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------------ | ---------------------------------------------------------------- | ----------------- | --------------------------------------- | ------------------------------- | ------- | +| Message Category Filter | Select which message categories can be listed in groups | stringArray | `listMessages.allowedMessageCategories` | message, custom | null | +| Message Type Filter | Select which message types can be listed in groups | stringArray | `listMessages.allowedMessageTypes` | text, image, audio, video, file | null | +| Message History | Allow or deny listing messages sent before joining the group | string | `listMessages.historyBeforeJoin` | allow, deny | allow | +| Group Message Sending | Allow or deny sending messages in groups | string | `sendMessage` | allow, deny | allow | +| Group Send Category Filter | Select which message categories can be sent in groups | stringArray | `sendMessage.allowedMessageCategories` | message, custom | null | +| Group Send Type Filter | Select which message types can be sent in groups | stringArray | `sendMessage.allowedMessageTypes` | text, image, audio, video, file | null | +| Group Custom Message Types | Define custom message types that can be sent in groups | customStringArray | `sendMessage.allowedCustomTypes` | null | null | +| Group MIME Type Access Control | Set MIME type filtering mode for group messages to allow or deny | string | `sendMessage.mimeTypeAccessControl` | allow, deny | allow | +| Group Media MIME Types | Define MIME types for group media message filtering | customStringArray | `sendMessage.mimeTypes` | null | null | +| Group Message Editing | Allow or deny editing messages in groups | string | `editMessage` | allow, deny | allow | +| Group Message Deletion | Allow or deny deleting messages in groups | string | `deleteMessage` | allow, deny | allow | #### 4. Message Thread -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Group Thread Listing | Allow or deny listing threaded messages in groups | string | `listThreadedMessages` | allow, deny | allow | -| Group Thread Sending | Allow or deny sending messages in group threads | string | `sendThreadedMessage` | allow, deny | allow | -| Group Thread Category Filter | Select which message categories can be sent in group threads | stringArray | `sendThreadedMessage.allowedMessageCategories` | message, custom | null | -| Group Thread Type Filter | Select which message types can be sent in group threads | stringArray | `sendThreadedMessage.allowedMessageTypes` | text, image, audio, video, file | null | -| Group Thread Custom Types | Define custom message types that can be sent in group threads | customStringArray | `sendThreadedMessage.allowedCustomTypes` | null | null | -| Group Thread MIME Type Access Control | Set MIME type filtering mode for group thread messages to allow or deny | string | `sendThreadedMessage.mimeTypeAccessControl` | allow, deny | allow | -| Group Thread Media MIME Types | Define MIME types for group thread media message filtering | customStringArray | `sendThreadedMessage.mimeTypes` | null | null | -| Group Thread Editing | Allow or deny editing thread messages in groups | string | `editThreadedMessage` | allow, deny | allow | -| Group Thread Deletion | Allow or deny deleting thread messages in groups | string | `deleteThreadedMessage` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------------------- | ----------------------------------------------------------------------- | ----------------- | ---------------------------------------------- | ------------------------------- | ------- | +| Group Thread Listing | Allow or deny listing threaded messages in groups | string | `listThreadedMessages` | allow, deny | allow | +| Group Thread Sending | Allow or deny sending messages in group threads | string | `sendThreadedMessage` | allow, deny | allow | +| Group Thread Category Filter | Select which message categories can be sent in group threads | stringArray | `sendThreadedMessage.allowedMessageCategories` | message, custom | null | +| Group Thread Type Filter | Select which message types can be sent in group threads | stringArray | `sendThreadedMessage.allowedMessageTypes` | text, image, audio, video, file | null | +| Group Thread Custom Types | Define custom message types that can be sent in group threads | customStringArray | `sendThreadedMessage.allowedCustomTypes` | null | null | +| Group Thread MIME Type Access Control | Set MIME type filtering mode for group thread messages to allow or deny | string | `sendThreadedMessage.mimeTypeAccessControl` | allow, deny | allow | +| Group Thread Media MIME Types | Define MIME types for group thread media message filtering | customStringArray | `sendThreadedMessage.mimeTypes` | null | null | +| Group Thread Editing | Allow or deny editing thread messages in groups | string | `editThreadedMessage` | allow, deny | allow | +| Group Thread Deletion | Allow or deny deleting thread messages in groups | string | `deleteThreadedMessage` | allow, deny | allow | #### 5. Message Reactions -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Group Reaction Listing | Allow or deny viewing message reactions in groups | string | `listReactions` | allow, deny | allow | -| Group Reaction Management | Allow or deny adding/removing message reactions in groups | string | `addReaction` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| ------------------------- | --------------------------------------------------------- | --------- | --------------- | ---------------- | ------- | +| Group Reaction Listing | Allow or deny viewing message reactions in groups | string | `listReactions` | allow, deny | allow | +| Group Reaction Management | Allow or deny adding/removing message reactions in groups | string | `addReaction` | allow, deny | allow | #### 6. Calls -| Title | Description | Data Type | Permission Key | Available Values | Default | -|-------|-------------|-----------|----------------|------------------|---------| -| Group Call Initiation | Allow or deny call initiation in groups | string | `initiateCall` | allow, deny | allow | -| Call Joining | Allow or deny joining calls in groups | string | `joinCall` | allow, deny | allow | +| Title | Description | Data Type | Permission Key | Available Values | Default | +| --------------------- | --------------------------------------- | --------- | -------------- | ---------------- | ------- | +| Group Call Initiation | Allow or deny call initiation in groups | string | `initiateCall` | allow, deny | allow | +| Call Joining | Allow or deny joining calls in groups | string | `joinCall` | allow, deny | allow | ### SBAC Example Configuration diff --git a/rest-api/restrict-features.mdx b/rest-api/restrict-features.mdx index ce6bff71f..85c0f383f 100644 --- a/rest-api/restrict-features.mdx +++ b/rest-api/restrict-features.mdx @@ -1,63 +1,65 @@ --- title: "Overview" +description: "Restrict specific features based on user roles (deprecated — use RBAC instead)." --- -This feature has been deprecated. Please use [Role Based Access Control (RBAC)](/rest-api/rbac-overview) instead. + This feature has been deprecated. Please use [Role Based Access Control + (RBAC)](/rest-api/rbac-overview) instead. Features can be restricted based on role.\ The following table indicates the endpoints that can be restricted for a given role. -| Feature | Key | Description | -| -------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Add Member | addMember | Allows logged-in user to add a member to a group. | -| Ban User | ban | Allows logged-in user to ban a member in a group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | -| Block User | blockUser | Allows logged-in user to block a user. | -| Change Scope | changeScope | Allows logged-in user to change the scope of a member in a group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | -| Initiate Call | createCall | Allows logged-in user to initiate a call. | -| Create Group | createGroup | Allows logged-in user to create a group. | -| Send Message | createMessage | Allows logged-in user to send a message. | -| Reply to a Message | createMessageThread | Allows logged-in user to block a user. | -| Delete Call | deleteCall | Allows logged-in user to delete a call. | -| Delete Conversation | deleteConversationForUser | Allows logged-in user to delete a conversation for himself. | -| Delete Group | deleteGroup | Allows logged-in user to delete a group. | -| Delete Group Messages | deleteGroupMessages | Allows logged-in user to delete messages in a group. | -| Delete Message | deleteMessage | Allows logged-in user to delete a message. | -| Fetch Blocked Users | getBlockedUsers | Allows logged-in user to fetch the list of blocked users. | -| Get Call | getCall | Allows logged-in user to fetch the details of a call. | -| Get Conversation | getConversation | Allows logged-in user to get the details of a conversation. | -| Get Group | getGroup | Allows logged-in user to get the details of a group. | -| List Group Messages | getGroupMessages | Allows logged-in user to fetch messages in a group. | -| Get Member | getMember | Allows logged-in user to get details of a member in a group. | -| Get Message | getMessage | Allows logged-in user to get the details of a message. | -| Get My Details | getMyDetails | Allows logged-in user to fetch his own details. | -| Get User | getUser | Allows logged-in user to fetch the details of any other user. | -| List User Messages | getUserMessages | Allows logged-in user to fetch messages sent/received from another user. | -| Join Group | joinGroup | Allows logged-in user to join a group. | -| Kick Member | kickMember | Allows logged-in user to kick a member from the group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | -| Leave Group | leaveGroup | Allows logged-in user to leave a group. | -| List Banned Users | listBannedUsers | Allows logged-in user to fetch the banned members in a group. | -| List Calls | listCalls | Allows logged-in user to fetch the call list. | -| List Conversations | listConversations | Allows logged-in user to fetch the conversation list. | -| List Group Members | listGroupMembers | Allows logged-in user to fetch the members list for a group. | -| List Groups | listGroups | Allows logged-in user to fetch the group list. | -| List Messages | listMessages | Allows logged-in user to fetch all the messages sent by/for him. | -| List Settings | listSettings | Allows logged-in user to fetch the settings. | -| List Threaded Messages | listThreadedMessages | Allows logged-in user to fetch all the replies for a message. | -| List Users | listUsers | Allows logged-in user to fetch the user list. | -| Logout | logout | Allows logged-in user to logout. | -| Group Mass Operation | massMemberOperate | Allows logged-in user to manage multiple group members with a single API call. The operation can only be performed if the logged-in user is owner/admin of a group. | -| Patch Owner | patchOwner | Allows logged-in user to transfer the ownership of a group. The operation can only be performed if the logged-in user is owner of a group. | -| unban User | unban | Allows logged-in user to unban a member. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | -| Unblock User | unblockUser | Allows logged-in user to unblock a user. | -| Updates AuthToken | updateAuthToken | Allows logged-in user to update his own details and authtoken details. | -| Update Call | updateCall | Allows logged-in user to change the status of initiated/ongoing call. | -| Edit Group | updateGroup | Allows logged-in user to edit group details. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | -| Edit Message | updateMessage | Allows logged-in user to edit a message. The message can only be edited if the logged-in user is the sender of the message or moderator/admin of a group. | +| Feature | Key | Description | +| ---------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Add Member | addMember | Allows logged-in user to add a member to a group. | +| Ban User | ban | Allows logged-in user to ban a member in a group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | +| Block User | blockUser | Allows logged-in user to block a user. | +| Change Scope | changeScope | Allows logged-in user to change the scope of a member in a group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | +| Initiate Call | createCall | Allows logged-in user to initiate a call. | +| Create Group | createGroup | Allows logged-in user to create a group. | +| Send Message | createMessage | Allows logged-in user to send a message. | +| Reply to a Message | createMessageThread | Allows logged-in user to reply to a message in a thread. | +| Delete Call | deleteCall | Allows logged-in user to delete a call. | +| Delete Conversation | deleteConversationForUser | Allows logged-in user to delete a conversation for himself. | +| Delete Group | deleteGroup | Allows logged-in user to delete a group. | +| Delete Group Messages | deleteGroupMessages | Allows logged-in user to delete messages in a group. | +| Delete Message | deleteMessage | Allows logged-in user to delete a message. | +| Fetch Blocked Users | getBlockedUsers | Allows logged-in user to fetch the list of blocked users. | +| Get Call | getCall | Allows logged-in user to fetch the details of a call. | +| Get Conversation | getConversation | Allows logged-in user to get the details of a conversation. | +| Get Group | getGroup | Allows logged-in user to get the details of a group. | +| List Group Messages | getGroupMessages | Allows logged-in user to fetch messages in a group. | +| Get Member | getMember | Allows logged-in user to get details of a member in a group. | +| Get Message | getMessage | Allows logged-in user to get the details of a message. | +| Get My Details | getMyDetails | Allows logged-in user to fetch his own details. | +| Get User | getUser | Allows logged-in user to fetch the details of any other user. | +| List User Messages | getUserMessages | Allows logged-in user to fetch messages sent/received from another user. | +| Join Group | joinGroup | Allows logged-in user to join a group. | +| Kick Member | kickMember | Allows logged-in user to kick a member from the group. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | +| Leave Group | leaveGroup | Allows logged-in user to leave a group. | +| List Banned Users | listBannedUsers | Allows logged-in user to fetch the banned members in a group. | +| List Calls | listCalls | Allows logged-in user to fetch the call list. | +| List Conversations | listConversations | Allows logged-in user to fetch the conversation list. | +| List Group Members | listGroupMembers | Allows logged-in user to fetch the members list for a group. | +| List Groups | listGroups | Allows logged-in user to fetch the group list. | +| List Messages | listMessages | Allows logged-in user to fetch all the messages sent by/for him. | +| List Settings | listSettings | Allows logged-in user to fetch the settings. | +| List Threaded Messages | listThreadedMessages | Allows logged-in user to fetch all the replies for a message. | +| List Users | listUsers | Allows logged-in user to fetch the user list. | +| Logout | logout | Allows logged-in user to logout. | +| Group Mass Operation | massMemberOperate | Allows logged-in user to manage multiple group members with a single API call. The operation can only be performed if the logged-in user is owner/admin of a group. | +| Patch Owner | patchOwner | Allows logged-in user to transfer the ownership of a group. The operation can only be performed if the logged-in user is owner of a group. | +| unban User | unban | Allows logged-in user to unban a member. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | +| Unblock User | unblockUser | Allows logged-in user to unblock a user. | +| Updates AuthToken | updateAuthToken | Allows logged-in user to update his own details and authtoken details. | +| Update Call | updateCall | Allows logged-in user to change the status of initiated/ongoing call. | +| Edit Group | updateGroup | Allows logged-in user to edit group details. The operation can only be performed if the logged-in user is owner/admin/moderator of a group. | +| Edit Message | updateMessage | Allows logged-in user to edit a message. The message can only be edited if the logged-in user is the sender of the message or moderator/admin of a group. | The following table lists the properties that the Restrict feature API supports. | Parameters | Type | Description | | :----------------- | :--------------- | :--------------------------------------------------------------- | -| featuresToRestrict | array of strings | (*optional*) Indicates the features that needs to be restricted. | \ No newline at end of file +| featuresToRestrict | array of strings | (_optional_) Indicates the features that needs to be restricted. | diff --git a/rest-api/settings.mdx b/rest-api/settings.mdx index a71222332..3c835b3a5 100644 --- a/rest-api/settings.mdx +++ b/rest-api/settings.mdx @@ -1,21 +1,23 @@ --- title: "Overview" +description: "Configure conversation behavior — control which message types appear as the last message and increment unread counts." --- -**Customise Conversation Previews and Unread Counts** +The **Settings** API lets you customize how conversations behave in your CometChat app. You can control which message types appear as the last message in a conversation and which ones increment the unread message count. -Tailor the conversation list by choosing which message types appear as the last message for each conversation & increment the unread message count. +### Available settings -The set of keys that is used for toggling features are as follows: +| Key | Description | Default | +| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------- | +| `core.conversations.updateOnGroupActions` | Whether group actions (member joined, left, banned) appear as the last message and increment unread count. | `true` | +| `core.conversations.updateOnReplies` | Whether thread replies appear as the last message. Thread replies do **not** increment the unread count. | `true` | +| `core.conversations.updateOnMessageActions` | Whether message actions (edited, deleted) appear as the last message and increment unread count. | `false` | +| `core.conversations.updateOnCallActivity` | Whether call activities (initiated, accepted, rejected) appear as the last message and increment unread count. | `false` | +| `core.threads.updateOnMessageActions` | Whether thread message actions (edited, deleted) appear as the last message and increment unread count. | `false` | +| `core.notifications.push.enabled` | Whether Enhanced Push Notifications are enabled for the app. | `false` | -| Key | Description | Default Value | -|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------| -| `core.conversations.updateOnGroupActions` | Indicates whether group actions (e.g., member joined, left, banned) should be shown as the last message in a conversation along with the unread count. | `true` | -| `core.conversations.updateOnReplies` | Indicates whether sending a message in a thread should be shown as the last message in a conversation. Thread replies do **not** increment the unread count. | `true` | -| `core.conversations.updateOnMessageActions` | Indicates whether message actions (e.g., edited or deleted) should be shown as the last message in a conversation along with the unread count. | `false` | -| `core.conversations.updateOnCallActivity` | Indicates whether call activities (e.g., initiated, accepted, rejected) should be shown as the last message in a conversation along with the unread count. | `false` | -| `core.threads.updateOnMessageActions` | Indicates whether message actions (e.g., edited or deleted) in a thread should be shown as the last message in a conversation along with the unread count. | `false` | -| `core.notifications.push.enabled` | `true` if Enhanced Push Notifications are enabled for the app, `false` otherwise. | `false` | +### How settings connect to other resources - -Kindly refer to the [Map settings API](/rest-api/management-apis/settings/maps-settings) for turning on/off the above-mentioned features in an app. +- **Conversations** — These settings directly control how [Conversations](/rest-api/conversations) display the last message and calculate unread counts. +- **Messages** — Settings determine which [Message](/rest-api/messages) types affect conversation previews. +- **Management APIs** — Use the [Map Settings API](/rest-api/management-apis/settings/maps-settings) to toggle these features. From 7bb6ff851ebdc4cf4e64f2dc76ff60ac52da7503 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 23 Mar 2026 20:29:06 +0530 Subject: [PATCH 21/56] Added links to properties and constraints --- rest-api/auth-tokens.mdx | 2 ++ rest-api/calls.mdx | 2 ++ rest-api/conversations.mdx | 2 ++ rest-api/data-import.mdx | 2 ++ rest-api/group-members.mdx | 2 ++ rest-api/groups.mdx | 2 ++ rest-api/messages.mdx | 2 ++ rest-api/moderation.mdx | 2 ++ rest-api/roles.mdx | 2 ++ rest-api/users.mdx | 2 ++ 10 files changed, 20 insertions(+) diff --git a/rest-api/auth-tokens.mdx b/rest-api/auth-tokens.mdx index 9677750e3..e4a5ba4da 100644 --- a/rest-api/auth-tokens.mdx +++ b/rest-api/auth-tokens.mdx @@ -41,3 +41,5 @@ If your application requires explicit session control, use the [Flush Auth Token | `ERR_AUTH_TOKEN_NOT_FOUND` | The specified auth token does not exist | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (token retention policy, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/calls.mdx b/rest-api/calls.mdx index 9c9e30032..0f86b44ea 100644 --- a/rest-api/calls.mdx +++ b/rest-api/calls.mdx @@ -75,3 +75,5 @@ The **Calls** API provides access to call logs and session details. You can retr | `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (participant caps, codec details, resolution ranges, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/conversations.mdx b/rest-api/conversations.mdx index 14d2f5863..d504d87bc 100644 --- a/rest-api/conversations.mdx +++ b/rest-api/conversations.mdx @@ -58,3 +58,5 @@ A **Conversation** represents an ongoing message exchange between a user and ano | `ERR_CONVERSATION_NOT_FOUND` | The specified conversation does not exist | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (unread counts, tag counts, group thresholds, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index 761688b14..c982eb9ee 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -37,3 +37,5 @@ Data import operations are rate-limited to **60 requests per minute**. See [Rate | `ERR_TOO_MANY_REQUESTS` | Rate limit exceeded — retry after the specified time | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits, see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/group-members.mdx b/rest-api/group-members.mdx index c173f07db..264cecdf1 100644 --- a/rest-api/group-members.mdx +++ b/rest-api/group-members.mdx @@ -55,3 +55,5 @@ The **Group Members** API manages the membership of users within a group. Each m | `ERR_ALREADY_JOINED` | The user is already a member of this group | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (member caps, group thresholds, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/groups.mdx b/rest-api/groups.mdx index f733eedfa..040ea8a77 100644 --- a/rest-api/groups.mdx +++ b/rest-api/groups.mdx @@ -70,3 +70,5 @@ If no type is specified during creation, the group defaults to `public`. | `ERR_PLAN_QUOTA_RESTRICTION` | The group has reached the maximum member limit (100,000) | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (member caps, metadata size, tag counts, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index 0e12b8a75..db90dd52c 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -67,3 +67,5 @@ A **Message** is the core unit of communication in CometChat. Users can send tex | `ERR_GUID_NOT_FOUND` | The receiver group GUID does not exist | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (file upload size, message payload, tag counts, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/moderation.mdx b/rest-api/moderation.mdx index 7d9f6123e..a33fb7e79 100644 --- a/rest-api/moderation.mdx +++ b/rest-api/moderation.mdx @@ -53,3 +53,5 @@ The following labels can be attached to a rule to moderate specific categories o | `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits, see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/roles.mdx b/rest-api/roles.mdx index c6f7421e1..cb65e3b98 100644 --- a/rest-api/roles.mdx +++ b/rest-api/roles.mdx @@ -58,3 +58,5 @@ For the full list of scope-based permissions, see [SBAC (Scope-Based Access Cont | `ERR_ROLE_ALREADY_EXISTS` | A role with this name already exists | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (role caps, ID length, metadata, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/users.mdx b/rest-api/users.mdx index f3c30f011..289cec13e 100644 --- a/rest-api/users.mdx +++ b/rest-api/users.mdx @@ -65,3 +65,5 @@ When API calls fail, CometChat returns structured error responses. The most comm | `ERR_UID_NOT_FOUND` | The specified UID does not exist, or the user has been deactivated | For the complete list of error codes, see [Error Guide](/articles/error-guide). + +For all system limits (metadata size, tag counts, ID length, etc.), see [Properties and Constraints](/articles/properties-and-constraints). From 7c875822deddb840dd5458ce7f5bd32203835f4a Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 23 Mar 2026 21:06:38 +0530 Subject: [PATCH 22/56] Updated sample users and groups --- calls/api/overview.mdx | 8 +- .../management-apis/webhooks/overview.mdx | 338 +++++++++--------- 2 files changed, 173 insertions(+), 173 deletions(-) diff --git a/calls/api/overview.mdx b/calls/api/overview.mdx index d309af3bf..22cb49723 100644 --- a/calls/api/overview.mdx +++ b/calls/api/overview.mdx @@ -144,8 +144,8 @@ When a call has recordings, each recording contains: "mode": "call", "status": "ended", "receiverType": "user", - "initiator": "superhero8", - "receiver": "superhero2", + "initiator": "cometchat-uid-1", + "receiver": "cometchat-uid-2", "totalParticipants": 2, "totalAudioMinutes": 0.32, "totalVideoMinutes": 0, @@ -157,7 +157,7 @@ When a call has recordings, each recording contains: "endedAt": 1692368146, "participants": [ { - "uid": "superhero8", + "uid": "cometchat-uid-1", "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat.com/hsYWb5ul", "isJoined": true, "state": "ended", @@ -168,7 +168,7 @@ When a call has recordings, each recording contains: "totalDurationInMinutes": 0.27 }, { - "uid": "superhero2", + "uid": "cometchat-uid-2", "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat.com/CKT3xgR4", "isJoined": true, "state": "ended", diff --git a/rest-api/management-apis/webhooks/overview.mdx b/rest-api/management-apis/webhooks/overview.mdx index 1ed9bd278..7f0f3591b 100644 --- a/rest-api/management-apis/webhooks/overview.mdx +++ b/rest-api/management-apis/webhooks/overview.mdx @@ -93,21 +93,21 @@ Here is the list of properties associated with Webhook. "trigger":"group_created", "data":{ "group":{ - "guid":"supergroup", - "name":"Comic Hero Group", + "guid":"cometchat-guid-1", + "name":"Hiking Group", "type":"public", "scope":"admin", "membersCount":1, "joinedAt":1696932915, - "conversationId":"group_supergroup", + "conversationId":"group_cometchat-guid-1", "hasJoined":true, "createdAt":1696932915, - "owner":"superhero1" + "owner":"cometchat-uid-1" }, "members":{ - "superhero1":{ - "uid":"superhero1", - "name":"Iron Man", + "cometchat-uid-1":{ + "uid":"cometchat-uid-1", + "name":"Andrew Joseph", "status":"available", "role":"default", "lastActiveAt":1696932834 @@ -131,15 +131,15 @@ Here is the list of properties associated with Webhook. "trigger": "group_updated", "data": { "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 2, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695728507, - "owner": "superhero2", + "owner": "cometchat-uid-2", "updatedAt": 1696934048, - "updatedBy": "superhero1", + "updatedBy": "cometchat-uid-1", "onlineMembersCount": 2 } }, @@ -160,15 +160,15 @@ Here is the list of properties associated with Webhook. "trigger": "group_deleted", "data": { "group": { - "guid": "supergroup", + "guid": "cometchat-guid-1", "name": "1234", "type": "public", "membersCount": 1, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695722912, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1695817083, - "updatedBy": "superhero1", + "updatedBy": "cometchat-uid-1", "onlineMembersCount": 1 } }, @@ -189,17 +189,17 @@ Here is the list of properties associated with Webhook. "trigger": "group_owner_transferred", "data": { "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 2, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695728507, - "owner": "superhero2", + "owner": "cometchat-uid-2", "updatedAt": 1696933737, - "updatedBy": "superhero1", + "updatedBy": "cometchat-uid-1", "onlineMembersCount": 2, - "oldOwner": "superhero1" + "oldOwner": "cometchat-uid-1" } }, "appId": "", @@ -219,30 +219,30 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_added", "data": { "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 2, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1696932915, - "owner": "superhero1", + "owner": "cometchat-uid-1", "onlineMembersCount": 1 }, "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "offline", "role": "default", "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } }, "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696932834 @@ -265,31 +265,31 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_banned", "data": { "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 1, "conversationId": "group_group__1696932914913", "createdAt": 1696932915, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933533, "onlineMembersCount": 1 }, "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "offline", "role": "default", "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } }, "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696932834 @@ -312,31 +312,31 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_unbanned", "data": { "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "offline", "role": "default", "lastActiveAt": 1695751453, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } }, "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 1, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1696932915, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933533, "onlineMembersCount": 1 }, "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696932834 @@ -359,23 +359,23 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_joined", "data": { "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "available", "role": "default", "lastActiveAt": 1696933689 } }, "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 2, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695728507, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933691, "onlineMembersCount": 1 } @@ -397,23 +397,23 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_left", "data": { "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "available", "role": "default", "lastActiveAt": 1696933689 } }, "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 1, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695722891, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933827, "onlineMembersCount": 1 } @@ -435,33 +435,33 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_scope_changed", "data": { "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "available", "role": "default", "lastActiveAt": 1696933928, - "conversationId": "superhero1_user_superhero2", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", "scope": "admin", "oldScope": "participant" } }, "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 2, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695722891, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933925, "onlineMembersCount": 2 }, "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696933934 @@ -484,31 +484,31 @@ Here is the list of properties associated with Webhook. "trigger": "group_member_kicked", "data": { "members": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "available", "role": "default", "lastActiveAt": 1696933689, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } }, "group": { - "guid": "supergroup", - "name": "Comic Hero Group", + "guid": "cometchat-guid-1", + "name": "Hiking Group", "type": "public", "membersCount": 1, - "conversationId": "group_supergroup", + "conversationId": "group_cometchat-guid-1", "createdAt": 1695722891, - "owner": "superhero1", + "owner": "cometchat-uid-1", "updatedAt": 1696933889, "onlineMembersCount": 8 }, "by": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696933881 @@ -535,10 +535,10 @@ Here is the list of properties associated with Webhook. "data": { "message": { "id": "1", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -546,9 +546,9 @@ Here is the list of properties associated with Webhook. "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696934440 @@ -557,13 +557,13 @@ Here is the list of properties associated with Webhook. }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/captainamerica.png", + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://example.com/avatars/george-alan.png", "status": "available", "role": "default", "lastActiveAt": 1696934491, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -591,10 +591,10 @@ Here is the list of properties associated with Webhook. "data": { "message": { "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "action", "type": "message", "data": { @@ -602,9 +602,9 @@ Here is the list of properties associated with Webhook. "entities": { "by": { "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat-staging.com/assets/images/avatars/ironman.png", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://example.com/avatars/andrew-joseph.png", "status": "available", "role": "default", "lastActiveAt": 1696934440 @@ -614,10 +614,10 @@ Here is the list of properties associated with Webhook. "on": { "entity": { "id": "1", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -625,7 +625,7 @@ Here is the list of properties associated with Webhook. }, "sentAt": 1696934912, "editedAt": 1696934985, - "editedBy": "superhero1" + "editedBy": "cometchat-uid-1" }, "entityType": "message" } @@ -653,10 +653,10 @@ Here is the list of properties associated with Webhook. "data": { "message": { "id": "3", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "action", "type": "message", "data": { @@ -664,17 +664,17 @@ Here is the list of properties associated with Webhook. "entities": { "by": { "entity": { - "uid": "superhero1", - "name": "Iron Man" + "uid": "cometchat-uid-1", + "name": "Andrew Joseph" }, "entityType": "user" }, "on": { "entity": { "id": "2", - "conversationId": "superhero1_user_superhero2", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", "deletedAt": 1696935005, - "deletedBy": "superhero1" + "deletedBy": "cometchat-uid-1" }, "entityType": "message" } @@ -700,17 +700,17 @@ Here is the list of properties associated with Webhook. { "trigger": "message_delivery_receipt", "data": { - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "receiverType": "user", "type": "receipts", - "sender": "superhero2", - "messageSender": "superhero1", + "sender": "cometchat-uid-2", + "messageSender": "cometchat-uid-1", "body": { "action": "delivered", "messageId": "57", "user": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "status": "online" }, "timestamp": 1696934912 @@ -732,17 +732,17 @@ Here is the list of properties associated with Webhook. { "trigger": "message_read_receipt", "data": { - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "receiverType": "user", "type": "receipts", - "sender": "superhero2", - "messageSender": "superhero1", + "sender": "cometchat-uid-2", + "messageSender": "cometchat-uid-1", "body": { "action": "read", "messageId": "57", "user": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "status": "online" }, "timestamp": 1696934950 @@ -768,11 +768,11 @@ Here is the list of properties associated with Webhook. "id": "", "messageId": "", "reaction": "🏒", - "uid": "superhero1", + "uid": "cometchat-uid-1", "reactedAt": 1700655536, "reactedBy": { - "uid": "superhero1", - "name": "Iron Man" + "uid": "cometchat-uid-1", + "name": "Andrew Joseph" } } }, @@ -796,11 +796,11 @@ Here is the list of properties associated with Webhook. "id": "", "messageId": "", "reaction": "🏒", - "uid": "superhero1", + "uid": "cometchat-uid-1", "reactedAt": 1700231289, "reactedBy": { - "uid": "superhero1", - "name": "Iron Man" + "uid": "cometchat-uid-1", + "name": "Andrew Joseph" } } }, @@ -824,8 +824,8 @@ Here is the list of properties associated with Webhook. "data": { "timestamp": 1696935103114, "user": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "status": "offline", "role": "default" }, @@ -854,14 +854,14 @@ Here is the list of properties associated with Webhook. "trigger": "user_blocked", "data": { "users": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America" + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan" } }, "by": { - "uid": "superhero1", - "name": "Iron Man" + "uid": "cometchat-uid-1", + "name": "Andrew Joseph" } }, "appId": "", @@ -881,14 +881,14 @@ Here is the list of properties associated with Webhook. "trigger": "user_unblocked", "data": { "users": { - "superhero2": { - "uid": "superhero2", - "name": "Captain America" + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan" } }, "by": { - "uid": "superhero1", - "name": "Iron Man" + "uid": "cometchat-uid-1", + "name": "Andrew Joseph" } }, "appId": "", @@ -909,18 +909,18 @@ Here is the list of properties associated with Webhook. "data": { "message": { "id": "4", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { - "text": "Hi <@uid:superhero2>", + "text": "Hi <@uid:cometchat-uid-2>", "mentions": { - "superhero2": { - "uid": "superhero2", - "name": "IronMan" + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "Andrew Joseph" } } }, @@ -949,10 +949,10 @@ Here is the list of properties associated with Webhook. "data": { "call": { "id": "52", - "conversationId": "superhero1_user_superhero5", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-5", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "call", "type": "audio", "data": { @@ -1003,13 +1003,13 @@ Here is the list of properties associated with Webhook. "joined_at": 1696934501, "audio_call": "true", "left_at": 1696934553, - "name": "Captain America" + "name": "George Alan" }, { "joined_at": 1696934501, "audio_call": "true", "left_at": 1696934551, - "name": "Iron Man" + "name": "Andrew Joseph" } ], "destroyed_at": 1696934553, @@ -1036,7 +1036,7 @@ Here is the list of properties associated with Webhook. "occupant": { "joined_at": 1696934573, "audio_call": "true", - "name": "Iron Man" + "name": "Andrew Joseph" }, "sessionId": "" }, @@ -1061,7 +1061,7 @@ Here is the list of properties associated with Webhook. "joined_at": 1696934501, "audio_call": "true", "left_at": 1696934553, - "name": "Captain America" + "name": "George Alan" }, "sessionId": "" }, @@ -1105,7 +1105,7 @@ Here is the list of properties associated with Webhook. "occupant": { "joined_at": 1696934692, "audio_call": "false", - "name": "Iron Man" + "name": "Andrew Joseph" }, "sessionId": "" }, @@ -1130,7 +1130,7 @@ Here is the list of properties associated with Webhook. "joined_at": 1696934692, "audio_call": "false", "left_at": 1696934730, - "name": "Iron Man" + "name": "Andrew Joseph" }, "sessionId": "" }, @@ -1156,7 +1156,7 @@ Here is the list of properties associated with Webhook. "joined_at": 1696934692, "audio_call": "false", "left_at": 1696934730, - "name": "Iron Man" + "name": "Andrew Joseph" } ], "destroyed_at": 1696934730, From 12fffe3811b9f052ec26eac551a9ecd941bf56a6 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Thu, 26 Mar 2026 03:49:36 +0530 Subject: [PATCH 23/56] Resolve merge conflicts and apply REST API docs audit fixes - Resolved all merge conflicts in docs.json keeping stashed changes for correct structure - Preserved new agent APIs (BYO Agent APIs, Agent Builder APIs) from upstream - Removed mark-message-as-interacted stub page from nav and OAS - Added deprecation banners to get-conversation and delete-conversation - Fixed template variables, empty param examples, enum inconsistencies - Fixed mentionsWithTagInfo casing, title casing, typos in calls.json - Added endpoint tables to banned-users, blocked-users, friends overviews - Renamed emojiunicodes slug to emoji-unicode --- calls.json | 1180 +- chat-apis.json | 34049 +++++++--------- data-import-apis.json | 2227 +- docs.json | 10215 ++--- rest-api/banned-users.mdx | 34 +- rest-api/blocked-users.mdx | 30 +- .../conversations/delete-conversation.mdx | 26 +- rest-api/conversations/get-conversation.mdx | 26 +- rest-api/friends.mdx | 29 +- ...eactions-with-a-specific-emoji-unicode.mdx | 3 + ...eactions-with-a-specific-emojiunicodes.mdx | 25 - .../messages/mark-message-as-interacted.mdx | 25 - 12 files changed, 20395 insertions(+), 27474 deletions(-) create mode 100644 rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx delete mode 100644 rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx delete mode 100644 rest-api/messages/mark-message-as-interacted.mdx diff --git a/calls.json b/calls.json index 1429664ef..111e4dad2 100644 --- a/calls.json +++ b/calls.json @@ -1,675 +1,567 @@ { - "openapi": "3.0.0", - "info": { - "title": "Calls APIs", - "description": "Manage calls using our API.", - "version": "3.0" - }, - "servers": [ - { - "url": "https://{appid}.call-{region}.cometchat.io/v3", - "variables": { - "appid": { - "default": "appId", - "description": "(Required) App ID" - }, - "region": { - "enum": [ - "us", - "eu", - "in" - ], - "default": "us", - "description": "Select Region" - } - } + "openapi": "3.1.0", + "info": { + "title": "calls-api", + "version": "3" + }, + "servers": [ + { + "url": "https://{appId}.call-{region}.cometchat.io/v3.0", + "variables": { + "appId": { + "default": "appId" + }, + "region": { + "default": "region" } - ], - "paths": { - "/calls": { - "get": { - "tags": [ - "Calls" - ], - "summary": "List Calls", - "description": "Retrieves all call logs for an app. The response may include participants and recordings details when available.", - "operationId": "list-calls", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "type", - "in": "query", - "description": "Filter by call type. Values: voice, video.", - "schema": { + } + } + ], + "components": { + "securitySchemes": { + "sec0": { + "type": "apiKey", + "in": "header", + "name": "apikey" + } + } + }, + "security": [ + { + "sec0": [] + } + ], + "paths": { + "/calls": { + "get": { + "summary": "List Calls", + "description": "lists all the calls that are available in the app. It can include participants, and recordings property in the response (if present).", + "operationId": "list-calls", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "It includes the type of the call, possible values: audio & video", + "schema": { + "type": "string", + "enum": ["audio", "video"] + } + }, + { + "name": "mode", + "in": "query", + "description": "It represents the mode of call, possible values: call, meet & presenter.", + "schema": { + "type": "string", + "enum": ["call", "meet", "presenter"] + } + }, + { + "name": "participantsCount", + "in": "query", + "description": "This query parameter allows you to filter the list of calls based on the number of participants involved in each call. For example, participantsCount=5 will return calls that had exactly 5 participants.", + "schema": { + "type": "string" + } + }, + { + "name": "startedAt", + "in": "query", + "description": "It represents when the call was started. It's 10 digit unix timestamp.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "status", + "in": "query", + "description": "It indicates the status of the call. Possible values are unanswered, rejected, ongoing, ended.", + "schema": { + "type": "string", + "enum": ["unanswered", "rejected", "ongoing", "ended"] + } + }, + { + "name": "receiverType", + "in": "query", + "description": "It indicates if it was 1-1 call of group call. Possible values: user & group.", + "schema": { + "type": "string", + "enum": ["user", "group"] + } + }, + { + "name": "endedAt", + "in": "query", + "description": "It represents when the call was ended.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "hasRecording", + "in": "query", + "description": "It's a boolean field indicating if the call has recording present or not.", + "schema": { + "type": "boolean" + } + }, + { + "name": "uid", + "in": "query", + "description": "It fetches only those calls in which the passed uid is a part of.", + "schema": { + "type": "string" + } + }, + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": { + "Result": { + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368168,\n \"initiator\": \"superhero8\",\n \"mode\": \"call\",\n \"receiver\": \"sivamathewstestgroup\",\n \"receiverType\": \"group\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"startedAt\": 1692368180,\n \"endedAt\": 1692368199,\n \"participants\": [\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.31666666666666665,\n \"deviceId\": \"b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368199\n },\n {\n \"uid\": \"superhero8\",\n \"totalAudioMinutes\": 0.2833333333333333,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.2833333333333333,\n \"deviceId\": \"f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat-staging.com/K-s6dB3N\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368197\n },\n {\n \"uid\": \"superhero4\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"superhero7\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"superhero6\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n }\n ]\n },\n {\n \"sessionId\": \"v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368113,\n \"initiator\": \"superhero8\",\n \"mode\": \"call\",\n \"receiver\": \"superhero2\",\n \"receiverType\": \"user\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"startedAt\": 1692368127,\n \"endedAt\": 1692368146,\n \"participants\": [\n {\n \"uid\": \"superhero8\",\n \"totalAudioMinutes\": 0.26666666666666666,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.26666666666666666,\n \"deviceId\": \"70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul\",\n \"isJoined\": true,\n \"joinedAt\": 1692368128,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368144\n },\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0.23333333333333334,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.23333333333333334,\n \"deviceId\": \"c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4\",\n \"isJoined\": true,\n \"joinedAt\": 1692368132,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368146\n }\n ]\n }\n ],\n \"meta\": {\n \"pagination\": {\n \"total\": 2,\n \"count\": 2,\n \"total_pages\": 1,\n \"current_page\": 1\n }\n }\n}" + } + }, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sessionId": { "type": "string", - "enum": [ - "voice", - "video" - ] - } - }, - { - "name": "types", - "in": "query", - "description": "Filter calls by multiple types. Accepts comma-separated values or array notation. Values: voice, video.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "mode", - "in": "query", - "description": "It represents the mode of call, possible values: call, meet & presenter.", - "schema": { + "example": "v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb" + }, + "totalAudioMinutes": { + "type": "number", + "example": 0.31666666666666665, + "default": 0 + }, + "totalVideoMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "totalDuration": { "type": "string", - "enum": [ - "call", - "meet", - "presenter" - ] - } - }, - { - "name": "participantsCount", - "in": "query", - "description": "This query parameter allows you to filter the list of calls based on the number of participants involved in each call. For example, participantsCount=5 will return calls that had exactly 5 participants.", - "schema": { - "type": "integer" - } - }, - { - "name": "initiatedAt", - "in": "query", - "description": "Filter by call initiation time. Value is a 10-digit unix timestamp. Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: initiatedAt[operator]=value.\nExample: initiatedAt[gte]=1692368168", - "schema": { - "type": "integer" - } - }, - { - "name": "startedAt", - "in": "query", - "description": "Filter by call start time. Value is a 10-digit unix timestamp. Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: startedAt[operator]=value.\nExample: startedAt[gte]=1692368180", - "schema": { - "type": "integer" - } - }, - { - "name": "status", - "in": "query", - "description": "Filter by call status. Values: initiated, cancelled, unanswered, rejected, busy, ongoing, ended.", - "schema": { + "example": "00:00:19" + }, + "hasRecording": { + "type": "boolean", + "example": false, + "default": true + }, + "initiatedAt": { + "type": "integer", + "example": 1692368168, + "default": 0 + }, + "initiator": { "type": "string", - "enum": [ - "initiated", - "cancelled", - "unanswered", - "rejected", - "busy", - "ongoing", - "ended" - ] - } - }, - { - "name": "statuses", - "in": "query", - "description": "Filter calls by multiple statuses. Accepts comma-separated values or array notation. Values: initiated, cancelled, unanswered, rejected, busy, ongoing, ended.", - "style": "form", - "explode": false, - "schema": { + "example": "superhero8" + }, + "mode": { + "type": "string", + "example": "call" + }, + "receiver": { + "type": "string", + "example": "sivamathewstestgroup" + }, + "receiverType": { + "type": "string", + "example": "group" + }, + "status": { + "type": "string", + "example": "ended" + }, + "totalDurationInMinutes": { + "type": "number", + "example": 0.31666666666666665, + "default": 0 + }, + "totalParticipants": { + "type": "integer", + "example": 2, + "default": 0 + }, + "type": { + "type": "string", + "example": "audio" + }, + "mid": { + "type": "string", + "example": "3f7596ac-854b-484d-b36c-d623e193bd81" + }, + "startedAt": { + "type": "integer", + "example": 1692368180, + "default": 0 + }, + "endedAt": { + "type": "integer", + "example": 1692368199, + "default": 0 + }, + "participants": { "type": "array", "items": { - "type": "string" - } - } - }, - { - "name": "receiverType", - "in": "query", - "description": "It indicates if it was 1-1 call of group call. Possible values: user & group.", - "schema": { - "type": "string", - "enum": [ - "user", - "group" - ] - } - }, - { - "name": "endedAt", - "in": "query", - "description": "Filter by call end time. Value is a 10-digit unix timestamp. Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: endedAt[operator]=value.\nExample: endedAt[lte]=1692368199", - "schema": { - "type": "integer" - } - }, - { - "name": "duration", - "in": "query", - "description": "Filter by total call duration in minutes (decimal). Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: duration[operator]=value.\nExample: duration[gte]=1.5", - "schema": { - "type": "number" - } - }, - { - "name": "totalParticipants", - "in": "query", - "description": "Filter by the number of participants in the call (integer). Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: totalParticipants[operator]=value.\nExample: totalParticipants[gt]=2", - "schema": { - "type": "integer" - } - }, - { - "name": "voiceMinutes", - "in": "query", - "description": "Filter by total audio minutes consumed in the call (decimal). Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: voiceMinutes[operator]=value.\nExample: voiceMinutes[eq]=0.75", - "schema": { - "type": "number" - } - }, - { - "name": "videoMinutes", - "in": "query", - "description": "Filter by total video minutes consumed in the call (decimal). Supports bracket notation operators: eq, gt, gte, lt, lte.\nFormat: videoMinutes[operator]=value.\nExample: videoMinutes[lte]=5", - "schema": { - "type": "number" - } - }, - { - "name": "hasRecording", - "in": "query", - "description": "It's a boolean field indicating if the call has recording present or not.", - "schema": { - "type": "boolean" - } - }, - { - "name": "uid", - "in": "query", - "description": "It fetches only those calls in which the passed uid is a part of.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Lists Calls", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/callSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" + "type": "object", + "properties": { + "uid": { + "type": "string", + "example": "superhero2" }, - "example": { - "data": [ - { - "sessionId": "v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb", - "totalAudioMinutes": 0.31666666666666665, - "totalVideoMinutes": 0, - "totalDuration": "00:00:19", - "hasRecording": false, - "initiatedAt": 1692368168, - "initiator": "superhero8", - "mode": "call", - "receiver": "sivamathewstestgroup", - "receiverType": "group", - "status": "ended", - "totalDurationInMinutes": 0.31666666666666665, - "totalParticipants": 2, - "type": "audio", - "mid": "3f7596ac-854b-484d-b36c-d623e193bd81", - "startedAt": 1692368180, - "endedAt": 1692368199, - "participants": [ - { - "uid": "superhero2", - "totalAudioMinutes": 0.31666666666666665, - "totalVideoMinutes": 0, - "isJoined": true, - "state": "ended", - "totalDuration": 0.31666666666666665, - "deviceId": "b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq", - "joinedAt": 1692368180, - "mid": "3f7596ac-854b-484d-b36c-d623e193bd81", - "leftAt": 1692368199 - }, - { - "uid": "superhero8", - "totalAudioMinutes": 0.2833333333333333, - "totalVideoMinutes": 0, - "isJoined": true, - "state": "ended", - "totalDuration": 0.2833333333333333, - "deviceId": "f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat-staging.com/K-s6dB3N", - "joinedAt": 1692368180, - "mid": "3f7596ac-854b-484d-b36c-d623e193bd81", - "leftAt": 1692368197 - }, - { - "uid": "superhero4", - "totalAudioMinutes": 0, - "totalVideoMinutes": 0, - "isJoined": false, - "state": "unanswered", - "totalDuration": 0 - }, - { - "uid": "superhero7", - "totalAudioMinutes": 0, - "totalVideoMinutes": 0, - "isJoined": false, - "state": "unanswered", - "totalDuration": 0 - }, - { - "uid": "superhero6", - "totalAudioMinutes": 0, - "totalVideoMinutes": 0, - "isJoined": false, - "state": "unanswered", - "totalDuration": 0 - } - ] - }, - { - "sessionId": "v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92", - "totalAudioMinutes": 0.31666666666666665, - "totalVideoMinutes": 0, - "totalDuration": "00:00:19", - "hasRecording": false, - "initiatedAt": 1692368113, - "initiator": "superhero8", - "mode": "call", - "receiver": "superhero2", - "receiverType": "user", - "status": "ended", - "totalDurationInMinutes": 0.31666666666666665, - "totalParticipants": 2, - "type": "audio", - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "startedAt": 1692368127, - "endedAt": 1692368146, - "participants": [ - { - "uid": "superhero8", - "totalAudioMinutes": 0.26666666666666666, - "totalVideoMinutes": 0, - "totalDuration": 0.26666666666666666, - "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul", - "isJoined": true, - "joinedAt": 1692368128, - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "state": "ended", - "leftAt": 1692368144 - }, - { - "uid": "superhero2", - "totalAudioMinutes": 0.23333333333333334, - "totalVideoMinutes": 0, - "totalDuration": 0.23333333333333334, - "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4", - "isJoined": true, - "joinedAt": 1692368132, - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "state": "ended", - "leftAt": 1692368146 - } - ] - } - ], - "meta": { - "pagination": { - "total": 2, - "count": 2, - "total_pages": 1, - "current_page": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/calls/{sessionId}": { - "get": { - "tags": [ - "Calls" - ], - "summary": "Get Call", - "description": "Fetches all the details of the call whose sessionId is passed in the URL.", - "operationId": "retreive-call-details", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "sessionId", - "in": "path", - "description": "Call to Retreive", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Rereives Call Details", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/callSchema" - } - }, - "type": "object" - } - }, - "type": "object" + "totalAudioMinutes": { + "type": "number", + "example": 0.31666666666666665, + "default": 0 }, - "example": { - "data": { - "sessionId": "v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92", - "totalAudioMinutes": 0.31666666666666665, - "totalVideoMinutes": 0, - "totalDuration": "00:00:19", - "metaData": [], - "hasRecording": false, - "initiatedAt": 1692368113, - "initiator": "superhero8", - "mode": "call", - "receiver": "superhero2", - "receiverType": "user", - "status": "ended", - "tags": [], - "totalDurationInMinutes": 0.31666666666666665, - "totalParticipants": 2, - "type": "audio", - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "startedAt": 1692368127, - "endedAt": 1692368146, - "participants": [ - { - "uid": "superhero2", - "totalAudioMinutes": 0.23333333333333334, - "totalVideoMinutes": 0, - "totalDuration": 0.23333333333333334, - "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4", - "isJoined": true, - "joinedAt": 1692368132, - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "state": "ended", - "leftAt": 1692368146 - }, - { - "uid": "superhero8", - "totalAudioMinutes": 0.26666666666666666, - "totalVideoMinutes": 0, - "totalDuration": 0.26666666666666666, - "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul", - "isJoined": true, - "joinedAt": 1692368128, - "mid": "855e1519-1244-4213-8e40-53044c1e9e43", - "state": "ended", - "leftAt": 1692368144 - } - ] - } + "totalVideoMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "isJoined": { + "type": "boolean", + "example": true, + "default": true + }, + "state": { + "type": "string", + "example": "ended" + }, + "totalDuration": { + "type": "number", + "example": 0.31666666666666665, + "default": 0 + }, + "deviceId": { + "type": "string", + "example": "b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq" + }, + "joinedAt": { + "type": "integer", + "example": 1692368180, + "default": 0 + }, + "mid": { + "type": "string", + "example": "3f7596ac-854b-484d-b36c-d623e193bd81" + }, + "leftAt": { + "type": "integer", + "example": 1692368199, + "default": 0 } + } } + } } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - } - }, - "components": { - "schemas": { - "callSchema": { - "description": "Response data", - "properties": { - "sessionId": { - "type": "string" - }, - "totalAudioMinutes": { - "type": "integer" - }, - "totalVideoMinutes": { - "type": "integer" - }, - "totalDuration": { - "type": "integer" - }, - "hasRecording": { - "type": "boolean" - }, - "initiatedAt": { - "type": "integer" - }, - "initiator": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "status": { - "type": "string" - }, - "totalDurationInMinutes": { - "type": "integer" - }, - "totalParticipants": { - "type": "integer" - }, - "type": { - "type": "string" - }, - "mid": { - "type": "string" - }, - "startedAt": { - "type": "integer" - }, - "endedAt": { - "type": "integer" - }, - "participants": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/participantSchema" - } - }, - "type": "object" - } - } - }, - "type": "object" - }, - "deleteSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "metaSchema": { - "properties": { - "pagination": { - "properties": { + } + }, + "meta": { + "type": "object", + "properties": { + "pagination": { + "type": "object", + "properties": { "total": { - "type": "integer" + "type": "integer", + "example": 2, + "default": 0 }, "count": { - "type": "integer" + "type": "integer", + "example": 2, + "default": 0 }, - "per_page": { - "type": "integer" + "total_pages": { + "type": "integer", + "example": 1, + "default": 0 }, "current_page": { - "type": "integer" - }, - "total_pages": { - "type": "integer" + "type": "integer", + "example": 1, + "default": 0 } - }, - "type": "object" - } - }, - "type": "object" - }, - "participantSchema": { - "properties": { - "uid": { - "type": "string" - }, - "totalAudioMinutes": { - "type": "integer" - }, - "totalVideoMinutes": { - "type": "integer" - }, - "isJoined": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "totalDuration": { - "type": "integer" - }, - "deviceId": { - "type": "integer" - }, - "joinedAt": { - "type": "integer" - }, - "mid": { - "type": "string" - }, - "leftAt": { - "type": "integer" + } + } + } } - }, - "type": "object" + } + } + } } - }, - "parameters": { - "uid": { - "name": "uid", - "in": "path", - "description": "An UID of a user.", - "required": true, - "schema": { - "type": "string" - }, + }, + "400": { + "description": "400", + "content": { + "application/json": { "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - }, - "guid": { - "name": "guid", - "in": "path", - "description": "A GUID of a group.", - "required": true, - "schema": { - "type": "string" + "Result": { + "value": "{}" + } }, - "examples": { - "string": { - "summary": "GUID", - "value": "" - } + "schema": { + "type": "object", + "properties": {} } + } + } + } + }, + "deprecated": false + } + }, + "/calls/{sessionId}": { + "get": { + "summary": "Get Call", + "description": "Fetches all the details of the call whose sessionId is passed in the URL.", + "operationId": "get-call", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + }, + { + "name": "sessionId", + "in": "path", + "description": "Call to Retrieve", + "schema": { + "type": "string" }, - "requiredonBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, + "required": true + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": { + "Get Call": { + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:00\",\n \"hasRecording\": false,\n \"initiatedAt\": 1715845999,\n \"initiator\": \"superhero1\",\n \"mode\": \"call\",\n \"receiver\": \"superhero2\",\n \"receiverType\": \"user\",\n \"status\": \"initiated\",\n \"totalDurationInMinutes\": 0,\n \"totalParticipants\": 0,\n \"type\": \"audio\",\n \"participants\": [\n {\n \"uid\": \"superhero1\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"totalDurationInMinutes\": 0,\n \"name\": \"Iron Man\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n },\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDurationInMinutes\": 0,\n \"name\": \"Captain America\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n ],\n \"data\": {\n \"entities\": {\n \"initiator\": {\n \"entity\": {\n \"uid\": \"superhero1\",\n \"name\": \"Iron Man\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n }\n },\n \"receiver\": {\n \"entity\": {\n \"uid\": \"superhero2\",\n \"name\": \"Captain America\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n }\n }\n }\n }\n ]\n}" + } + }, "schema": { - "type": "string" + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sessionId": { + "type": "string", + "example": "v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3" + }, + "totalAudioMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "totalVideoMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "totalDuration": { + "type": "string", + "example": "00:00:00" + }, + "hasRecording": { + "type": "boolean", + "example": false, + "default": true + }, + "initiatedAt": { + "type": "integer", + "example": 1715845999, + "default": 0 + }, + "initiator": { + "type": "string", + "example": "superhero1" + }, + "mode": { + "type": "string", + "example": "call" + }, + "receiver": { + "type": "string", + "example": "superhero2" + }, + "receiverType": { + "type": "string", + "example": "user" + }, + "status": { + "type": "string", + "example": "initiated" + }, + "totalDurationInMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "totalParticipants": { + "type": "integer", + "example": 0, + "default": 0 + }, + "type": { + "type": "string", + "example": "audio" + }, + "participants": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "example": "superhero1" + }, + "totalAudioMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "totalVideoMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "isJoined": { + "type": "boolean", + "example": false, + "default": true + }, + "totalDurationInMinutes": { + "type": "integer", + "example": 0, + "default": 0 + }, + "name": { + "type": "string", + "example": "Iron Man" + }, + "avatar": { + "type": "string", + "example": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + } + } + } + }, + "data": { + "type": "object", + "properties": { + "entities": { + "type": "object", + "properties": { + "initiator": { + "type": "object", + "properties": { + "entity": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "example": "superhero1" + }, + "name": { + "type": "string", + "example": "Iron Man" + }, + "avatar": { + "type": "string", + "example": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + } + } + } + } + }, + "receiver": { + "type": "object", + "properties": { + "entity": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "example": "superhero2" + }, + "name": { + "type": "string", + "example": "Captain America" + }, + "avatar": { + "type": "string", + "example": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png" + } + } + } + } + } + } + } + } + } + } + } + } + } } - }, - "onBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", + } + } + }, + "400": { + "description": "400", + "content": { + "application/json": { + "examples": { + "Result": { + "value": "{}" + } + }, "schema": { - "type": "string" + "type": "object", + "properties": {} } + } } + } }, - "securitySchemes": { - "apiKey": { - "type": "apiKey", - "description": "API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).", - "name": "apikey", - "in": "header" - } - } - }, - "tags": [ - { - "name": "Calls", - "description": "The Calls tag" - } - ] -} \ No newline at end of file + "deprecated": false + } + } + }, + "x-readme": { + "headers": [], + "explorer-enabled": true, + "proxy-enabled": true + }, + "x-readme-fauxas": true +} diff --git a/chat-apis.json b/chat-apis.json index 2f5c4f1fd..d14467749 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -1,19359 +1,15572 @@ { - "openapi": "3.0.0", - "info": { - "title": "Chat APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", - "version": "3.0" - }, - "servers": [ - { - "url": "https://{appid}.api-{region}.cometchat.io/v3", - "variables": { - "appid": { - "default": "appId", - "description": "(Required) App ID" + "openapi": "3.0.0", + "info": { + "title": "Chat APIs", + "description": "Manage messages, users, groups for a particular app using our Chat API.", + "version": "3.0" + }, + "servers": [ + { + "url": "https://{appid}.api-{region}.cometchat.io/v3", + "variables": { + "appid": { + "default": "appId", + "description": "(Required) App ID" + }, + "region": { + "enum": ["us", "eu", "in"], + "default": "us", + "description": "Select Region" + } + } + } + ], + "paths": { + "/apikeys": { + "post": { + "tags": ["API Keys"], + "summary": "Create", + "description": "Creates a new API key", + "operationId": "create-apikey", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["name", "scope"], + "properties": { + "name": { + "description": "Friendly name for the API key.", + "type": "string" + }, + "scope": { + "description": "Scope for the API key. Possible values: userauth, admin.", + "type": "string", + "default": "authOnly", + "enum": ["authOnly", "fullAccess"] + } }, - "region": { - "enum": [ - "us", - "eu", - "in" - ], - "default": "us", - "description": "Select Region" + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Created API key", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", + "name": "John's apiKey", + "scope": "authOnly", + "createdAt": 1625206799 + } } + } } - } - ], - "paths": { - "/apikeys": { - "post": { - "tags": [ - "API Keys" - ], - "summary": "Create", - "description": "Creates a new API key for authenticating requests to the CometChat API. API keys are essential for server-side integrations and client SDK initialization.

**Scope types:** authOnly is limited scope for user authentication only (use for client-side SDKs, cannot access admin endpoints). fullAccess provides full administrative access to all API endpoints (use for server-side integrations, keep secure and never expose in client-side code).", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "name", - "scope" - ], - "properties": { - "name": { - "description": "A descriptive name to identify this API key's purpose. Use names like 'iOS App Key', 'Backend Server Key', or 'Analytics Integration'.", - "type": "string" - }, - "scope": { - "description": "Permission level for the API key. 'authOnly' for client-side user authentication only (SDK initialization). 'fullAccess' for complete API access including admin operations (server-side only).", - "type": "string", - "default": "authOnly", - "enum": [ - "authOnly", - "fullAccess" - ] - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "API key created successfully. Store the apiKey value securely - it cannot be retrieved again after creation.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", - "name": "John's apiKey", - "scope": "authOnly", - "createdAt": 1625206799 - } - } - } - } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["API Keys"], + "summary": "List", + "description": "Lists API keys", + "operationId": "list-apikeys", + "parameters": [ + { + "name": "scope", + "in": "query", + "description": "Scope of the apikey. Available values: fullAccess, authOnly", + "schema": { + "type": "string", + "enum": ["fullAccess", "authOnly"] + } + }, + { + "name": "searchKey", + "in": "query", + "description": "Searches for specified keyword in name", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Lists API keys", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" } + }, + "type": "object" }, - "security": [ + "example": { + "data": [ { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "API Keys" - ], - "summary": "List", - "description": "Retrieves all API keys configured for your CometChat app. Use this endpoint to audit your API keys, check their scopes, or find keys for rotation.

**Use cases:** Audit which API keys exist and their permission levels. Find API keys by name when you need to update or delete them. Verify API key scopes before using them in integrations.", - "parameters": [ + "apiKey": "fcf32d085482db7ef10e971967d70a91cdb6677a", + "name": "John's apiKey", + "scope": "authOnly", + "createdAt": 1631095584 + }, { - "name": "scope", - "in": "query", - "description": "Filter API keys by permission scope. Use 'fullAccess' to find admin keys or 'authOnly' to find client authentication keys.", - "schema": { - "type": "string", - "enum": [ - "fullAccess", - "authOnly" - ] - } + "apiKey": "0f40b2c254f33d429b1fca5e0eb1cef72c594ddc", + "name": "Auth Key", + "scope": "authOnly", + "createdAt": 1629869272 }, { - "name": "searchKey", - "in": "query", - "description": "Search term to filter API keys by name. Use this to find specific keys when you have many configured. Case-insensitive partial match.", - "schema": { - "type": "string" - } + "apiKey": "495318bc2e137fb2decf17078abd169a7bd50c8b", + "name": "Rest API Key", + "scope": "fullAccess", + "createdAt": 1629869272 } - ], - "responses": { - "200": { - "description": "List of API keys with their names, scopes, and creation timestamps. Use the apiKey value for authentication in API requests.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "apiKey": "fcf32d085482db7ef10e971967d70a91cdb6677a", - "name": "John's apiKey", - "scope": "authOnly", - "createdAt": 1631095584 - }, - { - "apiKey": "0f40b2c254f33d429b1fca5e0eb1cef72c594ddc", - "name": "Auth Key", - "scope": "authOnly", - "createdAt": 1629869272 - }, - { - "apiKey": "495318bc2e137fb2decf17078abd169a7bd50c8b", - "name": "Rest API Key", - "scope": "fullAccess", - "createdAt": 1629869272 - } - ], - "meta": { - "pagination": { - "total": 3, - "count": 3, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } + ], + "meta": { + "pagination": { + "total": 3, + "count": 3, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/apikeys/{apiKey}": { + "get": { + "tags": ["API Keys"], + "summary": "Get", + "description": "Retrieves API key", + "operationId": "get-apikey", + "parameters": [ + { + "name": "apiKey", + "in": "path", + "description": "An apikey to retrieve.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Retrieves API key", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", + "name": "John's apiKey", + "scope": "authOnly", + "createdAt": 1625206799 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["API Keys"], + "summary": "Update", + "description": "Updates an API key", + "operationId": "update-apikey", + "parameters": [ + { + "name": "apiKey", + "in": "path", + "description": "An apikey to update.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Friendly name for the API key.", + "type": "string" + }, + "scope": { + "description": "Scope for the API key. Possible values: userauth, admin.", + "type": "string", + "enum": ["userauth", "admin"] + } }, - "security": [ - { - "apiKey": [] + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Updated API Key", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", + "name": "John's apiKey", + "scope": "authOnly", + "createdAt": 1625206799 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["API Keys"], + "summary": "Delete", + "description": "Deletes an API key", + "operationId": "delete-apikey", + "parameters": [ + { + "name": "apiKey", + "in": "path", + "description": "An apikey to delete.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "API Key.", + "value": "f1915e328e249ffaaafd97fb46a57ba55d233fbf" + } + } + } + ], + "responses": { + "200": { + "description": "A list of api keys", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } - ] + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "The Api Key fcf32d085482db7ef10e971967d70a91cdb6677a has been deleted successfully." + } + } + } } + } }, - "/apikeys/{apiKey}": { - "get": { - "tags": [ - "API Keys" - ], - "summary": "Get", - "description": "Retrieves the details of a specific API key including its name, scope, and creation timestamp. Use this endpoint to verify an API key's configuration before using it.", - "parameters": [ - { - "name": "apiKey", - "in": "path", - "description": "The API key string to retrieve details for. This is the 40-character hexadecimal key value.", - "required": true, - "schema": { + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users": { + "post": { + "tags": ["Users"], + "summary": "Create", + "description": "Creates a new user", + "operationId": "creates-user", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "Unique identifier of the user. Please refer to https://prodocs.cometchat.com/docs/concepts#uid", + "type": "string" + }, + "name": { + "description": "Display name of the user.", + "type": "string" + }, + "avatar": { + "description": "URL to profile picture of the user.", + "type": "string" + }, + "link": { + "description": "URL to profile page.", + "type": "string" + }, + "role": { + "description": "User role of the user for role based access control.", + "type": "string" + }, + "statusMessage": { + "description": "A message providing context related to the user's current status or mood.", + "type": "string" + }, + "metadata": { + "description": "Additional information about the user as JSON. If you plan to use [Email Notification](doc:android-extensions-email-notification#section-configure-your-backend-to-store-emails) or [SMS Notification](doc:android-extensions-sms-notification#section-configure-your-backend-to-store-phone-number) extensions, Please add the private metadata here.", + "properties": { + "@private": { + "properties": { + "email": { "type": "string" - } - } - ], - "responses": { - "200": { - "description": "API key details retrieved successfully. Shows the key's name, permission scope, and when it was created.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", - "name": "John's apiKey", - "scope": "authOnly", - "createdAt": 1625206799 - } - } - } - } - } + }, + "contactNumber": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object", + "default": { + "@private": { + "email": "user@email.com", + "contactNumber": "0123456789" + } + } + }, + "tags": { + "description": "A list of tags to identify specific users.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "withAuthToken": { + "description": "Includes authToken of created user in response.", + "type": "boolean" + } }, - "security": [ - { - "apiKey": [] + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Create User", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } - ] - }, - "put": { - "tags": [ - "API Keys" - ], - "summary": "Update", - "description": "Updates an existing API key's name or scope. Use this endpoint to rename keys for better organization or to change permission levels.

**Important:** Changing the scope from fullAccess to authOnly will immediately restrict the key's permissions. Any integrations using this key for admin operations will start failing.", - "parameters": [ - { - "name": "apiKey", - "in": "path", - "description": "The API key string to update. This is the 40-character hexadecimal key value.", - "required": true, - "schema": { - "type": "string" + }, + "type": "object" + }, + "example": { + "data": { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "rawMetadata": "{'gender':'Male'}" + }, + "status": "offline", + "role": "manager", + "createdAt": 1638354015, + "tags": ["Engineer", "manager"], + "authToken": "superhero6_16383540156641d37a023c75d26f4c22a21ff126" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Users"], + "summary": "List", + "description": "Lists all the users of an app", + "operationId": "list-users", + "parameters": [ + { + "name": "searchKey", + "in": "query", + "description": "The searchKey query parameter work for both name and uid:\nIt performs a LIKE% query, searching for uid/name values starting with the specified characters.", + "schema": { + "type": "string" + } + }, + { + "name": "searchIn", + "in": "query", + "description": "Searches for specified keyword in name,UID or both.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": ["name", "uid"] + } + } + }, + { + "name": "status", + "in": "query", + "description": "User list can be fetched depending on the user status. (available,offline).", + "schema": { + "type": "string", + "enum": ["available", "offline"] + } + }, + { + "name": "count", + "in": "query", + "description": "Fetches users count.", + "schema": { + "type": "boolean" + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of users to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "page", + "in": "query", + "description": "Page Number.", + "schema": { + "type": "integer", + "default": "1" + } + }, + { + "name": "role", + "in": "query", + "description": "Retrieves user list based on role.", + "schema": { + "type": "string" + } + }, + { + "name": "withTags", + "in": "query", + "description": "Includes tags in the response.", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "description": "Fetches only those users that have these tags.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "roles", + "in": "query", + "description": "Fetches users based on multiple roles.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "onlyDeactivated", + "in": "query", + "description": "Fetches all the deactivated users of an app.", + "schema": { + "type": "boolean" + } + }, + { + "name": "withDeactivated", + "in": "query", + "description": "Fetches all the users including deactivated users.", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "A list of users", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "email": "user@email.com", + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "manager", + "createdAt": 1638354015, + "updatedAt": 1638354799, + "conversationId": "superhero4_user_superhero6" + }, + { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "createdAt": 1629869270, + "updatedAt": 1630308676, + "conversationId": "superhero2_user_superhero4" + }, + { + "uid": "superhero3", + "name": "Captain America", + "link": "https://data-us.cometchat.io/assets", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "metadata": { + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "default", + "blockedByMe": true, + "blockedByMeAt": 1638346853, + "blockedAt": 1638346853, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero3_user_superhero4" + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + } + }, + "cursor": { + "updatedAt": 1638354799, + "affix": "prepend" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Users"], + "summary": "Reactivate", + "description": "Reactivates users for the specified UIDs", + "operationId": "reactivate-users", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "uidsToActivate": { + "description": "UIDs that needs to reactivated.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "re-activated users", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "nonDeactivatedUids": { + "type": "array", + "items": {} } + }, + "type": "object" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Updated display name for the API key. Use descriptive names to identify the key's purpose.", - "type": "string" - }, - "scope": { - "description": "Updated permission scope. 'authOnly' restricts to user authentication only. 'fullAccess' grants complete API access. Changing scope takes effect immediately.", - "type": "string", - "enum": [ - "fullAccess", - "authOnly" - ] - } - }, - "type": "object" - } - } + }, + "type": "object" + }, + "example": { + "data": { + "nonDeactivatedUids": ["superhero2", "superhero3"] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Users"], + "summary": "Deactivate", + "description": "Deactivates users for the specified UIDs", + "operationId": "deactivate-users", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "uidsToDeactivate": { + "description": "UIDs that needs to deactivated.", + "type": "array", + "items": { + "type": "string" } + } }, - "responses": { - "200": { - "description": "API key updated successfully. Returns the complete updated key configuration.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "apiKey": "f1915e328e249ffaaafd97fb46a57ba55d233fbf", - "name": "John's apiKey", - "scope": "authOnly", - "createdAt": 1625206799 - } - } - } + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Deactivated Users", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "deactivatedUids": { + "type": "array", + "items": {} } + }, + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "API Keys" - ], - "summary": "Delete", - "description": "Permanently deletes an API key, immediately revoking all access for integrations using this key. Use this endpoint when rotating keys or removing unused keys.", - "parameters": [ - { - "name": "apiKey", - "in": "path", - "description": "The API key string to delete. This is the 40-character hexadecimal key value. Ensure you have a replacement key ready before deleting.", - "required": true, - "schema": { + "example": { + "data": { + "deactivatedUids": ["superhero2", "superhero3"] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}": { + "get": { + "tags": ["Users"], + "summary": "Get", + "description": "Retrieves user details for a specified UID.", + "operationId": "get-user", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "$ref": "#/components/parameters/onBehalfOf" + } + ], + "responses": { + "200": { + "description": "Fetched User", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "status": "offline", + "role": "manager", + "createdAt": 1638354015 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Users"], + "summary": "Update", + "description": "Updates a user with the provided UID", + "operationId": "update-user", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Display name of the user.", + "type": "string" + }, + "avatar": { + "description": "URL to profile picture of the user.", + "type": "string" + }, + "link": { + "description": "URL to profile page.", + "type": "string" + }, + "role": { + "description": "User role of the user for role based access control.", + "type": "string" + }, + "statusMessage": { + "description": "A message providing context related to the user's current status or mood.", + "type": "string" + }, + "metadata": { + "description": "Additional information about the user as JSON. If you plan to use [Email Notification](doc:android-extensions-email-notification#section-configure-your-backend-to-store-emails) or [SMS Notification](doc:android-extensions-sms-notification#section-configure-your-backend-to-store-phone-number) extensions, Please add the private metadata here.", + "properties": { + "@private": { + "properties": { + "email": { "type": "string" + }, + "contactNumber": { + "type": "string" + } }, - "examples": { - "string": { - "summary": "API Key", - "value": "fcf32d085482db7ef10e971967d70a91cdb6677a" - } - } - } - ], - "responses": { - "200": { - "description": "API key deleted successfully. All integrations using this key will immediately lose access.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The Api Key fcf32d085482db7ef10e971967d70a91cdb6677a has been deleted successfully." - } - } - } - } - } + "type": "object" + } + }, + "type": "object", + "default": { + "@private": { + "email": "user@email.com", + "contactNumber": "0123456789" + } + } + }, + "tags": { + "description": "A list of tags to identify specific users.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + }, + "unset": { + "description": "The unsettable user attributes are avatar, link and metadata.", + "type": "array", + "items": { + "type": "string", + "enum": ["avatar", "link", "metadata"] + }, + "default": ["avatar"] + } }, - "security": [ - { - "apiKey": [] + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Updated user", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } - ] + }, + "type": "object" + }, + "example": { + "data": { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "email": "user@email.com", + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "manager", + "createdAt": 1638354015, + "updatedAt": 1638354799, + "tags": ["supergroup"] + } + } + } } + } }, - "/users": { - "post": { - "tags": [ - "Users" - ], - "summary": "Create", - "description": "Creates a new user in your CometChat app. Use this endpoint when onboarding new users to your application. The user will be created with the specified UID and can immediately participate in messaging and calling features.

**When to use:** During user registration in your application, when migrating users from another chat platform, or when creating bot or system users.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "Unique identifier for the user within your app. This ID is used to identify the user across all CometChat operations. Must be unique (case-insensitive) and contain only alphanumeric characters, underscores, or hyphens. Cannot be changed after creation.", - "type": "string" - }, - "name": { - "description": "Display name shown to other users in chat interfaces, user lists, and notifications. Can be updated later.", - "type": "string" - }, - "avatar": { - "description": "URL to the user's profile picture. Must be a valid, publicly accessible URL. Displayed in chat bubbles, user lists, and notifications. Recommended size: 200x200 pixels.", - "type": "string" - }, - "link": { - "description": "URL to the user's profile page in your application. Can be used to link back to your app's user profile.", - "type": "string" - }, - "role": { - "description": "Role assigned to the user for role-based access control (RBAC). Determines which features the user can access. If not specified, defaults to 'default' role. Must match an existing role in your app.", - "type": "string" - }, - "statusMessage": { - "description": "Custom status message displayed alongside the user's presence status. Use this for mood messages, availability notes, or custom status indicators.", - "type": "string" - }, - "metadata": { - "description": "Custom JSON object for storing additional user information. Use the `@private` key for sensitive data (email, phone) that should not be visible to other users. Private metadata is only returned to the user themselves or via admin APIs.", - "properties": { - "@private": { - "description": "Private metadata not visible to other users. Ideal for storing email addresses and phone numbers for notification extensions.", - "properties": { - "email": { - "description": "User's email address for email notifications.", - "type": "string" - }, - "contactNumber": { - "description": "User's phone number for SMS notifications.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object", - "default": { - "@private": { - "email": "user@email.com", - "contactNumber": "0123456789" - } - } - }, - "tags": { - "description": "Array of tags for categorizing and filtering users. Useful for segmenting users by department, location, or custom criteria.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "withAuthToken": { - "description": "When set to true, includes an authentication token in the response. Use this to immediately log in the user after creation without making a separate auth token request.", - "type": "boolean" - } - }, - "type": "object" - } - } + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Users"], + "summary": "Delete", + "description": "Deletes a user for the specified UID", + "operationId": "delete-user", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "permanent": { + "description": "Permanently deletes the user along with all the messages, conversations, etc.", + "type": "boolean", + "default": "false" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Deleted User", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "User created successfully. Returns the complete user object with all properties including system-generated fields like createdAt and status.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "The created user object containing all user properties.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "rawMetadata": "{'gender':'Male'}" - }, - "status": "offline", - "role": "manager", - "createdAt": 1638354015, - "tags": [ - "Engineer", - "manager" - ], - "authToken": "superhero6_16383540156641d37a023c75d26f4c22a21ff126" - } - } - } - } - } + "example": { + "data": { + "success": true, + "message": "User with superhero6 has been deleted successfully." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups": { + "post": { + "tags": ["Groups"], + "summary": "Create", + "description": "Creates a group.", + "operationId": "create-group", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["guid", "name", "type"], + "properties": { + "guid": { + "description": "A unique identifier for a group.", + "type": "string" + }, + "name": { + "description": "Name of the group.", + "type": "string" + }, + "type": { + "description": "Type of the group. Can be public, password or private.", + "type": "string", + "enum": ["public", "password", "private"] + }, + "password": { + "description": "A password required to join the the group with type password", + "type": "string" + }, + "icon": { + "description": "An URL for a group icon.", + "type": "string" + }, + "description": { + "description": "Description about the group", + "type": "string" + }, + "metadata": { + "description": "Additional data for the group.", + "type": "object" + }, + "owner": { + "description": "The UID that you wish to make owner of the group", + "type": "string" + }, + "tags": { + "description": "List of tags to identify specific groups.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + }, + "members": { + "description": "Add members to a group with scope admins,moderators and participants.", + "properties": { + "admins": { + "description": "UIDs of users to be made admins.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "moderators": { + "description": "UIDs of users to be made moderators.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "participants": { + "description": "UIDs of users to be made participants.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "usersToBan": { + "description": "UIDs of the users to be banned from the group.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "type": "object" + } }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Users" - ], - "summary": "List", - "description": "Retrieves a paginated list of users in your CometChat app. Use this endpoint to display user directories, search for users, or sync user data with your application. Results can be filtered by status, role, tags, and search keywords.

**Use cases:** Building user directories or contact lists. Searching for users by name or UID. Filtering users by role or tags for admin dashboards. Syncing user data with your backend.

**Pagination:** Results are paginated with configurable page size (default: 100, max: 1000). Use page parameter to navigate through results. Response includes meta.pagination with total count and page info. Use cursor for efficient real-time sync of user updates.", - "parameters": [ - { - "name": "searchKey", - "in": "query", - "description": "Search keyword for filtering users. Performs prefix matching (LIKE%) on UID and/or name fields based on the searchIn parameter. For example, 'john' matches 'john_doe', 'johnny', etc.", - "schema": { - "type": "string" - } + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Create Group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid": "project-group", + "name": "Project Group", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "public", + "scope": "admin", + "membersCount": 1, + "joinedAt": 1638440784, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1638440784, + "owner": "superhero4", + "tags": ["friends", "project"] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Groups"], + "summary": "List", + "description": "Lists the groups.", + "operationId": "list-groups", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "searchKey", + "in": "query", + "description": "Searches for given keyword in group's list (either GUID, name or email).", + "schema": { + "type": "string" + } + }, + { + "name": "searchIn", + "in": "query", + "description": "Searches for specified keyword in name,GUID or both.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Sorts the group list by either Name,Guid or Created at . Available values: name, guid, createdAt", + "schema": { + "type": "string", + "enum": ["name", "guid", "createdAt"] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sorts the group list in ascending or descending order. Available values: asc, desc", + "schema": { + "type": "string", + "enum": ["asc", "desc"] + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of groups to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "affix", + "in": "query", + "description": "Determines whether to fetch the groups either before or after createdAt/updatedAt timestamp. Possible values are append(after) and prepend(before).", + "schema": { + "type": "string", + "enum": ["append", "prepend"] + } + }, + { + "name": "updatedAt", + "in": "query", + "description": "Fetches the groups list after a particular updatedAt timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "withTags", + "in": "query", + "description": "Includes those groups that have tags.", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "description": "Fetches only those groups that have these tags.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "type", + "in": "query", + "description": "Fetches groups based on group type(public, protected, password).", + "schema": { + "type": "string", + "enum": ["public", "private", "password"] + } + }, + { + "name": "types", + "in": "query", + "description": "Fetches groups based on multiple types.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "page", + "in": "query", + "description": "Page number.", + "schema": { + "type": "integer" + } + }, + { + "name": "hasJoined", + "in": "query", + "description": "Fetches all the joined groups of a user. This will work only with onBehalfOf parameter in header. It accepts only true as a value, setting it as false simply removes this filter.", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "A list of groups", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - { - "name": "searchIn", - "in": "query", - "description": "Specifies which fields to search in when using searchKey. Can search in 'name', 'uid', or both. If not specified, searches in both fields.", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "name", - "uid" - ] - } - } + "meta": { + "type": "object" }, - { - "name": "status", - "in": "query", - "description": "Filter users by their online/offline status. 'available' returns users currently online, 'offline' returns users not currently connected.", - "schema": { - "type": "string", - "enum": [ - "available", - "offline" + "cursor": { + "properties": { + "updatedAt": { + "type": "integer" + }, + "affix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "0": { + "0": { + "guid": "project-group-2", + "name": "Project Group 2", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "public", + "scope": "admin", + "membersCount": 1, + "joinedAt": 1638440784, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1638440784, + "owner": "superhero4", + "tags": ["friends", "project"] + }, + "guid": "project-group", + "name": "Project Group", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "public", + "scope": "admin", + "membersCount": 1, + "joinedAt": 1638440784, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1638440784, + "owner": "superhero4", + "tags": ["friends", "project"] + }, + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + }, + "cursor": { + "updatedAt": 1638354799, + "affix": "prepend" + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}": { + "get": { + "tags": ["Groups"], + "summary": "Get", + "description": "Retrieves details of a group for a given GUID.", + "operationId": "get-group", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + } + ], + "responses": { + "200": { + "description": "Get group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid": "project-group", + "name": "Project Group", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "public", + "scope": "admin", + "membersCount": 1, + "joinedAt": 1638440784, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1638440784, + "owner": "superhero4", + "tags": ["friends", "project"] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Groups"], + "summary": "Update", + "description": "Updates the group details for a given GUID.", + "operationId": "update-group", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Name of the group.", + "type": "string" + }, + "type": { + "description": "The type of the group. The available values are: public, password and private.", + "type": "string", + "enum": ["public", "password", "private"] + }, + "password": { + "description": "A password required to join the the group with type password", + "type": "string" + }, + "icon": { + "description": "An URL for a group icon.", + "type": "string" + }, + "description": { + "description": "Description about the group", + "type": "string" + }, + "metadata": { + "description": "Additional group data.", + "type": "object" + }, + "owner": { + "description": "The UID that you wish to make the owner of the group.This field will be ignored if onBehalfOf parameter in the header is present in the request.", + "type": "string" + }, + "tags": { + "description": "Updates tags of a group.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + }, + "unset": { + "description": "The unsettable user attributes are icon, description and metadata.", + "type": "array", + "items": { + "type": "string", + "enum": ["icon", "description", "metadata"] + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Get group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid": "project-group", + "name": "Project Group", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "public", + "scope": "admin", + "membersCount": 1, + "joinedAt": 1638440784, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1638440784, + "owner": "superhero4", + "tags": ["friends", "project"] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Groups"], + "summary": "Delete", + "description": "Deletes a group with a given GUID.", + "operationId": "delete-group", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + } + ], + "responses": { + "200": { + "description": "Deleted Group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "Group with guid project-group has been deleted successfully." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/messages": { + "post": { + "tags": ["Messages"], + "summary": "Send Message", + "description": "Sends Message on behalf of a user.", + "operationId": "send-message", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "category", + "mapping": { + "message": "#/components/schemas/messageCategorySchema", + "interactive": "#/components/schemas/interactiveCategorySchema", + "custom": "#/components/schemas/customCategorySchema" + } + }, + "oneOf": [ + { + "title": "Message", + "$ref": "#/components/schemas/messageCategorySchema" + }, + { + "title": "Custom", + "$ref": "#/components/schemas/customCategorySchema" + }, + { + "title": "Interactive", + "$ref": "#/components/schemas/interactiveCategorySchema" + } + ] + }, + "examples": { + "form-interactive": { + "summary": "Interactive form example", + "value": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "allOf", + "elementIds": ["element8"] + }, + "allowSenderInteraction": true, + "interactiveData": { + "title": "Form Title", + "formFields": [ + { + "elementType": "textInput", + "elementId": "element1", + "defaultValue": "vivek", + "label": "Name", + "optional": false, + "maxLines": 1, + "placeholder": { + "text": "write your name here" + } + }, + { + "elementType": "textInput", + "elementId": "element2", + "label": "Last Name", + "optional": false, + "maxLines": 1 + }, + { + "elementType": "textInput", + "elementId": "element3", + "label": "Address", + "optional": false, + "maxLines": 5 + }, + { + "elementType": "dropdown", + "elementId": "element4", + "label": "Country", + "optional": false, + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "INDIA" + }, + { + "value": "option2", + "label": "AUSTRALIA" + } ] + }, + { + "elementType": "checkbox", + "elementId": "element5", + "optional": true, + "label": "Services", + "options": [ + { + "value": "option1", + "label": "Garbage" + }, + { + "value": "option2", + "label": "Electricity Bill" + }, + { + "value": "option3", + "label": "Lift" + } + ], + "defaultValue": ["option1", "option2"] + }, + { + "elementType": "singleSelect", + "elementId": "element6", + "optional": false, + "label": "Wing", + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "A Wing" + }, + { + "value": "option2", + "label": "B Wing" + } + ] + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "About us", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + }, + { + "elementType": "dateTime", + "elementId": "element11", + "defaultValue": false, + "label": "Contact Number", + "optional": false, + "mode": "date", + "dateTimeFormat": "Y-m-d H:i:ss", + "timezoneCode": "Asia/Kolkata", + "from1": "2024-02-23T14:30", + "from": "2024-06-23", + "to": "2024-06-24", + "maxLines": 1, + "placeholder": { + "text": "Enter contact number" + } + } + ], + "submitElement": { + "elementType": "button", + "elementId": "element8", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "superhero2", + "receiverType": "user" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } } + } }, - { - "name": "count", - "in": "query", - "description": "When set to true, returns only the total count of users matching the filter criteria instead of the full user list. Useful for displaying user counts in dashboards.", - "schema": { - "type": "boolean" - } - }, - { - "name": "perPage", - "in": "query", - "description": "Number of users to return per page. Use smaller values for faster responses, larger values to reduce API calls. Default: 100, Maximum: 1000.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "page", - "in": "query", - "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through large user lists.", - "schema": { - "type": "integer", - "default": "1" - } - }, - { - "name": "role", - "in": "query", - "description": "Filter users by a single role. Returns only users assigned to the specified role. Use 'roles' parameter to filter by multiple roles.", - "schema": { - "type": "string" - } - }, - { - "name": "withTags", - "in": "query", - "description": "When set to true, includes the tags array in each user object in the response. Tags are excluded by default to reduce response size.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "Filter users by tags. Returns only users that have ALL specified tags. Useful for finding users in specific departments, locations, or custom categories.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "roles", - "in": "query", - "description": "Filter users by multiple roles. Returns users assigned to ANY of the specified roles. Use this instead of 'role' when filtering by multiple roles.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "onlyDeactivated", - "in": "query", - "description": "When set to true, returns ONLY deactivated users. Deactivated users cannot log in but their data is preserved. Mutually exclusive with withDeactivated.", - "schema": { - "type": "boolean" - } + "category": "interactive", + "type": "form", + "receiver": "superhero1", + "tags": ["tag1"] + } + }, + "card-interactive": { + "summary": "Interactive card example", + "value": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "none" + }, + "allowSenderInteraction": true, + "interactiveData": { + "imageUrl": "https://upload.wikimedia.org/wikipedia/en/e/e1/Thomas_D._Baird_%28low-resolution%29.jpg", + "text": "Thanks For filling the Form!.\n\nWant to make your gifts more special? Now its easy with our personalized card messages!\n\nOur new feature lets you add a custom message on a beautifully designed card, making your gift-giving extra personal and memorable.\nWhether its for a birthday , anniversary , or just because , our card messages will express your feelings perfectly.\n\nTo start creating your own card message:\nChoose the gift\nWrite your heartfelt message\nWell print it on a high-quality card and include it with your gift\nAdd a touch of your own sentiments with our personalized card messages. Make every gift unforgettable. Start creating your card message today!\nVisit our website Website Link or download our app App Link.\n\nExpress more than just words with our Personalized Card Messages.Because its not just a gift, its your feelings.\n", + "cardActions": [ + { + "elementType": "button", + "elementId": "element8", + "buttonText": "Buy now", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "group_1695921003310", + "receiverType": "group" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application\\/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "Navigate", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + }, + { + "elementType": "button", + "elementId": "element10", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "group_1695921003310", + "receiverType": "group" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + } + ] + } }, - { - "name": "withDeactivated", - "in": "query", - "description": "When set to true, includes deactivated users in the results alongside active users. By default, deactivated users are excluded from the list.", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "Returns a paginated list of users matching the filter criteria. Each user object contains profile information, status, and metadata. The response includes pagination metadata and an optional cursor for real-time sync.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Array of user objects matching the filter criteria.", - "type": "array", - "items": {} - }, - "meta": { - "description": "Pagination metadata including total count, current page, and total pages.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "email": "user@email.com", - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "manager", - "createdAt": 1638354015, - "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" - }, - { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "createdAt": 1629869270, - "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" - }, - { - "uid": "superhero3", - "name": "Captain America", - "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "metadata": { - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "default", - "blockedByMe": true, - "blockedByMeAt": 1638346853, - "blockedAt": 1638346853, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - }, - "cursor": { - "updatedAt": 1638354799, - "affix": "prepend" - } - } - } - } - } + "category": "interactive", + "type": "card", + "receiver": "superhero1", + "tags": ["tag1"] + } }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Users" - ], - "summary": "Reactivate", - "description": "Reactivates one or more previously deactivated users, restoring their ability to log in and use CometChat features. Use this endpoint to restore user access after temporary suspensions or account recovery.

**When to use:** Restoring user access after a temporary suspension, reactivating users who return to your platform, bulk reactivation of users after a policy change, or account recovery workflows.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "uidsToActivate": { - "description": "Array of UIDs to reactivate. Each UID must belong to a currently deactivated user. Users that are not deactivated will be listed in the nonDeactivatedUids response field.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "user1", - "user2" - ] - } - }, - "type": "object" + "scheduler-interactive": { + "summary": "Interactive scheduler example", + "value": { + "receiverType": "user", + "receiver": "superhero2", + "category": "interactive", + "type": "scheduler", + "data": { + "receiverType": "user", + "receiver": "superhero2", + "muid": "16Jan3:41423PM", + "interactionGoal": { + "type": "anyAction", + "elementIds": [] + }, + "allowSenderInteraction": false, + "interactiveData": { + "title": "Meet with Dr. Jacob", + "avatarUrl": "https: //data-us.cometchat.io/assets/images/avatars/ironman.png", + "bufferTime": 15, + "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", + "availability": { + "friday": [ + { + "to": "2359", + "from": "0000" } - } - } - }, - "responses": { - "200": { - "description": "Returns the result of the reactivation operation. Lists any UIDs that were not deactivated (and therefore could not be reactivated). Successfully reactivated users are not explicitly listed.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Result object containing UIDs that could not be reactivated because they were not deactivated.", - "properties": { - "nonDeactivatedUids": { - "description": "Array of UIDs that were not deactivated and therefore could not be reactivated. If empty, all requested users were successfully reactivated.", - "type": "array", - "items": {} - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "nonDeactivatedUids": [ - "superhero2", - "superhero3" - ] - } - } + ], + "monday": [ + { + "to": "1700", + "from": "0600" } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Users" - ], - "summary": "Deactivate", - "description": "Deactivates one or more users, preventing them from logging in while preserving their data. Use this endpoint for temporary suspensions or when you want to disable user access without permanently deleting their account.

**When to use:** Temporarily suspending user accounts, implementing account lockout policies, disabling inactive users while preserving data, or compliance with temporary access restrictions.

**Difference from Delete:** Deactivation is reversible while deletion is permanent. Deactivated users retain all their data. Deactivated users can be reactivated at any time. UID remains reserved and cannot be reused.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "uidsToDeactivate": { - "description": "Array of UIDs to deactivate. Each UID should belong to an active user. Already deactivated or non-existent users are skipped.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" + ], + "tuesday": [ + { + "to": "1400", + "from": "1000" + }, + { + "to": "2000", + "from": "1700" } - } - } - }, - "responses": { - "200": { - "description": "Returns the list of UIDs that were successfully deactivated. UIDs that were already deactivated or don't exist are not included in the response.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Result object containing the list of successfully deactivated UIDs.", - "properties": { - "deactivatedUids": { - "description": "Array of UIDs that were successfully deactivated by this request.", - "type": "array", - "items": {} - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "deactivatedUids": [ - "superhero2", - "superhero3" - ] - } - } + ], + "thursday": [ + { + "to": "2359", + "from": "0000" } - } - } - }, - "security": [ - { - "apiKey": [] + ], + "wednesday": [ + { + "to": "0800", + "from": "0600" + }, + { + "to": "1700", + "from": "1200" + } + ] + }, + "timezoneCode": "Asia/Kolkata", + "duration": 60, + "scheduleElement": { + "action": { + "url": "https://802bba5ae13a7.api-us.cometchat-staging.com/v3.0/messages", + "actionType": "apiAction", + "method": "post", + "dataKey": "", + "headers": { + "accept": "application/json", + "apiKey": "62a32b5140e6b630dab38e2e690d88de9c69d416", + "onBehalfOf": "suryansh1", + "content-type": "application/json" + }, + "payload": { + "data": { + "text": "Meeting Scheduled Successfully!" + }, + "type": "text", + "category": "message", + "receiver": "demo1", + "receiverType": "group" + } + }, + "elementId": "1", + "buttonText": "Schedule", + "elementType": "button", + "disableAfterInteracted": true + }, + "goalCompletionText": "Your meeting has been Scheduled", + "dateRangeStart": "2024-06-09", + "dateRangeEnd": "2024-06-09" + } } - ] + } + } + } } + } }, - "/users/{uid}": { - "get": { - "tags": [ - "Users" - ], - "summary": "Get", - "description": "Retrieves detailed information about a specific user by their UID. Use this endpoint to fetch a user's profile data, check their online status, or verify user existence before performing operations.

**When to use:** Displaying user profile information, verifying a user exists before sending messages, checking user's online/offline status, or fetching user metadata for your application.

**Response includes:** Basic profile info (name, avatar, link), current online/offline status, role and metadata, timestamps (createdAt, updatedAt), and block status if using onBehalfOf parameter.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier (UID) of the user to retrieve. This is the same UID used when creating the user. Case-insensitive.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - }, - { - "$ref": "#/components/parameters/onBehalfOf" - } - ], - "responses": { - "200": { - "description": "Returns the complete user object with all profile information, status, and metadata. If onBehalfOf is specified, includes block status relative to that user.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "The user object containing all profile and status information.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "status": "offline", - "role": "manager", - "createdAt": 1638354015 - } - } - } - } + "responses": { + "200": { + "description": "Create Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Users" - ], - "summary": "Update", - "description": "Updates an existing user's profile information. Use this endpoint to modify user details like name, avatar, role, or metadata. Only the fields provided in the request body will be updated; other fields remain unchanged.

**Use cases:** Updating user profile information (name, avatar). Changing user roles for access control. Adding or modifying user metadata. Updating tags for user categorization. Removing optional fields using the unset parameter.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier (UID) of the user to update. This is the same UID used when creating the user. Case-insensitive.", - "required": true, - "schema": { - "type": "string" + "example": { + "data": { + "id": "1", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "metadata": { + "key1": "val1" + }, + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550 + }, + "entityType": "user" }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Messages"], + "summary": "List Messages", + "description": "Fetches the messages list.", + "operationId": "list-all-messages", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "searchKey", + "in": "query", + "description": "Fetches messages that include the searchKey.", + "schema": { + "type": "string" + } + }, + { + "name": "hideMessagesFromBlockedUsers", + "in": "query", + "description": "Fetches messages sent by users who are blocked by the requesting user.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hasAttachments", + "in": "query", + "description": "Fetches messages that include attachments.", + "schema": { + "type": "boolean" + } + }, + { + "name": "attachmentTypes", + "in": "query", + "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", + "schema": { + "type": "string", + "enum": ["image", "video", "audio", "file"] + } + }, + { + "name": "hasMentions", + "in": "query", + "description": "Fetches messages that include mentions.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hasLinks", + "in": "query", + "description": "Fetches messages that include links.", + "schema": { + "type": "boolean" + } + }, + { + "name": "mentionedUids", + "in": "query", + "description": "Fetches messages that include the mentioned comma-separated UIDs.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hasReactions", + "in": "query", + "description": "Fetches messages that include reactions.", + "schema": { + "type": "boolean" + } + }, + { + "name": "receiverType", + "in": "query", + "description": "Displays messages based on receiverType (user/group)", + "schema": { + "type": "string", + "enum": ["user", "group"] + } + }, + { + "name": "affix", + "in": "query", + "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "Retrieves all those messages after the passed id.", + "schema": { + "type": "string" + } + }, + { + "name": "category", + "in": "query", + "description": "Filters messages by category. Possible values: message, action and custom.", + "schema": { + "type": "string", + "enum": ["message", "action", "custom"] + } + }, + { + "name": "type", + "in": "query", + "description": "Filters messages by type.", + "schema": { + "type": "string" + } + }, + { + "name": "sender", + "in": "query", + "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", + "schema": { + "type": "string" + } + }, + { + "name": "mentionsWithBlockedInfo", + "in": "query", + "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", + "schema": { + "type": "boolean" + } + }, + { + "name": "mentionsWithTagInfo", + "in": "query", + "description": "Provides user tags for the mentioned users.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hideDeleted", + "in": "query", + "description": "Hides deleted messages from List.", + "schema": { + "type": "boolean" + } + }, + { + "name": "onlyDeleted", + "in": "query", + "description": "Includes only deleted messages in List.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hideReplies", + "in": "query", + "description": "Shows only messages skipping the replies in the message thread.", + "schema": { + "type": "boolean" + } + }, + { + "name": "count", + "in": "query", + "description": "Includes unread message count in List.", + "schema": { + "type": "boolean" + } + }, + { + "name": "unread", + "in": "query", + "description": "Retrieves all the unread messages in a conversation. It must be used alongside count query parameter.", + "schema": { + "type": "boolean" + } + }, + { + "name": "sentAt", + "in": "query", + "description": "Fetches the messages list after a particular sentAt timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "limit", + "in": "query", + "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", + "schema": { + "type": "integer", + "default": "10" + } + }, + { + "name": "conversationId", + "in": "query", + "description": "Fetches all the messages belong to a particular conversation.", + "schema": { + "type": "string" + } + }, + { + "name": "withTags", + "in": "query", + "description": "This will fetch messages along with the tags.", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "description": "This will fetch only those messages belonging to the mentioned tags.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "categories", + "in": "query", + "description": "Fetches messages based on multiple categories.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "types", + "in": "query", + "description": "Fetches messages based on multiple types.", + "schema": { + "type": "array", + "items": {} + } + }, + { + "name": "fromTimestamp", + "in": "query", + "description": "Fetches the messages from this timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "toTimestamp", + "in": "query", + "description": "Fetches the messages till this timestamp. It will be ignored if fromTimestamp is missing or empty.", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "List Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "1", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "createdAt": 1638361550 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } + }, + "metadata": { + "key1": "val1" } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490 } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Updated display name for the user. Shown in chat interfaces and user lists.", - "type": "string" - }, - "avatar": { - "description": "Updated URL to the user's profile picture. Must be a valid, publicly accessible URL.", - "type": "string" - }, - "link": { - "description": "Updated URL to the user's profile page in your application.", - "type": "string" - }, - "role": { - "description": "Updated role for the user. Changes take effect immediately for role-based access control. Must match an existing role in your app.", - "type": "string" - }, - "statusMessage": { - "description": "Updated status message displayed alongside the user's presence status.", - "type": "string" - }, - "metadata": { - "description": "Updated custom JSON object for storing additional user information. This replaces the entire metadata object. Use `@private` key for sensitive data.", - "properties": { - "@private": { - "description": "Private metadata not visible to other users.", - "properties": { - "email": { - "description": "User's email address for email notifications.", - "type": "string" - }, - "contactNumber": { - "description": "User's phone number for SMS notifications.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object", - "default": { - "@private": { - "email": "user@email.com", - "contactNumber": "0123456789" - } - } - }, - "tags": { - "description": "Updated array of tags for the user. This replaces all existing tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "tag1" - ] - }, - "unset": { - "description": "Array of optional fields to remove from the user. Use this to clear avatar, link, or metadata without setting them to empty values.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "avatar", - "link", - "metadata" - ] - }, - "default": [ - "avatar" - ] - } - }, - "type": "object" - } - } + ], + "meta": { + "current": { + "limit": 100, + "count": 1 + }, + "next": { + "affix": "append", + "sentAt": 1638423490, + "id": "1" } - }, - "responses": { - "200": { - "description": "Returns the updated user object with all current profile information. The response reflects all changes made by this request.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "The updated user object containing all current profile and status information.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "email": "user@email.com", - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "manager", - "createdAt": 1638354015, - "updatedAt": 1638354799, - "tags": [ - "supergroup" - ] - } - } - } - } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/messages/{id}": { + "get": { + "tags": ["Messages"], + "summary": "Get Message", + "description": "Fetches the details of a message.", + "operationId": "get-message-details", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose details are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "responses": { + "200": { + "description": "Retreived Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Users" - ], - "summary": "Delete", - "description": "Deletes a user from your CometChat app. By default, performs a soft delete that preserves message history. Use the permanent flag for complete removal of all user data.

**When to use:** Removing users who have left your platform, cleaning up test or spam accounts, GDPR/data deletion compliance (use permanent=true), or freeing up UIDs for reuse (permanent delete only).

**Soft Delete (default):** User cannot log in or be searched. Message history is preserved. User data can potentially be recovered. UID cannot be reused.

**Permanent Delete (permanent=true):** All user data is permanently removed. All messages sent by user are deleted. All conversations involving user are removed. Group memberships are removed. UID becomes available for reuse. This action is IRREVERSIBLE.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier (UID) of the user to delete. This is the same UID used when creating the user. Case-insensitive.", - "required": true, - "schema": { - "type": "string" + "example": { + "data": { + "id": "1", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "metadata": { + "key1": "val1" + }, + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550 + }, + "entityType": "user" }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "permanent": { - "description": "When set to true, permanently deletes the user along with ALL associated data including messages, conversations, group memberships, and metadata. This action is IRREVERSIBLE. When false (default), performs a soft delete that preserves message history.", - "type": "boolean", - "default": "false" - } - }, - "type": "object" - } - } + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Messages"], + "summary": "Update Message", + "description": "Edits the message on behalf of a user.", + "operationId": "update-message", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose details are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "description": "The data that needs to be modified.", + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Updated Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Confirms successful deletion of the user. Returns a success message with the deleted user's UID.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Deletion confirmation object with success status and message.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "User with superhero6 has been deleted successfully." - } - } - } - } + "example": { + "data": { + "id": "402", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "action", + "type": "message", + "data": { + "action": "edited", + "entities": { + "by": { + "entity": { + "uid": "superhero1", + "name": "Updated Name", + "status": "offline", + "role": "default", + "createdAt": 1639448370, + "updatedAt": 1640599553 + }, + "entityType": "user" + }, + "for": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "createdAt": 1639448370 + }, + "entityType": "user" + }, + "on": { + "entity": { + "id": "69", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "hello spider", + "entities": { + "sender": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "status": "offline", + "createdAt": 1639448370 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1639448370, + "conversationId": "superhero1_user_superhero2" + }, + "entityType": "user" + } + } + }, + "sentAt": 1640171302, + "editedAt": 1641477338, + "editedBy": "app_system", + "updatedAt": 1641477338, + "tags": ["t6"] + }, + "entityType": "message" + } + } + }, + "sentAt": 1641477338, + "updatedAt": 1641477338 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Messages"], + "summary": "Delete Message", + "description": "Deletes the message.", + "operationId": "deletes-message", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose details are to be deleted.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "permanent": { + "description": "Deletes the message permanently.", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Deleted Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] + "example": { + "data": { + "id": "402", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "action", + "type": "message", + "data": { + "action": "edited", + "entities": { + "by": { + "entity": { + "uid": "superhero1", + "name": "Updated Name", + "status": "offline", + "role": "default", + "createdAt": 1639448370 + }, + "entityType": "user" + }, + "for": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "createdAt": 1639448370 + }, + "entityType": "user" + }, + "on": { + "entity": { + "id": "69", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "hello spider", + "entities": { + "sender": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "status": "offline", + "createdAt": 1639448370 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1639448370, + "conversationId": "superhero1_user_superhero2" + }, + "entityType": "user" + } + } + }, + "sentAt": 1640171302, + "editedAt": 1641477338, + "editedBy": "app_system", + "updatedAt": 1641477338, + "tags": ["t6"] + }, + "entityType": "message" + } + } + }, + "sentAt": 1641477338, + "updatedAt": 1641477338 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/messages/{id}/reactions": { + "get": { + "tags": ["Messages"], + "summary": "List all reactions", + "description": "Lists all the reactions for a message", + "operationId": "list-all-reactions", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose reactions are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "responses": { + "200": { + "description": "List Reactions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/reactionSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/messageMetaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "1", + "messageId": "2", + "reaction": ":reaction", + "uid": "superhero1", + "reactedAt": 1700210335, + "reactedBy": { + "uid": "superhero1", + "name": "Iron Man", + "status": "offline", + "role": "default", + "createdAt": 1698934972 + } + }, + { + "id": "2", + "messageId": "2", + "reaction": "😅", + "uid": "superhero1", + "reactedAt": 1700210456, + "reactedBy": { + "uid": "superhero1", + "name": "Iron Man", + "status": "offline", + "role": "default", + "createdAt": 1698934972 + } + }, + { + "id": "5", + "messageId": "2", + "reaction": "😒", + "uid": "superhero2", + "reactedAt": 1700230866, + "reactedBy": { + "uid": "superhero2", + "name": "Captain America", + "status": "offline", + "role": "default", + "createdAt": 1698934987, + "conversationId": "superhero1_user_superhero2" + } + } + ], + "meta": { + "current": { + "limit": 100, + "count": 3 + }, + "next": { + "affix": "append", + "id": "5" } - ] + } + } + } } + } }, - "/groups": { - "post": { - "tags": [ - "Groups" - ], - "summary": "Create", - "description": "Creates a new group in your CometChat app. Use this endpoint to set up chat rooms, channels, or any multi-user conversation space. The group is immediately available for messaging once created.

**Use cases:** Creating team channels for project collaboration, setting up public chat rooms for community discussions, creating private groups for confidential conversations, or building password-protected groups for controlled access.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/messages/{id}/reactions/{reaction}": { + "get": { + "tags": ["Messages"], + "summary": "List reactions with a specific emoji/unicodes", + "description": "List reactions with a specific emoji/unicodes for a message", + "operationId": "get-message-reactions", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose reactions are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + }, + { + "name": "reaction", + "in": "path", + "description": "reaction whose details are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Reaction", + "value": "😀" + } + } + } + ], + "responses": { + "200": { + "description": "Get Reactions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/reactionSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/messageMetaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "1", + "messageId": "1", + "reaction": "😅", + "uid": "superhero1", + "reactedAt": 1702638595, + "reactedBy": { + "uid": "superhero1", + "name": "Iron Man", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", + "status": "available", + "role": "default", + "lastActiveAt": 1689082633, + "createdAt": 1684751861 + } + } + ], + "meta": { + "current": { + "limit": 100, + "count": 1 + }, + "next": { + "affix": "append", + "id": "1" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "guid": { - "description": "A unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore (_), and hyphen (-). This cannot be changed after creation.", - "type": "string" - }, - "name": { - "description": "Display name of the group shown to users in the UI. Can be updated later.", - "type": "string" - }, - "type": { - "description": "Access control type for the group. 'public': Anyone can join without approval. 'password': Users must provide correct password to join. 'private': Users can only join via invitation or admin action.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "Required when type is 'password'. The password users must enter to join the group. Not returned in API responses for security.", - "type": "string" - }, - "icon": { - "description": "URL to the group's avatar/icon image. Must be a valid HTTP/HTTPS URL. Recommended size: 256x256 pixels.", - "type": "string" - }, - "description": { - "description": "A brief description of the group's purpose. Displayed to users when viewing group details.", - "type": "string" - }, - "metadata": { - "description": "Custom JSON object for storing additional group data (e.g., settings, preferences, custom fields). Useful for app-specific configurations.", - "type": "object" - }, - "owner": { - "description": "UID of the user to be set as group owner. The owner has full admin privileges and cannot be removed from the group. If not specified, no owner is set.", - "type": "string" - }, - "tags": { - "description": "Array of tags for categorizing and filtering groups. Useful for organizing groups by topic, department, or custom categories.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "tag1" - ] - }, - "members": { - "description": "Object containing arrays of UIDs to add as members with different permission levels during group creation.", - "properties": { - "admins": { - "description": "Array of UIDs to add as admins. Admins can manage members, change settings, and moderate content.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "moderators": { - "description": "Array of UIDs to add as moderators. Moderators can kick/ban participants and delete messages.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "usersToBan": { - "description": "Array of UIDs to ban from the group. Banned users cannot join or view group content.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "participants": { - "description": "Array of UIDs to add as regular participants. Participants can send messages and view content but cannot manage the group.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - "type": "object", - "additionalProperties": false, - "x-omitempty": true - } - }, - "type": "object" - }, - "examples": { - "Create Public Group": { - "summary": "Create Public Group", - "value": { - "guid": "testgroup", - "name": "Test Group", - "type": "public" - } - } - } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Messages"], + "summary": "Add reaction", + "description": "Adds a reaction to a message.", + "operationId": "add-message-reactions", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message to react.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + }, + { + "name": "reaction", + "in": "path", + "description": "reaction to react.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Reaction", + "value": "😀" + } + } + } + ], + "responses": { + "200": { + "description": "Adding reaction", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageReactionSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Group created successfully. Returns the complete group object with all properties including auto-generated fields like createdAt and conversationId.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid": "project-group", - "name": "Project Group", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "public", - "scope": "admin", - "membersCount": 1, - "joinedAt": 1638440784, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1638440784, - "owner": "superhero4", - "tags": [ - "friends", - "project" - ] - } - } - } + "example": { + "data": { + "id": "2", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "Hi,", + "entities": { + "sender": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "role": "default", + "status": "offline" + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "status": "offline", + "conversationId": "superhero1_user_superhero2" + }, + "entityType": "user" + } + }, + "reactions": [ + { + "reaction": ":reaction", + "count": 1 + }, + { + "reaction": "😅", + "count": 1 + }, + { + "reaction": "😒", + "count": 1, + "reactedByMe": true + }, + { + "reaction": "🤨", + "count": 1, + "reactedByMe": true + } + ] + }, + "sentAt": 1700210266, + "updatedAt": 1700210266 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Messages"], + "summary": "Remove reaction", + "description": "Removes a reaction from a message", + "operationId": "remove-message-reactions", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose reaction is to be removed.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + }, + { + "name": "reaction", + "in": "path", + "description": "reaction to be removed.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Reaction", + "value": "😀" + } + } + } + ], + "responses": { + "200": { + "description": "Remove Reactions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageReactionSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Groups" - ], - "summary": "List", - "description": "Retrieves a paginated list of groups in your CometChat app. Use this endpoint to display group directories, search for groups, or sync group data with your application.

**Use cases:** Building a group discovery/browse interface, searching for groups by name or tags, syncing group data with your backend using cursor pagination, or listing groups a specific user has joined.

**Pagination:** Offset-based uses page and perPage parameters. Cursor-based uses updatedAt and affix parameters for efficient syncing.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "searchKey", - "in": "query", - "description": "Search term to filter groups. Searches across GUID, name, and description fields. Case-insensitive partial matching.", - "schema": { - "type": "string" + "example": { + "data": { + "id": "2", + "conversationId": "superhero1_user_superhero2", + "sender": "superhero1", + "receiverType": "user", + "receiver": "superhero2", + "category": "message", + "type": "text", + "data": { + "text": "Hi,", + "entities": { + "sender": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "role": "default", + "status": "offline" + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "status": "offline", + "conversationId": "superhero1_user_superhero2" + }, + "entityType": "user" + } + }, + "reactions": [ + { + "reaction": ":reaction", + "count": 1 + }, + { + "reaction": "😅", + "count": 1 + }, + { + "reaction": "😒", + "count": 1, + "reactedByMe": true } + ] }, - { - "name": "searchIn", - "in": "query", - "description": "Specify which fields to search in. Options: 'name', 'guid'. If not specified, searches all searchable fields.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "sortBy", - "in": "query", - "description": "Field to sort results by. 'name': alphabetical by group name. 'guid': alphabetical by group identifier. 'createdAt': chronological by creation time.", - "schema": { - "type": "string", - "enum": [ - "name", - "guid", - "createdAt" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort direction. 'asc': ascending order (A-Z, oldest first). 'desc': descending order (Z-A, newest first).", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ] - } - }, - { - "name": "perPage", - "in": "query", - "description": "Number of groups to return per page. Use for pagination. Default: 100, Maximum: 1000. Higher values may increase response time.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "affix", - "in": "query", - "description": "Pagination direction relative to the cursor timestamp. 'append': fetch groups created/updated after the timestamp. 'prepend': fetch groups created/updated before the timestamp.", - "schema": { - "type": "string", - "enum": [ - "append", - "prepend" - ] - } - }, - { - "name": "updatedAt", - "in": "query", - "description": "Unix timestamp (seconds) to filter groups by last update time. Use with 'affix' parameter for cursor-based pagination. Returns groups updated after/before this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "withTags", - "in": "query", - "description": "When true, includes the tags array in each group response. Set to false to reduce response size if tags are not needed.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "Filter groups by specific tags. Returns only groups that have ALL specified tags. Comma-separated list of tag values.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "type", - "in": "query", - "description": "Filter by single group type. 'public': open groups anyone can join. 'private': invitation-only groups. 'protected'/'password': groups requiring a password to join.", - "schema": { - "type": "string", - "enum": [ - "public", - "private", - "protected" - ] - } - }, - { - "name": "types", - "in": "query", - "description": "Filter by multiple group types. Comma-separated list. Returns groups matching ANY of the specified types.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "page", - "in": "query", - "description": "Page number for offset-based pagination. Starts at 1. Use with perPage to navigate through results.", - "schema": { - "type": "integer" - } - }, - { - "name": "hasJoined", - "in": "query", - "description": "When true, returns only groups the onBehalfOf user has joined. Requires onBehalfOf header. Setting to false removes this filter entirely.", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "Returns an array of group objects with pagination metadata. Each group includes its properties, member count, and conversation ID.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - }, - "cursor": { - "properties": { - "updatedAt": { - "type": "integer" - }, - "affix": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "guid": "project-group", - "name": "Project Group", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "public", - "scope": "admin", - "membersCount": 1, - "joinedAt": 1638440784, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1638440784, - "owner": "superhero4", - "tags": [ - "friends", - "project" - ] - }, - { - "guid": "project-group-2", - "name": "Project Group 2", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "public", - "scope": "admin", - "membersCount": 1, - "joinedAt": 1638440784, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1638440784, - "owner": "superhero4", - "tags": [ - "friends", - "project" - ] - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - }, - "cursor": { - "updatedAt": 1638354799, - "affix": "prepend" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}": { - "get": { - "tags": [ - "Groups" - ], - "summary": "Get", - "description": "Retrieves complete details of a specific group by its GUID. Use this endpoint to fetch group information for display, verify group existence, or get current group settings.

**Use cases:** Displaying group profile/details page, checking if a group exists before performing operations, fetching current group settings and metadata, or getting member count and owner information.

**Response includes:** Basic info (name, description, icon, type), membership (membersCount, owner, hasJoined if onBehalfOf used), metadata (custom data, tags, timestamps), and conversation (conversationId for messaging).", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - } - ], - "responses": { - "200": { - "description": "Returns the complete group object with all properties including membership status if onBehalfOf header is provided.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid": "project-group", - "name": "Project Group", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "public", - "scope": "admin", - "membersCount": 1, - "joinedAt": 1638440784, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1638440784, - "owner": "superhero4", - "tags": [ - "friends", - "project" - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Groups" - ], - "summary": "Update", - "description": "Updates an existing group's properties. Use this endpoint to modify group settings, change ownership, update metadata, or modify access controls. Only provided fields are updated; omitted fields remain unchanged.

**Use cases:** Changing group name or description, updating group icon/avatar, changing group type (public/private/password), transferring ownership to another user, updating custom metadata or tags, or removing optional fields using the unset parameter.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "New display name for the group. Leave empty to keep current name.", - "type": "string" - }, - "type": { - "description": "Change the group's access type. 'public': anyone can join. 'password': requires password to join (must provide password field). 'private': invitation only.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "New password for the group. Required when changing type to 'password'. Provide to update existing password. Not returned in responses.", - "type": "string" - }, - "icon": { - "description": "New URL for the group's avatar/icon. Must be a valid HTTP/HTTPS URL. Use 'unset' parameter to remove.", - "type": "string" - }, - "description": { - "description": "New description for the group. Use 'unset' parameter to remove.", - "type": "string" - }, - "metadata": { - "description": "New custom metadata object. Replaces existing metadata entirely. Use 'unset' parameter to remove.", - "type": "object" - }, - "owner": { - "description": "UID of the new owner. Transfers ownership and full admin privileges. Ignored if onBehalfOf header is present. New owner must be an existing user.", - "type": "string" - }, - "tags": { - "description": "New array of tags. Replaces all existing tags. Pass empty array to remove all tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "tag1" - ] - }, - "unset": { - "description": "Array of optional fields to remove/clear. Supported fields: 'icon', 'description', 'metadata'. Removes the field value entirely from the group.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "icon", - "description", - "metadata" - ] - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the updated group object with all current properties reflecting the changes made.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid": "project-group", - "name": "Project Group", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "public", - "scope": "admin", - "membersCount": 1, - "joinedAt": 1638440784, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1638440784, - "owner": "superhero4", - "tags": [ - "friends", - "project" - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Groups" - ], - "summary": "Delete", - "description": "Permanently deletes a group and all associated data. This action cannot be undone. Use this endpoint when a group is no longer needed or to clean up test data.

**Use cases:** Removing inactive or abandoned groups, cleaning up test/development groups, deleting groups that violate policies, or user-initiated group deletion (with onBehalfOf).

**What gets deleted:** Group metadata and settings, all messages in the group, member list and roles, banned users list, and associated conversation.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - } - ], - "responses": { - "200": { - "description": "Returns a success confirmation with the deleted group's GUID. The group and all associated data have been permanently removed.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Group with guid project-group has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/messages": { - "post": { - "tags": [ - "Messages" - ], - "summary": "Send Message", - "description": "Sends a message on behalf of a user to another user or group. Supports text, media (image/audio/video/file), and custom message types. Requires 'onBehalfOf' header with sender UID. Use for server-side messaging, chatbots, system notifications, or data migration.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "discriminator": { - "propertyName": "category", - "mapping": { - "message": "#/components/schemas/messageCategorySchema", - "custom": "#/components/schemas/customCategorySchema" - } - }, - "oneOf": [ - { - "$ref": "#/components/schemas/messageCategorySchema" - }, - { - "$ref": "#/components/schemas/customCategorySchema" - } - ] - }, - "examples": { - "Text Message": { - "$ref": "#/components/examples/text-message" - }, - "Media Message": { - "$ref": "#/components/examples/media-message" - }, - "Custom Message": { - "$ref": "#/components/examples/custom-message" - } - } - } - } - }, - "responses": { - "200": { - "description": "Create Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "metadata": { - "key1": "val1" - }, - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Messages" - ], - "summary": "List Messages", - "description": "Retrieves a paginated list of messages across all conversations. Filter by sender, receiver, message type, time range, or category (message/action/call/custom). Response includes message content, metadata, delivery/read receipts, and pagination cursor.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "searchKey", - "in": "query", - "description": "Fetches messages that include the searchKey.", - "schema": { - "type": "string" - } - }, - { - "name": "hideMessagesFromBlockedUsers", - "in": "query", - "description": "Fetches messages sent by users who are blocked by the requesting user.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hasAttachments", - "in": "query", - "description": "Fetches messages that include attachments.", - "schema": { - "type": "boolean" - } - }, - { - "name": "attachmentTypes", - "in": "query", - "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", - "schema": { - "type": "string", - "enum": [ - "image", - "video", - "audio", - "file" - ] - } - }, - { - "name": "hasMentions", - "in": "query", - "description": "Fetches messages that include mentions.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hasLinks", - "in": "query", - "description": "Fetches messages that include links.", - "schema": { - "type": "boolean" - } - }, - { - "name": "mentionedUids", - "in": "query", - "description": "Fetches messages that include the mentioned comma-separated UIDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hasReactions", - "in": "query", - "description": "Fetches messages that include reactions.", - "schema": { - "type": "boolean" - } - }, - { - "name": "receiverType", - "in": "query", - "description": "Displays messages based on receiverType (user/group)", - "schema": { - "type": "string", - "enum": [ - "user", - "group" - ] - } - }, - { - "name": "affix", - "in": "query", - "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "query", - "description": "Retrieves all those messages after the passed id.", - "schema": { - "type": "string" - } - }, - { - "name": "category", - "in": "query", - "description": "Filters messages by category. Possible values: message, action and custom.", - "schema": { - "type": "string", - "enum": [ - "message", - "action", - "custom" - ] - } - }, - { - "name": "type", - "in": "query", - "description": "Filters messages by type.", - "schema": { - "type": "string" - } - }, - { - "name": "sender", - "in": "query", - "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", - "schema": { - "type": "string" - } - }, - { - "name": "mentionsWithBlockedInfo", - "in": "query", - "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", - "schema": { - "type": "boolean" - } - }, - { - "name": "mentionswithTagInfo", - "in": "query", - "description": "Provides user tags for the mentioned users.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hideDeleted", - "in": "query", - "description": "Hides deleted messages from List.", - "schema": { - "type": "boolean" - } - }, - { - "name": "onlyDeleted", - "in": "query", - "description": "Includes only deleted messages in List.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hideReplies", - "in": "query", - "description": "Shows only messages skipping the replies in the message thread.", - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "Includes unread message count in List.", - "schema": { - "type": "boolean" - } - }, - { - "name": "unread", - "in": "query", - "description": "Retrieves all the unread messages in a conversation. It must be used alongside count query parameter.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sentAt", - "in": "query", - "description": "Fetches the messages list after a particular sentAt timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", - "schema": { - "type": "integer", - "default": "10" - } - }, - { - "name": "conversationId", - "in": "query", - "description": "Fetches all the messages belong to a particular conversation.", - "schema": { - "type": "string" - } - }, - { - "name": "withTags", - "in": "query", - "description": "This will fetch messages along with the tags.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "This will fetch only those messages belonging to the mentioned tags.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "categories", - "in": "query", - "description": "Fetches messages based on multiple categories.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "types", - "in": "query", - "description": "Fetches messages based on multiple types.", - "schema": { - "type": "array", - "items": {} - } - }, - { - "name": "fromTimestamp", - "in": "query", - "description": "Fetches the messages from this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "toTimestamp", - "in": "query", - "description": "Fetches the messages till this timestamp. It will be ignored if fromTimestamp is missing or empty.", - "schema": { - "type": "integer" - } - }, - { - "name": "hideQuotedMessages", - "in": "query", - "description": "If set to true, the API response will exclude all quotedMessage nodes from the returned messages. This allows clients to fetch only the messages without any quoted messages.", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "List Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - }, - "metadata": { - "key1": "val1" - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490 - } - ], - "meta": { - "current": { - "limit": 100, - "count": 1 - }, - "next": { - "affix": "append", - "sentAt": 1638423490, - "id": "1" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/messages/{id}": { - "get": { - "tags": [ - "Messages" - ], - "summary": "Get Message", - "description": "Retrieves complete details of a specific message including content, metadata, delivery status, read receipts, and sender/receiver information.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Retreived Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "metadata": { - "key1": "val1" - }, - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Messages" - ], - "summary": "Update Message", - "description": "Edits an existing message on behalf of the original sender. Requires 'onBehalfOf' header. Only the original sender can edit. Edit history is preserved (editedAt, editedBy fields). Cannot change message type or receiver.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "The data that needs to be modified.", - "properties": { - "text": { - "type": "string" - }, - "metadata": { - "type": "object" - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "tag1" - ] - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Updated Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "402", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "action", - "type": "message", - "data": { - "action": "edited", - "entities": { - "by": { - "entity": { - "uid": "superhero1", - "name": "Updated Name", - "status": "offline", - "role": "default", - "createdAt": 1639448370, - "updatedAt": 1640599553 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "createdAt": 1639448370 - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "69", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "hello spider", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "status": "offline", - "createdAt": 1639448370 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1639448370, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1640171302, - "editedAt": 1641477338, - "editedBy": "app_system", - "updatedAt": 1641477338, - "tags": [ - "t6" - ] - }, - "entityType": "message" - } - } - }, - "sentAt": 1641477338, - "updatedAt": 1641477338 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Messages" - ], - "summary": "Delete Message", - "description": "Deletes a message from the conversation. By default, soft-deletes showing 'message deleted' placeholder. Use 'permanent=true' query param for complete removal.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be deleted.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "permanent": { - "description": "Deletes the message permanently.", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Deleted Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "402", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "action", - "type": "message", - "data": { - "action": "edited", - "entities": { - "by": { - "entity": { - "uid": "superhero1", - "name": "Updated Name", - "status": "offline", - "role": "default", - "createdAt": 1639448370 - }, - "entityType": "user" - }, - "for": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "createdAt": 1639448370 - }, - "entityType": "user" - }, - "on": { - "entity": { - "id": "69", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "hello spider", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "status": "offline", - "createdAt": 1639448370 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1639448370, - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - } - }, - "sentAt": 1640171302, - "editedAt": 1641477338, - "editedBy": "app_system", - "updatedAt": 1641477338, - "tags": [ - "t6" - ] - }, - "entityType": "message" - } - } - }, - "sentAt": 1641477338, - "updatedAt": 1641477338 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/messages/{id}/reactions": { - "get": { - "tags": [ - "Messages" - ], - "summary": "List all reactions", - "description": "Retrieves all reactions on a message, grouped by emoji/unicode. Shows which users reacted with each emoji and reaction timestamps.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose reactions are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "List Reactions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/reactionSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/messageMetaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "messageId": "2", - "reaction": ":reaction", - "uid": "superhero1", - "reactedAt": 1700210335, - "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", - "status": "offline", - "role": "default", - "createdAt": 1698934972 - } - }, - { - "id": "2", - "messageId": "2", - "reaction": "😅", - "uid": "superhero1", - "reactedAt": 1700210456, - "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", - "status": "offline", - "role": "default", - "createdAt": 1698934972 - } - }, - { - "id": "5", - "messageId": "2", - "reaction": "😒", - "uid": "superhero2", - "reactedAt": 1700230866, - "reactedBy": { - "uid": "superhero2", - "name": "Captain America", - "status": "offline", - "role": "default", - "createdAt": 1698934987, - "conversationId": "superhero1_user_superhero2" - } - } - ], - "meta": { - "current": { - "limit": 100, - "count": 3 - }, - "next": { - "affix": "append", - "id": "5" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/messages/{id}/reactions/{reaction}": { - "get": { - "tags": [ - "Messages" - ], - "summary": "List reactions with a specific emoji/unicodes", - "description": "Retrieves users who reacted with a specific emoji. Use URL-encoded emoji in the path (e.g., %F0%9F%91%8D for thumbs up).", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose reactions are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - }, - { - "name": "reaction", - "in": "path", - "description": "reaction whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reaction", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Get Reactions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/reactionSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/messageMetaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "messageId": "1", - "reaction": "😅", - "uid": "superhero1", - "reactedAt": 1702638595, - "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", - "status": "available", - "role": "default", - "lastActiveAt": 1689082633, - "createdAt": 1684751861 - } - } - ], - "meta": { - "current": { - "limit": 100, - "count": 1 - }, - "next": { - "affix": "append", - "id": "1" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Messages" - ], - "summary": "Add reaction", - "description": "Adds a reaction to a message on behalf of a user. Requires 'onBehalfOf' header. Supports any emoji or unicode. Users can add multiple different reactions to the same message.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message to react.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - }, - { - "name": "reaction", - "in": "path", - "description": "reaction to react.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reaction", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Adding reaction", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageReactionSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "Hi,", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "status": "offline" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "status": "offline", - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - }, - "reactions": [ - { - "reaction": ":reaction", - "count": 1 - }, - { - "reaction": "😅", - "count": 1 - }, - { - "reaction": "😒", - "count": 1, - "reactedByMe": true - }, - { - "reaction": "🤨", - "count": 1, - "reactedByMe": true - } - ] - }, - "sentAt": 1700210266, - "updatedAt": 1700210266 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Messages" - ], - "summary": "Remove reaction", - "description": "Removes a specific reaction from a message on behalf of a user. Requires 'onBehalfOf' header.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose reaction is to be removed.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - }, - { - "name": "reaction", - "in": "path", - "description": "reaction to be removed.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reaction", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Remove Reactions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageReactionSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "text", - "data": { - "text": "Hi,", - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "status": "offline" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "status": "offline", - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - }, - "reactions": [ - { - "reaction": ":reaction", - "count": 1 - }, - { - "reaction": "😅", - "count": 1 - }, - { - "reaction": "😒", - "count": 1, - "reactedByMe": true - } - ] - }, - "sentAt": 1700210266, - "updatedAt": 1700210266 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/conversations": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "List conversations", - "description": "Retrieves a paginated list of conversations for your app. A conversation represents an ongoing chat thread between users or within a group, containing the last message, unread count, and participant details. Use this endpoint to build conversation list screens, implement search functionality, or sync conversation state. When the onBehalfOf header is provided, returns user-specific data like unread counts.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed. When provided, returns conversations specific to that user with their unread counts and conversation state. Without this header, returns all conversations across the app ordered by uid, updatedAt, and conversationWith. With this header, conversations are ordered by updatedAt and conversationWith.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "searchKey", - "in": "query", - "description": "Search term to filter conversations by the name of the user or group. Performs a partial match search on conversation participant names.", - "schema": { - "type": "string" - } - }, - { - "name": "conversationType", - "in": "query", - "description": "Filter by conversation type. Use 'user' for one-on-one conversations or 'group' for group conversations. Omit to retrieve both types.", - "schema": { - "type": "string", - "enum": [ - "user", - "group" - ] - } - }, - { - "name": "withTags", - "in": "query", - "description": "When true, includes tag information for groups in the response. Useful for filtering or categorizing conversations by group tags.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "Filter conversations to only include groups that have all of the specified tags. Pass multiple tags as comma-separated values.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "withUserAndGroupTags", - "in": "query", - "description": "When true, includes tag information for both users and groups in the conversationWith object. Enables client-side filtering by participant tags.", - "schema": { - "type": "boolean" - } - }, - { - "name": "includeBlockedUsers", - "in": "query", - "description": "When true, includes conversations with users that the onBehalfOf user has blocked. By default, blocked user conversations are excluded.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "withBlockedInfo", - "in": "query", - "description": "When true, includes blocking relationship details (hasBlockedMe, blockedByMe) for user conversations. Useful for displaying block status in the UI.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "userTags", - "in": "query", - "description": "Filter conversations to only include users that have all of the specified tags. Pass multiple tags as comma-separated values.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "groupTags", - "in": "query", - "description": "Filter conversations to only include groups that have all of the specified tags. Pass multiple tags as comma-separated values.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "unread", - "in": "query", - "description": "When true, returns only conversations with unread messages (unreadMessageCount > 0). Useful for building an unread conversations view.", - "schema": { - "type": "boolean" - } - }, - { - "name": "perPage", - "in": "query", - "description": "Number of conversations to return per page. Use with the page parameter for pagination through large conversation lists.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "page", - "in": "query", - "description": "Page number for paginated results. Use with perPage to navigate through conversation lists. First page is 1.", - "schema": { - "type": "integer", - "default": "1" - } - }, - { - "name": "hideAgentic", - "in": "query", - "description": "When true, excludes AI agent conversations from the results. Use this to show only human-to-human conversations.", - "schema": { - "type": "boolean" - } - }, - { - "name": "onlyAgentic", - "in": "query", - "description": "When true, returns only AI agent conversations. Use this to build a dedicated AI chat interface.", - "schema": { - "type": "boolean" - } - }, - { - "name": "useCursoredIndex", - "in": "query", - "description": "Enable cursor-based pagination for better performance with large datasets. Set to 1 (enabled) or 0 (disabled). Cursor pagination is recommended for apps with many conversations.", - "schema": { - "type": "integer", - "default": 1, - "enum": [ - 0, - 1 - ] - } - } - ], - "responses": { - "200": { - "description": "Returns a paginated list of conversations with metadata including unread counts, last message details, and conversation participant information.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562, - "receipts": { - "data": [ - [] - ] - } - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ], - "meta": { - "pagination": { - "total": 1, - "count": 1, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/conversations/{conversationId}": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Get conversation", - "description": "DEPRECATED: This endpoint is deprecated. Please use the Get User Conversation (GET /users/{uid}/conversation) or Get Group Conversation (GET /groups/{guid}/conversation) endpoints instead.

Retrieves details of a specific conversation including the last message, unread count, and participant information.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed. Required to retrieve user-specific conversation data like unread counts.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/conversationId" - } - ], - "responses": { - "200": { - "description": "Returns the conversation details including last message, unread count, and the user or group the conversation is with.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562, - "receipts": { - "data": [ - [] - ] - } - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ] - } - } - } - } - }, - "deprecated": true, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Delete Conversation", - "description": "DEPRECATED: This endpoint is deprecated. Please use the Reset User Conversation (DELETE /users/{uid}/conversation) or Reset Group Conversation (DELETE /groups/{guid}/conversation) endpoints instead.

Deletes a conversation for the specified user. This removes the conversation from the user's list but does not delete the underlying messages.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the conversation is being deleted. The conversation will be removed from this user's conversation list.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/conversationId" - } - ], - "responses": { - "200": { - "description": "Returns a success confirmation with the deleted conversation ID.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The conversation group_project-group has been deleted successfully for all the users." - } - } - } - } - } - }, - "deprecated": true, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/conversation": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Get User Conversation", - "description": "Retrieves the one-on-one conversation between the onBehalfOf user and the user specified in the path. Returns conversation details including the last message, unread count, and user information.

Use this endpoint to fetch conversation details when a user opens a chat with another user, or to check for new messages in a specific conversation.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user whose perspective is used to retrieve the conversation. This determines the unread count and conversation state returned.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/uid--conversation" - } - ], - "responses": { - "200": { - "description": "Returns the user conversation details including last message, unread count, and the other user's profile information.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562 - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ] - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Conversations" - ], - "summary": "Update User Conversation", - "description": "Updates the metadata of a one-on-one conversation for the onBehalfOf user. Currently supports adding or updating tags to categorize and organize conversations.

Use this endpoint to implement features like pinning conversations, marking favorites, or custom categorization in your app.", - "parameters": [ - { - "$ref": "#/components/parameters/uid--conversation" - }, - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user whose conversation is being updated. The tags will be associated with this user's view of the conversation.", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "tags": { - "description": "Array of string tags to associate with this conversation. Tags help organize and filter conversations. Pass an empty array to remove all tags.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the updated conversation details with the new tags applied.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562, - "receipts": { - "data": [ - [] - ] - } - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ] - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Reset User Conversation", - "description": "Resets or deletes a one-on-one conversation for the onBehalfOf user. This removes the conversation from the user's list and optionally deletes the messages permanently.

Use this endpoint when a user wants to clear their chat history with another user. The other participant's conversation view is not affected unless deleteMessagesPermanently is true.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user whose conversation view is being reset. The conversation will be removed from this user's list.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/uid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "conversationWith": { - "description": "UID of the other user in the conversation. Specifies which conversation to reset.", - "type": "string" - }, - "deleteMessagesPermanently": { - "description": "When true, permanently deletes all messages in the conversation for both users. This action cannot be undone. Default is false.", - "type": "boolean" - }, - "preserveOrder": { - "description": "When true, maintains the conversation's position in the user's conversation list after reset. Useful for keeping important conversations visible.", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation with the reset conversation ID.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/conversation/delivered": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Mark User Conversation As Delivered", - "description": "Marks messages in a one-on-one conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered.

Use this endpoint to sync delivery status when messages are received on a device. This updates the delivery receipts visible to the sender.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user who received the messages. Delivery receipts will be recorded for this user.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/uid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message up to which all messages should be marked as delivered. All messages with ID less than or equal to this value will be marked.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating messages have been marked as delivered.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "Message": "All the messages from the user {{UID}} are marked as delivered for the user {{onBehalfOf}}." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/conversation/read": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Mark User Conversation As Read", - "description": "Marks messages in a one-on-one conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a conversation. This updates read receipts visible to the sender and resets the unread count.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user who read the messages. Read receipts will be recorded for this user.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/uid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message up to which all messages should be marked as read. All messages with ID less than or equal to this value will be marked.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating messages have been marked as read.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "Message": "All the messages from the user {{UID}} are marked as read for the user {{onBehalfOf}}." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Mark conversation messages as unread", - "description": "Marks messages in a one-on-one conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality, allowing users to flag conversations for follow-up or remind themselves to respond later.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user who wants to mark messages as unread. The unread status will be updated for this user's view of the conversation.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/uid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message from which subsequent messages should be marked as unread. Messages after this ID will appear as unread.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating messages have been marked as unread.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The messages after the message id 340 from the user demo1 are marked as unread for the user demo3." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/conversation": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Get Group Conversation", - "description": "Retrieves the group conversation details for the authenticated user. Requires 'onBehalfOf' header. Response includes group metadata, last message, and unread count.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/guid--conversation" - } - ], - "responses": { - "200": { - "description": "Get user Conversations", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562 - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ] - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Conversations" - ], - "summary": "Update Group Conversation", - "description": "Updates conversation settings like tags or custom metadata for a group conversation. Requires 'onBehalfOf' header.", - "parameters": [ - { - "$ref": "#/components/parameters/guid--conversation" - }, - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "tags": { - "description": "List of tags to identify specific conversation.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Updated user Conversations", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "conversationId": "group_project-group", - "conversationType": "group", - "unreadMessageCount": "0", - "createdAt": 1630071782, - "updatedAt": 1630481413, - "lastMessage": { - "id": "50", - "conversationId": "group_project-group", - "sender": "superhero4", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "unbanned", - "entities": { - "by": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1629869270 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "createdAt": 1629869270, - "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group1", - "type": "private", - "owner": "superhero4", - "createdAt": 1630071341, - "updatedAt": 1630305525, - "updatedBy": "superhero4", - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1630305562, - "updatedAt": 1630305562, - "receipts": { - "data": [ - [] - ] - } - }, - "conversationWith": { - "guid": "project-group", - "name": "Project Group1", - "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", - "type": "private", - "scope": "participant", - "membersCount": 4, - "joinedAt": 1630071782, - "conversationId": "group_project-group", - "hasJoined": true, - "createdAt": 1630071341, - "owner": "superhero4", - "updatedAt": 1630308875, - "updatedBy": "superhero4" - } - } - ] - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Reset Group Conversation", - "description": "Clears the group conversation history for a specific user. Messages remain visible to other group members. Requires 'onBehalfOf' header.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/guid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "preserveOrder": { - "description": "When set to true, maintains the conversation's position in the user's conversation list after reset.", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Resetted user Conversations", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/conversation/delivered": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Mark Group Conversation As Delivered", - "description": "Marks messages in a group conversation as delivered for the onBehalfOf user. All messages up to and including the specified messageId will be marked as delivered. Use this endpoint to sync delivery status when group messages are received on a device. This updates the delivery receipts visible to message senders.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the group member who received the messages. Delivery receipts will be recorded for this user.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/guid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message up to which all messages should be marked as delivered. All messages with ID less than or equal to this value will be marked.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating group messages have been marked as delivered.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "All the messages in group {{GUID}} are marked as delivered for the user {{onBehalfOf}}." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/conversation/read": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Mark Group Conversation As Read", - "description": "Marks messages in a group conversation as read for the onBehalfOf user. All messages up to and including the specified messageId will be marked as read, and the unread count will be updated accordingly.

Use this endpoint when a user views messages in a group conversation. This updates read receipts visible to message senders and resets the unread count.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the group member who read the messages. Read receipts will be recorded for this user.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/guid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message up to which all messages should be marked as read. All messages with ID less than or equal to this value will be marked.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating group messages have been marked as read.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "All the messages in group {{GUID}} are marked as read for the user {{onBehalfOf}}." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Mark Group Conversation As unread", - "description": "Marks messages in a group conversation as unread for the onBehalfOf user. Messages after the specified messageId will be marked as unread, increasing the unread count.

Use this endpoint to implement mark as unread functionality for group chats, allowing users to flag group conversations for follow-up.", - "parameters": [ - { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the group member who wants to mark messages as unread. The unread status will be updated for this user's view of the group conversation.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/guid--conversation" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "messageId": { - "description": "The ID of the message from which subsequent messages should be marked as unread. Messages after this ID will appear as unread.", - "type": "integer" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success confirmation indicating group messages have been marked as unread.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The messages after the message id 340 from the user demo1 are marked as unread for the user demo3." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/auth_tokens": { - "post": { - "tags": [ - "Auth Tokens" - ], - "summary": "Create", - "description": "Creates a new authentication token for a user. Auth tokens are used to authenticate users in the CometChat SDK without requiring them to log in with credentials.

**Use cases:** Server-side user authentication (generate tokens on your backend and pass them to your client app), multi-device login (create separate tokens for each device a user logs in from), and session management (track and manage user sessions across devices).

**Token behavior:** By default, if a valid token already exists for the user, it will be returned instead of creating a new one. Use the force parameter to always generate a new token, invalidating the previous one. Tokens do not expire automatically but can be deleted manually.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user to create an auth token for. The user must exist in your CometChat app.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "force": { - "description": "When true, generates a new auth token even if a valid one exists, invalidating the previous token. Use this when you need to force re-authentication or rotate tokens for security. Default: false.", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Auth token created or retrieved successfully. Use the authToken value to authenticate the user in the CometChat SDK.", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", - "createdAt": 1630306819 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Auth Tokens" - ], - "summary": "List", - "description": "Retrieves all active authentication tokens for a specific user. Use this endpoint to audit user sessions, identify devices a user is logged into, or manage multi-device authentication.

**Use cases:** Session auditing (see all active sessions for a user), security review (identify potentially compromised tokens), and multi-device management (track which devices a user is logged into).", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user whose auth tokens you want to list.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - } - ], - "responses": { - "200": { - "description": "List of all active auth tokens for the user. Each token represents an active session or device.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", - "createdAt": 1630306819 - } - ], - "meta": { - "pagination": { - "total": 1, - "count": 1, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Auth Tokens" - ], - "summary": "Flush", - "description": "Deletes all authentication tokens for a user, immediately logging them out of all devices and sessions. Use this endpoint for security purposes when you need to force a user to re-authenticate everywhere.

**When to use:** Security incidents (force logout when account may be compromised), password changes (invalidate all sessions after password reset), account suspension (immediately revoke all access for a user), or user requests (allow users to log out of all devices).", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user whose auth tokens should be deleted. All tokens for this user will be invalidated.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - } - ], - "responses": { - "200": { - "description": "All auth tokens for the user have been deleted. The user is now logged out of all devices.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Cleared Auth Tokens successfully for uid superhero1." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/auth_tokens/{authToken}": { - "get": { - "tags": [ - "Auth Tokens" - ], - "summary": "Get", - "description": "Retrieves details of a specific authentication token. Use this endpoint to verify if a token is valid or to get token metadata.

**Use cases:** Token validation (verify if a specific token is still active), session lookup (get details about a specific user session), and debugging (troubleshoot authentication issues).", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user who owns the auth token.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - }, - { - "$ref": "#/components/parameters/authToken" - } - ], - "responses": { - "200": { - "description": "Auth token details retrieved successfully. Shows the token value and when it was created.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", - "createdAt": 1630306819 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Auth Tokens" - ], - "summary": "Update", - "description": "Updates metadata associated with an authentication token. Use this endpoint to track additional information about user sessions such as device type, platform, or app version.

**Use cases:** Device tracking (record which device/platform is using each token), app analytics (track which app versions are in use), and session management (store custom session metadata).", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user who owns the auth token.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - }, - { - "name": "authToken", - "in": "path", - "description": "The auth token string to update. This is the full token value returned when the token was created.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Auth Token", - "value": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8" - } - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "platform": { - "description": "The platform or operating system where this token is being used. Examples: 'ios', 'android', 'web', 'react-native'. Useful for tracking device types.", - "type": "string" - }, - "userAgent": { - "description": "The user agent string from the client application. Helps identify browser/app versions and device information.", - "type": "string" - }, - "appInfo": { - "description": "Custom JSON object containing additional app information such as app version, build number, or other metadata relevant to your application.", - "type": "object" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Auth token updated successfully with the new metadata.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", - "createdAt": 1630306819 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Auth Tokens" - ], - "summary": "Delete", - "description": "Deletes a specific authentication token, logging the user out of that particular session or device. Use this endpoint for targeted session management without affecting other devices.

**Use cases:** Single device logout (log out from one device while staying logged in on others), session cleanup (remove old or unused tokens), and security (revoke a specific compromised token).", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier of the user who owns the auth token.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "superhero1" - } - } - }, - { - "name": "authToken", - "in": "path", - "description": "The specific auth token to delete. This will invalidate only this token, not other tokens for the same user.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Auth Token", - "value": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8" - } - } - } - ], - "responses": { - "200": { - "description": "Auth token deleted successfully. The session using this token is now invalid.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Auth token has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/members": { - "post": { - "tags": [ - "Group Members" - ], - "summary": "Add members", - "description": "Adds multiple users to a group with specified permission levels (scopes). Use this endpoint to bulk-add members to a group, assign roles, or pre-ban users. Each user can be added with a specific scope that determines their permissions within the group.

**Use cases:** Adding team members to a project group, inviting users to a private group, setting up group admins and moderators, or pre-banning problematic users from joining.

**Member scopes:** admin has full control (can manage members, settings, and content), moderator can kick/ban participants and delete messages, participant is a standard member (can send messages and view content).", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "admins": { - "description": "Array of UIDs to add as group admins. Admins have full control: manage members, change settings, delete messages, and modify group properties.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "moderators": { - "description": "Array of UIDs to add as group moderators. Moderators can kick/ban participants, delete messages, but cannot change group settings or manage admins.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "participants": { - "description": "Array of UIDs to add as regular participants. Participants can send messages and view content but have no management permissions.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "usersToBan": { - "description": "Array of UIDs to ban from the group. Banned users cannot join, view content, or send messages to this group.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "type": "object" - }, - "examples": { - "Add Members": { - "summary": "Add Members", - "value": { - "participants": [ - "cometchat-uid-1" - ] - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Returns the result for each user organized by scope. Each entry shows success status and, for successful additions, includes the action message that was sent to the group.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "usersToBan": { - "superhero6": { - "success": true - } - }, - "admins": { - "superhero1": { - "success": true, - "data": { - "id": "32", - "conversationId": "group_project-group", - "sender": "app_system", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "added", - "entities": { - "by": { - "entity": { - "uid": "app_system", - "name": "System", - "role": "default", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group", - "tags": [ - "friends", - "project" - ], - "type": "public", - "owner": "superhero2", - "createdAt": 1625460947, - "description": "project related discussions between members", - "membersCount": 2, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1625460972, - "updatedAt": 1625460972 - } - } - }, - "moderators": { - "superhero3": { - "success": true, - "data": { - "id": "33", - "conversationId": "group_project-group", - "sender": "app_system", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "added", - "entities": { - "by": { - "entity": { - "uid": "app_system", - "name": "System", - "role": "default", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "createdAt": 1596537299, - "updatedAt": 1625234590 - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group", - "tags": [ - "friends", - "project" - ], - "type": "public", - "owner": "superhero2", - "createdAt": 1625460947, - "updatedAt": 1625460972, - "description": "project related discussions between members", - "membersCount": 3, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1625460973, - "updatedAt": 1625460973 - } - } - }, - "participants": { - "superhero4": { - "success": true, - "data": { - "id": "34", - "conversationId": "group_project-group", - "sender": "app_system", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "added", - "entities": { - "by": { - "entity": { - "uid": "app_system", - "name": "System", - "role": "default", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero4", - "name": "Wolverine", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group", - "tags": [ - "friends", - "project" - ], - "type": "public", - "owner": "superhero2", - "createdAt": 1625460947, - "updatedAt": 1625460973, - "description": "project related discussions between members", - "membersCount": 4, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1625460973, - "updatedAt": 1625460973 - } - }, - "superhero5": { - "success": true, - "data": { - "id": "35", - "conversationId": "group_project-group", - "sender": "app_system", - "receiverType": "group", - "receiver": "project-group", - "category": "action", - "type": "groupMember", - "data": { - "action": "added", - "entities": { - "by": { - "entity": { - "uid": "app_system", - "name": "System", - "role": "default", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "on": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "createdAt": 1596537299 - }, - "entityType": "user" - }, - "for": { - "entity": { - "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", - "name": "Project Group", - "tags": [ - "friends", - "project" - ], - "type": "public", - "owner": "superhero2", - "createdAt": 1625460947, - "updatedAt": 1625460973, - "description": "project related discussions between members", - "membersCount": 5, - "conversationId": "group_project-group" - }, - "entityType": "group" - } - } - }, - "sentAt": 1625460973, - "updatedAt": 1625460973 - } - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Group Members" - ], - "summary": "List", - "description": "Retrieves a paginated list of all members in a group. Use this endpoint to display member lists, check membership, or sync member data with your application.

**Use cases:** Displaying group member list in UI, checking who is in a group before sending messages, building member management interfaces, or filtering members by online status or role.

**Response includes for each member:** User details (uid, name, avatar, status), group-specific info (scope as admin/moderator/participant, joinedAt), and conversation ID for direct messaging.", - "parameters": [ - { - "$ref": "#/components/parameters/guid" - }, - { - "name": "perPage", - "in": "query", - "description": "Number of members to return per page. Use for pagination. Default: 100, Maximum: 1000.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "status", - "in": "query", - "description": "Filter members by online status. 'available': currently online users. 'offline': users not currently connected.", - "schema": { - "type": "string", - "enum": [ - "available", - "offline" - ] - } - }, - { - "name": "page", - "in": "query", - "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through member list.", - "schema": { - "type": "integer", - "default": "1" - } - }, - { - "name": "scopes", - "in": "query", - "description": "Filter members by permission scope. Comma-separated list of scopes: 'admin', 'moderator', 'participant'. Returns members matching ANY of the specified scopes.", - "style": "form", - "explode": false, - "schema": { - "type": "array", - "items": {} - } - } - ], - "responses": { - "200": { - "description": "Returns an array of member objects with user details and group-specific information like scope and join date. Includes pagination metadata.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "scope": "participant", - "joinedAt": 1638360106, - "createdAt": 1629869270, - "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" - }, - { - "uid": "superhero3", - "name": "Captain America", - "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "metadata": { - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "default", - "scope": "participant", - "joinedAt": 1638360106, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" - }, - { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "scope": "moderator", - "joinedAt": 1638360106, - "createdAt": 1629869270, - "conversationId": "superhero4_user_superhero5" - }, - { - "uid": "superhero4", - "name": "Wolverine", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", - "status": "offline", - "role": "default", - "scope": "admin", - "joinedAt": 1638359534, - "createdAt": 1629869270 - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - }, - "cursor": { - "updatedAt": 1638354799, - "affix": "prepend" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/members/{uid}": { - "put": { - "tags": [ - "Group Members" - ], - "summary": "Change Scope", - "description": "Changes the permission level (scope) of an existing group member. Use this endpoint to promote or demote members between admin, moderator, and participant roles.

**Use cases:** Promoting a participant to moderator or admin, demoting an admin to participant, adjusting team roles as responsibilities change, or building member management interfaces.

**Available scopes:** admin has full control over group settings, members, and content. moderator can kick/ban participants and delete messages. participant is a standard member with messaging permissions only.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - }, - { - "$ref": "#/components/parameters/uid" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "scope": { - "description": "New permission level for the member. Options: 'admin' (full control), 'moderator' (can manage participants), 'participant' (standard member).", - "type": "string", - "default": "participant" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the updated membership details including the new scope and join timestamp.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "guid": { - "description": "The group's unique identifier", - "type": "string" - }, - "uid": { - "description": "The member's unique identifier", - "type": "string" - }, - "scope": { - "description": "The member's new permission level (admin, moderator, or participant)", - "type": "string" - }, - "joinedAt": { - "description": "Unix timestamp when the user joined the group", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid": "supergroup", - "uid": "superhero2", - "scope": "participant", - "joinedAt": 1631690303 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Group Members" - ], - "summary": "Kick", - "description": "Removes a member from a group. The kicked user loses access to the group immediately but can rejoin if the group is public or if invited again. Use this for temporary removal; use ban for permanent exclusion.

**Use cases:** Removing inactive members from a group, enforcing group rules by removing violators, cleaning up group membership, or user-initiated removal (with onBehalfOf).

**Difference from Ban:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user from the group until unbanned.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - }, - { - "$ref": "#/components/parameters/uid" - } - ], - "responses": { - "200": { - "description": "Returns a success confirmation with details about the kicked member and group.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The member with superhero3 has been kicked from the Group with supergroup." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/bannedusers/{uid}": { - "post": { - "tags": [ - "Banned Users" - ], - "summary": "Ban", - "description": "Permanently bans a user from a group. Banned users cannot join, view content, or send messages to the group until they are unbanned. Use this for serious violations or to permanently exclude users.

**Use cases:** Permanently removing users who violate group rules, blocking spammers or abusive users, preventing specific users from accessing private groups, or enforcing moderation policies.

**Difference from Kick:** Kick removes the user but they can rejoin public groups or be re-added. Ban permanently blocks the user until explicitly unbanned.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - }, - { - "$ref": "#/components/parameters/uid" - } - ], - "responses": { - "200": { - "description": "Returns a success confirmation with details about the banned user and group.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The user with uid superhero3 has been banned from the Group with supergroup." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Banned Users" - ], - "summary": "Unban", - "description": "Removes a ban from a user, allowing them to rejoin the group. Use this to restore access for users who were previously banned. The user is not automatically added back to the group; they must join again.

**Use cases:** Restoring access after a temporary ban period, reversing accidental bans, giving users a second chance after policy violations, or implementing ban appeal processes.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - }, - { - "$ref": "#/components/parameters/uid" - } - ], - "responses": { - "200": { - "description": "Returns a success confirmation with details about the unbanned user and group.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The user with uid superhero3 has been unbanned from the Group with supergroup." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/bannedusers": { - "get": { - "tags": [ - "Banned Users" - ], - "summary": "List", - "description": "Retrieves a paginated list of all users banned from a specific group. Use this endpoint to review banned users, build moderation interfaces, or audit group access controls.

**Use cases:** Displaying banned users list in admin panel, reviewing bans for potential appeals, auditing group moderation actions, or building ban management interfaces.

**Response includes for each banned user:** User details (uid, name, avatar, status, role), timestamps (createdAt, updatedAt), and conversation ID for reference.", - "parameters": [ - { - "$ref": "#/components/parameters/guid" - } - ], - "responses": { - "200": { - "description": "Returns an array of banned user objects with their details and pagination metadata.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - }, - "meta": { - "type": "object" - }, - "cursor": { - "properties": { - "updatedAt": { - "type": "integer" - }, - "affix": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "email": "user@email.com", - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "manager", - "createdAt": 1638354015, - "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" - }, - { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "createdAt": 1629869270, - "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" - }, - { - "uid": "superhero3", - "name": "Captain America", - "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "metadata": { - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "default", - "blockedByMe": true, - "blockedByMeAt": 1638346853, - "blockedAt": 1638346853, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/friends": { - "post": { - "tags": [ - "Friends" - ], - "summary": "Add Friends", - "description": "Adds one or more users as friends for the specified user. Friends relationships are bidirectional - when user A adds user B as a friend, both users become friends with each other. Use this endpoint to implement social features like friend lists and contact management.

**Use cases:** Implementing friend/contact list features. Syncing friend relationships from your application. Creating mutual connections between users. Building social networking features.", - "parameters": [ - { - "$ref": "#/components/parameters/uid" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "accepted": { - "description": "Array of UIDs to add as friends. Each UID must belong to an existing user. The friendship will be created as 'accepted' status immediately (no pending state).", - "type": "array", - "items": { - "type": "string" - } - }, - "addToConversations": { - "description": "When set to true, automatically creates 1-on-1 conversation entries between the user and each new friend. This makes the friends appear in the conversations list immediately. Default is false.", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the result of the friend addition operation for each requested UID. Each entry indicates whether the friendship was successfully created.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Result object containing the outcome for each friend addition request.", - "properties": { - "accepted": { - "description": "Object containing results for each UID. Keys are the friend UIDs.", - "properties": { - "": { - "description": "Result object for each friend containing success status and message.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "accepted": { - "superhero2": { - "success": true, - "message": "Created relationship with status accepted." - }, - "superhero3": { - "success": true, - "message": "Created relationship with status accepted." - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Friends" - ], - "summary": "List Friends", - "description": "Retrieves a paginated list of friends for the specified user. Use this endpoint to display friend lists, search within friends, or sync friend data with your application.

**Use cases:** Displaying a user's friend/contact list. Searching for specific friends by name or UID. Building friend suggestion features. Syncing friend lists with your application.

**Response includes:** Full user profile for each friend. Online/offline status. Block status if applicable. Conversation ID for direct messaging. Pagination metadata for large friend lists.", - "parameters": [ - { - "$ref": "#/components/parameters/uid" - }, - { - "name": "searchKey", - "in": "query", - "description": "Search keyword for filtering friends. Performs prefix matching (LIKE%) on both UID and name fields. For example, 'john' matches 'john_doe', 'johnny', etc.", - "schema": { - "type": "string" - } - }, - { - "name": "perPage", - "in": "query", - "description": "Number of friends to return per page. Use smaller values for faster responses, larger values to reduce API calls. Default: 100, Maximum: 1000.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "page", - "in": "query", - "description": "Page number for pagination. Starts at 1. Use with perPage to navigate through large friend lists.", - "schema": { - "type": "integer", - "default": "1" - } - } - ], - "responses": { - "200": { - "description": "Returns a paginated list of friends with their full profile information, status, and conversation IDs.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Array of friend user objects with full profile information.", - "type": "array", - "items": {} - }, - "meta": { - "description": "Pagination metadata including total count, current page, and cursor for real-time sync.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "email": "user@email.com", - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "manager", - "createdAt": 1638354015, - "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" - }, - { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "createdAt": 1629869270, - "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" - }, - { - "uid": "superhero3", - "name": "Captain America", - "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", - "metadata": { - "contactNumber": "0123456789" - }, - "status": "offline", - "role": "default", - "blockedByMe": true, - "blockedByMeAt": 1638346853, - "blockedAt": 1638346853, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - }, - "cursor": { - "updatedAt": 1638354799, - "affix": "prepend" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Friends" - ], - "summary": "Remove Friends", - "description": "Removes one or more friends from the specified user's friend list. Since friendships are bidirectional, this removes the friendship for both users. Use this endpoint to implement unfriend functionality in your application.

**Use cases:** Implementing unfriend/remove contact features. Syncing friend removals from your application. Admin-initiated friend relationship cleanup. Bulk removal of friend connections.", - "parameters": [ - { - "$ref": "#/components/parameters/uid" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "friends": { - "description": "Array of friend UIDs to remove. Each UID must belong to a user who is currently a friend of the specified user.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Confirms successful removal of the friend relationships. Returns a success message indicating the friendships were deleted.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Result object confirming the friend removal operation.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Deleted the friend relations successfully" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/blockedusers": { - "post": { - "tags": [ - "Blocked Users" - ], - "summary": "Block User", - "description": "Blocks one or more users on behalf of the specified user. Blocked users cannot send messages to the blocking user, and their messages will not be delivered. Use this endpoint to implement user blocking functionality in your application.

**When to use:** Implementing user blocking features, preventing harassment or unwanted contact, admin-initiated blocking for policy enforcement, or bulk blocking of spam accounts.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The UID of the user who is blocking other users. This user will no longer receive messages from the blocked users.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "blockedUids" - ], - "properties": { - "blockedUids": { - "description": "Array of UIDs to block. Each UID must belong to an existing user. Users already blocked will be skipped.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the result of the block operation for each requested UID. Each entry indicates whether the block was successful.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Object containing the result for each blocked UID. Keys are the blocked UIDs.", - "properties": { - "": { - "description": "Result object for each blocked user containing success status and message.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "superhero4": { - "success": true, - "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Blocked Users" - ], - "summary": "Unblock User", - "description": "Unblocks one or more previously blocked users on behalf of the specified user. After unblocking, the previously blocked users can send messages again. Use this endpoint to restore communication between users.

**When to use:** Allowing users to unblock others they previously blocked, admin-initiated unblocking for dispute resolution, bulk unblocking after policy changes, or restoring communication after temporary blocks.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The UID of the user who is unblocking other users. This user will start receiving messages from the unblocked users again.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "blockedUids" - ], - "properties": { - "blockedUids": { - "description": "Array of UIDs to unblock. Each UID must belong to a user that was previously blocked by the specified user.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the result of the unblock operation for each requested UID. Each entry indicates whether the unblock was successful.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Object containing the result for each unblocked UID. Keys are the unblocked UIDs.", - "properties": { - "": { - "description": "Result object for each unblocked user containing success status and message.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "superhero4": { - "success": true, - "message": "The user with UID superhero1 has unblocked user with UID superhero3 successfully." - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Blocked Users" - ], - "summary": "List Blocked Users", - "description": "Retrieves a paginated list of users that have been blocked by the specified user. Use this endpoint to display a user's block list or to check if specific users are blocked.

**When to use:** Displaying a user's blocked users list in settings, checking block status before initiating communication, admin review of user blocking patterns, or syncing block lists with your application.

**Response includes:** Full user profile for each blocked user, block timestamp (blockedAt, blockedByMeAt), block status flags (blockedByMe), and pagination metadata for large block lists.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The UID of the user whose blocked users list you want to retrieve.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Returns a paginated list of blocked users with their full profile information and block timestamps.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "Array of blocked user objects with full profile information and block status.", - "type": "array", - "items": { - "allOf": [ - { - "$ref": "#/components/schemas/userSchema" - }, - { - "$ref": "#/components/schemas/blockedUserSchema" - } - ] - } - }, - "meta": { - "description": "Pagination metadata including total count, current page, and cursor for real-time sync.", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "uid": "superhero6", - "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "rawMetadata": "{'gender':'Male'}" - }, - "status": "offline", - "role": "manager", - "blockedByMe": true, - "blockedByMeAt": 1638346853, - "blockedAt": 1638346853, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" - }, - { - "uid": "superhero2", - "name": "Captain America", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", - "metadata": { - "rawMetadata": "{'gender':'Male'}" - }, - "status": "offline", - "role": "manager", - "blockedByMe": true, - "blockedByMeAt": 1638346853, - "blockedAt": 1638346853, - "createdAt": 1629869270, - "updatedAt": 1638351060, - "conversationId": "superhero1_user_superhero2" - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 5, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - }, - "cursor": { - "updatedAt": 1638354799, - "affix": "prepend" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/roles": { - "post": { - "tags": [ - "Roles" - ], - "summary": "Create", - "description": "Creates a new role for role-based access control (RBAC) in your CometChat app. Roles define what users can do and see within the chat system.

**Use cases:** Create different permission levels (admin, moderator, member, guest), restrict messaging to friends only for certain user types, control which users can see other users in the user list, and implement tiered access for freemium apps.

**Role settings:** listUsers controls who appears in user lists (all shows everyone, friendsOnly shows only friends), and sendMessagesTo controls who can receive messages (all allows messaging anyone, friendsOnly restricts to friends).", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "role", - "name" - ], - "properties": { - "role": { - "description": "Unique identifier for the role. Use lowercase alphanumeric characters and underscores. Examples: 'admin', 'moderator', 'premium_user'. Cannot be changed after creation.", - "type": "string", - "default": "" - }, - "name": { - "description": "Human-readable display name for the role. Shown in the dashboard and can be used in your UI. Examples: 'Administrator', 'Premium Member'.", - "type": "string", - "default": "" - }, - "description": { - "description": "Optional description explaining the role's purpose and permissions. Useful for documentation and admin reference.", - "type": "string", - "default": "" - }, - "metadata": { - "description": "Custom JSON object for storing additional role information. Use for app-specific data like permission flags, tier levels, or contact information.", - "type": "object" - }, - "settings": { - "description": "Role behavior settings. 'listUsers' controls user visibility ('all' or 'friendsOnly'). 'sendMessagesTo' controls messaging permissions ('all' or 'friendsOnly').", - "type": "object" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Role created successfully. Users assigned this role will inherit its permissions.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "role": "manager", - "name": "manager", - "description": "This role gives an update access", - "metadata": { - "email": "managers@gmail.com" - }, - "settings": { - "listUsers": "all", - "sendMessagesTo": "friendsOnly" - }, - "createdAt": 1638343994 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Roles" - ], - "summary": "List", - "description": "Retrieves all roles configured in your CometChat app. Use this endpoint to audit role configurations, build role management interfaces, or verify role settings.\n\nDefault role: Every app has a default role that is automatically assigned to new users if no role is specified during user creation.\n\nLimitations: Requires API key with fullAccess scope.", - "responses": { - "200": { - "description": "List of all roles with their configurations, settings, and metadata.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "role": "manager", - "name": "manager", - "description": "This role gives an update access", - "metadata": { - "email": "managers@gmail.com" - }, - "settings": { - "listUsers": "all", - "sendMessagesTo": "friendsOnly" - }, - "createdAt": 1638343994 - }, - { - "role": "default", - "name": "Default Role", - "description": "This role gives full access ", - "createdAt": 1629869270, - "updatedAt": 1630306291 - } - ], - "meta": { - "pagination": { - "total": 2, - "count": 2, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/roles/{role}": { - "get": { - "tags": [ - "Roles" - ], - "summary": "Get", - "description": "Retrieves the complete configuration for a specific role including its settings, metadata, and description. Use this endpoint to verify role permissions before assigning users.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist.", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The unique identifier of the role to retrieve. This is the role ID specified when the role was created.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "manager" - } - } - } - ], - "responses": { - "200": { - "description": "Role configuration retrieved successfully with all settings and metadata.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "role": "manager", - "name": "manager", - "description": "This role gives an update access", - "metadata": { - "email": "managers@gmail.com" - }, - "settings": { - "listUsers": "all", - "sendMessagesTo": "friendsOnly" - }, - "createdAt": 1638343994 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Roles" - ], - "summary": "Update", - "description": "Updates an existing role's configuration. Use this endpoint to modify role permissions, update metadata, or change display information.\n\nLimitations: Role identifier cannot be changed (create a new role instead). Cannot update the default role's core settings. Requires API key with fullAccess scope.", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The unique identifier of the role to update. The role ID cannot be changed.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "manager" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Updated display name for the role.", - "type": "string", - "default": "" - }, - "description": { - "description": "Updated description explaining the role's purpose.", - "type": "string", - "default": "" - }, - "metadata": { - "description": "Updated custom metadata. This replaces the existing metadata entirely.", - "type": "object", - "default": { - "email": "dummy@example.com" - } - }, - "unset": { - "description": "Array of fields to remove from the role. Use this to clear settings, description, or metadata without providing replacement values.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "settings", - "description", - "metadata" - ] - }, - "default": [] - }, - "settings": { - "description": "Updated role behavior settings. 'listUsers' controls user visibility ('all' or 'friendsOnly'). 'sendMessagesTo' controls messaging permissions ('all' or 'friendsOnly').", - "type": "object", - "default": [] - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Role updated successfully. All users with this role now have the updated permissions.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "role": "manager", - "name": "manager", - "description": "This role gives an update access", - "metadata": { - "email": "managers@gmail.com" - }, - "settings": { - "listUsers": "all", - "sendMessagesTo": "friendsOnly" - }, - "createdAt": 1638343994 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Roles" - ], - "summary": "Delete", - "description": "Permanently deletes a role from your CometChat app. Users currently assigned to this role will be automatically reassigned to the default role.\n\nLimitations: Cannot delete the default role. Requires API key with fullAccess scope. Returns 404 if role does not exist.", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The unique identifier of the role to delete. Users with this role will be reassigned to the default role.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "manager" - } - } - } - ], - "responses": { - "200": { - "description": "Role deleted successfully. Users previously assigned this role now have the default role.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Role manager has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/roles/{role}/restrictedfeatures": { - "post": { - "tags": [ - "Restrict Features" - ], - "summary": "Restrict Features", - "description": "Restricts specific API features for users with a particular role. Use this endpoint to implement fine-grained access control by blocking certain operations for specific user types.

**Common use cases:** Prevent guest users from deleting groups, block free-tier users from accessing premium features, and restrict moderators from certain admin operations.

**Feature keys:** Follow the pattern u.featureName for user-facing features. Examples include u.listUsers (List users endpoint), u.deleteGroup (Delete group endpoint), and u.createGroup (Create group endpoint).", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The role identifier to add feature restrictions to. Users with this role will be blocked from using the specified features.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "guest" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "featuresToRestrict" - ], - "properties": { - "featuresToRestrict": { - "description": "Array of feature keys to restrict for this role. Use the List Restricted Features endpoint to see available feature keys. Example: ['u.listUsers', 'u.deleteGroup']", - "type": "array", - "items": { - "type": "string" - }, - "default": "" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Features restricted successfully. Returns the status for each feature key.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "u.listUsers": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "u.listUsers": { - "success": true, - "message": "The feature u.listUsers has been restricted successfully." - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Restrict Features" - ], - "summary": "List Restricted Features", - "description": "Retrieves all features that are currently restricted for a specific role. Use this endpoint to audit role permissions or build a feature management interface.\n\nEach restricted feature includes: title (human-readable feature name), description (what the feature allows users to do), key (the feature key used when restricting/allowing features), and path (the API endpoint path associated with this feature).\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist.", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The role identifier to list restricted features for.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "guest" - } - } - } - ], - "responses": { - "200": { - "description": "List of features currently restricted for this role. Users with this role cannot access these features.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "key": { - "type": "string" - }, - "path": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - } - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "title": "Delete Group", - "description": "Allows logged-in user to delete a group.", - "key": "u.deleteGroup", - "path": "/v3/groups/{{guid}}", - "createdAt": 1639448370 - }, - { - "title": "List Users", - "description": "Allows logged-in user to fetch the user list.", - "key": "u.listUsers", - "path": "/v3/users", - "createdAt": 1639448370 - } - ], - "meta": { - "pagination": { - "total": 2, - "count": 2, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Restrict Features" - ], - "summary": "Allow Features", - "description": "Removes feature restrictions from a role, allowing users with that role to access previously blocked features. Use this endpoint to grant additional permissions or restore full access.\n\nOptions: Specify individual features to allow using featuresToAllow, or use allowAll: true to remove all restrictions at once.\n\nLimitations: Requires API key with fullAccess scope. Returns 404 if role does not exist. Allowing a feature that is not restricted has no effect (idempotent).", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The role identifier to remove feature restrictions from.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Role", - "value": "guest" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "featuresToAllow": { - "description": "Array of feature keys to allow (remove restrictions). Example: ['u.listUsers', 'u.deleteGroup']. Use the List Restricted Features endpoint to see currently restricted features.", - "type": "array", - "items": { - "type": "string" - }, - "default": "" - }, - "allowAll": { - "description": "Set to true to remove all feature restrictions for this role at once. When true, 'featuresToAllow' is ignored.", - "type": "boolean", - "default": "" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Feature restrictions removed successfully. Users with this role can now access the allowed features.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "The feature has been allowed successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/roles/{role}/permissions": { - "get": { - "tags": [ - "RBAC" - ], - "summary": "List Role Permissions", - "description": "Lists role permissions", - "operationId": "list-role-permissions", - "responses": { - "200": { - "description": "Lists role permissions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "createGroup", - "type": "role", - "title": "Allows/Denies creating groups", - "description": "Allows/Denies creating groups", - "dataType": "string", - "availableValues": [ - "allow", - "deny" - ], - "defaultValue": "allow", - "createdAt": 1765962204, - "updatedAt": 1765962204 - }, - { - "id": "sendMessage", - "type": "role", - "title": "Allows/Denies sending messages", - "description": "Allows/Denies sending messages", - "dataType": "string", - "availableValues": [ - "allow", - "deny" - ], - "defaultValue": "allow", - "createdAt": 1765962204, - "updatedAt": 1765962204 - }, - { - "id": "sendMessage.allowedMessageTypes", - "type": "role", - "title": "Allows sending messages of the specified types", - "description": "Allows sending messages of the specified types", - "dataType": "stringArray", - "availableValues": [ - "text", - "image", - "audio", - "video", - "file" - ], - "createdAt": 1765962204, - "updatedAt": 1765962204, - "defaultValue": [] - } - ], - "meta": { - "pagination": { - "total": 28, - "count": 28, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "RBAC" - ], - "summary": "Set Role Permissions", - "description": "Sets or updates permissions for a specific role", - "operationId": "set-role-permissions", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The role identifier to update permissions for", - "required": true, - "schema": { - "type": "string", - "example": "default" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "permissions" - ], - "properties": { - "permissions": { - "description": "Permissions object containing key-value pairs for role permissions", - "type": "object", - "example": { - "createGroup": "allow", - "listUsers.mode": "friends", - "createGroup.allowedGroupTypes": [ - "public" - ] - }, - "additionalProperties": true - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Role permissions updated successfully", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "sendMessage": { - "success": true, - "message": "Permission with id sendMessage have been mapped successfully to role default." - }, - "permissions": { - "listUsers": "allow", - "listUsers.mode": "all", - "listUsers.allowedRoles": [ - "new_role" - ], - "getUserDetails.mode": "friends", - "getUserDetails.allowedRoles": [ - "default" - ], - "sendMessage": "allow", - "sendMessage.mode": "all", - "sendMessage.allowedReceiverTypes": [ - "group" - ], - "sendMessage.allowedReceiverRoles": [ - "new_role", - "default" - ], - "sendMessage.allowedMessageTypes": [ - "file", - "audio", - "video", - "image", - "text" - ], - "sendMessage.allowedMessageCategories": [ - "message", - "custom" - ], - "editMessage": "deny", - "deleteMessage": "deny", - "sendMessage.allowedMimeTypes": [ - "image/png" - ], - "initiateCall": "allow", - "initiateCall.mode": "all", - "initiateCall.allowedReceiverRoles": [ - "new_role" - ], - "createGroup": "allow", - "createGroup.allowedGroupTypes": [ - "private" - ], - "listGroups": "allow", - "listGroups.allowedGroupTypes": [ - "password" - ], - "joinGroup": "allow", - "joinGroup.allowedGroupTypes": [ - "public" - ], - "listMessages.allowedMessageCategories": [ - "message" - ], - "listMessages.allowedMessageTypes": [ - "audio" - ] - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/scopes/{scope}/permissions": { - "get": { - "tags": [ - "RBAC" - ], - "summary": "List Scope Permissions", - "description": "Lists scope permissions", - "operationId": "list-scope-permissions", - "responses": { - "200": { - "description": "Lists scope permissions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "addReaction", - "type": "scope", - "title": "Allows member to list the members with specified scope", - "description": "Allows member to list the members with specified scope", - "dataType": "string", - "availableValues": [ - "allow", - "deny" - ], - "defaultValue": "allow", - "createdAt": 1765962204, - "updatedAt": 1765962204 - }, - { - "id": "sendMessage", - "type": "scope", - "title": "Allows/Denies sending messages", - "description": "Allows/Denies sending messages", - "dataType": "string", - "availableValues": [ - "allow", - "deny" - ], - "defaultValue": "allow", - "createdAt": 1765962204, - "updatedAt": 1765962204 - }, - { - "id": "initiateCall.allowedType", - "type": "scope", - "title": "Allows members to initiate call with the specified types", - "description": "Allows members to initiate call with the specified types", - "dataType": "stringArray", - "availableValues": [ - "audio", - "video" - ], - "createdAt": 1765962204, - "updatedAt": 1765962204, - "defaultValue": [] - } - ], - "meta": { - "pagination": { - "total": 11, - "count": 11, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "RBAC" - ], - "summary": "Set Scope Permissions", - "description": "Sets or updates permissions for a specific group scope", - "operationId": "set-scope-permissions", - "parameters": [ - { - "name": "guid", - "in": "path", - "description": "The group GUID to update scope permissions for", - "required": true, - "schema": { - "type": "string", - "example": "supergroup" - } - }, - { - "name": "scope", - "in": "path", - "description": "The scope identifier (e.g., admin, moderator, participant)", - "required": true, - "schema": { - "type": "string", - "example": "admin" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "permissions" - ], - "properties": { - "permissions": { - "description": "Permissions object containing key-value pairs for scope permissions", - "type": "object", - "example": { - "sendMessage": "deny", - "initiateCall": "friends" - }, - "additionalProperties": true - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Scope permissions updated successfully", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "sendMessage": { - "success": true, - "message": "Permission with id sendMessage have been mapped successfully to scope admin on group cometchat-guid-1." - }, - "permissions": { - "sendMessage": "allow", - "listMembers": "allow", - "listMembers.allowedScopes": "participant", - "addReaction": "deny", - "listReactions.allowedScopes": "moderator", - "listReactions": "deny", - "sendThreadedMessage": "allow", - "initiateCall": "deny", - "initiateCall.allowedScopes": "participant", - "initiateCall.allowedType": "audio", - "editMessage": "allow" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/roles/{role}/permissions/{permission}": { - "delete": { - "tags": [ - "RBAC" - ], - "summary": "Unset Role Permissions", - "description": "Removes a specific permission from a role", - "operationId": "unset-role-permissions", - "parameters": [ - { - "name": "role", - "in": "path", - "description": "The role identifier to remove permission from", - "required": true, - "schema": { - "type": "string", - "example": "default" - } - }, - { - "name": "permission", - "in": "path", - "description": "The permission key to unset (e.g., listUsers.mode, createGroup, etc.)", - "required": true, - "schema": { - "type": "string", - "example": "listUsers.mode" - } - } - ], - "responses": { - "200": { - "description": "Role permission unset successfully", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "permissions": { - "listUsers": "allow", - "listUsers.mode": "all", - "listUsers.allowedRoles": [ - "new_role" - ], - "getUserDetails.mode": "friends", - "getUserDetails.allowedRoles": [ - "default" - ], - "sendMessage": "allow", - "sendMessage.mode": "all", - "sendMessage.allowedReceiverTypes": [ - "group" - ], - "sendMessage.allowedReceiverRoles": [ - "new_role", - "default" - ], - "sendMessage.allowedMessageTypes": [ - "file", - "audio", - "video", - "image", - "text" - ], - "sendMessage.allowedMessageCategories": [ - "message", - "custom" - ], - "editMessage": "deny", - "editMessage.denyForScopes": [], - "deleteMessage": "deny", - "deleteMessage.denyForScopes": [], - "sendMessage.allowedCustomTypes": [], - "sendMessage.allowedMimeTypes": [ - "image/png" - ], - "initiateCall": "allow", - "initiateCall.mode": "all", - "initiateCall.allowedReceiverRoles": [ - "new_role" - ], - "createGroup": "allow", - "createGroup.allowedGroupTypes": [ - "private" - ], - "listGroups": "allow", - "listGroups.allowedGroupTypes": [ - "password" - ], - "joinGroup": "allow", - "joinGroup.allowedGroupTypes": [ - "public" - ], - "listMessages.allowedMessageCategories": [ - "message" - ], - "listMessages.allowedMessageTypes": [ - "audio" - ] - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/scopes/{scope}/permissions/{permission}": { - "delete": { - "tags": [ - "RBAC" - ], - "summary": "Unset Scope Permissions", - "description": "Removes a specific permission from a group scope", - "operationId": "unset-scope-permissions", - "parameters": [ - { - "name": "guid", - "in": "path", - "description": "The group GUID to remove scope permission from", - "required": true, - "schema": { - "type": "string", - "example": "supergroup" - } - }, - { - "name": "scope", - "in": "path", - "description": "The scope identifier (e.g., admin, moderator, participant)", - "required": true, - "schema": { - "type": "string", - "example": "admin" - } - }, - { - "name": "permission", - "in": "path", - "description": "The permission key to unset (e.g., sendMessage, initiateCall, etc.)", - "required": true, - "schema": { - "type": "string", - "example": "sendMessage" - } - } - ], - "responses": { - "200": { - "description": "Scope permission unset successfully", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "permissions": { - "sendMessage": "allow", - "listMembers": "allow", - "listMembers.allowedScopes": "participant", - "addReaction": "deny", - "listReactions.allowedScopes": "moderator", - "listReactions": "deny", - "sendThreadedMessage": "allow", - "initiateCall": "deny", - "initiateCall.allowedScopes": "participant", - "initiateCall.allowedType": "audio", - "editMessage": "allow" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/messages/{id}/thread": { - "post": { - "tags": [ - "Messages" - ], - "summary": "Send Threaded Message", - "description": "Sends a reply to a message, creating a thread. Requires 'onBehalfOf' header. Threaded messages are linked to the parent message and can be fetched separately.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message for which thread message to be sent", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories are message and custom.", - "type": "string", - "default": "message", - "enum": [ - "message", - "custom" - ] - }, - "type": { - "description": "Type of the message. The available values are text, image, file, audio, video.", - "type": "string", - "default": "text", - "enum": [ - "text", - "image", - "file", - "audio", - "video" - ] - }, - "data": { - "description": "JSON containing message attributes.", - "type": "object", - "default": { - "text": "Hi Tom!", - "metadata": { - "key1": "value1", - "key2": "value2" - } - } - }, - "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", - "type": "object", - "default": { - "uids": [ - "uid1", - "uid2" - ], - "guids": [ - "guid1" - ] - } - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "tag1" - ] - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Create Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object", - "allOf": [ - { - "properties": { - "parentId": { - "readOnly": false - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/messageSchema" - } - ] - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "2", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "metadata": { - "key1": "val1" - }, - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "role": "default", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490, - "parentId": "1" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Messages" - ], - "summary": "List Threaded Messages", - "description": "Retrieves all replies in a message thread. Returns paginated list of messages linked to the parent message ID.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message whose thread messages are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Create Message", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "allOf": [ - { - "properties": { - "parentId": { - "readOnly": false - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/messageSchema" - } - ] - } - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "2", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - }, - "metadata": { - "key1": "val1" - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490, - "parentId": "1" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 1 - }, - "next": { - "affix": "append", - "sentAt": 1638423490, - "id": "3" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/users/{uid}/messages": { - "get": { - "tags": [ - "Messages" - ], - "summary": "List User Messages", - "description": "Retrieves messages between two users in a 1-on-1 conversation. Requires 'onBehalfOf' header. Returns paginated message history with filtering options.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/uid" - }, - { - "name": "searchKey", - "in": "query", - "description": "searches for occurence of message.", - "schema": { - "type": "string" - } - }, - { - "name": "hasAttachments", - "in": "query", - "description": "Fetches messages that include attachments.", - "schema": { - "type": "boolean" - } - }, - { - "name": "attachmentTypes", - "in": "query", - "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", - "schema": { - "type": "string", - "enum": [ - "image", - "video", - "audio", - "file" - ] - } - }, - { - "name": "hasMentions", - "in": "query", - "description": "Fetches messages that include mentions.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hasLinks", - "in": "query", - "description": "Fetches messages that include links.", - "schema": { - "type": "boolean" - } - }, - { - "name": "mentionedUids", - "in": "query", - "description": "Fetches messages that include the mentioned comma-separated UIDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "unread", - "in": "query", - "description": "displays all the unread messages of the user.", - "schema": { - "type": "boolean" - } - }, - { - "name": "undelivered", - "in": "query", - "description": "displays all the messages those are undelivered.", - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "displays the count of messages as per group/user", - "schema": { - "type": "boolean" - } - }, - { - "name": "hideReplies", - "in": "query", - "description": "Shows only messages skipping the replies in the message thread.", - "schema": { - "type": "boolean" - } - }, - { - "name": "affix", - "in": "query", - "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", - "schema": { - "type": "string", - "enum": [ - "append", - "prepend" - ] - } - }, - { - "name": "id", - "in": "query", - "description": "Retrieves all those messages after the passed id.", - "schema": { - "type": "string" - } - }, - { - "name": "category", - "in": "query", - "description": "Fetches messages that belongs to specific category.", - "schema": { - "type": "string" - } - }, - { - "name": "categories", - "in": "query", - "description": "Fetches messages that contains multiple categories.", - "schema": { - "type": "array", - "items": {} - } - }, - { - "name": "type", - "in": "query", - "description": "Fetches messages that belongs to a specific type.", - "schema": { - "type": "string" - } - }, - { - "name": "types", - "in": "query", - "description": "Fetches messages with multiple types.", - "schema": { - "type": "array", - "items": {} - } - }, - { - "name": "myMentionsOnly", - "in": "query", - "description": "Filters messages with mentions for the UID in onBehalfOf header.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "hasReactions", - "in": "query", - "description": "Filters messages sent by a the uid given in sender query param and has reactions. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "sender", - "in": "query", - "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", - "schema": { - "type": "string" - } - }, - { - "name": "mentionsWithBlockedInfo", - "in": "query", - "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "mentionswithTagInfo", - "in": "query", - "description": "Provides user tags for the mentioned users.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "perPage", - "in": "query", - "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "limit", - "in": "query", - "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000 (works alongside onBehalfOf header)", - "schema": { - "type": "integer", - "default": "10" - } - }, - { - "name": "fromTimestamp", - "in": "query", - "description": "Fetches the messages from this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "toTimestamp", - "in": "query", - "description": "Fetches the messages till this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "withTags", - "in": "query", - "description": "This will fetch messages along with the tags.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "This will fetch only those messages belonging to the mentioned tags.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "hideQuotedMessages", - "in": "query", - "description": "If set to true, the API response will exclude all quotedMessage nodes from the returned messages. This allows clients to fetch only the messages without any quoted messages.", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "Get User Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1776", - "conversationId": "superhero2_user_superhero3", - "sender": "superhero2", - "receiverType": "user", - "receiver": "superhero3", - "category": "call", - "type": "audio", - "data": { - "action": "initiated", - "entities": { - "by": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline" - }, - "entityType": "user" - }, - "on": { - "entity": { - "data": { - "entities": { - "sender": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "user" - } - }, - "metadata": { - "key": { - "one": "two" - } - } - }, - "type": "audio", - "sender": "superhero2", - "status": "initiated", - "joinedAt": 1646995097, - "receiver": "superhero3", - "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", - "wsChannel": { - "secret": "083c2a7f660150e42c2bf07a17231e90980b290d", - "service": "19757e59e8b9669.call", - "identity": "[19757e59e8b9669]16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba" - }, - "initiatedAt": 1646995097, - "receiverType": "user", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "call" - }, - "for": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "user" - } - } - }, - "sentAt": 1646995097, - "updatedAt": 1646995097 - }, - { - "id": "1777", - "conversationId": "superhero2_user_superhero3", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero2", - "category": "call", - "type": "video", - "data": { - "action": "ongoing", - "entities": { - "by": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline" - }, - "entityType": "user" - }, - "on": { - "entity": { - "data": { - "entities": { - "sender": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "user" - } - }, - "metadata": { - "key": { - "one": "two" - } - } - }, - "type": "video", - "sender": "superhero2", - "status": "ongoing", - "joinedAt": 1646995512, - "receiver": "superhero3", - "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", - "startedAt": 1646995512, - "wsChannel": { - "secret": "083c2a7f660150e42c2bf07a17231e90980b290d", - "service": "19757e59e8b9669.call", - "identity": "[19757e59e8b9669]16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba" - }, - "initiatedAt": 1646995097, - "receiverType": "user", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "call" - }, - "for": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "conversationId": "superhero2_user_superhero3" - }, - "entityType": "user" - } - } - }, - "sentAt": 1646995512, - "updatedAt": 1646995512 - } - ], - "meta": { - "pagination": { - "total": 0, - "count": 2, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - }, - "cursor": { - "id": 1786, - "affix": "prepend" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/groups/{guid}/messages": { - "get": { - "tags": [ - "Messages" - ], - "summary": "List Group Messages", - "description": "Retrieves messages from a group conversation. Requires 'onBehalfOf' header with a group member's UID. Returns paginated message history with filtering options.", - "parameters": [ - { - "$ref": "#/components/parameters/onBehalfOf" - }, - { - "$ref": "#/components/parameters/guid" - }, - { - "name": "searchKey", - "in": "query", - "description": "searches for occurence of message.", - "schema": { - "type": "string" - } - }, - { - "name": "hasAttachments", - "in": "query", - "description": "Fetches messages that include attachments.", - "schema": { - "type": "boolean" - } - }, - { - "name": "attachmentTypes", - "in": "query", - "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", - "schema": { - "type": "string", - "enum": [ - "image", - "video", - "audio", - "file" - ] - } - }, - { - "name": "hasMentions", - "in": "query", - "description": "Fetches messages that include mentions.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hasLinks", - "in": "query", - "description": "Fetches messages that include links.", - "schema": { - "type": "boolean" - } - }, - { - "name": "mentionedUids", - "in": "query", - "description": "Fetches messages that include the mentioned comma-separated UIDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "unread", - "in": "query", - "description": "displays all the unread messages of the user.", - "schema": { - "type": "boolean" - } - }, - { - "name": "undelivered", - "in": "query", - "description": "displays all the messages those are undelivered.", - "schema": { - "type": "boolean" - } - }, - { - "name": "count", - "in": "query", - "description": "displays the count of messages as per group/user", - "schema": { - "type": "boolean" - } - }, - { - "name": "hideMessagesFromBlockedUsers", - "in": "query", - "description": "Hides the messages from blocked users in group.", - "schema": { - "type": "boolean" - } - }, - { - "name": "hideReplies", - "in": "query", - "description": "Shows only messages skipping the replies in the message thread.", - "schema": { - "type": "boolean" - } - }, - { - "name": "affix", - "in": "query", - "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", - "schema": { - "type": "string", - "enum": [ - "append", - "prepend" - ] - } - }, - { - "name": "id", - "in": "query", - "description": "Retrieves all those messages after the passed id.", - "schema": { - "type": "string" - } - }, - { - "name": "category", - "in": "query", - "description": "Fetches messages that belongs to specific category.", - "schema": { - "type": "string" - } - }, - { - "name": "categories", - "in": "query", - "description": "Fetches messages that contains multiple categories.", - "schema": { - "type": "array", - "items": {} - } - }, - { - "name": "type", - "in": "query", - "description": "Fetches messages that belongs to a specific type.", - "schema": { - "type": "string" - } - }, - { - "name": "types", - "in": "query", - "description": "Fetches messages with multiple types.", - "schema": { - "type": "array", - "items": {} - } - }, - { - "name": "myMentionsOnly", - "in": "query", - "description": "Filters messages with mentions for the UID in onBehalfOf header.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "hasReactions", - "in": "query", - "description": "Filters messages sent by a the uid given in sender query param and has reactions. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "sender", - "in": "query", - "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", - "schema": { - "type": "string" - } - }, - { - "name": "mentionsWithBlockedInfo", - "in": "query", - "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "mentionswithTagInfo", - "in": "query", - "description": "Provides user tags for the mentioned users.", - "schema": { - "type": "boolean", - "default": "false" - } - }, - { - "name": "limit", - "in": "query", - "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", - "schema": { - "type": "integer", - "default": "10" - } - }, - { - "name": "fromTimestamp", - "in": "query", - "description": "Fetches the messages from this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "toTimestamp", - "in": "query", - "description": "Fetches the messages till this timestamp.", - "schema": { - "type": "integer" - } - }, - { - "name": "withTags", - "in": "query", - "description": "This will fetch messages along with the tags.", - "schema": { - "type": "boolean" - } - }, - { - "name": "tags", - "in": "query", - "description": "This will fetch only those messages belonging to the mentioned tags.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "hideQuotedMessages", - "in": "query", - "description": "If set to true, the API response will exclude all quotedMessage nodes from the returned messages. This allows clients to fetch only the referenced messages without any quoted messages.", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "Retreived Group Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", - "receiverType": "user", - "receiver": "superhero5", - "category": "message", - "type": "text", - "data": { - "text": "test hello", - "entities": { - "sender": { - "entity": { - "uid": "superhero3", - "name": "Spiderman", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", - "status": "offline", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero5", - "name": "Cyclops", - "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", - "status": "offline", - "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" - }, - "entityType": "user" - } - }, - "metadata": { - "key1": "val1" - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490 - } - ], - "meta": { - "current": { - "limit": 100, - "count": 1 - }, - "next": { - "affix": "append", - "sentAt": 1638423490, - "id": "1" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/bots/{uid}/messages": { - "post": { - "tags": [ - "Messages" - ], - "summary": "Send Bot Message", - "description": "Sends a message on behalf of a bot user. Use this endpoint to enable automated messaging from bots in your application, such as welcome messages, notifications, customer support responses, or AI-powered chat interactions.

The bot must be created beforehand using the Create User API with the bot role. Messages sent through this endpoint appear as if they were sent directly by the bot user, maintaining conversation context and history.

**Use cases:** Automated welcome messages when users join, customer support bot responses, AI chatbot integrations (e.g., ChatGPT, custom AI models), scheduled notifications and reminders, and system announcements to users or groups.", - "parameters": [ - { - "name": "uid", - "in": "path", - "description": "The unique identifier (UID) of the bot user sending the message. The bot must be created beforehand with the 'bot' role. Example: 'support_bot', 'welcome_bot', 'ai_assistant'", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "support_bot": { - "summary": "Support Bot UID", - "value": "support_bot" - }, - "ai_assistant": { - "summary": "AI Assistant Bot UID", - "value": "ai_assistant" - } - } - } - ], - "requestBody": { - "description": "The message payload to send from the bot. Supports text messages, media messages, and custom message types. The message will be delivered to the specified receiver (user or group).", - "content": { - "application/json": { - "schema": { - "discriminator": { - "propertyName": "category", - "mapping": { - "message": "#/components/schemas/messageCategorySchema", - "custom": "#/components/schemas/customCategorySchema" - } - }, - "oneOf": [ - { - "$ref": "#/components/schemas/messageCategorySchema" - }, - { - "$ref": "#/components/schemas/customCategorySchema" - } - ] - }, - "examples": { - "text-message-to-user": { - "summary": "Text message to a user", - "value": { - "category": "message", - "type": "text", - "receiverType": "user", - "receiver": "user123", - "data": { - "text": "Hello! How can I help you today?" - } - } - }, - "text-message-to-group": { - "summary": "Text message to a group", - "value": { - "category": "message", - "type": "text", - "receiverType": "group", - "receiver": "support_group", - "data": { - "text": "Welcome to the support channel!" - } - } - }, - "text-message-with-metadata": { - "summary": "Text message with metadata", - "value": { - "category": "message", - "type": "text", - "receiverType": "user", - "receiver": "user123", - "data": { - "text": "Your order #12345 has been shipped!", - "metadata": { - "orderId": "12345", - "trackingUrl": "https://tracking.example.com/12345", - "estimatedDelivery": "2024-01-15" - } - }, - "tags": [ - "order_notification", - "shipping" - ] - } - }, - "custom-message": { - "summary": "Custom message type", - "value": { - "category": "custom", - "type": "product_recommendation", - "receiverType": "user", - "receiver": "user123", - "data": { - "customData": { - "productId": "prod_456", - "productName": "Wireless Headphones", - "price": 99.99, - "imageUrl": "https://example.com/headphones.jpg" - } - } - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Message sent successfully. Returns the complete message object including server-generated fields like message ID, conversation ID, and timestamps. The message is immediately delivered to online recipients via WebSocket and queued for push notification delivery.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "description": "The sent message object containing all message details including sender/receiver entities", - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "12345", - "conversationId": "support_bot_user_user123", - "sender": "support_bot", - "receiverType": "user", - "receiver": "user123", - "category": "message", - "type": "text", - "data": { - "text": "Hello! How can I help you today?", - "entities": { - "sender": { - "entity": { - "uid": "support_bot", - "name": "Support Bot", - "avatar": "https://example.com/bot-avatar.png", - "status": "available", - "role": "bot", - "createdAt": 1638361550 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "user123", - "name": "John Doe", - "status": "online", - "role": "default", - "createdAt": 1638361550, - "conversationId": "support_bot_user_user123" - }, - "entityType": "user" - } - } - }, - "sentAt": 1638423490, - "updatedAt": 1638423490 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/settings": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "List Settings", - "description": "Retrieves the complete push notification configuration for your app, including notification preferences, message templates, and sound settings. Use this endpoint to understand your current notification setup before making changes.\n\nThe response includes: preferences (controls which events trigger notifications like messages, reactions, member actions, calls, and whether users can override these settings), templates (customizable notification content templates for different message types like text, media, custom, with support for privacy-focused alternatives), and sound (default notification sounds for chat and call events).\n\nLimitations: Requires API key with fullAccess scope. Returns app-level settings only; use List Preferences endpoint for user-specific settings. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "preferences": { - "group": { - "messagesSetting": 2, - "messageEditedSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "messageDeletedSetting": 2, - "reactionsSetting": 2, - "reactionsOverride": true, - "memberLeftSetting": 1, - "memberLeftOverride": true, - "memberAddedSetting": 1, - "memberAddedOverride": true, - "memberJoinedSetting": 1, - "memberJoinedOverride": true, - "memberKickedSetting": 1, - "memberKickedOverride": true, - "memberBannedSetting": 1, - "memberBannedOverride": true, - "memberUnbannedSetting": 1, - "memberUnbannedOverride": true, - "memberScopeChangedSetting": 1, - "memberScopeChangedOverride": true - }, - "bypassPreferencesForMentions": false, - "bypassPreferencesForGroupMentions": false, - "call": { - "busySetting": 1, - "cancelledSetting": 1, - "endedSetting": 1, - "initiatedSetting": 1, - "ongoingSetting": 1, - "rejectedSetting": 1, - "unansweredSetting": 1, - "initiatedOverride": false, - "ongoingOverride": false, - "cancelledOverride": false, - "rejectedOverride": false, - "unansweredOverride": false, - "busyOverride": false, - "endedOverride": false - }, - "oneOnOne": { - "messagesSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "messageEditedSetting": 2, - "messageDeletedSetting": 2, - "reactionsSetting": 2, - "reactionsOverride": true - }, - "mute": { - "dndPreferenceSetting": 1, - "dndPreferenceOverride": true, - "schedulePreferenceSetting": { - "monday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "tuesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "wednesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "thursday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "friday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "saturday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "sunday": { - "from": 0, - "to": 2359, - "dnd": false - } - }, - "schedulePreferenceOverride": true, - "mutedGroupsOverride": true, - "mutedOneOnOnesOverride": true - }, - "email": { - "notifyForUnreadOnly": true, - "intervalInSeconds": 7200, - "maxPerDay": 20, - "maxPerDayPerConversation": 2, - "includeMessageObjectSetting": false, - "includeSenderMetadataSetting": true, - "includeReceiverMetadataSetting": true, - "includeMessageMetadataSetting": true - }, - "sms": { - "notifyForUnreadOnly": true, - "intervalInSeconds": 7200, - "maxPerDay": 20, - "maxPerDayPerConversation": 2, - "includeMessageObjectSetting": false, - "includeSenderMetadataSetting": true, - "includeReceiverMetadataSetting": true, - "includeMessageMetadataSetting": true - }, - "push": { - "includeMessageObjectSetting": false, - "includeSenderMetadataSetting": true, - "includeReceiverMetadataSetting": true, - "trimTextFieldSetting": false, - "includeMessageMetadataSetting": true, - "customJson": { - "hello": "world" - } - } - }, - "sound": { - "chat": "default", - "call": "default" - }, - "templates": { - "usePrivacyTemplate": 3, - "textMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}" - }, - "textMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "mediaMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "🔈 Has sent an audio", - "body_file": "📄 Has sent a file", - "body_image": "📷 Has sent an image", - "body_video": "🎥 Has sent a video" - }, - "mediaMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "New audio message", - "body_file": "New file message", - "body_image": "New image message", - "body_video": "New video message" - }, - "customMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}", - "body_fallback": "New message" - }, - "customMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message", - "body_fallback": "New message" - }, - "emailSubjectTemplateDefault": { - "subjectGroup": "New messages in {{groupDetails.name}}", - "subjectOneOnOne": "New messages from {{senderDetails.name}}" - }, - "emailSubjectTemplatePrivacy": { - "subjectGroup": "New messages in {{groupDetails.name}}", - "subjectOneOnOne": "New messages from {{senderDetails.name}}" - }, - "smsContentTemplateDefault": { - "bodyGroup": "You've received {{messages.length}} message(s) in {{groupDetails.name}}! Read them at https://your-website.com.", - "bodyOneOnOne": "You've received {{messages.length}} message(s) from {{senderDetails.name}}! Read them at https://your-website.com." - }, - "smsContentTemplatePrivacy": { - "bodyGroup": "You've received {{messages.length}} message(s) in {{groupDetails.name}}! Read them at https://your-website.com.", - "bodyOneOnOne": "You've received {{messages.length}} message(s) from {{senderDetails.name}}! Read them at https://your-website.com." - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Notifications" - ], - "summary": "Update Settings", - "description": "Updates push notification settings for your app. You can modify notification preferences, message templates, and sound settings. Only include the fields you want to change; unspecified fields retain their current values.\n\nConfigurable settings: preferences.group (control notifications for group events like messages, reactions, member joins/leaves/kicks/bans), preferences.oneOnOne (control notifications for 1-on-1 chat events), preferences.call (control notifications for call events like initiated, ongoing, ended), preferences.mute (configure Do Not Disturb and schedule-based muting), preferences.email/sms/push (configure channel-specific settings like intervals and metadata inclusion), templates (customize notification content with template variables like {{message.data.text}}), and sound (set notification sounds for chat and call events).\n\nLimitations: Requires API key with fullAccess scope. Template variables must follow the supported format (see examples). Rate limit is 50 requests per minute. Maximum request body size is 100KB.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pnSettingSchema" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Reset Settings", - "description": "Resets all push notification settings to their default values for your app. This includes notification preferences, message templates, and sound settings. Use this endpoint when you want to start fresh with CometChat's default notification configuration.\n\nLimitations: Requires API key with fullAccess scope. Does not affect user-specific preferences (use Reset Preferences endpoint for that). Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/fcm": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "List FCM Providers", - "description": "Retrieves all configured Firebase Cloud Messaging (FCM) providers for your app. FCM is used to send push notifications to Android devices and web browsers. Use this endpoint to view your current FCM configuration.\n\nThe response includes pushProviders object containing all configured FCM providers. Each provider includes its ID, name, and whether it is the default provider. Credentials are partially masked for security.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "pushProviders": [] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Add FCM Provider", - "description": "Adds a new Firebase Cloud Messaging (FCM) provider to your app. FCM enables push notifications for Android devices and web browsers. You can configure multiple FCM providers for different environments (e.g., development, production).\n\nRequired Credentials: serviceAccountKey - Your Firebase service account JSON key file content (obtained from Firebase Console > Project Settings > Service Accounts).\n\nHow to Get FCM Credentials: Go to Firebase Console (console.firebase.google.com), select your project, navigate to Project Settings > Service Accounts, click Generate new private key, and use the downloaded JSON file content as serviceAccountKey.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 FCM providers per app. Service account key must be valid JSON. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/fcmCreateProviderSchema" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update FCM Provider", - "description": "Updates an existing Firebase Cloud Messaging (FCM) provider configuration. Use this endpoint to rotate credentials or update provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider) and serviceAccountKey (new Firebase service account JSON key).\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Service account key must be valid JSON. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "providerId": { - "description": "The unique identifier of the FCM provider to update", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/fcmCreateProviderSchema" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/fcm/{providerId}": { - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete FCM Provider", - "description": "Deletes an FCM provider from your app. Use this endpoint to remove outdated or unused Firebase Cloud Messaging configurations.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/providerId" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/fcm/default/{providerId}": { - "put": { - "tags": [ - "Notifications" - ], - "summary": "Change default FCM Provider", - "description": "Sets the specified FCM provider as the default for your app. The default provider is used for all Android push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/providerId" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/apns": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "List APNS Providers", - "description": "Retrieves all configured Apple Push Notification service (APNS) providers for your app. APNS is required to send push notifications to iOS devices. Use this endpoint to view your current APNS configuration.\n\nThe response includes pushProviders object containing all configured APNS providers. Each provider includes its ID, name, bundle ID, and whether it is the default. Credentials are partially masked for security.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": {} - }, - "type": "object" - }, - "example": { - "data": { - "pushProviders": [] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update APNS Providers", - "description": "Updates an existing Apple Push Notification service (APNS) provider configuration. Use this endpoint to rotate credentials, update bundle IDs, or modify provider settings without deleting and recreating the provider.\n\nUpdatable fields: name (display name for the provider), bundleId (iOS app bundle identifier), teamId (Apple Developer Team ID), keyId (APNS authentication key ID), and authKey (new .p8 authentication key content).\n\nLimitations: Requires API key with fullAccess scope. Provider must exist. Auth key must be valid .p8 format. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "providerId": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/createApnsProvider" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": {} - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Add APNS Provider", - "description": "Adds a new Apple Push Notification service (APNS) provider to your app. APNS enables push notifications for iOS devices. You can configure multiple APNS providers for different environments (e.g., development, production).\n\nRequired credentials: bundleId (your iOS app bundle identifier, e.g., com.yourcompany.yourapp), teamId (your Apple Developer Team ID, 10-character string), keyId (the Key ID for your APNS authentication key), and authKey (the .p8 authentication key file content from Apple Developer Portal).\n\nHow to get APNS credentials: Go to Apple Developer Portal (developer.apple.com), navigate to Certificates, Identifiers and Profiles > Keys, create a new key with Apple Push Notifications service (APNs) enabled, download the .p8 key file (only available once), note the Key ID shown after creation, and find your Team ID in Membership details.\n\nLimitations: Requires API key with fullAccess scope. Maximum 5 APNS providers per app. Auth key must be valid .p8 format. Bundle ID must match your iOS app configuration. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/createApnsProvider" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": {} - }, - "type": "object" - }, - "example": { - "data": { - "pushProviders": [] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/apns/{providerId}": { - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete APNS Providers", - "description": "Deletes an APNS provider from your app. Use this endpoint to remove outdated or unused Apple Push Notification service configurations.\n\nLimitations: Requires API key with fullAccess scope. Cannot delete the default provider (change default first). Provider must exist. Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/providerId" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": {} - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/apns/default/{providerId}": { - "put": { - "tags": [ - "Notifications" - ], - "summary": "Change default APNS Provider", - "description": "Sets the specified APNS provider as the default for your app. The default provider is used for all iOS push notifications. Use this endpoint when switching between environments or rotating to new credentials.\n\nLimitations: Requires API key with fullAccess scope. Provider must exist and be properly configured. Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/providerId" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": {} - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/preferences": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "List Preferences", - "description": "Retrieves the notification preferences for a specific user. These preferences determine which events trigger notifications and how they are displayed. User preferences can override app-level settings where allowed.\n\nThe response includes: preferences.group (user notification settings for group events like messages, reactions, member actions), preferences.oneOnOne (user notification settings for 1-on-1 chat events), preferences.mute (Do Not Disturb settings and schedule-based muting configuration), sound (user preferred notification sounds for chat and call events), and templates (user notification content templates if customized).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "preferences": { - "group": { - "messagesSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "reactionsSetting": 2, - "reactionsOverride": true, - "memberLeftSetting": 1, - "memberLeftOverride": true, - "memberAddedSetting": 1, - "memberAddedOverride": true, - "memberJoinedSetting": 1, - "memberJoinedOverride": true, - "memberKickedSetting": 1, - "memberKickedOverride": true, - "memberBannedSetting": 1, - "memberBannedOverride": true, - "memberUnbannedSetting": 1, - "memberUnbannedOverride": true, - "memberScopeChangedSetting": 1, - "memberScopeChangedOverride": true - }, - "oneOnOne": { - "messagesSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "reactionsSetting": 2, - "reactionsOverride": true - }, - "mute": { - "dndPreferenceSetting": 1, - "dndPreferenceOverride": true, - "schedulePreferenceSetting": { - "monday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "tuesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "wednesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "thursday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "friday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "saturday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "sunday": { - "from": 0, - "to": 2359, - "dnd": false - } - }, - "schedulePreferenceOverride": true, - "mutedGroupsOverride": true, - "mutedOneOnOnesOverride": true - } - }, - "sound": { - "chat": "default", - "call": "default" - }, - "templates": { - "usePrivacyTemplate": 3, - "textMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}" - }, - "textMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "mediaMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "Has sent an {{message.type}}", - "body_file": "Has sent a {{message.type}}", - "body_image": "Has sent an {{message.type}}", - "body_video": "Has sent a {{message.type}}" - }, - "mediaMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "New message", - "body_file": "New message", - "body_image": "New message", - "body_video": "New message" - }, - "customMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}", - "body_fallback": "New message" - }, - "customMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}", - "body_fallback": "New message" - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Notifications" - ], - "summary": "Update Preferences", - "description": "Updates notification preferences for a specific user. Use this endpoint to customize which events trigger notifications for the user and how notifications are displayed. Only include the fields you want to change.\n\nConfigurable preferences: preferences.group (control notifications for group messages, reactions, and member events), preferences.oneOnOne (control notifications for 1-on-1 chat messages and reactions), preferences.mute (configure Do Not Disturb mode and schedule-based muting), sound (set custom notification sounds for chat and call events), and templates (customize notification content templates).\n\nSetting values: 1 = Disabled (no notification), 2 = Enabled (send notification).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Can only override settings where the app-level Override flag is enabled. Rate limit is 50 requests per minute. Maximum request body size is 50KB.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pnUpdatePreferences" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "preferences": { - "group": { - "messagesSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "reactionsSetting": 2, - "reactionsOverride": true, - "memberLeftSetting": 1, - "memberLeftOverride": true, - "memberAddedSetting": 1, - "memberAddedOverride": true, - "memberJoinedSetting": 1, - "memberJoinedOverride": true, - "memberKickedSetting": 1, - "memberKickedOverride": true, - "memberBannedSetting": 1, - "memberBannedOverride": true, - "memberUnbannedSetting": 1, - "memberUnbannedOverride": true, - "memberScopeChangedSetting": 1, - "memberScopeChangedOverride": true - }, - "oneOnOne": { - "messagesSetting": 2, - "messagesOverride": true, - "repliesSetting": 2, - "repliesOverride": true, - "reactionsSetting": 2, - "reactionsOverride": true - }, - "mute": { - "dndPreferenceSetting": 1, - "dndPreferenceOverride": true, - "schedulePreferenceSetting": { - "monday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "tuesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "wednesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "thursday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "friday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "saturday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "sunday": { - "from": 0, - "to": 2359, - "dnd": false - } - }, - "schedulePreferenceOverride": true, - "mutedGroupsOverride": true, - "mutedOneOnOnesOverride": true - } - }, - "sound": { - "chat": "default", - "call": "default" - }, - "templates": { - "usePrivacyTemplate": 3, - "textMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}" - }, - "textMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "mediaMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "Has sent an {{message.type}}", - "body_file": "Has sent a {{message.type}}", - "body_image": "Has sent an {{message.type}}", - "body_video": "Has sent a {{message.type}}" - }, - "mediaMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body_audio": "New message", - "body_file": "New message", - "body_image": "New message", - "body_video": "New message" - }, - "customMessageTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}", - "body_fallback": "New message" - }, - "customMessageTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.text}}", - "body_fallback": "New message" - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Reset Preferences", - "description": "Resets all notification preferences for a specific user to the app-level default settings. Use this endpoint when a user wants to restore their notification settings to the defaults configured for your app.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Does not affect muted conversations (use Unmute Conversations endpoint). Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "groupPreferences": { - "groupMessages": 2, - "groupReplies": 2, - "groupReactions": 2, - "groupMemberLeft": 1, - "groupMemberAdded": 1, - "groupMemberJoined": 1, - "groupMemberKicked": 1, - "groupMemberBanned": 1, - "groupMemberUnbanned": 1, - "groupMemberScopeChanged": 1 - }, - "oneOnOnePreferences": { - "oneOnOneMessages": 2, - "oneOnOneReplies": 2, - "oneOnOneReactions": 2 - }, - "mutePreferences": { - "dnd": 1, - "schedule": { - "sunday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "monday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "tuesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "wednesday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "thursday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "friday": { - "from": 0, - "to": 2359, - "dnd": false - }, - "saturday": { - "from": 0, - "to": 2359, - "dnd": false - } - } - }, - "usePrivacyTemplate": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/tokens": { - "post": { - "tags": [ - "Notifications" - ], - "summary": "Register push token", - "description": "Registers a device push token for a user's session. This token is used to deliver push notifications to the user's device. Call this endpoint when a user logs in or when the device token is refreshed.

**Token types:** fcm_android (Firebase Cloud Messaging token for Android devices), fcm_web (Firebase Cloud Messaging token for web browsers), apns (Apple Push Notification service token for iOS devices), and apns_voip (Apple VoIP push token for call notifications on iOS).", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pnTokenSchema" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Notifications" - ], - "summary": "List push tokens", - "description": "Retrieves registered push tokens for a user session. Use this endpoint to see which devices are registered to receive push notifications for a specific auth token.\n\nThe response includes pushTokens array of registered device tokens. Each token includes platform type, provider ID, creation date, and last update.\n\nQuery options: authToken (required) is the user auth token to query tokens for, and all (when true) returns all tokens for the user across all sessions.\n\nLimitations: Requires API key with fullAccess scope. Auth token parameter is required. Rate limit is 100 requests per minute.", - "parameters": [ - { - "name": "all", - "in": "query", - "description": "When true, returns all push tokens for the user across all auth tokens/sessions", - "schema": { - "type": "boolean" - } - }, - { - "name": "authToken", - "in": "query", - "description": "The user's auth token to retrieve push tokens for", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "pushTokens": [ - { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", - "pushTokenType": "chat", - "createdAt": "2024-03-11T07:27:59.412Z", - "platform": "fcm_android", - "providerId": "fcm-provider-2", - "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", - "updatedAt": "2024-03-13T11:24:47.776Z" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Unregister push tokens for authToken", - "description": "Unregisters push tokens for a user session. Use this endpoint when a user logs out or when you need to stop push notifications for specific devices.\n\nUnregister options: all=true removes all push tokens for the user across all sessions (useful for account-wide logout), and all=false removes only the push token for the current auth token (single device logout).\n\nLimitations: Requires API key with fullAccess scope. Auth token in request body must be valid. Rate limit is 50 requests per minute.", - "parameters": [ - { - "name": "all", - "in": "query", - "description": "When true, deletes all push tokens for the user across all sessions. When false, deletes only the token for the specified auth token.", - "schema": { - "type": "boolean" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/unregisterpnToken" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "pushTokens": [ - { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", - "pushTokenType": "chat", - "createdAt": "2024-03-11T07:27:59.412Z", - "platform": "fcm_android", - "providerId": "fcm-provider-2", - "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", - "updatedAt": "2024-03-13T11:24:47.776Z" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/tokens/{pushToken}": { - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete the given push token", - "description": "Deletes a specific push token by its value. Use this endpoint to remove a known device token directly, regardless of which user or session it belongs to.

**When to use:** Removing invalid or expired device tokens, cleaning up tokens that are no longer in use, or administrative token management.", - "parameters": [ - { - "$ref": "#/components/parameters/pushToken" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/unregisterpnToken" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "pushTokens": [ - { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", - "pushTokenType": "chat", - "createdAt": "2024-03-11T07:27:59.412Z", - "platform": "fcm_android", - "providerId": "fcm-provider-2", - "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", - "updatedAt": "2024-03-13T11:24:47.776Z" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/preferences/mute": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "List muted conversations", - "description": "Retrieves the list of conversations where notifications have been muted for a specific user. Use this endpoint to see which 1-on-1 chats and groups the user has silenced.\n\nThe response includes mutedConversations object containing muted conversation IDs with their mute settings. Each muted conversation may have an optional expiration time for temporary mutes.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "mutedConversations": [] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Mute notifications for conversations", - "description": "Mutes notifications for specific conversations on behalf of a user. Use this endpoint to silence notifications from particular 1-on-1 chats or groups without affecting other conversations.\n\nMute options: Permanent mute silences notifications until explicitly unmuted. Temporary mute sets an expiration time for automatic unmuting.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "requestBody": { - "description": "List of conversations", - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "conversations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/muteConversation" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Unmute notifications for conversations", - "description": "Unmutes notifications for specific conversations on behalf of a user. Use this endpoint to restore notifications for previously muted 1-on-1 chats or groups.\n\nConversation ID format: 1-on-1 chats use user_ (e.g., user_john123), and group chats use group_ (e.g., group_support-team).\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Maximum 100 conversations per request. Rate limit is 50 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "requestBody": { - "description": "Unmute Conversations", - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "conversations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/unmuteConversation" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/preferences/timezone": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get timezone", - "description": "Retrieves the timezone setting for a specific user. The timezone is used to apply schedule-based notification preferences correctly, ensuring Do Not Disturb and quiet hours work according to the user's local time.\n\nTimezone format: Uses IANA timezone identifiers (e.g., America/New_York, Europe/London, Asia/Tokyo). If not set, defaults to UTC.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Rate limit is 100 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "timezone": "Asia/Kolkata" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Notifications" - ], - "summary": "Update timezone", - "description": "Updates the timezone setting for a specific user. Setting the correct timezone ensures that schedule-based notification preferences (like quiet hours and Do Not Disturb) work according to the user's local time.\n\nTimezone format: Must be a valid IANA timezone identifier. Examples include America/New_York, Europe/London, Asia/Tokyo, and Australia/Sydney. Full list available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.\n\nLimitations: Requires API key with fullAccess scope. The uid query parameter is required. User must exist in the app. Timezone must be a valid IANA identifier. Rate limit is 50 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredUID" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "timezone": { - "description": "Input a valid Timezone Identifier. Eg: Asia/Tokyo", - "type": "string", - "example": "Asia/Tokyo" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "timezone": "Asia/Kolkata" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/contact-details": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get contact details", - "description": "Retrieves the contact details (email and phone number) stored for a user. These contact details are used to send email and SMS notifications when configured.\n\nResponse fields: email (the user email address for email notifications) and phno (the user phone number with country code for SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 100 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "email": "someone@example.com", - "phno": "+919591128691" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Notifications" - ], - "summary": "Update contact details", - "description": "Updates the contact details (email and/or phone number) for a user. These details are required to send email and SMS notifications. Only include the fields you want to update.\n\nContact format requirements: email must be a valid email address format, and phno must include country code prefix (e.g., +1 for US, +44 for UK, +91 for India).\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Email must be valid format. Phone number must include country code. Rate limit is 50 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "The user's email address", - "type": "string", - "example": "someone@example.com" - }, - "phno": { - "description": "The user's phone number with country code (Ex: +1 for US, +91 for India, etc.)", - "type": "string", - "example": "+919591128691" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "email": "someone@example.com", - "phno": "+919591128691" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete contact details", - "description": "Deletes all stored contact details (email and phone number) for a user. Use this endpoint when a user wants to stop receiving email and SMS notifications or to comply with data deletion requests.\n\nLimitations: Requires API key with fullAccess scope. The onBehalfOf header is required to specify the user. User must exist in the app. Rate limit is 10 requests per minute.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - } - ], - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/sms/v1/providers/twilio": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get Twilio credentials", - "description": "Retrieves the Twilio SMS provider configuration for your app. Twilio is used to send SMS notifications to users when they have unread messages.\n\nResponse fields: twilioAccountSID (your Twilio Account SID, partially masked), twilioAuthToken (your Twilio Auth Token, partially masked), and twilioSenderPhoneNumber (the phone number used to send SMS).\n\nLimitations: Requires API key with fullAccess scope. Credentials are partially masked in response for security. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=", - "twilioAuthToken": "71c2301435733997e83db7a3445bc57", - "twilioSenderPhoneNumber": "+13611364718" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Save Twilio credentials", - "description": "Configures Twilio as the SMS notification provider for your app. Twilio enables SMS notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in Twilio: Create a Twilio account at twilio.com, get your Account SID and Auth Token from the Twilio Console, and purchase or use a Twilio phone number for sending SMS.\n\nConfiguration fields: twilioAccountSID (found in your Twilio Console dashboard, starts with AC), twilioAuthToken (found in your Twilio Console dashboard), twilioSenderPhoneNumber (must be a Twilio phone number in E.164 format, e.g., +1234567890), and isEnabled (set to true to activate SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. Phone number must be a valid Twilio number. Account must have sufficient Twilio balance. Rate limit is 10 requests per minute.", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "twilioAccountSID", - "twilioAuthToken", - "twilioSenderPhoneNumber" - ], - "properties": { - "twilioAccountSID": { - "description": "The Twilio Account SID", - "type": "string", - "example": "AC91e67951ff7e5e7be8122184e76ae0e6" - }, - "twilioAuthToken": { - "description": "The Twilio Auth Token", - "type": "string", - "example": "71c2301435733997e83db7a3445bc57" - }, - "twilioSenderPhoneNumber": { - "description": "The Twilio sender phone number", - "type": "string", - "example": "+13611364718" - }, - "isEnabled": { - "description": "Enable Twilio", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=", - "twilioAuthToken": "71c2301435733997e83db7a3445bc57", - "twilioSenderPhoneNumber": "+13611364718" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update Twilio credentials", - "description": "Updates the Twilio SMS provider configuration. Use this endpoint to rotate credentials, change the sender phone number, or toggle SMS notifications.\n\nUpdatable fields: twilioAccountSID (update to a different Twilio account), twilioAuthToken (rotate to a new auth token), twilioSenderPhoneNumber (change the sender phone number), and isEnabled (enable or disable SMS notifications).\n\nLimitations: Requires API key with fullAccess scope. New phone number must be a valid Twilio number. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "twilioAccountSID": { - "description": "The Twilio Account SID", - "type": "string", - "example": "AC91e67951ff7e5e7be8122184e76ae0e6" - }, - "twilioAuthToken": { - "description": "The Twilio Auth Token", - "type": "string", - "example": "71c2301435733997e83db7a3445bc57" - }, - "twilioSenderPhoneNumber": { - "description": "The Twilio sender phone number", - "type": "string", - "example": "+13611364718" - }, - "isEnabled": { - "description": "Enable Twilio", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=-", - "twilioAuthToken": "71c2301435733997e83db7a3445bc57", - "twilioSenderPhoneNumber": "+13611364718" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete Twilio credentials", - "description": "Deletes the Twilio SMS provider configuration. After deletion, SMS notifications will be disabled unless a custom SMS provider is configured.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/email/v1/providers/sendgrid": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get SendGrid credentials", - "description": "Retrieves the SendGrid email provider configuration for your app. SendGrid is used to send email notifications to users when they have unread messages.\n\nResponse fields: sendGridApiKey (your SendGrid API key, partially masked), sendGridTemplateID (the dynamic template ID for email formatting), sendGridUnsubscribeGroupID (the unsubscribe group for compliance), senderEmail (the from email address for notifications), and senderName (the display name for the sender).\n\nLimitations: Requires API key with fullAccess scope. API key is partially masked in response for security. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "sendGridApiKey": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=", - "sendGridTemplateID": "d-8284bb9646a040499d5cfa28d272a094", - "sendGridUnsubscribeGroupID": "33832", - "senderEmail": "noreply@em123.example.com", - "senderName": "Emailer" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Save SendGrid credentials", - "description": "Configures SendGrid as the email notification provider for your app. SendGrid enables email notifications for unread messages, helping re-engage users who are offline.\n\nRequired setup in SendGrid: Create a SendGrid account and verify your sender domain, generate an API key with Mail Send permissions, create a dynamic template for notification emails, and create an unsubscribe group for compliance.\n\nConfiguration fields: sendGridApiKey (your SendGrid API key with Mail Send permissions), sendGridTemplateID (dynamic template ID, starts with d-), sendGridUnsubscribeGroupID (unsubscribe group ID for email compliance), senderEmail (must be a verified sender in SendGrid), senderName (display name shown to recipients), and allowEmailReplies (enable reply-to functionality).\n\nLimitations: Requires API key with fullAccess scope. Sender email must be verified in SendGrid. Template must exist in your SendGrid account. Rate limit is 10 requests per minute.", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "sendGridApiKey", - "sendGridTemplateID", - "sendGridUnsubscribeGroupID", - "senderName", - "senderEmail", - "allowEmailReplies" - ], - "properties": { - "sendGridApiKey": { - "description": "The SendGrid API key", - "type": "string", - "example": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=" - }, - "sendGridTemplateID": { - "description": "The SendGrid template ID", - "type": "string", - "example": "d-8284bb9646a040499d5cfa28d272a094" - }, - "sendGridUnsubscribeGroupID": { - "description": "The SendGrid unsubscribe group ID", - "type": "string", - "example": "33832" - }, - "senderName": { - "description": "The name of the sender", - "type": "string", - "example": "Emailer" - }, - "senderEmail": { - "description": "The email address of the sender", - "type": "string", - "example": "noreply@em123.example.com" - }, - "allowEmailReplies": { - "type": "boolean", - "default": false - }, - "senderEmailForReplies": { - "description": "The email address when replies are enabled (optional)", - "type": "string", - "example": "reply@em123.example.com", - "nullable": true - }, - "isEnabled": { - "description": "Enable SendGrid", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "allowEmailReplies": true, - "sendGridApiKey": "sendgrid_key", - "sendGridTemplateID": "template_id", - "sendGridUnsubscribeGroupID": "12312", - "senderEmail": "noreply@em123.example.com", - "senderEmailForReplies": "reply@em123.example.com", - "senderName": "Emailer", - "repliesWebhook": "https://notifications-us.cometchat.io/email/v1/sendgrid/replies?token=GY40_1kWlnc2Lo7Lk8vWWxiNJ6BmEEpV4eZsUeMr328" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update SendGrid credentials", - "description": "Updates the SendGrid email provider configuration. Use this endpoint to rotate API keys, change templates, or update sender information.\n\nUpdatable fields: sendGridApiKey (rotate to a new API key), sendGridTemplateID (switch to a different email template), sendGridUnsubscribeGroupID (change the unsubscribe group), senderEmail (update the sender email address), senderName (change the sender display name), allowEmailReplies (toggle reply functionality), and isEnabled (enable or disable email notifications).\n\nLimitations: Requires API key with fullAccess scope. New sender email must be verified in SendGrid. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "sendGridApiKey": { - "description": "The SendGrid API key", - "type": "string", - "example": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=" - }, - "sendGridTemplateID": { - "description": "The SendGrid template ID", - "type": "string", - "example": "d-8284bb9646a040499d5cfa28d272a094" - }, - "sendGridUnsubscribeGroupID": { - "description": "The SendGrid unsubscribe group ID", - "type": "string", - "example": "33832" - }, - "senderName": { - "description": "The name of the sender", - "type": "string", - "example": "Emailer" - }, - "senderEmail": { - "description": "The email address of the sender", - "type": "string", - "example": "noreply@em123.example.com" - }, - "allowEmailReplies": { - "type": "boolean", - "default": false - }, - "senderEmailForReplies": { - "description": "The email address when replies are enabled (optional)", - "type": "string", - "example": "reply@em123.example.com", - "nullable": true - }, - "isEnabled": { - "description": "Enable SendGrid", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "allowEmailReplies": true, - "sendGridApiKey": "sendgrid_key", - "sendGridTemplateID": "template_id", - "sendGridUnsubscribeGroupID": "12312", - "senderEmail": "noreply@em123.example.com", - "senderEmailForReplies": "reply@em123.example.com", - "senderName": "Emailer", - "repliesWebhook": "https://notifications-us.cometchat.io/email/v1/sendgrid/replies?token=GY40_1kWlnc2Lo7Lk8vWWxiNJ6BmEEpV4eZsUeMr328" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete SendGrid credentials", - "description": "Deletes the SendGrid email provider configuration. After deletion, email notifications will be disabled unless a custom email provider is configured.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": {} - }, - "meta": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/push/v1/providers/custom": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get Custom Provider for Push Notifications", - "description": "Retrieves the custom push notification provider configuration for your app. Custom providers allow you to use your own notification delivery infrastructure instead of FCM or APNS directly.

**How it works:** CometChat sends notification payloads to your webhook URL. Your server receives the payload and delivers notifications using your preferred method. Useful for custom notification routing, logging, or using alternative push services.

**Response fields:** webhookURL (the endpoint that receives notification payloads), isEnabled (whether the custom provider is active), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).", - "responses": { - "200": { - "description": "A list of push notification's custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "pushProviders": [ - { - "basicAuthUsername": "user123", - "basicAuthPassword": "pass123", - "useBasicAuth": true, - "isEnabled": true, - "webhookURL": "https://trigger-push.example.com/cometchat" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Save Custom Provider for Push Notifications", - "description": "Configures a custom push notification provider for your app. Custom providers allow you to receive notification payloads at your own webhook URL and handle delivery using your preferred infrastructure.

**When to use:** Routing notifications through your own servers for logging/analytics, using alternative push notification services, implementing custom notification logic before delivery, or supporting platforms not covered by FCM/APNS.

**How it works:** CometChat sends a POST request with notification details including message content, sender/receiver info, and notification template. Your server should respond with 2xx status to acknowledge receipt.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "isEnabled", - "webhookURL", - "basicAuthUsername", - "basicAuthPassword", - "useBasicAuth" - ], - "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL to be triggered for the respective events.", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Save push notification's custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "pushProviders": [ - { - "basicAuthUsername": "user123", - "basicAuthPassword": "pass123", - "useBasicAuth": true, - "isEnabled": true, - "webhookURL": "https://trigger-push.example.com/cometchat" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update Custom Provider for Push Notifications", - "description": "Updates the custom push notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom provider), webhookURL (change the endpoint receiving notification payloads), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL to be triggered for the respective events.", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "A list of push notification's custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "pushProviders": [ - { - "basicAuthUsername": "user123", - "basicAuthPassword": "pass123", - "useBasicAuth": true, - "isEnabled": true, - "webhookURL": "https://trigger-push.example.com/cometchat" - } - ] - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete the Custom Provider for Push Notifications", - "description": "Deletes the custom push notification provider configuration. After deletion, push notifications will be routed through the default FCM/APNS providers.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/sms/v1/providers/custom": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get Custom Provider for SMS Notifications", - "description": "Retrieves the custom SMS notification provider configuration for your app. Custom SMS providers allow you to use your own SMS delivery infrastructure instead of Twilio.\n\nHow custom SMS providers work: CometChat sends SMS notification payloads to your webhook URL. Your server receives the payload and sends SMS using your preferred service. This is useful for custom SMS routing, using alternative SMS services, or regional providers.\n\nResponse fields: webhookURL (the endpoint that receives SMS notification payloads), isEnabled (whether the custom SMS provider is active), useStoredPhNo (whether to include the user stored phone number in the payload), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthPassword": "user888", - "basicAuthUsername": "pass123", - "isEnabled": true, - "useBasicAuth": true, - "useStoredPhNo": false, - "webhookURL": "https://trigger-sms.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Save Custom Provider for SMS Notifications", - "description": "Configures a custom SMS notification provider for your app. Custom providers allow you to receive SMS notification payloads at your own webhook URL and handle delivery using your preferred SMS service.\n\nUse cases: Use your own SMS service (Vonage, MessageBird, etc.), use regional SMS providers for better delivery rates, implement SMS logging and analytics, or route SMS through your own infrastructure.\n\nConfiguration options: useStoredPhNo (when true, only triggers webhook for users with stored phone numbers) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "isEnabled", - "useStoredPhNo", - "webhookURL", - "basicAuthUsername", - "basicAuthPassword", - "useBasicAuth" - ], - "properties": { - "useStoredPhNo": { - "description": "If enabled, the webhook will be triggered for a user only if their phone number is stored within CometChat.", - "type": "boolean", - "default": false - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/CustomSMSProviderConfig" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Save the push notification's SMS custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthUsername": "user889", - "basicAuthPassword": "pass122", - "isEnabled": true, - "useBasicAuth": true, - "useStoredPhNo": false, - "webhookURL": "https://trigger-sms.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update Custom Provider for SMS Notifications", - "description": "Updates the custom SMS notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom SMS provider), webhookURL (change the endpoint receiving SMS notification payloads), useStoredPhNo (toggle whether to require stored phone numbers), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomSMSProviderConfig" - } - } - } - }, - "responses": { - "200": { - "description": "Save the push notification's SMS custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthUsername": "user889", - "basicAuthPassword": "pass122", - "isEnabled": true, - "useBasicAuth": true, - "useStoredPhNo": false, - "webhookURL": "https://trigger-sms.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete the Custom Provider for SMS Notifications", - "description": "Deletes the custom SMS notification provider configuration. After deletion, SMS notifications will be routed through Twilio (if configured) or disabled.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "Delete push notification's SMS custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/email/v1/providers/custom": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Get Custom Provider for Email Notifications", - "description": "Retrieves the custom email notification provider configuration for your app. Custom email providers allow you to use your own email delivery infrastructure instead of SendGrid.\n\nHow custom email providers work: CometChat sends email notification payloads to your webhook URL. Your server receives the payload and sends emails using your preferred service. This is useful for custom email templates, branding, or using alternative email services.\n\nResponse fields: webhookURL (the endpoint that receives email notification payloads), isEnabled (whether the custom email provider is active), useStoredEmailID (whether to include the user stored email in the payload), useBasicAuth (whether HTTP Basic Authentication is enabled), and basicAuthUsername/Password (credentials for Basic Auth, password is masked).\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 100 requests per minute.", - "responses": { - "200": { - "description": "A list of push notification's email custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthUsername": "user889", - "basicAuthPassword": "pass122", - "isEnabled": true, - "useBasicAuth": true, - "useStoredEmailID": false, - "webhookURL": "https://trigger-email.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "post": { - "tags": [ - "Notifications" - ], - "summary": "Save Custom Provider for Email Notifications", - "description": "Configures a custom email notification provider for your app. Custom providers allow you to receive email notification payloads at your own webhook URL and handle delivery using your preferred email service.\n\nUse cases: Use your own email service (Mailgun, Amazon SES, etc.), apply custom email templates and branding, implement email logging and analytics, or route emails through your own infrastructure.\n\nConfiguration options: useStoredEmailID (when true, includes the user stored email address in the payload) and useBasicAuth (enable HTTP Basic Authentication for webhook security).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Webhook must respond within 30 seconds. Rate limit is 10 requests per minute.", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomEmailProviderConfig" - }, - { - "required": [ - "isEnabled", - "useStoredEmailID", - "webhookURL", - "basicAuthUsername", - "basicAuthPassword", - "useBasicAuth" - ] - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Save the push notification's SMS custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthUsername": "user889", - "basicAuthPassword": "pass122", - "isEnabled": true, - "useBasicAuth": true, - "useStoredEmailID": false, - "webhookURL": "https://trigger-email.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Notifications" - ], - "summary": "Update Custom Provider for Email Notifications", - "description": "Updates the custom email notification provider configuration. Use this endpoint to change the webhook URL, toggle the provider on/off, or update authentication credentials.\n\nUpdatable fields: isEnabled (enable or disable the custom email provider), webhookURL (change the endpoint receiving email notification payloads), useStoredEmailID (toggle whether to include user email in payload), useBasicAuth (toggle HTTP Basic Authentication), and basicAuthUsername/Password (update authentication credentials).\n\nLimitations: Requires API key with fullAccess scope. Webhook URL must be HTTPS. Rate limit is 10 requests per minute.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomEmailProviderConfig" - } - } - } - }, - "responses": { - "200": { - "description": "Update the push notification's Email custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "basicAuthUsername": "user889", - "basicAuthPassword": "pass122", - "isEnabled": true, - "useBasicAuth": true, - "useStoredEmailID": false, - "webhookURL": "https://trigger-email.example.com/cometchat" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Notifications" - ], - "summary": "Delete the Custom Provider for Email Notifications", - "description": "Deletes the custom email notification provider configuration. After deletion, email notifications will be routed through SendGrid (if configured) or disabled.\n\nLimitations: Requires API key with fullAccess scope. Rate limit is 10 requests per minute.", - "responses": { - "200": { - "description": "Delete push notification's Email custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "success": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/notifications/v1/logs": { - "get": { - "tags": [ - "Notifications" - ], - "summary": "Notifications logs", - "description": "Retrieves notification delivery logs for debugging and monitoring. Use this endpoint to track notification delivery status, identify failures, and understand why notifications were or were not sent.\n\nLog information includes: Processing timestamps and duration, channel (push, email, sms) and provider details, message and trigger information, delivery status (success/failure), and reason for non-delivery (when applicable).\n\nCommon reasons for non-delivery: MESSAGES_PREFERENCE (user disabled message notifications), DND_PREFERENCE (user has Do Not Disturb enabled), MUTE_PREFERENCE (conversation is muted), SCHEDULE_PREFERENCE (outside user notification schedule), and MISSING_EMAIL/MISSING_PHNO (contact info not available).\n\nLimitations: Requires API key with fullAccess scope. Logs are retained for 7 days. Maximum 100 logs per request. Rate limit is 100 requests per minute.", - "parameters": [ - { - "name": "messageId", - "in": "query", - "description": "Filter logs by the message ID that triggered the notification", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "reactionId", - "in": "query", - "description": "Filter logs by the reaction ID that triggered the notification", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "from", - "in": "query", - "description": "Start timestamp in milliseconds to filter logs (inclusive)", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "to", - "in": "query", - "description": "End timestamp in milliseconds to filter logs (inclusive)", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "messageCategory", - "in": "query", - "description": "Filter by message category (currently only 'message' is supported)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "message" - ] - } - }, - { - "name": "messageType", - "in": "query", - "description": "Filter by message type (text, image, video, audio, file, custom, etc.)", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "trigger", - "in": "query", - "description": "Filter by the event trigger type. Message triggers: after_message, message_deleted, message_edited, message_reaction_added. Call triggers: initiated, rejected, cancelled, unanswered. Group triggers: after_group_joined, after_group_left, after_group_members_added, after_group_members_kicked, after_group_members_banned, after_group_members_unbanned, after_scope_changed", - "required": false, - "schema": { - "type": "string", - "enum": [ - "after_message", - "message_deleted", - "message_edited", - "message_reaction_added", - "initiated", - "rejected", - "cancelled", - "unanswered", - "after_group_joined", - "after_group_left", - "after_group_members_added", - "after_group_members_kicked", - "after_group_members_banned", - "after_group_members_unbanned", - "after_scope_changed" - ] - } - }, - { - "name": "sender", - "in": "query", - "description": "Filter by the UID of the message sender", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "reactionSender", - "in": "query", - "description": "Filter by the UID of the user who added the reaction", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "receiver", - "in": "query", - "description": "Filter by receiver (UID for user, GUID for group)", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "receiverType", - "in": "query", - "description": "Filter by receiver type: 'user' for 1-on-1 chats, 'group' for group chats", - "required": false, - "schema": { - "type": "string", - "enum": [ - "user", - "group" - ] - } - }, - { - "name": "reactionReceiver", - "in": "query", - "description": "Filter by the UID of the user notified about a reaction", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "member", - "in": "query", - "description": "Filter by group member UID (only applicable when receiverType is 'group')", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "channel", - "in": "query", - "description": "Filter by notification channel: push (mobile/web), email, or sms", - "required": false, - "schema": { - "type": "string", - "enum": [ - "push", - "email", - "sms" - ] - } - }, - { - "name": "provider", - "in": "query", - "description": "Filter by notification provider. Push: fcm, apns, custom. Email: sendgrid, custom. SMS: twilio, custom", - "required": false, - "schema": { - "type": "string", - "enum": [ - "fcm", - "apns", - "sendgrid", - "twilio", - "custom" - ] - } - }, - { - "name": "notificationTriggered", - "in": "query", - "description": "Filter by whether the notification was actually sent to the provider (true) or blocked by preferences (false)", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "reason", - "in": "query", - "description": "Filter by the reason notification was not triggered (only when notificationTriggered=false)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "MESSAGES_PREFERENCE", - "REPLIES_PREFERENCE", - "MESSAGE_ACTIONS_PREFERENCE", - "REACTIONS_PREFERENCE", - "GROUP_ACTIONS_PREFERENCE", - "DND_PREFERENCE", - "MUTE_PREFERENCE", - "SCHEDULE_PREFERENCE", - "CALL_PREFERENCE", - "QUOTA_PREFERENCE", - "MISSING_EMAIL", - "MISSING_PHNO", - "INVALID_PUSH_PROVIDER_ID", - "TIMED_OUT", - "NOT_FOUND", - "TWILIO_CREATE_ERROR" - ] - } - }, - { - "name": "success", - "in": "query", - "description": "Filter by provider response status (only when notificationTriggered=true). True = provider accepted, False = provider returned error", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "affix", - "in": "query", - "description": "Pagination direction: 'prepend' for newer logs, 'append' for older logs", - "required": false, - "schema": { - "type": "string", - "enum": [ - "prepend", - "append" - ] - } - }, - { - "name": "logId", - "in": "query", - "description": "Log ID cursor for pagination (use with affix parameter)", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "A list of push notification's email custom provider", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": [ - { - "_id": "67e3c56babf90e20e2652edb", - "processingStartedAtMS": 1742980459696, - "processingEndedAtMS": 1742980459738, - "totalProcessingTimeInMS": 42, - "component": "notifications-core", - "channel": "push", - "provider": "apns", - "messageId": 3939, - "reactionId": 69, - "trigger": "message_reaction_added", - "messageSentAtMS": 1742980459000, - "sender": "cometchat-uid-4", - "reactionSender": "cometchat-uid-1", - "receiver": "cometchat-guid-1", - "reactionReceiver": "g-muted-yes", - "receiverType": "group", - "member": "g-muted-yes", - "tokenType": "apns_ios_device", - "pushToken": "pushtoken123", - "providerId": "apns-provider", - "payload": { - "payload": { - "title": "cometchat-uid-1", - "body": "Reacted to your message: 😂", - "tag": "69", - "sender": "cometchat-uid-1", - "senderName": "cometchat-uid-1", - "receiver": "cometchat-guid-1", - "receiverName": "cometchat-guid-1", - "receiverType": "group", - "conversationId": "group_cometchat-guid-1", - "type": "chat", - "sessionId": null, - "callAction": null, - "callType": null, - "sentAt": null - }, - "contentAvailable": 1, - "mutableContent": 1, - "topic": "com.example.com", - "alert": { - "title": "cometchat-uid-1", - "body": "Reacted to your message: 😂" - }, - "priority": 10, - "pushType": "alert", - "sound": "default", - "collapseId": "69", - "expiry": 1742984059, - "type": "apns" - }, - "notificationTriggered": false, - "reason": "MUTE_PREFERENCE" - } - ], - "meta": { - "previous": { - "affix": "prepend", - "messageId": 3939 - }, - "current": { - "limit": 20, - "count": 20 - }, - "next": { - "affix": "append", - "messageId": 3939 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/rules": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Add Rule", - "description": "Creates a new content moderation rule to automatically filter messages based on specified conditions. Use moderation rules to block profanity, detect inappropriate images/videos, or filter sensitive content like phone numbers and emails.

**Rule types:** Text Profanity Filter (block messages containing words from a keyword list), AI Image Moderation (detect violence, adult content, or other unsafe imagery), AI Video Moderation (analyze video content for policy violations), and Pattern Matching (filter phone numbers, emails, or custom regex patterns).

**Actions:** blockMessage (prevent the message from being delivered, hold for review) and dropMessage (silently discard the message without notification).", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModerationRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "Moderation rule created successfully. The rule is immediately active and will filter matching messages.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/ModerationData" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Rules", - "description": "Retrieves all moderation rules configured for your CometChat app. Use this endpoint to audit your content moderation setup, build a moderation management interface, or verify which rules are active.

**Rule categories:** Text Profanity (keyword-based filtering for text messages), Custom Profanity (keyword filtering for custom message types), Image Moderation (AI-powered image content analysis), Video Moderation (AI-powered video content analysis), and Pattern Filters (regex-based filtering for emails, phone numbers).", - "parameters": [ - { - "name": "limit", - "in": "query", - "description": "Maximum number of rules to return. Default: 50.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "List Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - }, - { - "id": "video-moderation1", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720000488, - "updatedAt": 1720000488, - "revisionId": "253179cf5f665257_video-moderation1_1" - }, - { - "id": "text-profanity-filter", - "name": "Text Profanity filter", - "description": "Detect and censor profanity in text messages.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": true, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "word", - "operator": "contains", - "value": [ - "profanity-list" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718355386, - "updatedAt": 1720006272, - "revisionId": "253157108b5294c4_profanity-filter_25", - "default": true - }, - { - "id": "image-moderation", - "name": "AI Image Moderation", - "description": "AI-powered image moderation to detect unsafe content.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "AnyOf_greaterThan_30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718350200, - "updatedAt": 1719932600, - "revisionId": "253157108b5294c4_image-moderation_11", - "default": true - }, - { - "id": "video-moderation", - "name": "AI Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "video", - "category": "word", - "operator": "contains", - "value": [ - "AnyOf_greaterThan_30" - ] - } - ], - "action": [ - "dropMessage" - ], - "active": true, - "createdAt": 1718350199, - "updatedAt": 1720006008, - "revisionId": "253157108b5294c4_video-moderation_10", - "default": true - }, - { - "id": "custom-profanity-filter", - "name": "Custom Profanity filter", - "description": "Detect and censor profanity in custom messages.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isListReferencePresent": true, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "word", - "operator": "contains", - "value": [ - "profanity-list" - ] - } - ], - "action": [ - "dropMessage" - ], - "active": true, - "createdAt": 1718341200, - "updatedAt": 1719819136, - "revisionId": "253157108b5294c4_profanity-filter_8", - "default": true - }, - { - "id": "contact_details_filter", - "name": "Contact details filter", - "description": "Identifies and removes phone numbers from text", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" - ] - }, - { - "id": 2, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "pattern", - "operator": "contains", - "value": [ - "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718186338, - "updatedAt": 1719836048, - "revisionId": "2531882e5e289115_contact_details_filter_3", - "default": true - }, - { - "id": "email_filter", - "name": "Email filter", - "description": "Identify and remove email address from messages", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" - ] - }, - { - "id": 2, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "pattern", - "operator": "contains", - "value": [ - "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718099938, - "updatedAt": 1719836049, - "revisionId": "2531882e5e289115_contact_email_filter_5", - "default": true - } - ], - "meta": { - "current": { - "limit": 50, - "count": 8 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/rules/{ruleId}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get Rule", - "description": "Retrieves the complete configuration for a specific moderation rule including its conditions, actions, and current status. Use this endpoint to verify rule settings or debug moderation behavior.", - "parameters": [ - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "Moderation rule configuration retrieved successfully with all conditions and settings.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/ModerationData" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "profanity1", - "profanity2" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update Rule", - "description": "Updates an existing moderation rule's configuration. Use this endpoint to modify conditions, change actions, enable/disable rules, or update rule metadata.

**Common updates:** Enabling/disabling a rule without deleting it, adjusting confidence thresholds for AI moderation, changing the action from blockMessage to dropMessage, and updating keyword list references.", - "parameters": [ - { - "$ref": "#/components/parameters/ruleId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModerationRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "Moderation rule updated successfully. Changes are immediately active.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/ModerationData" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Remove rule", - "description": "Permanently deletes a moderation rule. Messages will no longer be filtered by this rule after deletion.", - "parameters": [ - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "Moderation rule deleted successfully. Messages will no longer be filtered by this rule.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Rule with id moderation-test has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/keywords": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Add Keywords", - "description": "Creates a new keyword list for moderation. Keyword lists can be referenced in moderation rules to detect specific words or phrases in messages.", - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/KeywordList" - } - } - } - }, - "responses": { - "200": { - "description": "Created Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profane-word-list-1", - "name": "profane word list", - "description": "Profane word list", - "category": "word", - "isCSV": true, - "searchTerms": [ - "\"a\"", - "\"b\"", - "\"c\"" - ], - "createdAt": 1720023805, - "updatedAt": 1720023805, - "revisionId": "253179cf5f665257_profane-word-list-1_1", - "active": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List keywords", - "description": "Retrieves all keyword lists configured for moderation. Shows list names, word counts, and associated rules.", - "responses": { - "200": { - "description": "List Keywords", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "_id": "66857afdb4bf371ddfba853b", - "id": "profane-word-list-1", - "appId": "253179cf5f665257", - "name": "profane word list", - "description": "Profane word list", - "category": "word", - "isCSV": true, - "searchTerms": [ - "\"a\"", - "\"b\"", - "\"c\"" - ], - "createdAt": 1720023805, - "updatedAt": 1720023805, - "revisionId": "253179cf5f665257_profane-word-list-1_1", - "active": true, - "__v": 0 - }, - { - "_id": "666c01eccfe97336757fb611", - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "__v": 0, - "default": true, - "appId": "default" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 2 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/keywords/{keywordId}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get keyword", - "description": "Retrieves details of a specific keyword list including all keywords and configuration settings.", - "parameters": [ - { - "$ref": "#/components/parameters/keywordId" - } - ], - "responses": { - "200": { - "description": "Get Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update keyword", - "description": "Updates a keyword list. Add or remove keywords, or modify list settings. Changes apply immediately to associated rules.", - "parameters": [ - { - "$ref": "#/components/parameters/keywordId" - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/KeywordList" - } - } - } - }, - "responses": { - "200": { - "description": "Update Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Remove keyword", - "description": "Deletes a keyword list. Rules referencing this list will no longer match these keywords.", - "parameters": [ - { - "$ref": "#/components/parameters/keywordId" - } - ], - "responses": { - "200": { - "description": "Delete Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Keyword with id profanity-list has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/rules/{ruleId}/revisions": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get Rule Revisions", - "description": "Retrieves version history of a moderation rule. Shows all previous configurations, who made changes, and when. Use for auditing rule changes.", - "parameters": [ - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "List Rule revisions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "word", - "operator": "equals", - "value": [ - "paris" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720011899, - "updatedAt": 1720011905, - "revisionId": "253179cf5f665257_moderation-test_2" - }, - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": false, - "createdAt": 1720011899, - "updatedAt": 1720011899, - "revisionId": "253179cf5f665257_moderation-test_1" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 2 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/blocked-messages": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Blocked Messages", - "description": "Retrieves messages blocked by automated moderation rules. Shows message content, sender, matched rule, and block timestamp. Use for reviewing false positives.", - "responses": { - "200": { - "description": "List Blocked Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "ruleId": "image-moderation", - "ruleName": "AI Image Moderation", - "revisionId": "253156be20433c97_image-moderation_4", - "condition": { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "Any unsafe content_greaterThan_70" - ], - "message": [ - "Image contains Any unsafe content with confidence greater than 70" - ], - "weight": 1 - }, - "message": { - "id": "65", - "muid": "_5zytzmceo", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", - "receiverType": "user", - "receiver": "superhero2", - "category": "message", - "type": "image", - "data": { - "metadata": { - "file": [] - }, - "resource": "WEB-4_0_3-ffa565b2-476e-493d-aeb5-4c750aae3ab1-1719925738505", - "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg", - "attachments": [ - { - "name": "download.jpeg", - "extension": "jpeg", - "size": 4761, - "mimeType": "image/jpeg", - "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg" - } - ], - "entities": { - "sender": { - "entity": { - "uid": "superhero1", - "name": "Iron Man", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "status": "offline", - "role": "default" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "superhero2", - "name": "Captain America", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", - "status": "offline", - "role": "default", - "conversationId": "superhero1_user_superhero2" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "pending" - } - }, - "sentAt": 1719993037, - "updatedAt": 1719993037 - }, - "action": [ - "blockMessage" - ], - "createdAt": 1719993038, - "updatedAt": 1719993038 - } - ], - "meta": { - "current": { - "limit": 50, - "count": 20 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/blocked-messages/{messageId}": { - "patch": { - "tags": [ - "Moderation" - ], - "summary": "Approve Blocked Messages", - "description": "Approves a blocked message, allowing it to be delivered. Use when automated moderation incorrectly blocked legitimate content.", - "parameters": [ - { - "$ref": "#/components/parameters/messageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "status" - ], - "properties": { - "status": { - "description": "Moderation status of the message.", - "type": "string", - "example": "approved" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Approve Blocked Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Message with ID 268 has been approved." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/moderation/messages": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Send message", - "description": "Submits a message for moderation before delivery. The message is scanned against all configured rules. Returns moderation status indicating if the message passed, was blocked, or flagged for review.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "sender", - "receiver", - "receiverType" - ], - "properties": { - "muid": { - "description": "The unique identifier for the message", - "type": "string" - }, - "category": { - "description": "Category of the message. The available category is message", - "type": "string", - "enum": [ - "message" - ] - }, - "type": { - "description": "Defines the type of the message based on the selected category.\nWhen `category` is `message`, the allowed values for `type` are:\n\n`text` — Plain text message\n\n`image` — Image message\n\n`audio` — Audio message\n\n`video` — Video message\n\n`file` — File message\n\nWhen `category` is `custom`, any custom string can be used as the `type`. This allows developers to define and handle custom message types as needed in their UI implementation.", - "type": "string", - "enum": [ - "text", - "image", - "file", - "audio", - "video" - ] - }, - "sender": { - "description": "UID of the sender.", - "type": "string" - }, - "receiver": { - "description": "If the receiverType == “user” the UID of a user receiving the message. else GUID of the group.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "data": { - "$ref": "#/components/schemas/moderationMessageData" - }, - "senderUserDetails": { - "description": "This property contains information about the sender user. It is required only if the sender does not already exist in CometChat. If provided, the sender user will be created before the message is processed.", - "allOf": [ - { - "$ref": "#/components/schemas/userSenderDetails" - } - ] - }, - "receiverUserDetails": { - "description": "This property contains information about the receiver user (in case of one-to-one messages). It is required only if the receiver user does not already exist in CometChat. If provided, the user will be created before the message is sent.", - "allOf": [ - { - "$ref": "#/components/schemas/userSenderDetails" - } - ] - }, - "receiverGroupDetails": { - "description": "This property contains information about the group receiving the message.\nIt is required only if the group does not already exist in CometChat. If provided, the group will be created before the message is sent.", - "allOf": [ - { - "$ref": "#/components/schemas/groupReceiverDetails" - } - ] - }, - "tags": { - "description": "String array containing developer defined tags.", - "type": "array", - "items": { - "type": "string" - } - }, - "sentAt": { - "description": "10 digit unix timestamp at which the message would be sent. If left blank, the current timestamp would be used.", - "type": "integer" - } - }, - "type": "object" - }, - "examples": { - "Send Moderation Message": { - "summary": "Send Moderation Message", - "value": { - "category": "message", - "type": "text", - "data": { - "text": "Hey there! Welcome aboard." - }, - "sender": "cometchat-test-user-1", - "receiver": "cometchat-test-user-2", - "senderUserDetails": { - "uid": "cometchat-test-user-1", - "name": "Test User 1" - }, - "receiverUserDetails": { - "uid": "cometchat-test-user-2", - "name": "Test User 2" - }, - "receiverType": "user" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Import Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "text": "Hi new user", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1751644824, - "createdAt": 1751644824, - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1751644824, - "createdAt": 1751644824 - }, - "entityType": "user" - } - }, - "moderation": { - "status": "pending" - } - }, - "sentAt": 1750335220, - "updatedAt": 1751644906 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List messages", - "description": "Retrieves messages submitted for moderation. Shows message content, moderation status (passed/blocked/flagged), matched rules, and timestamps.", - "parameters": [ - { - "name": "sender", - "in": "query", - "description": "Filters messages by the sender’s uid.", - "schema": { - "type": "string" - } - }, - { - "name": "receiverUID", - "in": "query", - "description": "Filters messages by the receiver's uid.", - "schema": { - "type": "string" - } - }, - { - "name": "receiverGUID", - "in": "query", - "description": "Filters messages by the receiver's guid in case of group", - "schema": { - "type": "string" - } - }, - { - "name": "category", - "in": "query", - "description": "Filters messages by category. Possible values: message and custom.", - "schema": { - "type": "string", - "enum": [ - "message", - "custom" - ] - } - }, - { - "name": "type", - "in": "query", - "description": "Filters messages by type.", - "schema": { - "type": "string" - } - }, - { - "name": "moderationStatus", - "in": "query", - "description": "Filters messages by moderation status.", - "schema": { - "type": "string", - "enum": [ - "disapproved", - "pending" - ] - } - } - ], - "responses": { - "200": { - "description": "Get Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "entities": { - "receiver": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "Andrew Joseph", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-1" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "George Alan", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-2" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "approved" - }, - "text": "Hi new user" - }, - "sentAt": 1750335220, - "updatedAt": 1751644906 - } - ], - "meta": { - "current": { - "limit": 100, - "count": 1 - }, - "next": { - "affix": "append", - "sentAt": 1750335220, - "id": "1" - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + "sentAt": 1700210266, + "updatedAt": 1700210266 + } + } + } } + } }, - "/moderation/messages/{id}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get message", - "description": "Retrieves details of a moderated message including content, sender, moderation status, matched rules, and review history.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Get Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "entities": { - "receiver": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "Andrew Joseph", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-1" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "George Alan", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-2" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "approved" - }, - "text": "Hi new user" - }, - "sentAt": 1750335220, - "updatedAt": 1751644906 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update message", - "description": "Updates a moderated message. The message is re-scanned against moderation rules and status is recalculated based on the edited content.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "$ref": "#/components/schemas/moderationMessageData" - } - }, - "type": "object" - }, - "examples": { - "Update Moderation Message": { - "summary": "Update Moderation Message", - "value": { - "data": { - "text": "This message has been updated." - } - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Update Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "1", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-2", - "receiverType": "user", - "receiver": "cometchat-uid-1", - "category": "message", - "type": "text", - "data": { - "text": "heyaya, I'm updated", - "entities": { - "receiver": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "Andrew Joseph", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-1" - }, - "entityType": "user" - }, - "sender": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "createdAt": 1751644824, - "lastActiveAt": 1751644824, - "name": "George Alan", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-2" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "approved" - } - }, - "sentAt": 1750335220, - "editedAt": 1751645607, - "editedBy": "cometchat-uid-1", - "updatedAt": 1751644906 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Delete message", - "description": "Deletes a moderated message and its associated moderation data including review history and rule match records.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the message whose details are to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Delete Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Message with id 20011 has been deleted successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/conversations": { + "get": { + "tags": ["Conversations"], + "summary": "List conversations", + "description": "Fetching all the conversations", + "operationId": "list-all-conversations", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.\n\n\nIf onBehalfOf header is not passed,then list Conversations API will be ordered based on `uid`, `updatedAt` and then `conversationWith`\n\nIf onBehalfOf header is passed, then list Conversations API will be ordered based on `updatedAt` and then `conversationWith`.", + "required": false, + "schema": { + "type": "string" } - }, - "/moderation/reasons": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Create Reasons", - "description": "Creates a new moderation reason that users can select when flagging inappropriate messages. Examples: 'Spam', 'Harassment', 'Inappropriate Content'.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "description": "Unique identifier for the content type.", - "type": "string", - "example": "unfiltered-content" - }, - "name": { - "description": "Display name for the content type.", - "type": "string", - "example": "RawContent" - }, - "description": { - "description": "Description of the content type.", - "type": "string", - "example": "Content delivered without moderation or filtering." - } - }, - "type": "object" - }, - "examples": { - "Send Moderation Reason": { - "summary": "Send Moderation Message", - "value": { - "id": "unfiltered-content", - "name": "RawContent", - "description": "Content delivered without moderation or filtering." - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Create Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "unfiltered-content", - "name": "RawContent", - "description": "Content delivered without moderation or filtering.", - "createdAt": 1760449410, - "updatedAt": 1760449410 - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Reasons", - "description": "Retrieves all moderation reasons configured for your app. These reasons are shown to users when they flag messages.", - "responses": { - "200": { - "description": "List Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": [ - { - "id": "unfiltered-content", - "name": "RawContent", - "description": "Content delivered without moderation or filtering.", - "createdAt": "1760449410", - "updatedAt": "1760449410" - }, - { - "id": "spam", - "name": "Spam / Unwanted Content", - "description": "Repeated, promotional, or irrelevant content", - "createdAt": "1760443648", - "updatedAt": "1760443648", - "default": true - }, - { - "id": "sexual", - "name": "Sexual Content", - "createdAt": "1758000762", - "updatedAt": "1758000762", - "description": "Explicit or inappropriate content" - }, - { - "id": "harassment", - "name": "Harassment / Bullying", - "createdAt": "1758000761", - "updatedAt": "1758000761", - "description": "Insulting or threatening behavior" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 4 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + }, + { + "name": "searchKey", + "in": "query", + "description": "Fetches conversations that include the specified searchKey, allowing you to search for conversations based on the name of a User or Group.", + "schema": { + "type": "string" } - }, - "/moderation/reasons/{id}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get Reason details", - "description": "Retrieves details of a specific moderation reason including its name, description, and usage statistics.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the reason which needs to be fetched.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reason ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "List Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "spam", - "name": "Spam / Unwanted Content", - "description": "Repeated, promotional, or irrelevant content", - "createdAt": 1760443648, - "updatedAt": 1760443648, - "default": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update Reason details", - "description": "Updates a moderation reason's name or description. Changes are reflected immediately in the user-facing flag dialog.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the reason which needs to be updated.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reason ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Updated display name for the content type.", - "type": "string", - "example": "Updated name for unfiltered content." - } - }, - "type": "object" - }, - "examples": { - "Send Moderation Reason": { - "summary": "Send Moderation Message", - "value": { - "name": "Updated name for unfiltered content." - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Update Reasons Details", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "id": "spam", - "name": "Spam / Unwanted Content", - "description": "Repeated, promotional, or irrelevant content", - "createdAt": 1760443648, - "updatedAt": 1760443648, - "default": true - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Delete Reasons", - "description": "Deletes a moderation reason. Users will no longer see this option when flagging messages. Existing flags with this reason are preserved.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the reason which needs to be deleted.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Reason ID", - "value": "" - } - } - } - ], - "responses": { - "200": { - "description": "Delete Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "success": true, - "message": "The reason with id spam has been deleted successfully." - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + }, + { + "name": "conversationType", + "in": "query", + "description": "Retrieves only the specified conversation type (user and group) while fetching conversations list.", + "schema": { + "type": "string" } - }, - "/messages/{id}/flagged": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Flag a message", - "description": "Flags a message for moderator review. Requires 'onBehalfOf' header. Users can select a reason for flagging. Flagged messages appear in the moderation queue for review.", - "parameters": [ - { - "$ref": "#/components/parameters/requiredonBehalfOf" - }, - { - "name": "id", - "in": "path", - "description": "Id of the message of the message to be flagged.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "id" - ], - "properties": { - "id": { - "description": "Unique identifier of the moderation reason used to flag the message.", - "type": "string", - "example": "spam" - } - }, - "type": "object" - }, - "examples": { - "Flag Message": { - "summary": "Flag a message for moderation", - "value": { - "id": "spam" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Delete Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "success": true, - "message": "Message 540092 has been flagged successfully." - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + }, + { + "name": "withTags", + "in": "query", + "description": "Includes those groups that have tags.", + "schema": { + "type": "boolean" } - }, - "/moderation/blocked-messages/{id}": { - "patch": { - "tags": [ - "Moderation" - ], - "summary": "Review Blocked Message", - "description": "Reviews a blocked message and takes action. Approve to deliver the message, or confirm the block to keep it hidden. Updates the message's moderation status.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the message of the message to be flagged.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "status", - "reviewed" - ], - "properties": { - "status": { - "description": "Indicates the review decision for the moderated message. Possible values: approved, rejected.", - "type": "string", - "example": "approved" - }, - "reviewed": { - "description": "Specifies whether the moderation request has been reviewed.", - "type": "boolean", - "example": true - } - }, - "type": "object" - }, - "examples": { - "Review Moderation Request": { - "summary": "Approve or reject a moderated message", - "value": { - "status": "approved", - "reviewed": true - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Review Blocked Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Message with ID 540185 has been reviewed successfully." - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + }, + { + "name": "tags", + "in": "query", + "description": "Fetches only those groups that have these tags.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } } - }, - "/moderation/flagged-messages": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "List flagged messages", - "description": "Retrieves messages flagged by users for moderator review. Shows message content, who flagged it, selected reason, and current review status.", - "parameters": [ - { - "name": "limit", - "in": "query", - "description": "The number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "default": 50 - }, - "example": 50 - } - ], - "responses": { - "200": { - "description": "Delete Reasons", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": [ - { - "appId": "253626bf6512389d", - "id": "540190", - "conversationId": "cometchat-uid-1_user_cometchat-uid-3", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-3", - "category": "message", - "type": "text", - "data": { - "entities": { - "receiver": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", - "conversationId": "cometchat-uid-1_user_cometchat-uid-3", - "createdAt": 1730815502, - "lastActiveAt": 1754574851, - "name": "Nancy", - "role": "default", - "status": "offline", - "uid": "cometchat-uid-3", - "updatedAt": 1760607558 - }, - "entityType": "user" - }, - "sender": { - "entity": { - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "createdAt": 1730815502, - "lastActiveAt": 1761295157, - "name": "Andrew Joseph", - "role": "default", - "status": "online", - "uid": "cometchat-uid-1", - "updatedAt": 1738833132 - }, - "entityType": "user" - } - }, - "metadata": { - "@injected": { - "extensions": { - "link-preview": { - "links": [] - } - } - } - }, - "text": "heya man" - }, - "sentAt": 1761295196, - "updatedAt": 1761295196, - "flaggedBy": [ - { - "uid": "cometchat-uid-3", - "name": "Nancy", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", - "role": "default", - "reasonId": "spam", - "reasonName": "Spam / Unwanted Content", - "description": "Repeated, promotional, or irrelevant content", - "remark": "He is continously spamming me", - "flaggedAt": 1761295210 - } - ], - "flaggedCount": 1 - } - ], - "meta": { - "current": { - "limit": 50, - "count": 1 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] + }, + { + "name": "withUserAndGroupTags", + "in": "query", + "description": "Retrieves conversations with tags", + "schema": { + "type": "boolean" + } + }, + { + "name": "userTags", + "in": "query", + "description": "Filters conversations by tags associated with the user entity in the conversationWith property.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "groupTags", + "in": "query", + "description": "Filters conversations by tags associated with the group entity in the conversationWith property.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "unread", + "in": "query", + "description": "Lists only unread conversations by excluding the conversations with conversation.unreadMessageCount=0", + "schema": { + "type": "boolean" + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of conversations to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number.", + "schema": { + "type": "integer", + "default": "1" + } + } + ], + "responses": { + "200": { + "description": "Get Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1630305562, + "updatedAt": 1630305562, + "receipts": { + "data": [[]] + } + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ], + "meta": { + "pagination": { + "total": 1, + "count": 1, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } - ] + } + } + } } + } }, - "/moderation/reviewed-messages": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Reviewed messages", - "description": "Retrieves messages that have been reviewed by moderators. Shows review outcome (approved/blocked), reviewer, and review timestamp.", - "parameters": [ - { - "name": "limit", - "in": "query", - "description": "The number of items to return per page.", - "required": false, - "schema": { - "type": "integer", - "default": 50 + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/conversations/{conversationId}": { + "get": { + "tags": ["Conversations"], + "summary": "Get conversation", + "description": "This API is deprecated please use Get User/Group ConversationAPI", + "operationId": "get-conversation", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/conversationId" + } + ], + "responses": { + "200": { + "description": "Get Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } }, - "example": 50 - } - ], - "responses": { - "200": { - "description": "List Reviewed Messages", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "data": [ - { - "ruleId": "toxicity", - "ruleName": "Toxicity Detection (English)", - "revisionId": "default_toxicity_1", - "condition": { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "toxicity", - "operator": "contains", - "value": [ - "toxicity_greaterThan_70" - ], - "message": "Text message contains Toxicity greater than 70%", - "weight": 1 - }, - "message": { - "id": "390079", - "muid": "_b0zr29wvr", - "conversationId": "cometchat-uid-1_user_cometchat-uid-3", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-3", - "category": "message", - "type": "text", - "data": { - "text": "nigger", - "resource": "WEB-4_1_1-7896d270-ea72-4510-b993-282ab6a6afdb-1757953564776", - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "online", - "role": "default", - "lastActiveAt": 1757955944 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-3", - "name": "Nancy Grace", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", - "status": "offline", - "role": "default", - "lastActiveAt": 1754574851, - "conversationId": "cometchat-uid-1_user_cometchat-uid-3" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "disapproved", - "rule": { - "id": "toxicity", - "name": "Toxicity Detection (English)" - } - } - }, - "sentAt": 1757955946, - "updatedAt": 1757955946 - }, - "action": [ - "blockMessage" - ], - "createdAt": 1757955951, - "updatedAt": 1757955951, - "blockedAt": "1757955951.000000000390079", - "appId": "253626bf6512389d" - } - ], - "meta": { - "current": { - "limit": 50, - "count": 46 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + "sentAt": 1630305562, + "updatedAt": 1630305562, + "receipts": { + "data": [[]] + } + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ] + } + } } + } }, - "/moderation/flagged-messages/{id}": { - "patch": { - "tags": [ - "Moderation" - ], - "summary": "Block/Review Flagged Message", - "description": "Reviews a flagged message and takes action. Approve to dismiss the flag, or block to hide the message. Reviewed messages are moved to the reviewed list for audit purposes.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Id of the message which needs to be reviewed.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Message ID", - "value": "" - } - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "status": { - "description": "Specifies the moderation action to apply to the flagged message (approve or disapprove).", - "type": "string", - "enum": [ - "approved", - "disapproved" - ] - } - }, - "type": "object" - }, - "examples": { - "Disapprove Flagged Message": { - "summary": "Disapprove Flagged Message", - "value": { - "status": "disapproved" - } - }, - "Approve Flagged Message": { - "summary": "Approve Flagged Message", - "value": { - "status": "approved" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Review and Flag Message(s)", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "success": true, - "message": "Message with id 2 has been unflagged successfully." - } - } - } + "deprecated": true, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Conversations"], + "summary": "Delete Conversation", + "description": "This API is deprecated please use Reset User/GroupConversation API", + "operationId": "deletes-conversation", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/conversationId" + } + ], + "responses": { + "200": { + "description": "Deleted Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "security": [ - { - "apiKey": [] - } - ] + "example": { + "data": { + "success": true, + "message": "The conversation group_project-group has been deleted successfully for all the users." + } + } + } } + } }, - "/stats": { - "get": { - "tags": [ - "Metrics" - ], - "summary": "Usage Metrics", - "description": "Retrieves aggregated usage metrics for your CometChat app within a specified date range. Use this endpoint to monitor app usage, track billing-relevant metrics, or build analytics dashboards.

**Available metrics:** audio_minutes (total minutes of audio calls), video_minutes (total minutes of video calls), recorded_minutes (total minutes of recorded calls), active_users (number of unique users who were active), and concurrent_users (peak concurrent users during the period).", - "parameters": [ - { - "name": "fromDate", - "in": "query", - "description": "Start of the date range as a Unix timestamp in milliseconds. Usage data from this point forward will be included. Example: 1630164253000 for September 2021.", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "name": "toDate", - "in": "query", - "description": "End of the date range as a Unix timestamp in milliseconds. Usage data up to this point will be included. Must be greater than fromDate.", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "description": "Usage metrics for the specified date range. All metrics are aggregated totals for the period.", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "metrics": { - "audio_minutes": 0, - "video_minutes": 0, - "recorded_minutes": 0, - "active_users": 0, - "concurrent_users": 0 - }, - "time_range": { - "fromDate": 1630164253000, - "toDate": 1632842653000 - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + "deprecated": true, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/conversation": { + "get": { + "tags": ["Conversations"], + "summary": "Get User Conversation", + "description": "Getting user conversation", + "operationId": "get-user-conversations", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/uid--conversation" + } + ], + "responses": { + "200": { + "description": "Get user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1630305562, + "updatedAt": 1630305562 + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ] + } + } } + } }, - "/stats/messages": { - "get": { - "tags": [ - "Metrics" - ], - "summary": "Message Metrics", - "description": "Retrieves real-time message metrics for your CometChat app, showing message activity in 5-minute intervals. Use this endpoint to monitor message throughput, track delivery performance, or build real-time analytics dashboards.

**Available metrics per interval:** messagesSent (number of messages sent during the interval), readReceipts (number of read receipts received), and deliveryReceipts (number of delivery receipts received). Returns data points for the last hour, each covering a 5-minute window. Timestamps are in milliseconds.", - "responses": { - "200": { - "description": "Message metrics broken down into 5-minute intervals. Use this to visualize message activity over time.", - "content": { - "application/json": { - "schema": { - "properties": { - "dataPoints": { - "type": "array", - "items": {} - } - }, - "type": "object" - }, - "example": { - "data": { - "startTime": "1682676600000", - "endTime": "1682680200000", - "dataPoints": [ - { - "messagesSent": 0, - "readReceipts": 0, - "deliveryReceipts": 0, - "startTime": "1682676600000", - "endTime": "1682676900000" - }, - { - "messagesSent": 0, - "readReceipts": 0, - "deliveryReceipts": 0, - "startTime": "1682676900000", - "endTime": "1682677200000" - } - ], - "appId": "235391c94852dc7d" - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Conversations"], + "summary": "Update User Conversation", + "description": "Updating User Conversation", + "operationId": "updates-user-conversation", + "parameters": [ + { + "$ref": "#/components/parameters/uid--conversation" + }, + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" } - } - }, - "components": { - "schemas": { - "APIKeySchema": { - "description": "Represents an API key used for authenticating requests to the CometChat REST API. API keys have different scopes that determine what operations they can perform.", - "properties": { - "apiKey": { - "description": "The API key string used in the apiKey header for authentication. Keep this secure and never expose in client-side code", - "type": "string" - }, - "name": { - "description": "Display name for the API key to help identify its purpose (e.g., 'Production Server', 'Development')", - "type": "string" - }, - "scope": { - "description": "Permission scope of the API key. Values: 'fullAccess' (all operations), 'authOnly' (only create auth tokens for users)", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the API key was created", - "type": "integer" - } - }, - "type": "object" - }, - "CategoryType": { - "description": "Type of entries in the list", - "type": "string", - "enum": [ - "word", - "pattern", - "sentence-similarity" - ] - }, - "CommonFields": { - "description": "Common fields required for all push notification token registrations", - "properties": { - "authToken": { - "description": "The user's authentication token. Links the push token to a specific user session", - "type": "string", - "example": "superhero3_1710141033938cf7e3c67cc44465440d" - }, - "timezone": { - "description": "User's timezone for scheduling notifications appropriately (IANA timezone format)", - "type": "string", - "example": "Asia/Kolkata" - } - }, - "type": "object" - }, - "Condition": { + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "id": { - "description": "Unique identifier of a condition", - "type": "integer", - "example": 1 - }, - "entity": { - "description": "Entity type in which moderation will be performed.", - "type": "string", - "example": "message" - }, - "operand": { - "description": "Type of message content to moderate (e.g., text, image, video, custom).", - "type": "string", - "enum": [ - "text", - "image", - "video", - "custom" - ], - "example": "image" - }, - "operator": { - "description": "Operation to be performed for condition evaluation (e.g., contains, equals).", - "type": "string", - "enum": [ - "contains", - "equals" - ], - "example": "contains" - }, - "category": { - "description": "Type of entries for evaluation, either 'word' or 'pattern'.", - "type": "string", - "enum": [ - "word", - "pattern" - ], - "example": "word" - }, - "isKeywordReferencePresent": { - "description": "Indicates if the value contains a reference to a keyword list.", - "type": "boolean", - "example": false - }, - "isMediaPresent": { - "description": "Indicates if the incoming message contains media content.", - "type": "boolean", - "example": true - }, - "value": { - "description": "Actual value for the condition, or reference ID if isKeywordReferencePresent is true, or a formula if isMediaPresent is true.", - "type": "string", - "example": "violence_greaterThan_30" + "tags": { + "description": "List of tags to identify specific conversation.", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "CustomEmailProviderConfig": { + } + } + } + }, + "responses": { + "200": { + "description": "Updated user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1630305562, + "updatedAt": 1630305562, + "receipts": { + "data": [[]] + } + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ] + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Conversations"], + "summary": "Reset User Conversation", + "description": "Resetting User Conversation", + "operationId": "resets-user-conversation", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/uid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "useStoredEmailID": { - "description": "If enabled, the webhook will be triggered for a user only if their email address is stored within CometChat.", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL to be triggered for the respective events.", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" - } + "conversationWith": { + "description": "UID of a user", + "type": "string" + }, + "deleteMessagesPermanently": { + "description": "Permanently deletes messages in that particular conversation", + "type": "boolean" + } }, "type": "object" - }, - "CustomSMSProviderConfig": { - "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "useStoredPhNo": { - "description": "If enabled, the webhook will be triggered for a user only if their phone number is stored within CometChat.", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL triggered for respective events", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "Resetted user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "Day": { + "example": { + "data": { + "success": true, + "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/conversation/delivered": { + "post": { + "tags": ["Conversations"], + "summary": "Mark User Conversation As Delivered", + "description": "This API will mark the user conversation as delivered.", + "operationId": "mark-conversation-as-delivered", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the receiver of the message", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/uid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "from": { - "type": "integer", - "format": "int32", - "maximum": 2359, - "minimum": 0 - }, - "to": { - "type": "integer", - "format": "int32", - "maximum": 2359, - "minimum": 0 - }, - "dnd": { - "type": "boolean" - } + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as delivered.", + "type": "integer" + } }, "type": "object" - }, - "Group": { - "properties": { - "messagesSetting": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "messagesOverride": { - "type": "boolean" - }, - "repliesSetting": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "repliesOverride": { - "type": "boolean" - }, - "reactionsSetting": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "reactionsOverride": { - "type": "boolean" - }, - "memberLeftSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberLeftOverride": { - "type": "boolean" - }, - "memberAddedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberAddedOverride": { - "type": "boolean" - }, - "memberJoinedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberJoinedOverride": { - "type": "boolean" - }, - "memberKickedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberKickedOverride": { - "type": "boolean" - }, - "memberBannedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberBannedOverride": { - "type": "boolean" - }, - "memberUnbannedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberUnbannedOverride": { - "type": "boolean" - }, - "memberScopeChangedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberScopeChangedOverride": { - "type": "boolean" - }, - "messageEditedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "messageDeletedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as delivered", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "GroupFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], + "example": { + "data": { + "success": true, + "Message": "All the messages from the user are marked as delivered for the requesting user." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/conversation/read": { + "post": { + "tags": ["Conversations"], + "summary": "Mark User Conversation As Read", + "description": "This API will mark the user conversation as read.", + "operationId": "mark-conversation-as-read", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the receiver of the message", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/uid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "entity": { - "description": "Type of entity for group filter", - "type": "string", - "enum": [ - "group" - ] - }, - "operand": { - "description": "Field to apply the filter on for 'group'", - "type": "string", - "enum": [ - "guid", - "name", - "type", - "tags", - "createdAt" - ] - }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "notEquals", - "in", - "notIn", - "startsWith", - "endsWith", - "lessThan", - "greaterThan" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "exampleValue" - }, - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" - } + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as read.", + "type": "integer" + } }, "type": "object" - }, - "KeywordList": { - "discriminator": { - "propertyName": "category", - "mapping": { - "word": "#/components/schemas/WordPatternSchema", - "pattern": "#/components/schemas/PatternSchema", - "sentence-similarity": "#/components/schemas/SentenceSimilaritySchema" + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as read", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "oneOf": [ - { - "$ref": "#/components/schemas/WordPatternSchema" - }, - { - "$ref": "#/components/schemas/PatternSchema" - }, - { - "$ref": "#/components/schemas/SentenceSimilaritySchema" - } - ] - }, - "MediaMessageTemplate": { + "example": { + "data": { + "success": true, + "Message": "All the messages from the user are marked as read for the requesting user." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Conversations"], + "summary": "Mark Conversation Messages As Unread", + "description": "Allows you to mark messages within a conversation as unread", + "operationId": "mark-conversation-as-unread", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the receiver of the message", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/uid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "titleOneOnOne": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}}" - }, - "titleGroup": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" - }, - "body_image": { - "type": "string", - "example": "Has sent an {{message.type}}" - }, - "body_audio": { - "type": "string", - "example": "Has sent an {{message.type}}" - }, - "body_video": { - "type": "string", - "example": "Has sent a {{message.type}}" - }, - "body_file": { - "type": "string", - "example": "Has sent a {{message.type}}" - } + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as unread.", + "type": "integer" + } }, "type": "object" - }, - "ModerationData": { - "properties": { - "id": { - "type": "string", - "example": "moderation-test" - }, - "name": { - "type": "string", - "example": "Video Moderation" - }, - "description": { - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "enabled": { - "type": "boolean", - "example": true - }, - "conditions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } - }, - "action": { - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "active": { - "type": "boolean", - "example": true - }, - "createdAt": { - "type": "integer", - "example": 1720003247 - }, - "updatedAt": { - "type": "integer", - "example": 1720003247 - }, - "revisionId": { - "type": "string", - "example": "253179cf5f665257_moderation-test_1" + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as unread", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "ModerationRequestBody": { + "example": { + "data": { + "success": true, + "message": "The messages after the message id 340 from the user demo1 are marked as unread for the user demo3." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/conversation": { + "get": { + "tags": ["Conversations"], + "summary": "Get Group Conversation", + "description": "Getting group conversation", + "operationId": "get-group-conversations", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/guid--conversation" + } + ], + "responses": { + "200": { + "description": "Get user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1630305562, + "updatedAt": 1630305562 + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ] + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Conversations"], + "summary": "Update Group Conversation", + "description": "Updating Group Conversation", + "operationId": "updates-group-conversation", + "parameters": [ + { + "$ref": "#/components/parameters/guid--conversation" + }, + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "id": { - "description": "Unique identifier for the moderation rule.", - "type": "string", - "example": "moderation-test" - }, - "name": { - "description": "Descriptive name for the moderation rule.", - "type": "string", - "example": "Video Moderation" - }, - "enabled": { - "description": "Indicates whether the rule is active.", - "type": "boolean", - "example": true - }, - "description": { - "description": "Detailed explanation of the rule's purpose.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "action": { - "description": "Actions to be taken when a violation is detected.", - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "filters": { - "description": "List of filters to apply", - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/UserFilter" - }, - { - "$ref": "#/components/schemas/GroupFilter" - } - ] - } - }, - "conditions": { - "description": "List of conditions that must be met for the rule to trigger.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } + "tags": { + "description": "List of tags to identify specific conversation.", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "Mute": { - "properties": { - "dndPreferenceOverride": { - "type": "boolean" - }, - "mutedGroupsOverride": { - "type": "boolean" - }, - "mutedOneOnOnesOverride": { - "type": "boolean" - }, - "schedulePreferenceSetting": { - "properties": { - "monday": { - "$ref": "#/components/schemas/Day" - }, - "tuesday": { - "$ref": "#/components/schemas/Day" - }, - "wednesday": { - "$ref": "#/components/schemas/Day" - }, - "thursday": { - "$ref": "#/components/schemas/Day" - }, - "friday": { - "$ref": "#/components/schemas/Day" + } + } + } + }, + "responses": { + "200": { + "description": "Updated user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "conversationId": "group_project-group", + "conversationType": "group", + "unreadMessageCount": "0", + "createdAt": 1630071782, + "updatedAt": 1630481413, + "lastMessage": { + "id": "50", + "conversationId": "group_project-group", + "sender": "superhero4", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "unbanned", + "entities": { + "by": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1629869270 + }, + "entityType": "user" }, - "saturday": { - "$ref": "#/components/schemas/Day" + "on": { + "entity": { + "uid": "superhero3", + "link": "https://data-us.cometchat.io/assets", + "name": "Captain America", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "createdAt": 1629869270, + "updatedAt": 1629964825, + "conversationId": "superhero3_user_superhero4" + }, + "entityType": "user" }, - "sunday": { - "$ref": "#/components/schemas/Day" - } + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group1", + "type": "private", + "owner": "superhero4", + "createdAt": 1630071341, + "updatedAt": 1630305525, + "updatedBy": "superhero4", + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } }, - "type": "object" - }, - "schedulePreferenceOverride": { - "type": "boolean" + "sentAt": 1630305562, + "updatedAt": 1630305562, + "receipts": { + "data": [[]] + } + }, + "conversationWith": { + "guid": "project-group", + "name": "Project Group1", + "description": "project related discussions between members", + "icon": "http://placehold.it/120x120&text=image1", + "type": "private", + "scope": "participant", + "membersCount": 4, + "joinedAt": 1630071782, + "conversationId": "group_project-group", + "hasJoined": true, + "createdAt": 1630071341, + "owner": "superhero4", + "updatedAt": 1630308875, + "updatedBy": "superhero4" + } + } + ] + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Conversations"], + "summary": "Reset Group Conversation", + "description": "Resetting Group Conversation", + "operationId": "resets-group-conversation", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/guid--conversation" + } + ], + "responses": { + "200": { + "description": "Resetted user Conversations", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "MutePreferences": { + "example": { + "data": { + "success": true, + "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/conversation/delivered": { + "post": { + "tags": ["Conversations"], + "summary": "Mark Group Conversation As Delivered", + "description": "This API will mark the group conversation as delivered.", + "operationId": "mark-group-conversation-as-delivered", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the receiver of the message", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/guid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "dnd": { - "description": "1: Disable DND\n2: Enable DND", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "schedule": { - "$ref": "#/components/schemas/Schedule" - } + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as delivered.", + "type": "integer" + } }, "type": "object" - }, - "PNSuccess": { - "properties": { - "success": { - "type": "boolean" + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as delivered", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "All the messages in the group are marked as delivered for the requesting user." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/conversation/read": { + "post": { + "tags": ["Conversations"], + "summary": "Mark Group Conversation As Read", + "description": "This API will mark the group conversation as read.", + "operationId": "mark-group-conversation-as-read", + "parameters": [ + { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the receiver of the message", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/guid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as read.", + "type": "integer" + } }, "type": "object" - }, - "PatternSchema": { - "required": [ - "category", - "searchTerms" - ], + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as read", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "All the messages in the group are marked as read for the requesting user." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Conversations"], + "summary": "Mark Group Conversation As Unread", + "description": "This API will mark the group conversation as unread.", + "operationId": "mark-group-conversation-as-unread", + "parameters": [ + { + "$ref": "#/components/parameters/guid--conversation" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the pattern list.", - "type": "string", - "example": "ID-of-the-pattern-list" - }, - "name": { - "description": "Descriptive name for the pattern list.", - "type": "string", - "example": "Name of the pattern list" - }, - "description": { - "description": "Detailed explanation of the pattern list's purpose.", - "type": "string", - "example": "Description of the pattern list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." + "messageId": { + "description": "The id of the message upto which the conversation needs to be marked as unread.", + "type": "integer" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Marking Conversation as unread", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "The messages after the message id 340 from the user demo1 are marked as unread for the user demo3." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/auth_tokens": { + "post": { + "tags": ["Auth Tokens"], + "summary": "Create", + "description": "Creates auth token for a user with the specified UID.", + "operationId": "create-authtoken", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "force": { + "description": "Generates new auth token forcefully.", + "type": "boolean" + } }, "type": "object" - }, - "PlatformAPNS": { - "description": "APNS (Apple Push Notification Service) token registration for iOS devices", - "allOf": [ - { - "properties": { - "platform": { - "description": "Platform identifier for APNS-based push notifications", - "type": "string", - "enum": [ - "apns_ios_device", - "apns_flutter_device", - "apns_react_native_device", - "apns_ionic_cordova_device" - ] - }, - "providerId": { - "description": "ID of the APNS provider configuration to use for sending notifications", - "type": "string", - "example": "apns-provider-2" - }, - "deviceToken": { - "description": "The APNS device token obtained from iOS", - "type": "string" - } - }, - "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Created auth token", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "uid": "superhero1", + "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "createdAt": 1630306819 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Auth Tokens"], + "summary": "List", + "description": "Lists auth tokens for a user with the specified UID.", + "operationId": "list-authtokens", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of auth tokens to return per page.", + "schema": { + "type": "number", + "default": 100 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for paginated results.", + "schema": { + "type": "number", + "default": 1 + } + } + ], + "responses": { + "200": { + "description": "A list of auth tokens", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - { - "$ref": "#/components/schemas/CommonFields" + "meta": { + "type": "object" } - ] - }, - "PlatformFCM": { - "description": "FCM (Firebase Cloud Messaging) token registration for Android, iOS, Web, Flutter, React Native, and Ionic platforms", - "allOf": [ - { - "properties": { - "platform": { - "description": "Platform identifier for FCM-based push notifications", - "type": "string", - "enum": [ - "fcm_android", - "fcm_ios", - "fcm_web", - "fcm_flutter_android", - "fcm_flutter_ios", - "fcm_react_native_android", - "fcm_react_native_ios", - "fcm_ionic_cordova_android", - "fcm_ionic_cordova_ios" - ] - }, - "providerId": { - "description": "ID of the FCM provider configuration to use for sending notifications", - "type": "string", - "example": "fcm-provider-2" - }, - "fcmToken": { - "description": "The FCM registration token obtained from Firebase SDK", - "type": "string" - } - }, - "type": "object" - }, + }, + "type": "object" + }, + "example": { + "data": [ { - "$ref": "#/components/schemas/CommonFields" + "uid": "superhero1", + "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "createdAt": 1630306819 } - ] - }, - "PlatformVOIP": { - "description": "APNS VOIP token registration for iOS voice/video call push notifications", - "allOf": [ - { - "properties": { - "platform": { - "description": "Platform identifier for VOIP push notifications", - "type": "string", - "enum": [ - "apns_ios_voip", - "apns_flutter_voip", - "apns_ionic_cordova_voip", - "apns_react_native_voip" - ] - }, - "providerId": { - "description": "ID of the APNS VOIP provider configuration to use", - "type": "string", - "example": "apns-provider-2" - }, - "voipToken": { - "description": "The APNS VOIP token obtained from iOS for call notifications", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/CommonFields" + ], + "meta": { + "pagination": { + "total": 1, + "count": 1, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } - ] - }, - "Preferences": { - "properties": { - "push": { - "properties": { - "includeMessageObjectSetting": { - "description": "Include the message object in the push payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Include the sender's metadata as part of the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Include the receiver's metadata as part of the message object", - "type": "boolean" - }, - "trimTextFieldSetting": { - "description": "Trim the text field if present.", - "type": "boolean" - }, - "includeMessageMetadataSetting": { - "description": "Include the message's metadata as part of the message object", - "type": "boolean" - }, - "customJson": { - "description": "A custom JSON object for miscellaneous data", - "type": "object" - } - }, - "type": "object" - }, - "call": { - "properties": { - "initiatedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "ongoingSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "cancelledSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "busySetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "rejectedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "unansweredSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "endedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - } - }, - "type": "object" - }, - "bypassPreferencesForMentions": { - "type": "boolean" - }, - "bypassPreferencesForGroupMentions": { - "type": "boolean" - }, - "group": { - "$ref": "#/components/schemas/Group" - }, - "oneOnOne": { - "$ref": "#/components/schemas/oneOnOne" - }, - "mute": { - "$ref": "#/components/schemas/Mute" - }, - "email": { - "$ref": "#/components/schemas/email" - }, - "sms": { - "$ref": "#/components/schemas/sms" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Auth Tokens"], + "summary": "Flush", + "description": "Deletes all the auth tokens for the specified UID.", + "operationId": "flush-authtokens", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "responses": { + "200": { + "description": "A list of api keys", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "Cleared Auth Tokens successfully for uid superhero1." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/auth_tokens/{authToken}": { + "get": { + "tags": ["Auth Tokens"], + "summary": "Get", + "description": "Retrieves details of an auth token for the specified UID andauth token.", + "operationId": "get-authtoken", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "$ref": "#/components/parameters/authToken" + } + ], + "responses": { + "200": { + "description": "Retrieve Auth Token", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "RolePermissionSchema": { - "description": "Role permission mapping", + "example": { + "data": { + "uid": "superhero1", + "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "createdAt": 1630306819 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Auth Tokens"], + "summary": "Update", + "description": "Updates the details of an auth token for the specified UID andauth token.", + "operationId": "update-authtoken", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "name": "authToken", + "in": "path", + "description": "An auth token of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Auth Token", + "value": "superhero1_1625206799abcdef" + } + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "role": { - "description": "Role name", - "type": "string", - "example": "admin" - }, - "permissions": { - "description": "List of permissions mapped to the role", - "type": "object", - "example": { - "users.read": true, - "users.write": true, - "groups.read": true, - "groups.write": false - }, - "additionalProperties": { - "type": "boolean" - } - } + "platform": { + "description": "The platform on which the auth token is being used.", + "type": "string" + }, + "userAgent": { + "description": "userAgent from which the auth token is used.", + "type": "string" + }, + "appInfo": { + "description": "JSON data containing app information.", + "type": "object" + } }, "type": "object" - }, - "Schedule": { - "properties": { - "monday": { - "$ref": "#/components/schemas/Day" - }, - "tuesday": { - "$ref": "#/components/schemas/Day" - }, - "wednesday": { - "$ref": "#/components/schemas/Day" - }, - "thursday": { - "$ref": "#/components/schemas/Day" - }, - "friday": { - "$ref": "#/components/schemas/Day" - }, - "saturday": { - "$ref": "#/components/schemas/Day" - }, - "sunday": { - "$ref": "#/components/schemas/Day" + } + } + } + }, + "responses": { + "200": { + "description": "Updated Auth Token", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "SentenceSimilaritySchema": { - "required": [ - "category", - "disallowedSentences" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the keyword list.", - "type": "string", - "example": "ID-of-the-sentences-list" - }, - "name": { - "description": "Descriptive name for the keyword list.", - "type": "string", - "example": "Name of the sentences list" - }, - "description": { - "description": "Detailed explanation of the keyword list's purpose.", - "type": "string", - "example": "Description of the sentences list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "disallowedSentences": { - "description": "Comma-separated sentences that are disallowed if the category is 'sentence-similarity'.", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Hello, let's connect on Whatsapp." - ] + "example": { + "data": { + "uid": "superhero1", + "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "createdAt": 1630306819 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Auth Tokens"], + "summary": "Delete", + "description": "Deletes an auth token for the specified UID.", + "operationId": "delete-authtoken", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "name": "authToken", + "in": "path", + "description": "An auth token of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Auth Token", + "value": "superhero1_1625206799abcdef" + } + } + } + ], + "responses": { + "200": { + "description": "Deleted Auth token", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "ServiceAccountCreds": { + "example": { + "data": { + "success": true, + "message": "User with superhero6 has been deleted successfully." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/members": { + "post": { + "tags": ["Group Members"], + "summary": "Add members", + "description": "Adds multiple users as per the scope.", + "operationId": "add-group-members", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "project_id": { - "type": "string" + "admins": { + "description": "UIDs of users to be made admins.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "moderators": { + "description": "UIDs of users to be made moderators.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "participants": { + "description": "UIDs of users to be made participants.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "usersToBan": { + "description": "UIDs of the users to be banned from the group.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Create Group Members", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "usersToBan": { + "superhero6": { + "success": true + } }, - "client_email": { - "type": "string" + "admins": { + "superhero1": { + "success": true, + "data": { + "id": "32", + "conversationId": "group_project-group", + "sender": "app_system", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "added", + "entities": { + "by": { + "entity": { + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero1", + "name": "Iron Man", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group", + "tags": ["friends", "project"], + "type": "public", + "owner": "superhero2", + "createdAt": 1625460947, + "description": "project related discussions between members", + "membersCount": 2, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1625460972, + "updatedAt": 1625460972 + } + } }, - "private_key": { - "type": "string" + "moderators": { + "superhero3": { + "success": true, + "data": { + "id": "33", + "conversationId": "group_project-group", + "sender": "app_system", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "added", + "entities": { + "by": { + "entity": { + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "createdAt": 1596537299, + "updatedAt": 1625234590 + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group", + "tags": ["friends", "project"], + "type": "public", + "owner": "superhero2", + "createdAt": 1625460947, + "updatedAt": 1625460972, + "description": "project related discussions between members", + "membersCount": 3, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1625460973, + "updatedAt": 1625460973 + } + } }, - "private_key_id": { - "type": "string" - } + "participants": { + "superhero4": { + "success": true, + "data": { + "id": "34", + "conversationId": "group_project-group", + "sender": "app_system", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "added", + "entities": { + "by": { + "entity": { + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero4", + "name": "Wolverine", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group", + "tags": ["friends", "project"], + "type": "public", + "owner": "superhero2", + "createdAt": 1625460947, + "updatedAt": 1625460973, + "description": "project related discussions between members", + "membersCount": 4, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1625460973, + "updatedAt": 1625460973 + } + }, + "superhero5": { + "success": true, + "data": { + "id": "35", + "conversationId": "group_project-group", + "sender": "app_system", + "receiverType": "group", + "receiver": "project-group", + "category": "action", + "type": "groupMember", + "data": { + "action": "added", + "entities": { + "by": { + "entity": { + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "on": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "createdAt": 1596537299 + }, + "entityType": "user" + }, + "for": { + "entity": { + "guid": "project-group", + "icon": "http://placehold.it/120x120&text=image1", + "name": "Project Group", + "tags": ["friends", "project"], + "type": "public", + "owner": "superhero2", + "createdAt": 1625460947, + "updatedAt": 1625460973, + "description": "project related discussions between members", + "membersCount": 5, + "conversationId": "group_project-group" + }, + "entityType": "group" + } + } + }, + "sentAt": 1625460973, + "updatedAt": 1625460973 + } + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Group Members"], + "summary": "List", + "description": "List the members of a group for a given GUID", + "operationId": "list-group-members", + "parameters": [ + { + "$ref": "#/components/parameters/guid" + }, + { + "name": "perPage", + "in": "query", + "description": "Number of users to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "status", + "in": "query", + "description": "Group members list can be fetched depending on the user status. (available,offline).", + "schema": { + "type": "string", + "enum": ["available", "offline"] + } + }, + { + "name": "page", + "in": "query", + "description": "Page Number.", + "schema": { + "type": "integer", + "default": "1" + } + }, + { + "name": "scopes", + "in": "query", + "description": "Fetches group members based on multiple scope.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": {} + } + } + ], + "responses": { + "200": { + "description": "Create Group Members", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "scope": "participant", + "joinedAt": 1638360106, + "createdAt": 1629869270, + "updatedAt": 1630308676, + "conversationId": "superhero2_user_superhero4" + }, + { + "uid": "superhero3", + "name": "Captain America", + "link": "https://data-us.cometchat.io/assets", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "metadata": { + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "default", + "scope": "participant", + "joinedAt": 1638360106, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero3_user_superhero4" + }, + { + "uid": "superhero5", + "name": "Cyclops", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "role": "default", + "scope": "moderator", + "joinedAt": 1638360106, + "createdAt": 1629869270, + "conversationId": "superhero4_user_superhero5" + }, + { + "uid": "superhero4", + "name": "Wolverine", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "status": "offline", + "role": "default", + "scope": "admin", + "joinedAt": 1638359534, + "createdAt": 1629869270 + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + } + }, + "cursor": { + "updatedAt": 1638354799, + "affix": "prepend" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/members/{uid}": { + "put": { + "tags": ["Group Members"], + "summary": "Change Scope", + "description": "Change scope of a member to the group for a given GUID and UID", + "operationId": "change-group-member-scope", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + }, + { + "$ref": "#/components/parameters/uid" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "scope": { + "description": "A scope for the user.", + "type": "string", + "default": "participant" + } }, "type": "object" - }, - "SetRolePermissionSchema": { - "description": "Set role permission response", - "properties": { - "role": { - "description": "Role identifier", - "type": "string", - "example": "default" - }, - "permissions": { - "description": "Permissions configuration for the role", - "type": "object", - "example": { - "createGroup": "allow", - "listUsers.mode": "friends", - "createGroup.allowedGroupTypes": [ - "public" - ] + } + } + } + }, + "responses": { + "200": { + "description": "Changed Scope of Group Members", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "guid": { + "type": "string" }, - "additionalProperties": true - }, - "updatedAt": { - "description": "Timestamp when permissions were last updated", - "type": "integer", - "example": 1640000000 + "uid": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "joinedAt": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid": "supergroup", + "uid": "superhero2", + "scope": "participant", + "joinedAt": 1631690303 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Group Members"], + "summary": "Kick", + "description": "Removes a member with given UID from a group for a given GUID.", + "operationId": "kick-group-member", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + }, + { + "$ref": "#/components/parameters/uid" + } + ], + "responses": { + "200": { + "description": "Kicked Group Members", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "SetScopePermissionSchema": { - "description": "Set scope permission response", - "properties": { - "guid": { - "description": "Group identifier", - "type": "string", - "example": "supergroup" + "example": { + "data": { + "success": true, + "message": "The member with superhero3 has been kicked from the Group with supergroup." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/bannedusers/{uid}": { + "post": { + "tags": ["Banned Users"], + "summary": "Ban", + "description": "Bans a member from a group for a given GUID and UID.", + "operationId": "ban-group-user", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + }, + { + "$ref": "#/components/parameters/uid" + } + ], + "responses": { + "200": { + "description": "Create Group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "The user with uid superhero3 has been banned from the Group with supergroup." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Banned Users"], + "summary": "Unban", + "description": "Unban a member with given UID from a group for a given GUID.", + "operationId": "unban-group-user", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + }, + { + "$ref": "#/components/parameters/uid" + } + ], + "responses": { + "200": { + "description": "Create Group", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "The user with uid superhero3 has been banned from the Group with supergroup." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/bannedusers": { + "get": { + "tags": ["Banned Users"], + "summary": "List", + "description": "Lists banned users from a group for a given GUID.", + "operationId": "list-banned-group-users", + "parameters": [ + { + "$ref": "#/components/parameters/guid" + }, + { + "name": "perPage", + "in": "query", + "description": "Number of banned users to return per page.", + "schema": { + "type": "number", + "default": 100 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for paginated results.", + "schema": { + "type": "number", + "default": 1 + } + } + ], + "responses": { + "200": { + "description": "get Banned User", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" }, - "scope": { - "description": "Scope identifier", - "type": "string", - "example": "admin" + "meta": { + "type": "object" }, - "permissions": { - "description": "Permissions configuration for the scope", - "type": "object", - "example": { - "sendMessage": "deny", - "initiateCall": "friends" + "cursor": { + "properties": { + "updatedAt": { + "type": "integer" }, - "additionalProperties": true - }, - "updatedAt": { - "description": "Timestamp when permissions were last updated", - "type": "integer", - "example": 1640000000 + "affix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "email": "user@email.com", + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "manager", + "createdAt": 1638354015, + "updatedAt": 1638354799, + "conversationId": "superhero4_user_superhero6" + }, + { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "createdAt": 1629869270, + "updatedAt": 1630308676, + "conversationId": "superhero2_user_superhero4" + }, + { + "uid": "superhero3", + "name": "Captain America", + "link": "https://data-us.cometchat.io/assets", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "metadata": { + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "default", + "blockedByMe": true, + "blockedByMeAt": 1638346853, + "blockedAt": 1638346853, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero3_user_superhero4" + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } - }, - "type": "object" - }, - "SilentNotification": { + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/friends": { + "post": { + "tags": ["Friends"], + "summary": "Add Friends", + "description": "The API allows to add multiple friends for a given UID.", + "operationId": "add-friend", + "parameters": [ + { + "$ref": "#/components/parameters/uid" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "chat": { - "type": "boolean" - }, - "call": { - "type": "boolean" + "accepted": { + "description": "The array of UIDs of the friends.", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "Sound": { - "properties": { - "chat": { - "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "Added Friend", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object" + }, + "": { + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "accepted": { + "superhero2": { + "success": true, + "message": "Created relationship with status accepted." + }, + "superhero3": { + "success": true, + "message": "Created relationship with status accepted." + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Friends"], + "summary": "List Friends", + "description": "The API allows to fetch friends for a given UID.", + "operationId": "list-all-friends", + "parameters": [ + { + "$ref": "#/components/parameters/uid" + }, + { + "name": "searchKey", + "in": "query", + "description": "Searches for given keyword in friends list (either UID or name).", + "schema": { + "type": "string" + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of friends to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "page", + "in": "query", + "description": "Page Number.", + "schema": { + "type": "integer", + "default": "1" + } + } + ], + "responses": { + "200": { + "description": "A list of friends.", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "email": "user@email.com", + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "manager", + "createdAt": 1638354015, + "updatedAt": 1638354799, + "conversationId": "superhero4_user_superhero6" + }, + { + "uid": "superhero2", + "name": "Captain America", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "role": "default", + "createdAt": 1629869270, + "updatedAt": 1630308676, + "conversationId": "superhero2_user_superhero4" + }, + { + "uid": "superhero3", + "name": "Captain America", + "link": "https://data-us.cometchat.io/assets", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "metadata": { + "contactNumber": "0123456789" + }, + "status": "offline", + "role": "default", + "blockedByMe": true, + "blockedByMeAt": 1638346853, + "blockedAt": 1638346853, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero3_user_superhero4" + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 }, - "call": { - "type": "string" + "cursor": { + "updatedAt": 1638354799, + "affix": "prepend" } - }, - "type": "object" - }, - "Template": { + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Friends"], + "summary": "Remove Friends", + "description": "The API removes friends for a given UID.", + "operationId": "remove-friend", + "parameters": [ + { + "$ref": "#/components/parameters/uid" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "titleOneOnOne": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}}" - }, - "titleGroup": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" - }, - "body": { - "type": "string", - "example": "New text message" + "friends": { + "description": "The array of friends to remove.", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "Templates": { + } + } + } + }, + "responses": { + "200": { + "description": "A list of api keys", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "Deleted the friend relations succussfully" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/blockedusers": { + "post": { + "tags": ["Blocked Users"], + "summary": "Block User", + "description": "Blocks the specified user", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["blockedUids"], "properties": { - "usePrivacyTemplate": { - "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "textMessageTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "textMessageTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "mediaMessageTemplateDefault": { - "$ref": "#/components/schemas/MediaMessageTemplate" - }, - "mediaMessageTemplatePrivacy": { - "$ref": "#/components/schemas/MediaMessageTemplate" - }, - "customMessageTemplateDefault": { - "allOf": [ - { - "properties": { - "body_fallback": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/Template" - } - ] - }, - "customMessageTemplatePrivacy": { - "allOf": [ - { - "properties": { - "body_fallback": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/Template" - } - ] - }, - "emailSubjectTemplateDefault": { - "properties": { - "subjectGroup": { - "type": "string", - "example": "While you were away..." - }, - "subjectOneOnOne": { - "type": "string", - "example": "While you were away..." - } - }, - "type": "object" - }, - "emailSubjectTemplatePrivacy": { - "properties": { - "subjectGroup": { - "type": "string", - "example": "While you were away..." - }, - "subjectOneOnOne": { - "type": "string", - "example": "While you were away..." - } - }, - "type": "object" - }, - "smsContentTemplateDefault": { - "properties": { - "bodyGroup": { - "type": "string", - "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." - }, - "bodyOneOnOne": { - "type": "string", - "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." - } - }, - "type": "object" - }, - "smsContentTemplatePrivacy": { - "properties": { - "bodyGroup": { - "type": "string", - "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." - }, - "bodyOneOnOne": { - "type": "string", - "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." - } - }, - "type": "object" + "blockedUids": { + "description": "UIDs of the users to be blocked", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "UserFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], - "properties": { - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" - }, - "entity": { - "description": "Type of entity for user filter", - "type": "string", - "enum": [ - "user" - ] - }, - "operand": { - "description": "Field to apply the filter on for 'user'", - "type": "string", - "enum": [ - "uid", - "name", - "role", - "tags", - "createdAt" - ] - }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "not equals", - "in", - "not in", - "startsWith" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "admin" + } + } + } + }, + "responses": { + "200": { + "description": "Blocked user", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "superhero4": { + "success": true, + "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Blocked Users"], + "summary": "Unblock User", + "description": "Unblocks the specified user", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["blockedUids"], + "properties": { + "blockedUids": { + "description": "UIDs of the users to be unblock", + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "WordPatternSchema": { - "required": [ - "category", - "searchTerms" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the word list.", - "type": "string", - "example": "ID-of-the-word-list" - }, - "name": { - "description": "Descriptive name for the word list.", - "type": "string", - "example": "Name of the word list" - }, - "description": { - "description": "Detailed explanation of the word list's purpose.", - "type": "string", - "example": "Description of the word list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." + } + } + } + }, + "responses": { + "200": { + "description": "Blocked user", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object" + } + }, + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "authTokenSchema": { - "description": "Represents an authentication token for a user. Auth tokens are used by client SDKs to authenticate users and establish real-time connections.", - "properties": { - "uid": { - "description": "Unique identifier of the user this auth token belongs to", - "type": "string" - }, - "authToken": { - "description": "The authentication token string. Pass this to the CometChat SDK login method to authenticate the user", - "type": "string" + "example": { + "data": { + "superhero4": { + "success": true, + "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Blocked Users"], + "summary": "List Blocked Users", + "description": "Retrieves the blocked users", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of blocked users to return per page.", + "schema": { + "type": "number", + "default": 100 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for paginated results.", + "schema": { + "type": "number", + "default": 1 + } + } + ], + "responses": { + "200": { + "description": "Blocked user", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/components/schemas/userSchema" + }, + { + "$ref": "#/components/schemas/blockedUserSchema" + } + ] + } + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "uid": "superhero6", + "name": "Barry Allen", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "rawMetadata": "{'gender':'Male'}" + }, + "status": "offline", + "role": "manager", + "blockedByMe": true, + "blockedByMeAt": 1638346853, + "blockedAt": 1638346853, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero3_user_superhero4" + }, + { + "uid": "superhero2", + "name": "Captain America", + "link": "http://placehold.it", + "avatar": "http://placehold.it/120x120&text=image1", + "metadata": { + "rawMetadata": "{'gender':'Male'}" + }, + "status": "offline", + "role": "manager", + "blockedByMe": true, + "blockedByMeAt": 1638346853, + "blockedAt": 1638346853, + "createdAt": 1629869270, + "updatedAt": 1638351060, + "conversationId": "superhero1_user_superhero2" + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 5, + "per_page": 100, + "current_page": 1, + "total_pages": 1 }, - "createdAt": { - "description": "Unix timestamp when the auth token was created", - "type": "integer" + "cursor": { + "updatedAt": 1638354799, + "affix": "prepend" } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/roles": { + "post": { + "tags": ["Roles"], + "summary": "Create", + "description": "Creates a new user role", + "operationId": "create-role", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["role", "name"], + "properties": { + "role": { + "description": "A unique identifier for the role.", + "type": "string", + "default": "" + }, + "name": { + "description": "Friendly name of the role.", + "type": "string", + "default": "" + }, + "description": { + "description": "Description of the role.", + "type": "string", + "default": "" + }, + "metadata": { + "description": "Addition information about the role as JSON.", + "type": "object" + }, + "settings": { + "description": "Role settings that is used for restricting list users/send message. Possible values for listUsers & sendMessagesTo are all and friendsOnly", + "type": "object" + } }, "type": "object" - }, - "bannedUserSchema": { - "description": "Represents a user who has been banned from a group. Banned users cannot rejoin the group until unbanned.", - "properties": { - "uid": { - "description": "Unique identifier of the banned user", - "type": "string" - }, - "name": { - "description": "Display name of the banned user", - "type": "string" - }, - "avatar": { - "description": "URL of the banned user's profile picture", - "type": "string" - }, - "status": { - "description": "Online presence status of the banned user", - "type": "string" - }, - "role": { - "description": "Role assigned to the banned user in the CometChat app", - "type": "string" - }, - "scope": { - "description": "The user's membership scope before being banned. Values: 'admin', 'moderator', 'participant'", - "type": "string" - }, - "isBanned": { - "description": "Always true for banned user records", - "type": "boolean" - }, - "joinedAt": { - "description": "Unix timestamp when the user originally joined the group", - "type": "integer" - }, - "createdAt": { - "description": "Unix timestamp when the user's account was created", - "type": "integer" + } + } + } + }, + "responses": { + "200": { + "description": "Created a new Role", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "blockedUserSchema": { - "description": "Represents a blocked user relationship. Contains information about when and how the block was established.", - "properties": { - "uid": { - "description": "Unique identifier of the blocked user", - "type": "string" - }, - "name": { - "description": "Display name of the blocked user", - "type": "string" - }, - "avatar": { - "description": "URL of the blocked user's profile picture", - "type": "string" - }, - "blockedByMe": { - "description": "True if the authenticated user blocked this user", - "type": "boolean" - }, - "blockedByMeAt": { - "description": "Unix timestamp when the authenticated user blocked this user", - "type": "integer" - }, - "hasBlockedMe": { - "description": "True if this user has blocked the authenticated user", - "type": "boolean" - }, - "blockedAt": { - "description": "Unix timestamp when the block relationship was created", - "type": "integer" + "example": { + "data": { + "role": "manager", + "name": "manager", + "description": "This role gives an update access", + "metadata": { + "email": "managers@gmail.com" }, - "updatedAt": { - "description": "Unix timestamp when the block relationship was last updated", - "type": "integer" + "settings": { + "listUsers": "all", + "sendMessagesTo": "friendsOnly" }, - "conversationId": { - "description": "Conversation ID for the blocked user relationship. Format: 'user_'", - "type": "string" + "createdAt": 1638343994 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Roles"], + "summary": "List", + "description": "Lists the user roles", + "operationId": "list-roles", + "parameters": [ + { + "name": "perPage", + "in": "query", + "description": "Number of roles to return per page.", + "schema": { + "type": "number", + "default": 100 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for paginated results.", + "schema": { + "type": "number", + "default": 1 + } + } + ], + "responses": { + "200": { + "description": "Lists the user roles", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "role": "manager", + "name": "manager", + "description": "This role gives an update access", + "metadata": { + "email": "managers@gmail.com" + }, + "settings": { + "listUsers": "all", + "sendMessagesTo": "friendsOnly" + }, + "createdAt": 1638343994 + }, + { + "role": "default", + "name": "Default Role", + "description": "This role gives full access ", + "createdAt": 1629869270, + "updatedAt": 1630306291 + } + ], + "meta": { + "pagination": { + "total": 2, + "count": 2, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/roles/{role}": { + "get": { + "tags": ["Roles"], + "summary": "Get", + "description": "Retrieves role details for a given role.", + "operationId": "get-role", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role to get.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "responses": { + "200": { + "description": "Fetched the role", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "conversationSchema": { - "description": "Represents a conversation thread between users or within a group. Contains the conversation metadata, last message, and the entity (user/group) the conversation is with.", - "properties": { - "conversationId": { - "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", - "type": "string" - }, - "conversationType": { - "description": "Type of conversation. Values: 'user' for direct messages, 'group' for group chats", - "type": "string" - }, - "unreadMessageCount": { - "description": "Number of unread messages in this conversation for the authenticated user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the conversation was created (first message sent)", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the conversation was last updated (last message sent)", - "type": "integer" + "example": { + "data": { + "role": "manager", + "name": "manager", + "description": "This role gives an update access", + "metadata": { + "email": "managers@gmail.com" }, - "lastMessage": { - "description": "The most recent message in this conversation", - "properties": { - "id": { - "description": "Unique identifier of the last message", - "type": "string" - }, - "conversationId": { - "description": "Conversation ID this message belongs to", - "type": "string" - }, - "sender": { - "description": "UID of the user who sent the message", - "type": "string" - }, - "receiverType": { - "description": "Type of receiver: 'user' or 'group'", - "type": "string" - }, - "receiver": { - "description": "UID or GUID of the message receiver", - "type": "string" - }, - "category": { - "description": "Message category: 'message', 'custom', or 'action'", - "type": "string" - }, - "type": { - "description": "Message type (e.g., 'text', 'image', 'file')", - "type": "string" - }, - "data": { - "description": "Message content and metadata", - "type": "object", - "allOf": [ - { - "properties": { - "action": { - "description": "Action type for action messages", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/objectEntitySchema" - } - ] - }, - "sentAt": { - "description": "Unix timestamp when the message was sent", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the message was last updated", - "type": "integer" - }, - "receipts": { - "description": "Message delivery and read receipts", - "properties": { - "data": { - "description": "Array of receipt records", - "type": "array", - "items": {} - } - }, - "type": "object" - } - }, - "type": "object" + "settings": { + "listUsers": "all", + "sendMessagesTo": "friendsOnly" }, - "conversationWith": { - "description": "The user or group entity this conversation is with", - "type": "object" - } + "createdAt": 1638343994 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Roles"], + "summary": "Update", + "description": "Updates a given role.", + "operationId": "update-role", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role to update.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Friendly name of the role.", + "type": "string", + "default": "" + }, + "description": { + "description": "Description of the role.", + "type": "string", + "default": "" + }, + "metadata": { + "description": "Additional information about the role.", + "type": "object", + "default": { + "email": "admin@yourcompany.com" + } + }, + "unset": { + "description": "The unsettable role attributes are settings, description and metadata.", + "type": "array", + "items": { + "type": "string", + "enum": ["settings", "description", "metadata"] + }, + "default": [] + }, + "settings": { + "description": "Role settings that is used for restricting list users/send message. Possible values for listUsers & sendMessagesTo are all and friendsOnly", + "type": "object", + "default": [] + } }, "type": "object" - }, - "conversationWithSchema": { - "description": "Represents the entity (user or group) that a conversation is with. Contains either user or group properties depending on conversation type.", - "properties": { - "uid": { - "description": "Unique identifier of the user (for user conversations)", - "type": "string" - }, - "guid": { - "description": "Unique identifier of the group (for group conversations)", - "type": "string" - }, - "name": { - "description": "Display name of the user or group", - "type": "string" - }, - "description": { - "description": "Description of the group (for group conversations)", - "type": "string" - }, - "avatar": { - "description": "URL of the user's avatar (for user conversations)", - "type": "string" - }, - "icon": { - "description": "URL of the group's icon (for group conversations)", - "type": "string" - }, - "type": { - "description": "Group type: 'public', 'password', or 'private' (for group conversations)", - "type": "string" - }, - "status": { - "description": "Online status of the user: 'available' or 'offline' (for user conversations)", - "type": "string" - }, - "role": { - "description": "Role of the user (for user conversations)", - "type": "string" - }, - "scope": { - "description": "Authenticated user's scope in the group: 'admin', 'moderator', 'participant' (for group conversations)", - "type": "string" - }, - "membersCount": { - "description": "Number of members in the group (for group conversations)", - "type": "integer" - }, - "joinedAt": { - "description": "Unix timestamp when the authenticated user joined the group (for group conversations)", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for this entity", - "type": "string" - }, - "hasJoined": { - "description": "Whether the authenticated user has joined the group (for group conversations)", - "type": "boolean", - "default": "true" - }, - "createdAt": { - "description": "Unix timestamp when the user/group was created", - "type": "integer" - }, - "owner": { - "description": "UID of the group owner (for group conversations)", - "type": "string" - }, - "updatedAt": { - "description": "Unix timestamp when the user/group was last updated", - "type": "integer" - }, - "updatedBy": { - "description": "UID of the user who last updated the group (for group conversations)", - "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "Updated Role", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "createApnsProvider": { - "properties": { - "providerId": { - "type": "string" - }, - "keyId": { - "type": "string" - }, - "teamId": { - "type": "string" - }, - "bundleId": { - "type": "string" - }, - "p8KeyFilename": { - "type": "string" - }, - "p8Key": { - "type": "string" - }, - "includeContentAvailable": { - "type": "boolean" + "example": { + "data": { + "role": "manager", + "name": "manager", + "description": "This role gives an update access", + "metadata": { + "email": "managers@gmail.com" }, - "includeMutableContent": { - "type": "boolean" + "settings": { + "listUsers": "all", + "sendMessagesTo": "friendsOnly" }, - "productionMode": { - "type": "boolean" + "createdAt": 1638343994 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Roles"], + "summary": "Delete", + "description": "Deletes a role.", + "operationId": "delete-role", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role to delete.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "responses": { + "200": { + "description": "Deleted Role", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "customCategorySchema": { - "title": "custom", - "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", + "example": { + "data": { + "success": true, + "message": "Role manager has been deleted successfully." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/roles/{role}/restrictedfeatures": { + "post": { + "tags": ["Restrict Features"], + "summary": "Restrict Features", + "description": "Restrict Features for a given role.", + "operationId": "restrict-features", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role to which features to be restricted.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["featuresToRestrict"], "properties": { - "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", - "type": "string" - }, - "muid": { - "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", - "type": "string" - }, - "receiverType": { - "description": "Specifies whether the message is being sent to a user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Message category. Use 'custom' for application-defined message types. Available options: custom", - "type": "string", - "default": "custom", - "enum": [ - "custom" - ] - }, - "quotedMessageId": { - "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", - "type": "string" - }, - "type": { - "description": "Application-defined message type (e.g., 'location', 'poll', 'payment'). You can use any custom string value based on your application needs", - "type": "string" + "featuresToRestrict": { + "description": "Keys of the features to be restricted.", + "type": "array", + "items": { + "type": "string" }, + "default": "" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Restricts Features", + "content": { + "application/json": { + "schema": { + "properties": { "data": { - "description": "Custom message payload", - "properties": { - "customData": { - "description": "Any JSON object containing your custom message data", - "type": "object" - } - }, - "type": "object" - }, - "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", - "properties": { - "uids": { - "description": "Array of user UIDs to receive the message", - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "description": "Array of group GUIDs to receive the message", - "type": "array", - "items": { - "type": "string" - } - } + "properties": { + "u.listUsers": { + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "u.listUsers": { + "success": true, + "message": "The feature u.listUsers has been restricted successfully." + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Restrict Features"], + "summary": "List Restricted Features", + "description": "List all restricted features for a given role.", + "operationId": "get-restrictedfeatures", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role for which features are restricted.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "responses": { + "200": { + "description": "Lists Restricted Features", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "key": { + "type": "string" + }, + "path": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } }, "type": "object" + } }, - "tags": { - "description": "Custom tags for categorizing and filtering messages", - "type": "array", - "items": { - "type": "string" - } + "meta": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "dataPointSchema": { - "description": "Represents a single data point in messaging metrics. Contains counts for messages sent and receipts within a specific time range.", - "properties": { - "messagesSent": { - "description": "Total number of messages sent during this time period", - "type": "integer" - }, - "readReceipts": { - "description": "Total number of read receipts generated during this time period", - "type": "integer" - }, - "deliveryReceipts": { - "description": "Total number of delivery receipts generated during this time period", - "type": "integer" - }, - "startTime": { - "description": "Unix timestamp marking the start of this data point's time range", - "type": "integer" + "example": { + "data": [ + { + "title": "Delete Group", + "description": "Allows logged-in user to delete a group.", + "key": "u.deleteGroup", + "path": "/v3/groups/{{guid}}", + "createdAt": 1639448370 }, - "endTime": { - "description": "Unix timestamp marking the end of this data point's time range", - "type": "integer" + { + "title": "List Users", + "description": "Allows logged-in user to fetch the user list.", + "key": "u.listUsers", + "path": "/v3/users", + "createdAt": 1639448370 + } + ], + "meta": { + "pagination": { + "total": 2, + "count": 2, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Restrict Features"], + "summary": "Allow Features", + "description": "Allow features access for a given role.", + "operationId": "allow-features", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "A role to which allow features.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Role", + "value": "default" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "featuresToAllow": { + "description": "keys of the features to be allowed.", + "type": "array", + "items": { + "type": "string" + }, + "default": "" + }, + "allowAll": { + "description": "All features to be allowed.", + "type": "boolean", + "default": "" + } }, "type": "object" - }, - "deleteSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "Allows Restricted Features", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "email": { + "example": { + "data": { + "success": true, + "message": "The feature has been allowed successfully." + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/messages/{id}/thread": { + "post": { + "tags": ["Messages"], + "summary": "Send Threaded Message", + "description": "Sends Threaded Message on behalf of a user.", + "operationId": "send-thread-message", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message for which thread message to be sent", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "notifyForUnreadOnly": { - "description": "If the value is false, the notification will contain all the messages, not just unread.", - "type": "boolean" - }, - "intervalInSeconds": { - "type": "integer" - }, - "maxPerDay": { - "type": "integer" - }, - "maxPerDayPerConversation": { - "type": "integer" - }, - "includeMessageObjectSetting": { - "description": "Includes the message object in the email payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Includes sender metadata in the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Includes receiver metadata in the message object", - "type": "boolean" - }, - "includeMessageMetadataSetting": { - "description": "Includes message metadata in the message object", - "type": "boolean" - } + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories are message and custom.", + "type": "string", + "default": "message", + "enum": ["message", "custom"] + }, + "type": { + "description": "Type of the message. The available values are text, image, file, audio, video.", + "type": "string", + "default": "text", + "enum": ["text", "image", "file", "audio", "video"] + }, + "data": { + "description": "JSON containing message attributes.", + "type": "object", + "default": { + "text": "Hi Tom!", + "metadata": { + "key1": "value1", + "key2": "value2" + } + } + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "type": "object", + "default": { + "uids": ["uid1", "uid2"], + "guids": ["guid1"] + } + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["tag1"] + } }, "type": "object" - }, - "fcmCreateProviderSchema": { - "properties": { - "providerId": { - "type": "string" - }, - "serviceAccountFilename": { - "type": "string" - }, - "serviceAccountCreds": { - "$ref": "#/components/schemas/ServiceAccountCreds" - }, - "notificationInPayload": { - "properties": { - "ios": { - "$ref": "#/components/schemas/SilentNotification" - }, - "android": { - "$ref": "#/components/schemas/SilentNotification" - }, - "web": { - "$ref": "#/components/schemas/SilentNotification" - } + } + } + } + }, + "responses": { + "200": { + "description": "Create Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object", + "allOf": [ + { + "properties": { + "parentId": { + "readOnly": false + } + }, + "type": "object" }, - "type": "object" + { + "$ref": "#/components/schemas/messageSchema" + } + ] } + }, + "type": "object" }, - "type": "object" - }, - "groupEntitySchema": { - "description": "Represents an action message generated for group member operations (join, leave, kick, ban, scope change). Contains details about who performed the action and who was affected.", - "properties": { - "id": { - "description": "Unique identifier for this action message", - "type": "string" - }, - "conversationId": { - "description": "Conversation ID of the group. Format: 'group_'", - "type": "string" - }, - "sender": { - "description": "UID of the user who triggered this action (e.g., admin who kicked a member)", - "type": "string" - }, - "receiverType": { - "description": "Always 'group' for group member actions", - "type": "string" - }, - "receiver": { - "description": "GUID of the group where the action occurred", - "type": "string" - }, - "category": { - "description": "Always 'action' for group member operations", - "type": "string" - }, - "type": { - "description": "Type of action: 'groupMemberJoined', 'groupMemberLeft', 'groupMemberKicked', 'groupMemberBanned', 'groupMemberScopeChanged'", - "type": "string" - }, + "example": { + "data": { + "id": "2", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", "data": { - "description": "Contains action details and entity information", - "properties": { - "action": { - "description": "The action that was performed (e.g., 'joined', 'left', 'kicked', 'banned', 'scopeChanged')", - "type": "string" + "text": "test hello", + "metadata": { + "key1": "val1" + }, + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490, + "parentId": "1" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Messages"], + "summary": "List Threaded Messages", + "description": "Fetches the messages list of a thread.", + "operationId": "list-all-thread-messages", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "name": "id", + "in": "path", + "description": "Id of the message whose thread messages are to be fetched.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + }, + { + "name": "perPage", + "in": "query", + "description": "Number of threaded messages to return per page.", + "schema": { + "type": "number", + "default": 100 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for paginated results.", + "schema": { + "type": "number", + "default": 1 + } + } + ], + "responses": { + "200": { + "description": "Create Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "allOf": [ + { + "properties": { + "parentId": { + "readOnly": false + } }, - "entities": { - "description": "Contains information about the actors and targets of the action", - "properties": { - "by": { - "description": "The user who performed the action", - "properties": { - "entity": { - "description": "User details of the action performer", - "properties": { - "uid": { - "description": "Unique identifier of the user", - "type": "string" - }, - "name": { - "description": "Display name of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user was created", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "on": { - "description": "The user who was affected by the action (e.g., the kicked member)", - "properties": { - "entity": { - "description": "User details of the affected member", - "properties": { - "uid": { - "description": "Unique identifier of the affected user", - "type": "string" - }, - "name": { - "description": "Display name of the affected user", - "type": "string" - }, - "role": { - "description": "Role assigned to the affected user", - "type": "string" - }, - "avatar": { - "description": "URL of the affected user's avatar", - "type": "string" - }, - "status": { - "description": "Online status of the affected user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the affected user was created", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "for": { - "description": "The group where the action occurred", - "properties": { - "entity": { - "description": "Group details", - "properties": { - "guid": { - "description": "Unique identifier of the group", - "type": "string" - }, - "icon": { - "description": "URL of the group's icon", - "type": "string" - }, - "name": { - "description": "Display name of the group", - "type": "string" - }, - "tags": { - "description": "Tags associated with the group", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Group type: 'public', 'password', or 'private'", - "type": "string" - }, - "owner": { - "description": "UID of the group owner", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the group was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the group was last updated", - "type": "integer" - }, - "description": { - "description": "Description of the group", - "type": "string" - }, - "membersCount": { - "description": "Current number of members in the group", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for this group", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'group'", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + }, + { + "$ref": "#/components/schemas/messageSchema" + } + ] + } + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "2", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "createdAt": 1638361550 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } }, - "type": "object" + "metadata": { + "key1": "val1" + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490, + "parentId": "1" + } + ], + "meta": { + "current": { + "limit": 10, + "count": 1 }, - "avatar": { - "description": "URL of the user's avatar image", - "type": "string" + "next": { + "affix": "append", + "sentAt": 1638423490, + "id": "3" + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/users/{uid}/messages": { + "get": { + "tags": ["Messages"], + "summary": "List User Messages", + "description": "Fetches messages between onBehalfOfuid and an uid from path param.", + "operationId": "user-list-user-messages", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/uid" + }, + { + "name": "searchKey", + "in": "query", + "description": "searches for occurence of message.", + "schema": { + "type": "string" + } + }, + { + "name": "hasAttachments", + "in": "query", + "description": "Fetches messages that include attachments.", + "schema": { + "type": "boolean" + } + }, + { + "name": "attachmentTypes", + "in": "query", + "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", + "schema": { + "type": "string", + "enum": ["image", "video", "audio", "file"] + } + }, + { + "name": "hasMentions", + "in": "query", + "description": "Fetches messages that include mentions.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hasLinks", + "in": "query", + "description": "Fetches messages that include links.", + "schema": { + "type": "boolean" + } + }, + { + "name": "mentionedUids", + "in": "query", + "description": "Fetches messages that include the mentioned comma-separated UIDs.", + "schema": { + "type": "boolean" + } + }, + { + "name": "unread", + "in": "query", + "description": "displays all the unread messages of the user.", + "schema": { + "type": "boolean" + } + }, + { + "name": "undelivered", + "in": "query", + "description": "displays all the messages those are undelivered.", + "schema": { + "type": "boolean" + } + }, + { + "name": "count", + "in": "query", + "description": "displays the count of messages as per group/user", + "schema": { + "type": "boolean" + } + }, + { + "name": "hideReplies", + "in": "query", + "description": "Shows only messages skipping the replies in the message thread.", + "schema": { + "type": "boolean" + } + }, + { + "name": "affix", + "in": "query", + "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", + "schema": { + "type": "string", + "enum": ["append", "prepend"] + } + }, + { + "name": "id", + "in": "query", + "description": "Retrieves all those messages after the passed id.", + "schema": { + "type": "string" + } + }, + { + "name": "category", + "in": "query", + "description": "Fetches messages that belongs to specific category.", + "schema": { + "type": "string" + } + }, + { + "name": "categories", + "in": "query", + "description": "Fetches messages that contains multiple categories.", + "schema": { + "type": "array", + "items": {} + } + }, + { + "name": "type", + "in": "query", + "description": "Fetches messages that belongs to a specific type.", + "schema": { + "type": "string" + } + }, + { + "name": "types", + "in": "query", + "description": "Fetches messages with multiple types.", + "schema": { + "type": "array", + "items": {} + } + }, + { + "name": "myMentionsOnly", + "in": "query", + "description": "Filters messages with mentions for the UID in onBehalfOf header.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "hasReactions", + "in": "query", + "description": "Filters messages sent by a the uid given in sender query param and has reactions. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "sender", + "in": "query", + "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", + "schema": { + "type": "string" + } + }, + { + "name": "mentionsWithBlockedInfo", + "in": "query", + "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "mentionsWithTagInfo", + "in": "query", + "description": "Provides user tags for the mentioned users.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "perPage", + "in": "query", + "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "limit", + "in": "query", + "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000 (works alongside onBehalfOf header)", + "schema": { + "type": "integer", + "default": "10" + } + }, + { + "name": "fromTimestamp", + "in": "query", + "description": "Fetches the messages from this timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "toTimestamp", + "in": "query", + "description": "Fetches the messages till this timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "withTags", + "in": "query", + "description": "This will fetch messages along with the tags.", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "description": "This will fetch only those messages belonging to the mentioned tags.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "Get User Messages", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "1776", + "conversationId": "superhero2_user_superhero3", + "sender": "superhero2", + "receiverType": "user", + "receiver": "superhero3", + "category": "call", + "type": "audio", + "data": { + "action": "initiated", + "entities": { + "by": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline" + }, + "entityType": "user" + }, + "on": { + "entity": { + "data": { + "entities": { + "sender": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline" + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "user" + } + }, + "metadata": { + "key": { + "one": "two" + } + } + }, + "type": "audio", + "sender": "superhero2", + "status": "initiated", + "joinedAt": 1646995097, + "receiver": "superhero3", + "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", + "wsChannel": { + "secret": "083c2a7f660150e42c2bf07a17231e90980b290d", + "service": "19757e59e8b9669.call", + "identity": "[19757e59e8b9669]16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba" + }, + "initiatedAt": 1646995097, + "receiverType": "user", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "call" + }, + "for": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "user" + } + } + }, + "sentAt": 1646995097, + "updatedAt": 1646995097 + }, + { + "id": "1777", + "conversationId": "superhero2_user_superhero3", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero2", + "category": "call", + "type": "video", + "data": { + "action": "ongoing", + "entities": { + "by": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline" + }, + "entityType": "user" + }, + "on": { + "entity": { + "data": { + "entities": { + "sender": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline" + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "user" + } + }, + "metadata": { + "key": { + "one": "two" + } + } + }, + "type": "video", + "sender": "superhero2", + "status": "ongoing", + "joinedAt": 1646995512, + "receiver": "superhero3", + "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", + "startedAt": 1646995512, + "wsChannel": { + "secret": "083c2a7f660150e42c2bf07a17231e90980b290d", + "service": "19757e59e8b9669.call", + "identity": "[19757e59e8b9669]16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba" + }, + "initiatedAt": 1646995097, + "receiverType": "user", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "call" + }, + "for": { + "entity": { + "uid": "superhero2", + "name": "Captain America", + "role": "default", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "status": "offline", + "conversationId": "superhero2_user_superhero3" + }, + "entityType": "user" + } + } + }, + "sentAt": 1646995512, + "updatedAt": 1646995512 + } + ], + "meta": { + "pagination": { + "total": 0, + "count": 2, + "per_page": 100, + "current_page": 1, + "total_pages": 1 }, - "metadata": { - "description": "Custom metadata associated with the user", - "properties": { - "email": { - "description": "Example metadata field", - "type": "string" - } + "cursor": { + "id": 1786, + "affix": "prepend" + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/messages": { + "get": { + "tags": ["Messages"], + "summary": "List Group Messages", + "description": "Fetches the group message list for a user.", + "operationId": "user-list-group-messages", + "parameters": [ + { + "$ref": "#/components/parameters/onBehalfOf" + }, + { + "$ref": "#/components/parameters/guid" + }, + { + "name": "searchKey", + "in": "query", + "description": "searches for occurence of message.", + "schema": { + "type": "string" + } + }, + { + "name": "hasAttachments", + "in": "query", + "description": "Fetches messages that include attachments.", + "schema": { + "type": "boolean" + } + }, + { + "name": "attachmentTypes", + "in": "query", + "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", + "schema": { + "type": "string", + "enum": ["image", "video", "audio", "file"] + } + }, + { + "name": "hasMentions", + "in": "query", + "description": "Fetches messages that include mentions.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hasLinks", + "in": "query", + "description": "Fetches messages that include links.", + "schema": { + "type": "boolean" + } + }, + { + "name": "mentionedUids", + "in": "query", + "description": "Fetches messages that include the mentioned comma-separated UIDs.", + "schema": { + "type": "boolean" + } + }, + { + "name": "unread", + "in": "query", + "description": "displays all the unread messages of the user.", + "schema": { + "type": "boolean" + } + }, + { + "name": "undelivered", + "in": "query", + "description": "displays all the messages those are undelivered.", + "schema": { + "type": "boolean" + } + }, + { + "name": "count", + "in": "query", + "description": "displays the count of messages as per group/user", + "schema": { + "type": "boolean" + } + }, + { + "name": "hideMessagesFromBlockedUsers", + "in": "query", + "description": "Hides the messages from blocked users in group.", + "schema": { + "type": "boolean" + } + }, + { + "name": "hideReplies", + "in": "query", + "description": "Shows only messages skipping the replies in the message thread.", + "schema": { + "type": "boolean" + } + }, + { + "name": "affix", + "in": "query", + "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", + "schema": { + "type": "string", + "enum": ["append", "prepend"] + } + }, + { + "name": "id", + "in": "query", + "description": "Retrieves all those messages after the passed id.", + "schema": { + "type": "string" + } + }, + { + "name": "category", + "in": "query", + "description": "Fetches messages that belongs to specific category.", + "schema": { + "type": "string" + } + }, + { + "name": "categories", + "in": "query", + "description": "Fetches messages that contains multiple categories.", + "schema": { + "type": "array", + "items": {} + } + }, + { + "name": "type", + "in": "query", + "description": "Fetches messages that belongs to a specific type.", + "schema": { + "type": "string" + } + }, + { + "name": "types", + "in": "query", + "description": "Fetches messages with multiple types.", + "schema": { + "type": "array", + "items": {} + } + }, + { + "name": "myMentionsOnly", + "in": "query", + "description": "Filters messages with mentions for the UID in onBehalfOf header.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "hasReactions", + "in": "query", + "description": "Filters messages sent by a the uid given in sender query param and has reactions. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "sender", + "in": "query", + "description": "Filters messages with sender. If onBehalfOf header is also set then the messages from their common conversations will be filtered.", + "schema": { + "type": "string" + } + }, + { + "name": "mentionsWithBlockedInfo", + "in": "query", + "description": "For the mentioned users, provides blocked information with respect to the UID in onBehalfOf header.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "mentionsWithTagInfo", + "in": "query", + "description": "Provides user tags for the mentioned users.", + "schema": { + "type": "boolean", + "default": "false" + } + }, + { + "name": "limit", + "in": "query", + "description": "The number of records to fetch. Minimum value: 1, Maximum value: 1000", + "schema": { + "type": "integer", + "default": "10" + } + }, + { + "name": "fromTimestamp", + "in": "query", + "description": "Fetches the messages from this timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "toTimestamp", + "in": "query", + "description": "Fetches the messages till this timestamp.", + "schema": { + "type": "integer" + } + }, + { + "name": "withTags", + "in": "query", + "description": "This will fetch messages along with the tags.", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "description": "This will fetch only those messages belonging to the mentioned tags.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "Retreived Group Messages", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "1", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "createdAt": 1638361550 + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "role": "default", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } }, - "type": "object" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user was created", - "type": "integer" + "metadata": { + "key1": "val1" + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490 } - }, - "type": "object" - }, - "groupMemberListSchema": { - "description": "Represents a member of a group. Contains user information along with their group-specific membership details.", - "properties": { - "uid": { - "description": "Unique identifier of the group member", - "type": "string" - }, - "name": { - "description": "Display name of the group member", - "type": "string" - }, - "avatar": { - "description": "URL of the member's avatar image", - "type": "string" - }, - "status": { - "description": "Online status of the member: 'available' or 'offline'", - "type": "string" - }, - "role": { - "description": "Role assigned to the member in the CometChat app", - "type": "string" - }, - "scope": { - "description": "Member's scope within this group. Values: 'admin' (full control), 'moderator' (can manage members), 'participant' (regular member)", - "type": "string" - }, - "joinedAt": { - "description": "Unix timestamp when the member joined this group", - "type": "integer" - }, - "createdAt": { - "description": "Unix timestamp when the member's user account was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the member's user account was last updated", - "type": "integer" + ], + "meta": { + "current": { + "limit": 100, + "count": 1 }, - "conversationId": { - "description": "Conversation ID for direct messaging with this member. Format: 'user_'", - "type": "string" + "next": { + "affix": "append", + "sentAt": 1638423490, + "id": "1" } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/bots/{uid}/messages": { + "post": { + "tags": ["Messages"], + "summary": "Send Bot Message", + "description": "Sends Message from a Bot.", + "operationId": "sends-bot-message", + "parameters": [ + { + "name": "uid", + "in": "path", + "description": "An UID of the Bot.", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "string": { + "summary": "Message ID", + "value": "100" + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "category", + "mapping": { + "message": "#/components/schemas/messageCategorySchema", + "interactive": "#/components/schemas/interactiveCategorySchema", + "custom": "#/components/schemas/customCategorySchema" + } }, - "type": "object" - }, - "groupMemberSchema": { - "description": "Response schema for bulk group member operations. Contains results for each member organized by their scope (admin, moderator, participant) or ban status.", - "properties": { - "usersToBan": { - "description": "Results for users being banned from the group", - "properties": { - "": { - "description": "Result for a specific user (keyed by their UID)", - "properties": { - "success": { - "description": "Whether the ban operation succeeded", - "type": "boolean" - } - }, - "type": "object" + "oneOf": [ + { + "title": "Message", + "$ref": "#/components/schemas/messageCategorySchema" + }, + { + "title": "Custom", + "$ref": "#/components/schemas/customCategorySchema" + }, + { + "title": "Interactive", + "$ref": "#/components/schemas/interactiveCategorySchema" + } + ] + }, + "examples": { + "form-interactive": { + "summary": "Interactive form example", + "value": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "allOf", + "elementIds": ["element8"] + }, + "allowSenderInteraction": true, + "interactiveData": { + "title": "Form Title", + "formFields": [ + { + "elementType": "textInput", + "elementId": "element1", + "defaultValue": "vivek", + "label": "Name", + "optional": false, + "maxLines": 1, + "placeholder": { + "text": "write your name here" + } + }, + { + "elementType": "textInput", + "elementId": "element2", + "label": "Last Name", + "optional": false, + "maxLines": 1 + }, + { + "elementType": "textInput", + "elementId": "element3", + "label": "Address", + "optional": false, + "maxLines": 5 + }, + { + "elementType": "dropdown", + "elementId": "element4", + "label": "Country", + "optional": false, + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "INDIA" + }, + { + "value": "option2", + "label": "AUSTRALIA" + } + ] + }, + { + "elementType": "checkbox", + "elementId": "element5", + "optional": true, + "label": "Services", + "options": [ + { + "value": "option1", + "label": "Garbage" + }, + { + "value": "option2", + "label": "Electricity Bill" + }, + { + "value": "option3", + "label": "Lift" + } + ], + "defaultValue": ["option1", "option2"] + }, + { + "elementType": "singleSelect", + "elementId": "element6", + "optional": false, + "label": "Wing", + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "A Wing" + }, + { + "value": "option2", + "label": "B Wing" + } + ] + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "About us", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" } - }, - "type": "object" + } + ], + "submitElement": { + "elementType": "button", + "elementId": "element8", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "superhero2", + "receiverType": "user" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + } + } }, - "admins": { - "description": "Results for users being added as admins", - "properties": { - "": { - "description": "Result for a specific user (keyed by their UID)", - "properties": { - "success": { - "description": "Whether the operation succeeded", - "type": "boolean" - }, - "data": { - "description": "Action message generated for this operation", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" + "category": "interactive", + "type": "form", + "receiver": "superhero1", + "tags": ["tag1"] + } + }, + "card-interactive": { + "summary": "Interactive card example", + "value": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "none" + }, + "allowSenderInteraction": true, + "interactiveData": { + "imageUrl": "https://upload.wikimedia.org/wikipedia/en/e/e1/Thomas_D._Baird_%28low-resolution%29.jpg", + "text": "Thanks For filling the Form!.\n\nWant to make your gifts more special? Now its easy with our personalized card messages!\n\nOur new feature lets you add a custom message on a beautifully designed card, making your gift-giving extra personal and memorable.\nWhether its for a birthday , anniversary , or just because , our card messages will express your feelings perfectly.\n\nTo start creating your own card message:\nChoose the gift\nWrite your heartfelt message\nWell print it on a high-quality card and include it with your gift\nAdd a touch of your own sentiments with our personalized card messages. Make every gift unforgettable. Start creating your card message today!\nVisit our website Website Link or download our app App Link.\n\nExpress more than just words with our Personalized Card Messages.Because its not just a gift, its your feelings.\n", + "cardActions": [ + { + "elementType": "button", + "elementId": "element8", + "buttonText": "Buy now", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "group_1695921003310", + "receiverType": "group" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application\\/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "Navigate", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + }, + { + "elementType": "button", + "elementId": "element10", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "group_1695921003310", + "receiverType": "group" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + } + ] + } }, - "moderators": { - "description": "Results for users being added as moderators", - "properties": { - "": { - "description": "Result for a specific user (keyed by their UID)", - "properties": { - "success": { - "description": "Whether the operation succeeded", - "type": "boolean" - }, - "data": { - "description": "Action message generated for this operation", - "type": "object" - } - }, - "type": "object" + "category": "interactive", + "type": "card", + "receiver": "superhero1", + "tags": ["tag1"] + } + }, + "scheduler-interactive": { + "summary": "Interactive scheduler example", + "value": { + "receiverType": "user", + "receiver": "superhero2", + "category": "interactive", + "type": "scheduler", + "data": { + "receiverType": "user", + "receiver": "superhero2", + "muid": "16Jan3:41423PM", + "interactionGoal": { + "type": "anyAction", + "elementIds": [] + }, + "allowSenderInteraction": false, + "interactiveData": { + "title": "Meet with Dr. Jacob", + "avatarUrl": "https: //data-us.cometchat.io/assets/images/avatars/ironman.png", + "bufferTime": 15, + "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", + "availability": { + "friday": [ + { + "to": "2359", + "from": "0000" } - }, - "type": "object" - }, - "participants": { - "description": "Results for users being added as participants", - "properties": { - "": { - "description": "Result for a specific user (keyed by their UID)", - "properties": { - "success": { - "description": "Whether the operation succeeded", - "type": "boolean" - }, - "data": { - "description": "Action message generated for this operation", - "type": "object" - } - }, - "type": "object" + ], + "monday": [ + { + "to": "1700", + "from": "0600" + } + ], + "tuesday": [ + { + "to": "1400", + "from": "1000" + }, + { + "to": "2000", + "from": "1700" + } + ], + "thursday": [ + { + "to": "2359", + "from": "0000" } + ], + "wednesday": [ + { + "to": "0800", + "from": "0600" + }, + { + "to": "1700", + "from": "1200" + } + ] }, - "type": "object" + "timezoneCode": "Asia/Kolkata", + "duration": 60, + "scheduleElement": { + "action": { + "url": "https://802bba5ae13a7.api-us.cometchat-staging.com/v3.0/messages", + "actionType": "apiAction", + "method": "post", + "dataKey": "", + "headers": { + "accept": "application/json", + "apiKey": "62a32b5140e6b630dab38e2e690d88de9c69d416", + "onBehalfOf": "suryansh1", + "content-type": "application/json" + }, + "payload": { + "data": { + "text": "Meeting Scheduled Successfully!" + }, + "type": "text", + "category": "message", + "receiver": "demo1", + "receiverType": "group" + } + }, + "elementId": "1", + "buttonText": "Schedule", + "elementType": "button", + "disableAfterInteracted": true + }, + "goalCompletionText": "Your meeting has been Scheduled", + "dateRangeStart": "2024-06-09", + "dateRangeEnd": "2024-06-09" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Send Bot Message", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "groupReceiverDetails": { - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "guid": { - "description": "The primary-key/ unique identifier of the group.", - "type": "string" - }, - "name": { - "description": "Name of the group.", - "type": "string" - }, - "icon": { - "description": "An URL for a group icon.", - "type": "string" - }, - "type": { - "description": "Type of the group. Can be public, password or private.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "A password required to join the the group with type password", - "type": "string" - }, - "owner": { - "description": "Owner of the group.", - "type": "string" - }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the group was created.", - "type": "integer" - }, - "metadata": { - "description": "Additional data for the group.", - "type": "object" - }, - "tags": { - "description": "A string array containing grouptags.", - "type": "array", - "items": { - "type": "string" + "example": { + "data": { + "id": "1", + "conversationId": "superhero3_user_superhero5", + "sender": "superhero3", + "receiverType": "user", + "receiver": "superhero5", + "category": "message", + "type": "text", + "data": { + "text": "test hello", + "metadata": { + "key1": "val1" + }, + "entities": { + "sender": { + "entity": { + "uid": "superhero3", + "name": "Spiderman", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550 + }, + "entityType": "user" }, - "default": [] + "receiver": { + "entity": { + "uid": "superhero5", + "name": "Cyclops", + "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "status": "offline", + "role": "default", + "createdAt": 1638361550, + "conversationId": "superhero3_user_superhero5" + }, + "entityType": "user" + } + } + }, + "sentAt": 1638423490, + "updatedAt": 1638423490 + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/settings": { + "get": { + "tags": ["Notifications"], + "summary": "List Settings", + "description": "List preferences, templates and sounds for the given app.", + "operationId": "notifications-push-list-settings", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "groupSchema": { - "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", - "properties": { - "guid": { - "description": "Unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", - "type": "string" - }, - "name": { - "description": "Display name of the group shown in chat interfaces", - "type": "string" + "example": { + "data": { + "preferences": { + "group": { + "messagesSetting": 2, + "messageEditedSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "messageDeletedSetting": 2, + "reactionsSetting": 2, + "reactionsOverride": true, + "memberLeftSetting": 1, + "memberLeftOverride": true, + "memberAddedSetting": 1, + "memberAddedOverride": true, + "memberJoinedSetting": 1, + "memberJoinedOverride": true, + "memberKickedSetting": 1, + "memberKickedOverride": true, + "memberBannedSetting": 1, + "memberBannedOverride": true, + "memberUnbannedSetting": 1, + "memberUnbannedOverride": true, + "memberScopeChangedSetting": 1, + "memberScopeChangedOverride": true + }, + "bypassPreferencesForMentions": false, + "call": { + "busySetting": 1, + "cancelledSetting": 1, + "endedSetting": 1, + "initiatedSetting": 1, + "ongoingSetting": 1, + "rejectedSetting": 1, + "unansweredSetting": 1, + "initiatedOverride": false, + "ongoingOverride": false, + "cancelledOverride": false, + "rejectedOverride": false, + "unansweredOverride": false, + "busyOverride": false, + "endedOverride": false + }, + "oneOnOne": { + "messagesSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "messageEditedSetting": 2, + "messageDeletedSetting": 2, + "reactionsSetting": 2, + "reactionsOverride": true + }, + "mute": { + "dndPreferenceSetting": 1, + "dndPreferenceOverride": true, + "schedulePreferenceSetting": { + "monday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "tuesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "wednesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "thursday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "friday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "saturday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "sunday": { + "from": 0, + "to": 2359, + "dnd": false + } + }, + "schedulePreferenceOverride": true, + "mutedGroupsOverride": true, + "mutedOneOnOnesOverride": true + }, + "email": { + "notifyForUnreadOnly": true, + "intervalInSeconds": 7200, + "maxPerDay": 20, + "maxPerDayPerConversation": 2 + }, + "sms": { + "notifyForUnreadOnly": true, + "intervalInSeconds": 7200, + "maxPerDay": 20, + "maxPerDayPerConversation": 2 + }, + "push": { + "includeMessageObjectSetting": false, + "includeSenderMetadataSetting": true, + "includeReceiverMetadataSetting": true, + "trimTextFieldSetting": false, + "includeMessageMetadataSetting": true, + "customJson": { + "hello": "world" + } + } }, - "description": { - "description": "Optional description of the group's purpose or topic", - "type": "string" + "sound": { + "chat": "default", + "call": "default" }, - "icon": { - "description": "URL of the group's icon/avatar image. Must be a valid, publicly accessible URL", - "type": "string" + "templates": { + "usePrivacyTemplate": 3, + "textMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}" + }, + "textMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "mediaMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "🔈 Has sent an audio", + "body_file": "📄 Has sent a file", + "body_image": "📷 Has sent an image", + "body_video": "🎥 Has sent a video" + }, + "mediaMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "New audio message", + "body_file": "New file message", + "body_image": "New image message", + "body_video": "New video message" + }, + "customMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}", + "body_fallback": "New message" + }, + "customMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message", + "body_fallback": "New message" + }, + "interactiveFormTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.interactiveData.title}}" + }, + "interactiveFormTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCardTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.interactiveData.text}}" + }, + "interactiveCardTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}}", + "body": "New message" + }, + "interactiveSchedulerTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveSchedulerTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveCustomTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCustomTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "emailSubjectTemplateDefault": { + "subjectGroup": "New messages in {{groupDetails.name}}", + "subjectOneOnOne": "New messages from {{senderDetails.name}}" + }, + "emailSubjectTemplatePrivacy": { + "subjectGroup": "New messages in {{groupDetails.name}}", + "subjectOneOnOne": "New messages from {{senderDetails.name}}" + }, + "smsContentTemplateDefault": { + "bodyGroup": "You've received {{messages.length}} message(s) in {{groupDetails.name}}! Read them at https://your-website.com.", + "bodyOneOnOne": "You've received {{messages.length}} message(s) from {{senderDetails.name}}! Read them at https://your-website.com." + }, + "smsContentTemplatePrivacy": { + "bodyGroup": "You've received {{messages.length}} message(s) in {{groupDetails.name}}! Read them at https://your-website.com.", + "bodyOneOnOne": "You've received {{messages.length}} message(s) from {{senderDetails.name}}! Read them at https://your-website.com." + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "patch": { + "tags": ["Notifications"], + "summary": "Update Settings", + "description": "Update preferences, templates and sounds for the given app.", + "operationId": "notifications-push-update-settings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pnSettingSchema" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Reset Settings", + "description": "Reset preferences, templates and sounds to default values for the given app.", + "operationId": "notifications-push-reset-settings", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/fcm": { + "get": { + "tags": ["Notifications"], + "summary": "List FCM Providers", + "description": "List the configured FCM providers for the given app.", + "operationId": "notifications-push-list-fcm-providers", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "type": { - "description": "Access type of the group. Values: 'public' (anyone can join), 'password' (requires password to join), 'private' (invite-only, users must be added by admin/owner)", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "pushProviders": [] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Add FCM Provider", + "description": "Add new FCM provider for the given app.", + "operationId": "notifications-push-add-fcm-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/fcmCreateProviderSchema" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "password": { - "description": "Password required to join the group (only for type='password'). Not returned in responses for security", + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update FCM Provider", + "description": "Update existing FCM provider for the given app.", + "operationId": "notifications-push-update-fcm-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "providerId": { "type": "string" + } }, - "scope": { - "description": "The authenticated user's membership scope in this group. Values: 'admin', 'moderator', 'participant'. Only present in user-context responses", - "type": "string" + "type": "object" + }, + { + "$ref": "#/components/schemas/fcmCreateProviderSchema" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "membersCount": { - "description": "Current number of members in the group", - "type": "integer" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/fcm/{providerId}": { + "delete": { + "tags": ["Notifications"], + "summary": "Delete FCM Provider", + "description": "Delete an FCM provider for the given app.", + "operationId": "notifications-push-delete-fcm-provider", + "parameters": [ + { + "$ref": "#/components/parameters/providerId" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "joinedAt": { - "description": "Unix timestamp when the authenticated user joined this group. Only present in user-context responses", - "type": "integer" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/fcm/default/{providerId}": { + "put": { + "tags": ["Notifications"], + "summary": "Change default FCM Provider", + "description": "Change the default FCM provider for the given app.", + "operationId": "notifications-push-default-fcm-provider", + "parameters": [ + { + "$ref": "#/components/parameters/providerId" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "conversationId": { - "description": "Conversation ID for this group. Format: 'group_'", + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/apns": { + "get": { + "tags": ["Notifications"], + "summary": "List APNS Providers", + "description": "List the configured APNS providers for the given app.", + "operationId": "notifications-push-list-apns-providers", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": {} + }, + "type": "object" + }, + "example": { + "data": { + "pushProviders": [] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update APNS Providers", + "description": "Update existing APNS provider for the given app.", + "operationId": "notifications-push-update-apns-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "providerId": { "type": "string" + } }, - "hasJoined": { - "description": "Indicates if the authenticated user is a member of this group. Only present in user-context responses", - "type": "boolean" - }, - "owner": { - "description": "UID of the user who owns this group. The owner has full administrative privileges", - "type": "string" + "type": "object" + }, + { + "$ref": "#/components/schemas/createApnsProvider" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": {} + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Add APNS Provider", + "description": "Add new APNS provider for the given app.", + "operationId": "notifications-push-add-apns-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/createApnsProvider" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": {} + }, + "type": "object" + }, + "example": { + "data": { + "pushProviders": [] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/apns/{providerId}": { + "delete": { + "tags": ["Notifications"], + "summary": "Delete APNS Providers", + "description": "Delete an APNS provider for the given app.", + "operationId": "notifications-push-delete-apns-provider", + "parameters": [ + { + "$ref": "#/components/parameters/providerId" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": {} + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/apns/default/{providerId}": { + "put": { + "tags": ["Notifications"], + "summary": "Change default APNS Provider", + "description": "Change the default APNS provider for the given app.", + "operationId": "notifications-push-default-apns-provider", + "parameters": [ + { + "$ref": "#/components/parameters/providerId" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": {} + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/preferences": { + "get": { + "tags": ["Notifications"], + "summary": "List Preferences", + "description": "List the configured preferences for the given user.", + "operationId": "notifications-push-list-preferences", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "metadata": { - "description": "Custom key-value pairs for storing application-specific group data", - "type": "object" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "preferences": { + "group": { + "messagesSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "reactionsSetting": 2, + "reactionsOverride": true, + "memberLeftSetting": 1, + "memberLeftOverride": true, + "memberAddedSetting": 1, + "memberAddedOverride": true, + "memberJoinedSetting": 1, + "memberJoinedOverride": true, + "memberKickedSetting": 1, + "memberKickedOverride": true, + "memberBannedSetting": 1, + "memberBannedOverride": true, + "memberUnbannedSetting": 1, + "memberUnbannedOverride": true, + "memberScopeChangedSetting": 1, + "memberScopeChangedOverride": true + }, + "oneOnOne": { + "messagesSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "reactionsSetting": 2, + "reactionsOverride": true + }, + "mute": { + "dndPreferenceSetting": 1, + "dndPreferenceOverride": true, + "schedulePreferenceSetting": { + "monday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "tuesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "wednesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "thursday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "friday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "saturday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "sunday": { + "from": 0, + "to": 2359, + "dnd": false + } + }, + "schedulePreferenceOverride": true, + "mutedGroupsOverride": true, + "mutedOneOnOnesOverride": true + } }, - "tags": { - "description": "Custom tags for categorizing and filtering groups", - "type": "array", - "items": { - "type": "string" - } + "sound": { + "chat": "default", + "call": "default" }, - "createdAt": { - "description": "Unix timestamp when the group was created", - "type": "integer" + "templates": { + "usePrivacyTemplate": 3, + "textMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}" + }, + "textMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "mediaMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "Has sent an {{message.type}}", + "body_file": "Has sent a {{message.type}}", + "body_image": "Has sent an {{message.type}}", + "body_video": "Has sent a {{message.type}}" + }, + "mediaMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "New message", + "body_file": "New message", + "body_image": "New message", + "body_video": "New message" + }, + "customMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}", + "body_fallback": "New message" + }, + "customMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}", + "body_fallback": "New message" + }, + "interactiveFormTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{data.interactiveData.title}}" + }, + "interactiveFormTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCardTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{data.interactiveData.text}}" + }, + "interactiveCardTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}}", + "body": "New message" + }, + "interactiveSchedulerTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveSchedulerTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveCustomTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCustomTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "patch": { + "tags": ["Notifications"], + "summary": "Update Preferences", + "description": "Update the preference for the given user.", + "operationId": "notifications-push-update-preferences", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pnUpdatePreferences" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "updatedAt": { - "description": "Unix timestamp when the group was last updated", - "type": "integer" + "meta": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "messageCategorySchema": { - "title": "message", - "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", - "properties": { - "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", - "type": "string" + "example": { + "data": { + "preferences": { + "group": { + "messagesSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "reactionsSetting": 2, + "reactionsOverride": true, + "memberLeftSetting": 1, + "memberLeftOverride": true, + "memberAddedSetting": 1, + "memberAddedOverride": true, + "memberJoinedSetting": 1, + "memberJoinedOverride": true, + "memberKickedSetting": 1, + "memberKickedOverride": true, + "memberBannedSetting": 1, + "memberBannedOverride": true, + "memberUnbannedSetting": 1, + "memberUnbannedOverride": true, + "memberScopeChangedSetting": 1, + "memberScopeChangedOverride": true + }, + "oneOnOne": { + "messagesSetting": 2, + "messagesOverride": true, + "repliesSetting": 2, + "repliesOverride": true, + "reactionsSetting": 2, + "reactionsOverride": true + }, + "mute": { + "dndPreferenceSetting": 1, + "dndPreferenceOverride": true, + "schedulePreferenceSetting": { + "monday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "tuesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "wednesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "thursday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "friday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "saturday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "sunday": { + "from": 0, + "to": 2359, + "dnd": false + } + }, + "schedulePreferenceOverride": true, + "mutedGroupsOverride": true, + "mutedOneOnOnesOverride": true + } }, - "muid": { - "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", - "type": "string" + "sound": { + "chat": "default", + "call": "default" }, - "receiverType": { - "description": "Specifies whether the message is being sent to a user or group", - "type": "string", - "enum": [ - "user", - "group" - ] + "templates": { + "usePrivacyTemplate": 3, + "textMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}" + }, + "textMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "mediaMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "Has sent an {{message.type}}", + "body_file": "Has sent a {{message.type}}", + "body_image": "Has sent an {{message.type}}", + "body_video": "Has sent a {{message.type}}" + }, + "mediaMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body_audio": "New message", + "body_file": "New message", + "body_image": "New message", + "body_video": "New message" + }, + "customMessageTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}", + "body_fallback": "New message" + }, + "customMessageTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{message.data.text}}", + "body_fallback": "New message" + }, + "interactiveFormTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{data.interactiveData.title}}" + }, + "interactiveFormTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCardTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "{{data.interactiveData.text}}" + }, + "interactiveCardTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}}", + "body": "New message" + }, + "interactiveSchedulerTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveSchedulerTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New invite" + }, + "interactiveCustomTemplateDefault": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + }, + "interactiveCustomTemplatePrivacy": { + "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", + "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", + "body": "New message" + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Reset Preferences", + "description": "Reset the preferences for the given user.", + "operationId": "notifications-push-reset-preferences", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "category": { - "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video). Available options: message", - "type": "string", - "default": "message", - "enum": [ - "message" - ] + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "groupPreferences": { + "groupMessages": 2, + "groupReplies": 2, + "groupReactions": 2, + "groupMemberLeft": 1, + "groupMemberAdded": 1, + "groupMemberJoined": 1, + "groupMemberKicked": 1, + "groupMemberBanned": 1, + "groupMemberUnbanned": 1, + "groupMemberScopeChanged": 1 }, - "quotedMessageId": { - "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", - "type": "string" + "oneOnOnePreferences": { + "oneOnOneMessages": 2, + "oneOnOneReplies": 2, + "oneOnOneReactions": 2 }, - "type": { - "description": "The type of message content being sent. Available options: text, image, file, audio, video", - "type": "string", - "default": "text", - "enum": [ - "text", - "image", - "file", - "audio", - "video" - ] + "mutePreferences": { + "dnd": 1, + "schedule": { + "sunday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "monday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "tuesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "wednesday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "thursday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "friday": { + "from": 0, + "to": 2359, + "dnd": false + }, + "saturday": { + "from": 0, + "to": 2359, + "dnd": false + } + } }, + "usePrivacyTemplate": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/tokens": { + "post": { + "tags": ["Notifications"], + "summary": "Register push token", + "description": "Register a push token for the given auth token.", + "operationId": "notifications-push-register-token", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pnTokenSchema" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { "data": { - "description": "Message content and attachments", - "properties": { - "text": { - "description": "Text content of the message (required for type='text')", - "type": "string" - }, - "metadata": { - "description": "Custom key-value pairs for application-specific data", - "type": "object" - }, - "attachments": { - "description": "Array of file attachments. Required for image, video, audio, or file message types", - "type": "array", - "items": { - "properties": { - "url": { - "description": "Public URL where the attachment file is hosted", - "type": "string" - }, - "name": { - "description": "Display name of the attachment file", - "type": "string" - }, - "mimeType": { - "description": "MIME type of the attachment (e.g., 'image/png', 'application/pdf')", - "type": "string" - }, - "extension": { - "description": "File extension without the dot (e.g., 'png', 'pdf')", - "type": "string" - }, - "size": { - "description": "File size in bytes", - "type": "string" - } - }, - "type": "object" - } - } - }, - "type": "object" + "type": "array", + "items": {} }, - "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", - "properties": { - "uids": { - "description": "Array of user UIDs to receive the message", - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "description": "Array of group GUIDs to receive the message", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "get": { + "tags": ["Notifications"], + "summary": "List push tokens", + "description": "List push tokens for the given auth token.", + "operationId": "notifications-push-list-tokens", + "parameters": [ + { + "name": "all", + "in": "query", + "description": "Displays all the tokens", + "schema": { + "type": "boolean" + } + }, + { + "name": "authToken", + "in": "query", + "description": "Fetches the results based on the auth Tokens", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "pushTokens": [ + { + "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "pushTokenType": "chat", + "createdAt": "2024-03-11T07:27:59.412Z", + "platform": "fcm_android", + "providerId": "fcm-provider-2", + "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", + "uid": "superhero3", + "updatedAt": "2024-03-13T11:24:47.776Z" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Unregister push tokens for authToken", + "description": "Unregister push token(s) registered for the given auth token.", + "operationId": "notifications-push-unregister-tokens", + "parameters": [ + { + "name": "all", + "in": "query", + "description": "all=true: Deletes all the registered Push tokens for the user.\nall=false: Deletes the Push token registered for the current authToken.", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/unregisterpnToken" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "pushTokens": [ + { + "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "pushTokenType": "chat", + "createdAt": "2024-03-11T07:27:59.412Z", + "platform": "fcm_android", + "providerId": "fcm-provider-2", + "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", + "uid": "superhero3", + "updatedAt": "2024-03-13T11:24:47.776Z" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/tokens/{pushToken}": { + "delete": { + "tags": ["Notifications"], + "summary": "Delete the given push token", + "description": "Deletes the given push token", + "operationId": "notifications-push-delete-token", + "parameters": [ + { + "$ref": "#/components/parameters/pushToken" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/unregisterpnToken" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "pushTokens": [ + { + "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "pushTokenType": "chat", + "createdAt": "2024-03-11T07:27:59.412Z", + "platform": "fcm_android", + "providerId": "fcm-provider-2", + "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", + "uid": "superhero3", + "updatedAt": "2024-03-13T11:24:47.776Z" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/preferences/mute": { + "get": { + "tags": ["Notifications"], + "summary": "List muted conversations", + "description": "List the conversations where notifications have been muted on behalf of the user.", + "operationId": "notifications-push-list-muted", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "tags": { - "description": "Custom tags for categorizing and filtering messages", - "type": "array", - "items": { - "type": "string" - } + "meta": { + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "messageMetaSchema": { - "description": "Pagination metadata for message list responses. Contains information about the current page and cursor for fetching the next page.", + "example": { + "data": { + "mutedConversations": [] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Mute notifications for conversations", + "description": "Mute notifications for the conversations on behalf of the given user.", + "operationId": "notifications-push-mute-conversations", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "requestBody": { + "description": "List of conversations", + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "current": { - "description": "Information about the current page of results", - "properties": { - "limit": { - "description": "Maximum number of messages requested per page", - "type": "integer" - }, - "count": { - "description": "Actual number of messages returned in this response", - "type": "integer" - } - }, - "type": "object" - }, - "next": { - "description": "Cursor information for fetching the next page of messages", - "properties": { - "affix": { - "description": "Pagination direction indicator ('append' or 'prepend')", - "type": "string" - }, - "sentAt": { - "description": "Unix timestamp of the last message, used as cursor for next page", - "type": "integer" - }, - "id": { - "description": "ID of the last message, used as cursor for next page", - "type": "string" - } - }, - "type": "object" + "conversations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/muteConversation" } + } }, "type": "object" - }, - "messageReactionSchema": { - "description": "Represents a message with its aggregated reaction counts. Extends the standard message schema with reaction summary information.", + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Unmute notifications for conversations", + "description": "Unmute notifications for the conversations on behalf of the given user.", + "operationId": "notifications-push-unmute-conversations", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "requestBody": { + "description": "Unmute Conversations", + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "id": { - "description": "Unique identifier for this message", - "type": "string" + "conversations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/unmuteConversation" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "conversationId": { - "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/preferences/timezone": { + "get": { + "tags": ["Notifications"], + "summary": "Get timezone", + "description": "Get the timezone on behalf of the user.", + "operationId": "notifications-get-timezone", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "sender": { - "description": "UID of the user who sent this message", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "timezone": "Asia/Kolkata" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "patch": { + "tags": ["Notifications"], + "summary": "Update timezone", + "description": "Update the timezone on behalf of the user.", + "operationId": "notifications-update-timezone", + "parameters": [ + { + "$ref": "#/components/parameters/requiredUID" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "timezone": { + "description": "Input a valid Timezone Identifier. Eg: Asia/Tokyo", + "type": "string", + "example": "Asia/Tokyo" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "receiverType": { - "description": "Type of receiver: 'user' for direct messages, 'group' for group messages", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "timezone": "Asia/Kolkata" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/contact-details": { + "get": { + "tags": ["Notifications"], + "summary": "Get contact details", + "description": "Fetches the contact details like Email ID and Phone number for a given user.", + "operationId": "notifications-get-contact-details", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "receiver": { - "description": "UID of the recipient user or GUID of the recipient group", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "email": "someone@example.com", + "phno": "+919591128691" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "patch": { + "tags": ["Notifications"], + "summary": "Update contact details", + "description": "Updates the contact details like Email ID and Phone number for a given user.", + "operationId": "notifications-update-contact-details", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "email": { + "description": "The user's email address", + "type": "string", + "example": "someone@example.com" + }, + "phno": { + "description": "The user's phone number with country code (Ex: +1 for US, +91 for India, etc.)", + "type": "string", + "example": "+919591128691" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "category": { - "description": "Category of the message: 'message', 'custom', or 'action'", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "email": "someone@example.com", + "phno": "+919591128691" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete contact details", + "description": "Deletes the stored contact details for a given user.", + "operationId": "notifications-delete-contact-details", + "parameters": [ + { + "$ref": "#/components/parameters/requiredonBehalfOf" + } + ], + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "type": { - "description": "Type of message content (e.g., 'text', 'image', 'file')", - "type": "string" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/sms/v1/providers/twilio": { + "get": { + "tags": ["Notifications"], + "summary": "Get Twilio credentials", + "description": "Fetches the Twilio credentials stored for the app.", + "operationId": "notifications-sms-list-twilio-details", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=", + "twilioAuthToken": "71c2301435733997e83db7a3445bc57", + "twilioSenderPhoneNumber": "+13611364718" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Save Twilio credentials", + "description": "Store the Twilio credentials for the given app.", + "operationId": "notifications-sms-save-twilio-details", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "twilioAccountSID", + "twilioAuthToken", + "twilioSenderPhoneNumber" + ], + "properties": { + "twilioAccountSID": { + "description": "The Twilio Account SID", + "type": "string", + "example": "AC91e67951ff7e5e7be8122184e76ae0e6" + }, + "twilioAuthToken": { + "description": "The Twilio Auth Token", + "type": "string", + "example": "71c2301435733997e83db7a3445bc57" + }, + "twilioSenderPhoneNumber": { + "description": "The Twilio sender phone number", + "type": "string", + "example": "+13611364718" + }, + "isEnabled": { + "description": "Enable Twilio", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { "data": { - "description": "Contains the message content and metadata", - "properties": { - "text": { - "description": "Text content of the message", - "type": "string" - }, - "metadata": { - "description": "Custom metadata attached to the message", - "type": "object" - }, - "entities": { - "description": "Sender and receiver entity information", - "properties": { - "sender": { - "description": "Information about the message sender", - "properties": { - "entity": { - "description": "Sender user details", - "properties": { - "uid": { - "description": "Sender's unique identifier", - "type": "string" - }, - "name": { - "description": "Sender's display name", - "type": "string" - }, - "role": { - "description": "Sender's role", - "type": "string" - }, - "avatar": { - "description": "URL of sender's avatar", - "type": "string" - }, - "status": { - "description": "Sender's online status", - "type": "string" - }, - "createdAt": { - "description": "Account creation timestamp", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for sender context", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Entity type, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "description": "Information about the message receiver", - "properties": { - "entity": { - "description": "Receiver entity details", - "properties": { - "uid": { - "description": "Receiver's unique identifier", - "type": "string" - }, - "name": { - "description": "Receiver's display name", - "type": "string" - }, - "role": { - "description": "Receiver's role", - "type": "string" - }, - "avatar": { - "description": "URL of receiver's avatar", - "type": "string" - }, - "status": { - "description": "Receiver's online status", - "type": "string" - }, - "createdAt": { - "description": "Account creation timestamp", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for receiver context", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Entity type: 'user' or 'group'", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" + "type": "array", + "items": {} }, - "reactions": { - "description": "Aggregated reaction counts for this message, grouped by reaction type", - "type": "array", - "items": { - "properties": { - "reaction": { - "description": "The reaction emoji or identifier", - "type": "string" - }, - "count": { - "description": "Total number of users who added this reaction", - "type": "integer" - }, - "reactedByMe": { - "description": "Whether the current authenticated user has added this reaction", - "type": "boolean" - } - }, - "type": "object" - } + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=", + "twilioAuthToken": "71c2301435733997e83db7a3445bc57", + "twilioSenderPhoneNumber": "+13611364718" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update Twilio credentials", + "description": "Updates the Twilio credentials for the given app.", + "operationId": "notifications-sms-update-twilio-details", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "twilioAccountSID": { + "description": "The Twilio Account SID", + "type": "string", + "example": "AC91e67951ff7e5e7be8122184e76ae0e6" + }, + "twilioAuthToken": { + "description": "The Twilio Auth Token", + "type": "string", + "example": "71c2301435733997e83db7a3445bc57" + }, + "twilioSenderPhoneNumber": { + "description": "The Twilio sender phone number", + "type": "string", + "example": "+13611364718" + }, + "isEnabled": { + "description": "Enable Twilio", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "sentAt": { - "description": "Unix timestamp when the message was sent", - "type": "integer" + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "twilioAccountSID": "AC91e67951ff7e5e7be8122184e76ae0e6=-", + "twilioAuthToken": "71c2301435733997e83db7a3445bc57", + "twilioSenderPhoneNumber": "+13611364718" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete Twilio credentials", + "description": "Deletes the stored Twilio credentials for the given app.", + "operationId": "notifications-sms-delete-twilio-details", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "updatedAt": { - "description": "Unix timestamp when the message was last updated", - "type": "integer" + "meta": { + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/email/v1/providers/sendgrid": { + "get": { + "tags": ["Notifications"], + "summary": "Get SendGrid credentials", + "description": "Fetches the SendGrid credentials stored for the app.", + "operationId": "notifications-email-list-sendgrid-details", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "sendGridApiKey": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=", + "sendGridTemplateID": "d-8284bb9646a040499d5cfa28d272a094", + "sendGridUnsubscribeGroupID": "33832", + "senderEmail": "noreply@em123.example.com", + "senderName": "Emailer" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Save SendGrid credentials", + "description": "Store the SendGrid credentials for the given app.", + "operationId": "notifications-email-save-sendgrid-details", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "sendGridApiKey", + "sendGridTemplateID", + "sendGridUnsubscribeGroupID", + "senderName", + "senderEmail", + "allowEmailReplies" + ], + "properties": { + "sendGridApiKey": { + "description": "The SendGrid API key", + "type": "string", + "example": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=" + }, + "sendGridTemplateID": { + "description": "The SendGrid template ID", + "type": "string", + "example": "d-8284bb9646a040499d5cfa28d272a094" + }, + "sendGridUnsubscribeGroupID": { + "description": "The SendGrid unsubscribe group ID", + "type": "string", + "example": "33832" + }, + "senderName": { + "description": "The name of the sender", + "type": "string", + "example": "Emailer" + }, + "senderEmail": { + "description": "The email address of the sender", + "type": "string", + "example": "noreply@em123.example.com" + }, + "allowEmailReplies": { + "type": "boolean", + "default": false + }, + "senderEmailForReplies": { + "description": "The email address when replies are enabled (optional)", + "type": "string", + "example": "reply@em123.example.com", + "nullable": true + }, + "isEnabled": { + "description": "Enable SendGrid", + "type": "boolean" + } }, "type": "object" - }, - "messageSchema": { - "description": "Represents a message sent between users or in a group conversation. Contains the message content, sender/receiver information, and metadata.", + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "allowEmailReplies": true, + "sendGridApiKey": "sendgrid_key", + "sendGridTemplateID": "template_id", + "sendGridUnsubscribeGroupID": "12312", + "senderEmail": "noreply@em123.example.com", + "senderEmailForReplies": "reply@em123.example.com", + "senderName": "Emailer", + "repliesWebhook": "https://notifications-us.cometchat.io/email/v1/sendgrid/replies?token=GY40_1kWlnc2Lo7Lk8vWWxiNJ6BmEEpV4eZsUeMr328" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update SendGrid credentials", + "description": "Updates the SendGrid credentials for the given app.", + "operationId": "notifications-email-update-sendgrid-details", + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "id": { - "description": "Unique identifier for this message, auto-generated by CometChat", - "type": "string" - }, - "conversationId": { - "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", - "type": "string" - }, - "sender": { - "description": "The UID of the user who sent this message", - "type": "string" - }, - "receiverType": { - "description": "Indicates whether the message was sent to a user or group. Values: 'user' for direct messages, 'group' for group messages", - "type": "string" - }, - "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", - "type": "string" - }, - "category": { - "description": "The category of the message. Values: 'message' for standard messages (text, image, file, audio, video), 'custom' for custom message types, 'action' for system-generated action messages", - "type": "string" - }, - "type": { - "description": "The type of message content. For category='message': 'text', 'image', 'file', 'audio', 'video'. For category='custom': any custom type string defined by your application", - "type": "string" - }, + "sendGridApiKey": { + "description": "The SendGrid API key", + "type": "string", + "example": "SG.9ipFP4b17yT-Fff2GGrH8FF0GqdkBohXAEI4GnTSj9Q=" + }, + "sendGridTemplateID": { + "description": "The SendGrid template ID", + "type": "string", + "example": "d-8284bb9646a040499d5cfa28d272a094" + }, + "sendGridUnsubscribeGroupID": { + "description": "The SendGrid unsubscribe group ID", + "type": "string", + "example": "33832" + }, + "senderName": { + "description": "The name of the sender", + "type": "string", + "example": "Emailer" + }, + "senderEmail": { + "description": "The email address of the sender", + "type": "string", + "example": "noreply@em123.example.com" + }, + "allowEmailReplies": { + "type": "boolean", + "default": false + }, + "senderEmailForReplies": { + "description": "The email address when replies are enabled (optional)", + "type": "string", + "example": "reply@em123.example.com", + "nullable": true + }, + "isEnabled": { + "description": "Enable SendGrid", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { "data": { - "description": "Contains the message content and related metadata", - "properties": { - "text": { - "description": "The text content of the message (for text messages)", - "type": "string" - }, - "metadata": { - "description": "Custom key-value pairs attached to the message for application-specific data", - "type": "object" - }, - "entities": { - "description": "Contains detailed information about the sender and receiver entities", - "properties": { - "sender": { - "description": "Information about the message sender", - "properties": { - "entity": { - "description": "The sender user object", - "properties": { - "uid": { - "description": "Unique identifier of the sender", - "type": "string" - }, - "name": { - "description": "Display name of the sender", - "type": "string" - }, - "role": { - "description": "Role assigned to the sender (e.g., 'default', 'admin')", - "type": "string" - }, - "avatar": { - "description": "URL of the sender's avatar image", - "type": "string" - }, - "status": { - "description": "Online status of the sender ('available' or 'offline')", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the sender's account was created", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for the sender's context", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'user' for sender", - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "description": "Information about the message receiver (user or group)", - "properties": { - "entity": { - "description": "The receiver entity object (user or group)", - "properties": { - "uid": { - "description": "Unique identifier of the receiver (for user receivers)", - "type": "string" - }, - "name": { - "description": "Display name of the receiver", - "type": "string" - }, - "role": { - "description": "Role assigned to the receiver (for user receivers)", - "type": "string" - }, - "avatar": { - "description": "URL of the receiver's avatar image", - "type": "string" - }, - "status": { - "description": "Online status of the receiver ('available' or 'offline')", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the receiver's account was created", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for the receiver's context", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity: 'user' for direct messages, 'group' for group messages", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "sentAt": { - "description": "Unix timestamp when the message was sent", - "type": "integer" + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "allowEmailReplies": true, + "sendGridApiKey": "sendgrid_key", + "sendGridTemplateID": "template_id", + "sendGridUnsubscribeGroupID": "12312", + "senderEmail": "noreply@em123.example.com", + "senderEmailForReplies": "reply@em123.example.com", + "senderName": "Emailer", + "repliesWebhook": "https://notifications-us.cometchat.io/email/v1/sendgrid/replies?token=GY40_1kWlnc2Lo7Lk8vWWxiNJ6BmEEpV4eZsUeMr328" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete SendGrid credentials", + "description": "Deletes the stored SendGrid credentials for the given app.", + "operationId": "notifications-email-delete-sendgrid-details", + "responses": { + "200": { + "description": "A list of push notification's settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} }, - "updatedAt": { - "description": "Unix timestamp when the message was last updated (e.g., edited)", - "type": "integer" + "meta": { + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/push/v1/providers/custom": { + "get": { + "tags": ["Notifications"], + "summary": "Get Custom Provider for Push Notifications", + "description": "Fetches the custom provider for Push Notifications for a given app.", + "operationId": "notifications-list-push-custom-provider", + "responses": { + "200": { + "description": "A list of push notification's custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "pushProviders": [ + { + "basicAuthUsername": "user123", + "basicAuthPassword": "pass123", + "useBasicAuth": true, + "isEnabled": true, + "webhookURL": "https://trigger-push.example.com/cometchat" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Save Custom Provider for Push Notifications", + "description": "Saves the custom provider for Push Notifications for a given app.", + "operationId": "notifications-save-push-custom-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "isEnabled", + "webhookURL", + "basicAuthUsername", + "basicAuthPassword", + "useBasicAuth" + ], + "properties": { + "isEnabled": { + "description": "Use custom provider", + "type": "boolean" + }, + "webhookURL": { + "description": "The webhook URL to be triggered for the respective events.", + "type": "string" + }, + "useBasicAuth": { + "description": "To enable basic auth for the URL", + "type": "boolean" + }, + "basicAuthUsername": { + "description": "The username for Basic auth", + "type": "string" + }, + "basicAuthPassword": { + "description": "The password for Basic auth", + "type": "string" + } }, "type": "object" - }, - "metaSchema": { + } + } + } + }, + "responses": { + "200": { + "description": "Save push notification's custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "pushProviders": [ + { + "basicAuthUsername": "user123", + "basicAuthPassword": "pass123", + "useBasicAuth": true, + "isEnabled": true, + "webhookURL": "https://trigger-push.example.com/cometchat" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update Custom Provider for Push Notifications", + "description": "Updates the custom provider for Push Notifications for a given app.", + "operationId": "notifications-update-push-custom-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "pagination": { - "properties": { - "total": { - "type": "integer" - }, - "count": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "current_page": { - "type": "integer" - }, - "total_pages": { - "type": "integer" - } + "isEnabled": { + "description": "Use custom provider", + "type": "boolean" + }, + "webhookURL": { + "description": "The webhook URL to be triggered for the respective events.", + "type": "string" + }, + "useBasicAuth": { + "description": "To enable basic auth for the URL", + "type": "boolean" + }, + "basicAuthUsername": { + "description": "The username for Basic auth", + "type": "string" + }, + "basicAuthPassword": { + "description": "The password for Basic auth", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "A list of push notification's custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "pushProviders": [ + { + "basicAuthUsername": "user123", + "basicAuthPassword": "pass123", + "useBasicAuth": true, + "isEnabled": true, + "webhookURL": "https://trigger-push.example.com/cometchat" + } + ] + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete the Custom Provider for Push Notifications", + "description": "Deletes the custom provider for Push Notifications for a given app.", + "operationId": "notifications-delete-push-custom-provider", + "responses": { + "200": { + "description": "A list of push notification's custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/sms/v1/providers/custom": { + "get": { + "tags": ["Notifications"], + "summary": "Get Custom Provider for SMS Notifications", + "description": "Fetches the custom provider for SMS Notifications for a given app.", + "operationId": "notifications-list-sms-custom-provider", + "responses": { + "200": { + "description": "A list of push notification's custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthPassword": "user888", + "basicAuthUsername": "pass123", + "isEnabled": true, + "useBasicAuth": true, + "useStoredPhNo": false, + "webhookURL": "https://trigger-sms.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Save Custom Provider for SMS Notifications", + "description": "Saves the custom provider for SMS Notifications for a given app.", + "operationId": "notifications-save-sms-custom-provider", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "isEnabled", + "useStoredPhNo", + "webhookURL", + "basicAuthUsername", + "basicAuthPassword", + "useBasicAuth" + ], + "properties": { + "useStoredPhNo": { + "description": "If enabled, the webhook will be triggered for a user only if their phone number is stored within CometChat.", + "type": "boolean", + "default": false + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CustomSMSProviderConfig" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Save the push notification's SMS custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthUsername": "user889", + "basicAuthPassword": "pass122", + "isEnabled": true, + "useBasicAuth": true, + "useStoredPhNo": false, + "webhookURL": "https://trigger-sms.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update Custom Provider for SMS Notifications", + "description": "Updates the custom provider for SMS Notifications for a given app.", + "operationId": "notifications-update-sms-custom-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomSMSProviderConfig" + } + } + } + }, + "responses": { + "200": { + "description": "Save the push notification's SMS custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthUsername": "user889", + "basicAuthPassword": "pass122", + "isEnabled": true, + "useBasicAuth": true, + "useStoredPhNo": false, + "webhookURL": "https://trigger-sms.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete the Custom Provider for SMS Notifications", + "description": "Deletes the custom provider for SMS Notifications for a given app.", + "operationId": "notifications-delete-sms-custom-provider", + "responses": { + "200": { + "description": "Delete push notification's SMS custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/email/v1/providers/custom": { + "get": { + "tags": ["Notifications"], + "summary": "Get Custom Provider for Email Notifications", + "description": "Fetches the custom provider for Email Notifications for a given app.", + "operationId": "notifications-list-email-custom-provider", + "responses": { + "200": { + "description": "A list of push notification's email custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthUsername": "user889", + "basicAuthPassword": "pass122", + "isEnabled": true, + "useBasicAuth": true, + "useStoredEmailID": false, + "webhookURL": "https://trigger-email.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "post": { + "tags": ["Notifications"], + "summary": "Save Custom Provider for Email Notifications", + "description": "Saves the custom provider for Email Notifications for a given app.", + "operationId": "notifications-save-email-custom-provider", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomEmailProviderConfig" + }, + { + "required": [ + "isEnabled", + "useStoredEmailID", + "webhookURL", + "basicAuthUsername", + "basicAuthPassword", + "useBasicAuth" + ] + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Save the push notification's SMS custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthUsername": "user889", + "basicAuthPassword": "pass122", + "isEnabled": true, + "useBasicAuth": true, + "useStoredEmailID": false, + "webhookURL": "https://trigger-email.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "put": { + "tags": ["Notifications"], + "summary": "Update Custom Provider for Email Notifications", + "description": "Updates the custom provider for Email Notifications for a given app.", + "operationId": "notifications-update-email-custom-provider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomEmailProviderConfig" + } + } + } + }, + "responses": { + "200": { + "description": "Update the push notification's Email custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "basicAuthUsername": "user889", + "basicAuthPassword": "pass122", + "isEnabled": true, + "useBasicAuth": true, + "useStoredEmailID": false, + "webhookURL": "https://trigger-email.example.com/cometchat" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + }, + "delete": { + "tags": ["Notifications"], + "summary": "Delete the Custom Provider for Email Notifications", + "description": "Deletes the custom provider for Email Notifications for a given app.", + "operationId": "notifications-delete-email-custom-provider", + "responses": { + "200": { + "description": "Delete push notification's Email custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": { + "success": true + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/notifications/v1/logs": { + "get": { + "tags": ["Notifications"], + "summary": "Notifications logs", + "description": "Paginated API to fetch logs for notifications", + "operationId": "notifications-logs", + "parameters": [ + { + "name": "messageId", + "in": "query", + "description": "To filter based on the ID of message or reply.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "reactionId", + "in": "query", + "description": "To filter based on the ID of the reaction added.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "from", + "in": "query", + "description": "To get the logs for messages that are sent after the mentioned timestamp in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "to", + "in": "query", + "description": "To get the logs for messages that are sent after the mentioned timestamp in milliseconds.", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "messageCategory", + "in": "query", + "description": "To filter logs based on the category of the message or reply. Values can be message, interactive.", + "required": false, + "schema": { + "type": "string", + "enum": ["message", "interactive"] + } + }, + { + "name": "messageType", + "in": "query", + "description": "To filter logs based on the type of the message or reply. Values are based on the message category.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "trigger", + "in": "query", + "description": "To filter based on the trigger value of the event that is responsible for triggering the notification.\nFor a message or a reply, the value of this field is after_message.\nFor message actions, the values are message_deleted or message_edited or message_reaction_added.\nFor default calling feature, the values are initiated, rejected, cancelled, unanswered.\nFor group events, the values are: after_group_joined, after_group_left, after_group_members_added, after_group_members_kicked, after_group_members_banned, after_group_members_unbanned, after_scope_changed.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "after_message", + "message_deleted", + "message_edited", + "message_reaction_added", + "initiated", + "rejected", + "cancelled", + "unanswered", + "after_group_joined", + "after_group_left", + "after_group_members_added", + "after_group_members_kicked", + "after_group_members_banned", + "after_group_members_unbanned", + "after_scope_changed" + ] + } + }, + { + "name": "sender", + "in": "query", + "description": "To filter based on the sender of the message. This has to be uid.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "reactionSender", + "in": "query", + "description": "To filter based on the user who reacted on a message.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "receiver", + "in": "query", + "description": "To filter based on the receiver of a message. This can be uid or guid based on the receiverType.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "receiverType", + "in": "query", + "description": "To filter based on the receiver's type. The value of this field can be user or group.", + "required": false, + "schema": { + "type": "string", + "enum": ["user", "group"] + } + }, + { + "name": "reactionReceiver", + "in": "query", + "description": "To filter based on the user who is notified when a reaction is added.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "member", + "in": "query", + "description": "To filter based on the user who is notified in a given group. This is only present when the receiverType is group.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "channel", + "in": "query", + "description": "To filter based on whether the user was notified using push, email or sms notification.", + "required": false, + "schema": { + "type": "string", + "enum": ["push", "email", "sms"] + } + }, + { + "name": "provider", + "in": "query", + "description": "To filter based on the provider.\nFor channel as push, the value of this field can be fcm, apns, custom.\nFor channel as email, the value of this field can be sendgrid or custom.\nFor channel as sms, the value of this field can be twilio or custom.", + "required": false, + "schema": { + "type": "string", + "enum": ["fcm", "apns", "sendgrid", "twilio", "custom"] + } + }, + { + "name": "notificationTriggered", + "in": "query", + "description": "The value is true when the notification provider is triggered. If false, the notification was not triggered due to some preference that is mentioned in the reason field.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "reason", + "in": "query", + "description": "Available only when the value of notificationTriggered is false.\nThis contains the reason for not triggering the notification provider.\n\nTo filter logs using reason, use the following values: MESSAGES_PREFERENCE, REPLIES_PREFERENCE, MESSAGE_ACTIONS_PREFERENCE, REACTIONS_PREFERENCE, GROUP_ACTIONS_PREFERENCE, DND_PREFERENCE, MUTE_PREFERENCE, SCHEDULE_PREFERENCE, CALL_PREFERENCE, QUOTA_PREFERENCE, MISSING_EMAIL, MISSING_PHNO, INVALID_PUSH_PROVIDER_ID, TIMED_OUT, NOT_FOUND, TWILIO_CREATE_ERROR.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "MESSAGES_PREFERENCE", + "REPLIES_PREFERENCE", + "MESSAGE_ACTIONS_PREFERENCE", + "REACTIONS_PREFERENCE", + "GROUP_ACTIONS_PREFERENCE", + "DND_PREFERENCE", + "MUTE_PREFERENCE", + "SCHEDULE_PREFERENCE", + "CALL_PREFERENCE", + "QUOTA_PREFERENCE", + "MISSING_EMAIL", + "MISSING_PHNO", + "INVALID_PUSH_PROVIDER_ID", + "TIMED_OUT", + "NOT_FOUND", + "TWILIO_CREATE_ERROR" + ] + } + }, + { + "name": "success", + "in": "query", + "description": "Available only when the value of notificationTriggered is true.\n\nTo filter based on whether the HTTP request to the provider was successful or not, true indicating that the provider returned success while false indicating that the provider returned an error.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "affix", + "in": "query", + "description": "To paginate over logs use the value of affix as prepend or append.", + "required": false, + "schema": { + "type": "string", + "enum": ["prepend", "append"] + } + }, + { + "name": "logId", + "in": "query", + "description": "To be used with affix for pagination.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "A list of push notification's email custom provider", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "data": [ + { + "_id": "67e3c56babf90e20e2652edb", + "processingStartedAtMS": 1742980459696, + "processingEndedAtMS": 1742980459738, + "totalProcessingTimeInMS": 42, + "component": "notifications-core", + "channel": "push", + "provider": "apns", + "messageId": 3939, + "reactionId": 69, + "trigger": "message_reaction_added", + "messageSentAtMS": 1742980459000, + "sender": "cometchat-uid-4", + "reactionSender": "cometchat-uid-1", + "receiver": "cometchat-guid-1", + "reactionReceiver": "g-muted-yes", + "receiverType": "group", + "member": "g-muted-yes", + "tokenType": "apns_ios_device", + "pushToken": "pushtoken123", + "providerId": "apns-provider", + "payload": { + "payload": { + "title": "cometchat-uid-1", + "body": "Reacted to your message: 😂", + "tag": "69", + "sender": "cometchat-uid-1", + "senderName": "cometchat-uid-1", + "receiver": "cometchat-guid-1", + "receiverName": "cometchat-guid-1", + "receiverType": "group", + "conversationId": "group_cometchat-guid-1", + "type": "chat", + "sessionId": null, + "callAction": null, + "callType": null, + "sentAt": null }, - "type": "object" + "contentAvailable": 1, + "mutableContent": 1, + "topic": "com.example.com", + "alert": { + "title": "cometchat-uid-1", + "body": "Reacted to your message: 😂" + }, + "priority": 10, + "pushType": "alert", + "sound": "default", + "collapseId": "69", + "expiry": 1742984059, + "type": "apns" + }, + "notificationTriggered": false, + "reason": "MUTE_PREFERENCE" + } + ], + "meta": { + "previous": { + "affix": "prepend", + "messageId": 3939 + }, + "current": { + "limit": 20, + "count": 20 + }, + "next": { + "affix": "append", + "messageId": 3939 } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/stats": { + "get": { + "tags": ["Metrics"], + "summary": "Usage Metrics", + "description": "Usage metrics of an app.", + "operationId": "usage-metrics", + "parameters": [ + { + "name": "fromDate", + "in": "query", + "description": "Unix timestamp from which usage has to be fetched.", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "toDate", + "in": "query", + "description": "Unix timestamp till which usage has to be fetched.", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Usage metrics of an app.", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" }, + "example": { + "data": { + "metrics": { + "audio_minutes": 0, + "video_minutes": 0, + "recorded_minutes": 0, + "active_users": 0, + "concurrent_users": 0 + }, + "time_range": { + "fromDate": 1630164253000, + "toDate": 1632842653000 + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/stats/messages": { + "get": { + "tags": ["Metrics"], + "summary": "Message Metrics", + "description": "Gives the number of messages sent and receipts received in an interval of five minutes.", + "operationId": "message-receipt-metrics", + "responses": { + "200": { + "description": "Gives the number of messages sent and receipts received in an interval of five minutes.", + "content": { + "application/json": { + "schema": { + "properties": { + "dataPoints": { + "type": "array", + "items": {} + } + }, + "type": "object" + }, + "example": { + "data": { + "startTime": "1682676600000", + "endTime": "1682680200000", + "dataPoints": [ + { + "messagesSent": 0, + "readReceipts": 0, + "deliveryReceipts": 0, + "startTime": "1682676600000", + "endTime": "1682676900000" + }, + { + "messagesSent": 0, + "readReceipts": 0, + "deliveryReceipts": 0, + "startTime": "1682676900000", + "endTime": "1682677200000" + } + ], + "appId": "235391c94852dc7d" + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + } + }, + "components": { + "schemas": { + "APIKeySchema": { + "description": "Response data", + "properties": { + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "CommonFields": { + "properties": { + "authToken": { + "type": "string", + "example": "superhero3_1710141033938cf7e3c67cc44465440d" + }, + "timezone": { + "type": "string", + "example": "Asia/Kolkata" + } + }, + "type": "object" + }, + "CustomEmailProviderConfig": { + "properties": { + "isEnabled": { + "description": "Use custom provider", + "type": "boolean" + }, + "useStoredEmailID": { + "description": "If enabled, the webhook will be triggered for a user only if their email address is stored within CometChat.", + "type": "boolean" + }, + "webhookURL": { + "description": "The webhook URL to be triggered for the respective events.", + "type": "string" + }, + "useBasicAuth": { + "description": "To enable basic auth for the URL", + "type": "boolean" + }, + "basicAuthUsername": { + "description": "The username for Basic auth", + "type": "string" + }, + "basicAuthPassword": { + "description": "The password for Basic auth", + "type": "string" + } + }, + "type": "object" + }, + "CustomSMSProviderConfig": { + "properties": { + "isEnabled": { + "description": "Use custom provider", + "type": "boolean" + }, + "useStoredPhNo": { + "description": "If enabled, the webhook will be triggered for a user only if their phone number is stored within CometChat.", + "type": "boolean" + }, + "webhookURL": { + "description": "The webhook URL triggered for respective events", + "type": "string" + }, + "useBasicAuth": { + "description": "To enable basic auth for the URL", + "type": "boolean" + }, + "basicAuthUsername": { + "description": "The username for Basic auth", + "type": "string" + }, + "basicAuthPassword": { + "description": "The password for Basic auth", + "type": "string" + } + }, + "type": "object" + }, + "Day": { + "properties": { + "from": { + "type": "integer", + "format": "int32", + "maximum": 2359, + "minimum": 0 + }, + "to": { + "type": "integer", + "format": "int32", + "maximum": 2359, + "minimum": 0 + }, + "dnd": { + "type": "boolean" + } + }, + "type": "object" + }, + "Group": { + "properties": { + "messagesSetting": { + "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "messagesOverride": { + "type": "boolean" + }, + "repliesSetting": { + "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "repliesOverride": { + "type": "boolean" + }, + "reactionsSetting": { + "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "reactionsOverride": { + "type": "boolean" + }, + "memberLeftSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberLeftOverride": { + "type": "boolean" + }, + "memberAddedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberAddedOverride": { + "type": "boolean" + }, + "memberJoinedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberJoinedOverride": { + "type": "boolean" + }, + "memberKickedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberKickedOverride": { + "type": "boolean" + }, + "memberBannedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberBannedOverride": { + "type": "boolean" + }, + "memberUnbannedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberUnbannedOverride": { + "type": "boolean" + }, + "memberScopeChangedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "memberScopeChangedOverride": { + "type": "boolean" + }, + "messageEditedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "messageDeletedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + } + }, + "type": "object" + }, + "MediaMessageTemplate": { + "properties": { + "titleOneOnOne": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}}" + }, + "titleGroup": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" + }, + "body_image": { + "type": "string", + "example": "Has sent an {{message.type}}" + }, + "body_audio": { + "type": "string", + "example": "Has sent an {{message.type}}" + }, + "body_video": { + "type": "string", + "example": "Has sent a {{message.type}}" + }, + "body_file": { + "type": "string", + "example": "Has sent a {{message.type}}" + } + }, + "type": "object" + }, + "Mute": { + "properties": { + "dndPreferenceOverride": { + "type": "boolean" + }, + "mutedGroupsOverride": { + "type": "boolean" + }, + "mutedOneOnOnesOverride": { + "type": "boolean" + }, + "schedulePreferenceSetting": { + "properties": { + "monday": { + "$ref": "#/components/schemas/Day" + }, + "tuesday": { + "$ref": "#/components/schemas/Day" + }, + "wednesday": { + "$ref": "#/components/schemas/Day" + }, + "thursday": { + "$ref": "#/components/schemas/Day" + }, + "friday": { + "$ref": "#/components/schemas/Day" + }, + "saturday": { + "$ref": "#/components/schemas/Day" + }, + "sunday": { + "$ref": "#/components/schemas/Day" + } + }, + "type": "object" + }, + "schedulePreferenceOverride": { + "type": "boolean" + } + }, + "type": "object" + }, + "MutePreferences": { + "properties": { + "dnd": { + "description": "1: Disable DND\n2: Enable DND", + "type": "integer", + "enum": [1, 2] + }, + "schedule": { + "$ref": "#/components/schemas/Schedule" + } + }, + "type": "object" + }, + "PNSuccess": { + "properties": { + "success": { + "type": "boolean" + } + }, + "type": "object" + }, + "PlatformAPNS": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "apns_ios_device", + "apns_flutter_device", + "apns_react_native_device", + "apns_ionic_cordova_device" + ] + }, + "providerId": { + "type": "string", + "example": "apns-provider-2" + }, + "deviceToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "PlatformFCM": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "fcm_android", + "fcm_ios", + "fcm_web", + "fcm_flutter_android", + "fcm_flutter_ios", + "fcm_react_native_android", + "fcm_react_native_ios", + "fcm_ionic_cordova_android", + "fcm_ionic_cordova_ios" + ] + }, + "providerId": { + "type": "string", + "example": "fcm-provider-2" + }, + "fcmToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "PlatformVOIP": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "apns_ios_voip", + "apns_flutter_voip", + "apns_ionic_cordova_voip", + "apns_react_native_voip" + ] + }, + "providerId": { + "type": "string", + "example": "apns-provider-2" + }, + "voipToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "Preferences": { + "properties": { + "push": { + "properties": { + "includeMessageObjectSetting": { + "description": "Include the message object in the push payload", + "type": "boolean" + }, + "includeSenderMetadataSetting": { + "description": "Include the sender's metadata as part of the message object", + "type": "boolean" + }, + "includeReceiverMetadataSetting": { + "description": "Include the receiver's metadata as part of the message object", + "type": "boolean" + }, + "trimTextFieldSetting": { + "description": "Trim the text field if present.", + "type": "boolean" + }, + "includeMessageMetadataSetting": { + "description": "Include the message's metadata as part of the message object", + "type": "boolean" + }, + "customJson": { + "description": "A custom JSON object for miscellaneous data", "type": "object" - }, - "moderationMessageData": { - "description": "Can contain any additional properties except for the key properties.", + } + }, + "type": "object" + }, + "call": { + "properties": { + "initiatedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "ongoingSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "cancelledSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "busySetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "rejectedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "unansweredSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + }, + "endedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2], + "example": 2 + } + }, + "type": "object" + }, + "bypassPreferencesForMentions": { + "type": "boolean" + }, + "group": { + "$ref": "#/components/schemas/Group" + }, + "oneOnOne": { + "$ref": "#/components/schemas/oneOnOne" + }, + "mute": { + "$ref": "#/components/schemas/Mute" + }, + "email": { + "$ref": "#/components/schemas/email" + }, + "sms": { + "$ref": "#/components/schemas/sms" + } + }, + "type": "object" + }, + "Schedule": { + "properties": { + "monday": { + "$ref": "#/components/schemas/Day" + }, + "tuesday": { + "$ref": "#/components/schemas/Day" + }, + "wednesday": { + "$ref": "#/components/schemas/Day" + }, + "thursday": { + "$ref": "#/components/schemas/Day" + }, + "friday": { + "$ref": "#/components/schemas/Day" + }, + "saturday": { + "$ref": "#/components/schemas/Day" + }, + "sunday": { + "$ref": "#/components/schemas/Day" + } + }, + "type": "object" + }, + "SchedulerSchema": { + "required": [ + "interactionGoal", + "allowSenderInteraction", + "interactiveData" + ], + "properties": { + "interactionGoal": { + "required": ["type", "elementIds"], + "properties": { + "type": { + "type": "string", + "enum": ["anyAction", "allOf", "oneOf", "none"] + }, + "elementIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "allowSenderInteraction": { + "type": "boolean" + }, + "interactiveData": { + "required": [ + "title", + "avatarUrl", + "bufferTime", + "icsFileUrl", + "availability", + "timezoneCode", + "duration", + "scheduleElement", + "goalCompletionText", + "dateRangeStart", + "dateRangeEnd" + ], + "properties": { + "title": { + "type": "string" + }, + "avatarUrl": { + "type": "string" + }, + "bufferTime": { + "type": "integer" + }, + "icsFileUrl": { + "type": "string" + }, + "timezoneCode": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "scheduleElement": { + "required": [ + "action", + "elementId", + "buttonText", + "elementType", + "disableAfterInteracted" + ], "properties": { - "text": { - "description": "The meaning of the `data.text` property depends on the values of `category` and `type`:\n1. When `category` is `'message'` and `type` is `'text'`, it represents the text content of the message.\n2. When `category` is `'message'` and `type` is not `'text'`, it represents the caption associated with the attachment.", + "action": { + "required": [ + "url", + "actionType", + "method", + "dataKey", + "headers", + "payload" + ], + "properties": { + "url": { "type": "string" - }, - "customData": { - "description": "when category==”custom”, this property can have any JSON object.", + }, + "actionType": { + "type": "string" + }, + "method": { + "type": "string" + }, + "dataKey": { + "type": "string" + }, + "headers": { "type": "object" - }, - "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", - "type": "array", - "items": { - "required": [ - "name", - "mimeType", - "extension", - "url" - ], + }, + "payload": { + "required": [ + "data", + "type", + "category", + "receiver", + "receiverType" + ], + "properties": { + "data": { "properties": { - "url": { - "description": "Contains the URL of the attachment. The developer has to make sure that the URL is accessible while calling the API. The API will be downloading the attachment from its current location and upload it to CometChat’s attachment storage.", - "type": "string" - }, - "name": { - "description": "Name of the attachment.", - "type": "string" - }, - "mimeType": { - "description": "Mime Type of attachment.", - "type": "string" - }, - "extension": { - "description": "The extension of the attachment.", - "type": "string" - }, - "size": { - "description": "The size of the attachment(in bytes).", - "type": "string" - } + "text": { + "type": "string" + } }, "type": "object" - } - }, - "metadata": { + }, + "type": { + "type": "string" + }, + "category": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "receiverType": { + "type": "string" + } + }, "type": "object" - } - }, - "type": "object" - }, - "muteConversation": { - "properties": { - "id": { - "description": "uid or guid", - "type": "string" - }, - "type": { - "description": "oneOnOne or group", - "type": "string", - "enum": [ - "oneOnOne", - "group" - ] + } }, - "until": { - "description": "This is a valid timestamp from the future, E.g: 1710696964705", - "type": "integer", - "format": "int64" - } + "type": "object" + }, + "elementId": { + "type": "string" + }, + "buttonText": { + "type": "string" + }, + "elementType": { + "type": "string" + }, + "disableAfterInteracted": { + "type": "boolean" + } }, "type": "object" + }, + "goalCompletionText": { + "type": "string" + }, + "dateRangeStart": { + "type": "string", + "format": "date" + }, + "dateRangeEnd": { + "type": "string", + "format": "date" + } }, - "objectEntitySchema": { - "description": "Contains entity information for action messages, describing who performed an action, who it affects, and what was acted upon.", + "type": "object" + } + }, + "type": "object" + }, + "ServiceAccountCreds": { + "properties": { + "project_id": { + "type": "string" + }, + "client_email": { + "type": "string" + }, + "private_key": { + "type": "string" + }, + "private_key_id": { + "type": "string" + } + }, + "type": "object" + }, + "SilentNotification": { + "properties": { + "chat": { + "type": "boolean" + }, + "call": { + "type": "boolean" + } + }, + "type": "object" + }, + "Sound": { + "properties": { + "chat": { + "type": "string" + }, + "call": { + "type": "string" + } + }, + "type": "object" + }, + "Template": { + "properties": { + "titleOneOnOne": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}}" + }, + "titleGroup": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" + }, + "body": { + "type": "string", + "example": "New text message" + } + }, + "type": "object" + }, + "Templates": { + "properties": { + "usePrivacyTemplate": { + "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", + "type": "integer", + "enum": [1, 2, 3] + }, + "textMessageTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "textMessageTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "mediaMessageTemplateDefault": { + "$ref": "#/components/schemas/MediaMessageTemplate" + }, + "mediaMessageTemplatePrivacy": { + "$ref": "#/components/schemas/MediaMessageTemplate" + }, + "customMessageTemplateDefault": { + "allOf": [ + { "properties": { - "entities": { - "description": "Container for action-related entities", - "properties": { - "by": { - "description": "The user who performed the action", - "properties": { - "entity": { - "description": "User details of the action performer", - "properties": { - "uid": { - "description": "Unique identifier of the user", - "type": "string" - }, - "name": { - "description": "Display name of the user", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user was created", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "for": { - "description": "The entity affected by the action (user or group)", - "properties": { - "entity": { - "description": "Details of the affected entity", - "properties": { - "guid": { - "description": "Group identifier (for group entities)", - "type": "string" - }, - "icon": { - "description": "URL of the group icon", - "type": "string" - }, - "name": { - "description": "Display name of the entity", - "type": "string" - }, - "type": { - "description": "Group type: 'public', 'password', or 'private'", - "type": "string" - }, - "owner": { - "description": "UID of the group owner", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the entity was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the entity was last updated", - "type": "integer" - }, - "updatedBy": { - "description": "UID of the user who last updated the entity", - "type": "integer" - }, - "description": { - "description": "Description of the group", - "type": "integer" - }, - "membersCount": { - "description": "Number of members in the group", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for this entity", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity: 'user' or 'group'", - "type": "string" - } - }, - "type": "object" - }, - "on": { - "description": "The object that was acted upon (e.g., a user being added/removed)", - "properties": { - "entity": { - "description": "Details of the acted-upon entity", - "properties": { - "uid": { - "description": "Unique identifier of the user", - "type": "string" - }, - "link": { - "description": "Profile link of the user", - "type": "string" - }, - "name": { - "description": "Display name of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "avatar": { - "description": "URL of the user's avatar", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the user was last updated", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for this user", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, typically 'user'", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } + "body_fallback": { + "type": "string" + } }, "type": "object" - }, - "oneOnOne": { + }, + { + "$ref": "#/components/schemas/Template" + } + ] + }, + "customMessageTemplatePrivacy": { + "allOf": [ + { "properties": { - "messagesSetting": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "messagesOverride": { - "type": "boolean" - }, - "repliesSetting": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "repliesOverride": { - "type": "boolean" - }, - "reactionsSetting": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "reactionsOverride": { - "type": "boolean" - }, - "messageEditedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "messageDeletedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - } + "body_fallback": { + "type": "string" + } }, "type": "object" + }, + { + "$ref": "#/components/schemas/Template" + } + ] + }, + "interactiveFormTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveFormTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCardTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCardTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveSchedulerTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveSchedulerTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCustomTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCustomTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "emailSubjectTemplateDefault": { + "properties": { + "subjectGroup": { + "type": "string", + "example": "While you were away..." + }, + "subjectOneOnOne": { + "type": "string", + "example": "While you were away..." + } + }, + "type": "object" + }, + "emailSubjectTemplatePrivacy": { + "properties": { + "subjectGroup": { + "type": "string", + "example": "While you were away..." + }, + "subjectOneOnOne": { + "type": "string", + "example": "While you were away..." + } + }, + "type": "object" + }, + "smsContentTemplateDefault": { + "properties": { + "bodyGroup": { + "type": "string", + "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." + }, + "bodyOneOnOne": { + "type": "string", + "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." + } + }, + "type": "object" + }, + "smsContentTemplatePrivacy": { + "properties": { + "bodyGroup": { + "type": "string", + "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." + }, + "bodyOneOnOne": { + "type": "string", + "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." + } }, - "pnSettingSchema": { - "description": "Response data", + "type": "object" + } + }, + "type": "object" + }, + "TimeRange": { + "required": ["from", "to"], + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "authTokenSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "authToken": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "bannedUserSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "isBanned": { + "type": "boolean" + }, + "joinedAt": { + "type": "integer" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "blockedUserSchema": { + "description": "Response data", + "properties": { + "blockedByMe": { + "type": "boolean" + }, + "blockedByMeAt": { + "type": "integer" + }, + "blockedAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "conversationSchema": { + "description": "Response data", + "properties": { + "conversationId": { + "type": "string" + }, + "conversationType": { + "type": "string" + }, + "unreadMessageCount": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "lastMessage": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object", + "allOf": [ + { + "properties": { + "action": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/objectEntitySchema" + } + ] + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "receipts": { "properties": { - "preferences": { - "$ref": "#/components/schemas/Preferences" - }, - "sound": { - "$ref": "#/components/schemas/Sound" - }, - "templates": { - "$ref": "#/components/schemas/Templates" - } + "data": { + "type": "array", + "items": {} + } }, "type": "object" + } }, - "pnTokenSchema": { - "description": "Push notification token registration schema. Supports FCM (Firebase Cloud Messaging), APNS (Apple Push Notification Service), and VOIP tokens for different platforms.", - "oneOf": [ - { - "$ref": "#/components/schemas/PlatformFCM" - }, - { - "$ref": "#/components/schemas/PlatformAPNS" - }, - { - "$ref": "#/components/schemas/PlatformVOIP" - } - ] - }, - "pnUpdatePreferences": { - "description": "Response data", + "type": "object" + }, + "conversationWith": { + "type": "object" + } + }, + "type": "object" + }, + "conversationWithSchema": { + "properties": { + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean", + "default": "true" + }, + "createdAt": { + "type": "integer" + }, + "owner": { + "type": "string" + }, + "updatedAt": { + "type": "integer" + }, + "updatedBy": { + "type": "string" + } + }, + "type": "object" + }, + "createApnsProvider": { + "properties": { + "providerId": { + "type": "string" + }, + "keyId": { + "type": "string" + }, + "teamId": { + "type": "string" + }, + "bundleId": { + "type": "string" + }, + "p8KeyFilename": { + "type": "string" + }, + "p8Key": { + "type": "string" + }, + "includeContentAvailable": { + "type": "boolean" + }, + "includeMutableContent": { + "type": "boolean" + }, + "productionMode": { + "type": "boolean" + } + }, + "type": "object" + }, + "customCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories is custom.", + "type": "string", + "default": "custom", + "enum": ["custom"] + }, + "type": { + "description": "Type of the message.", + "type": "string" + }, + "data": { + "description": "JSON containing message attributes.", + "properties": { + "customData": { + "description": "when category==”custom”, this property can have any JSON object.", + "type": "object" + } + }, + "type": "object" + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "customInteractiveSchema": { + "title": "Custom Interactive Schema", + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "dataPointSchema": { + "description": "Response data", + "properties": { + "messagesSent": { + "type": "integer" + }, + "readReceipts": { + "type": "integer" + }, + "deliveryReceipts": { + "type": "integer" + }, + "startTime": { + "type": "integer" + }, + "endTime": { + "type": "integer" + } + }, + "type": "object" + }, + "deleteSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "email": { + "properties": { + "notifyForUnreadOnly": { + "description": "If the value is false, the notification will contain all the messages, not just unread.", + "type": "boolean" + }, + "intervalInSeconds": { + "type": "integer" + }, + "maxPerDay": { + "type": "integer" + }, + "maxPerDayPerConversation": { + "type": "integer" + } + }, + "type": "object" + }, + "fcmCreateProviderSchema": { + "properties": { + "providerId": { + "type": "string" + }, + "serviceAccountFilename": { + "type": "string" + }, + "serviceAccountCreds": { + "$ref": "#/components/schemas/ServiceAccountCreds" + }, + "notificationInPayload": { + "properties": { + "ios": { + "$ref": "#/components/schemas/SilentNotification" + }, + "android": { + "$ref": "#/components/schemas/SilentNotification" + }, + "web": { + "$ref": "#/components/schemas/SilentNotification" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "groupEntitySchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "action": { + "type": "string" + }, + "entities": { "properties": { - "groupPreferences": { - "properties": { - "groupMessages": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupReplies": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupReactions": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupMemberLeft": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberAdded": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberJoined": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberKicked": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberBanned": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberUnbanned": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberScopeChanged": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - } - }, - "type": "object" - }, - "oneOnOnePreferences": { + "by": { + "properties": { + "entity": { "properties": { - "oneOnOneMessages": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "oneOnOneReplies": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "oneOnOneReactions": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - } + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } }, "type": "object" - }, - "mutePreferences": { - "$ref": "#/components/schemas/MutePreferences" - }, - "usePrivacyTemplate": { - "type": "boolean" - } - }, - "type": "object" - }, - "pushNotificationSchema": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - }, - "pushProviders": { - "description": "Response data", - "type": "array", - "items": {} - }, - "reactionSchema": { - "description": "Represents a single reaction added to a message by a user. Contains the reaction emoji/identifier and information about who reacted.", - "properties": { - "id": { - "description": "Unique identifier for this reaction record", - "type": "string" - }, - "messageId": { - "description": "ID of the message this reaction is attached to", - "type": "string" - }, - "reaction": { - "description": "The reaction emoji or identifier (e.g., '👍', 'heart', 'laugh')", - "type": "string" - }, - "uid": { - "description": "UID of the user who added this reaction", + }, + "entityType": { "type": "string" + } }, - "reactedAt": { - "description": "Unix timestamp when the reaction was added", - "type": "integer" - }, - "reactedBy": { - "description": "Detailed information about the user who added the reaction", + "type": "object" + }, + "on": { + "properties": { + "entity": { "properties": { - "uid": { - "description": "Unique identifier of the user", - "type": "string" - }, - "name": { - "description": "Display name of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "avatar": { - "description": "URL of the user's avatar image", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user account was created", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for the user's context", - "type": "string" - } + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } }, "type": "object" - } - }, - "type": "object" - }, - "roleSchema": { - "description": "Represents a user role for access control. Roles define what actions users can perform and who they can interact with in the chat system.", - "properties": { - "role": { - "description": "Unique identifier for the role. This value is assigned to users via the 'role' property", - "type": "string" - }, - "name": { - "description": "Display name for the role (e.g., 'Administrator', 'Moderator', 'Premium User')", - "type": "string" - }, - "description": { - "description": "Human-readable description of the role's purpose and permissions", + }, + "entityType": { "type": "string" + } }, - "metadata": { - "description": "Custom key-value pairs for storing application-specific role data", - "type": "object" - }, - "settings": { - "description": "Role-specific settings that control user capabilities", + "type": "object" + }, + "for": { + "properties": { + "entity": { "properties": { - "listUsers": { - "description": "Controls which users this role can see. Values: 'all' (see all users), 'friends' (only friends), 'none' (no users)", - "type": "string" - }, - "sendMessagesTo": { - "description": "Controls who this role can send messages to. Values: 'all' (anyone), 'friends' (only friends), 'none' (no one)", - "type": "string" + "guid": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" } - }, - "type": "object" - }, - "createdAt": { - "description": "Unix timestamp when the role was created", - "type": "integer" - } - }, - "type": "object" - }, - "sms": { - "properties": { - "notifyForUnreadOnly": { - "description": "If the value is false, the notification will contain all the messages, not just unread.", - "type": "boolean" - }, - "intervalInSeconds": { - "type": "integer" - }, - "maxPerDay": { - "type": "integer" - }, - "maxPerDayPerConversation": { - "type": "integer" - }, - "includeMessageObjectSetting": { - "description": "Includes the message object in the SMS payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Includes sender metadata in the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Includes receiver metadata in the message object", - "type": "boolean" + }, + "type": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } }, - "includeMessageMetadataSetting": { - "description": "Includes message metadata in the message object", - "type": "boolean" - } + "type": "object" + } }, "type": "object" - }, - "triggerSchema": { - "description": "Represents an event trigger that can be assigned to webhooks. Triggers define which events will cause webhook notifications to be sent.", + } + }, + "type": "object" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "groupMemberListSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "joinedAt": { + "type": "integer" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "groupMemberSchema": { + "description": "Response data", + "properties": { + "usersToBan": { + "properties": { + "": { "properties": { - "id": { - "description": "Unique identifier for the trigger (e.g., 'message_sent', 'user_created', 'group_member_joined')", - "type": "string" - }, - "category": { - "description": "Category grouping for the trigger. Values: 'message' (message events), 'user' (user events), 'group' (group events), 'call' (call events)", - "type": "string" - }, - "description": { - "description": "Human-readable description of when this trigger fires", - "type": "string" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "unmuteConversation": { + "type": "object" + }, + "admins": { + "properties": { + "": { "properties": { - "id": { - "description": "uid or guid", - "type": "string" - }, - "type": { - "description": "oneOnOne or group", - "type": "string", - "enum": [ - "oneOnOne", - "group" - ] - } + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } }, "type": "object" + } }, - "unregisterpnToken": { - "description": "Request body for unregistering a push notification token", - "required": [ - "authToken" - ], + "type": "object" + }, + "moderators": { + "properties": { + "": { "properties": { - "authToken": { - "description": "The user's authentication token associated with the push token to unregister", - "type": "string" - } + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } }, "type": "object" + } }, - "updatemessageSchema": { - "description": "Represents an action message generated when a message is edited or updated. Contains information about who made the change, the affected message, and the action performed.", + "type": "object" + }, + "participants": { + "properties": { + "": { "properties": { - "id": { - "description": "Unique identifier for this action message", - "type": "string" - }, - "conversationId": { - "description": "Identifier linking this action to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", - "type": "string" - }, - "sender": { - "description": "The UID of the user who triggered this action (typically the message editor)", - "type": "string" - }, - "receiverType": { - "description": "Indicates whether the original message was in a user or group conversation. Values: 'user' or 'group'", - "type": "string" + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "groupSchema": { + "description": "Response data", + "properties": { + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean" + }, + "owner": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "interactionCardSchema": { + "title": "Card Schema", + "properties": { + "interactionGoal": { + "properties": { + "type": { + "type": "string", + "enum": ["anyOf", "allOf", "oneOf", "none"] + }, + "elementIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "allowSenderInteraction": { + "type": "boolean" + }, + "interactiveData": { + "properties": { + "text": { + "type": "string" + }, + "cardActions": { + "type": "array", + "items": { + "properties": { + "elementType": { + "type": "string" }, - "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", - "type": "string" + "elementId": { + "type": "string" }, - "category": { - "description": "Always 'action' for update message notifications", - "type": "string" + "defaultValue": { + "type": "string" }, - "type": { - "description": "The type of action performed, e.g., 'edited' for message edits", - "type": "string" + "label": { + "type": "string" }, - "data": { - "description": "Contains details about the action and affected entities", - "properties": { - "action": { - "description": "The action that was performed (e.g., 'edited')", - "type": "string" - }, - "entities": { - "description": "Contains information about who performed the action, who it affects, and what was changed", - "properties": { - "by": { - "description": "The user who performed the action", - "properties": { - "entity": { - "description": "User details of the action performer", - "properties": { - "uid": { - "description": "Unique identifier of the user who performed the action", - "type": "string" - }, - "name": { - "description": "Display name of the user", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user account was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the user was last updated", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "for": { - "description": "The user or group affected by the action", - "properties": { - "entity": { - "description": "Details of the affected entity", - "properties": { - "uid": { - "description": "Unique identifier of the affected user", - "type": "string" - }, - "name": { - "description": "Display name of the affected user", - "type": "string" - }, - "avatar": { - "description": "URL of the user's avatar image", - "type": "string" - }, - "status": { - "description": "Online status of the user", - "type": "string" - }, - "role": { - "description": "Role assigned to the user", - "type": "string" - }, - "createdAt": { - "description": "Unix timestamp when the user account was created", - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "description": "Type of entity: 'user' or 'group'", - "type": "string" - } - }, - "type": "object" - }, - "on": { - "description": "The message that was acted upon", - "properties": { - "entity": { - "description": "The original message that was edited", - "properties": { - "id": { - "description": "Unique identifier of the edited message", - "type": "string" - }, - "conversationId": { - "description": "Conversation ID of the edited message", - "type": "string" - }, - "sender": { - "description": "UID of the original message sender", - "type": "string" - }, - "receiverType": { - "description": "Type of receiver: 'user' or 'group'", - "type": "string" - }, - "receiver": { - "description": "UID or GUID of the message receiver", - "type": "string" - }, - "category": { - "description": "Category of the original message", - "type": "string" - }, - "type": { - "description": "Type of the original message", - "type": "string" - }, - "data": { - "description": "Content of the edited message", - "properties": { - "text": { - "description": "The updated text content", - "type": "string" - }, - "entities": { - "description": "Sender and receiver entity information", - "properties": { - "sender": { - "description": "Sender information", - "properties": { - "entity": { - "description": "Sender user details", - "properties": { - "uid": { - "description": "Sender's unique identifier", - "type": "string" - }, - "name": { - "description": "Sender's display name", - "type": "string" - }, - "role": { - "description": "Sender's role", - "type": "string" - }, - "avatar": { - "description": "URL of sender's avatar", - "type": "string" - }, - "status": { - "description": "Sender's online status", - "type": "string" - }, - "createdAt": { - "description": "Account creation timestamp", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Entity type, always 'user'", - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "description": "Receiver information", - "properties": { - "entity": { - "description": "Receiver entity details", - "properties": { - "uid": { - "description": "Receiver's unique identifier", - "type": "string" - }, - "name": { - "description": "Receiver's display name", - "type": "string" - }, - "role": { - "description": "Receiver's role", - "type": "string" - }, - "avatar": { - "description": "URL of receiver's avatar", - "type": "string" - }, - "status": { - "description": "Receiver's online status", - "type": "string" - }, - "createdAt": { - "description": "Account creation timestamp", - "type": "string" - }, - "conversationId": { - "description": "Conversation ID for receiver context", - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "description": "Entity type: 'user' or 'group'", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "sentAt": { - "description": "Unix timestamp when the original message was sent", - "type": "integer" - }, - "editedAt": { - "description": "Unix timestamp when the message was edited", - "type": "integer" - }, - "editedBy": { - "description": "UID of the user who edited the message", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp of the last update", - "type": "integer" - }, - "tags": { - "description": "Tags associated with the message", - "type": "array", - "items": {} - } - }, - "type": "object" - }, - "entityType": { - "description": "Entity type, always 'message'", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" + "optional": { + "type": "boolean" }, - "sentAt": { - "description": "Unix timestamp when this action message was generated", - "type": "integer" + "maxLines": { + "type": "integer" }, - "updatedAt": { - "description": "Unix timestamp when this action message was last updated", - "type": "integer" + "placeholder": { + "type": "object" } - }, - "type": "object" - }, - "usageMetricsSchema": { - "description": "Aggregated usage metrics for your CometChat app. Contains call minutes, user activity, and the time range for the data.", + }, + "type": "object" + } + }, + "submitElement": { "properties": { - "metrics": { - "description": "Usage metric values for the specified time range", - "properties": { - "audio_minutes": { - "description": "Total minutes of audio calls during the time range", - "type": "integer" - }, - "video_minutes": { - "description": "Total minutes of video calls during the time range", - "type": "integer" - }, - "recorded_minutes": { - "description": "Total minutes of recorded calls during the time range", - "type": "integer" - }, - "active_users": { - "description": "Number of unique users who were active during the time range", - "type": "integer" - }, - "concurrent_users": { - "description": "Peak number of users connected simultaneously during the time range", - "type": "integer" - } - }, + "elementType": { + "type": "string" + }, + "elementId": { + "type": "string" + }, + "buttonText": { + "type": "string" + }, + "disableAfterInteracted": { + "type": "boolean" + }, + "optional": { + "type": "boolean" + }, + "action": { + "properties": { + "url": { + "type": "string" + }, + "method": { + "type": "string" + }, + "payload": { "type": "object" - }, - "time_range": { - "description": "The time range for which metrics are reported", - "properties": { - "fromDate": { - "description": "Unix timestamp marking the start of the metrics period", - "type": "integer" - }, - "toDate": { - "description": "Unix timestamp marking the end of the metrics period", - "type": "integer" - } - }, + }, + "headers": { "type": "object" - } + }, + "dataKey": { + "type": "string" + }, + "actionType": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } }, - "userConversationSchema": { - "description": "Represents a user-specific view of a conversation, including unread counts and last message from the user's perspective.", - "properties": { - "conversationId": { - "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 or 'group_' for groups", - "type": "string" + "type": "object" + } + }, + "type": "object" + }, + "interactionFormSchema": { + "title": "Form Schema", + "properties": { + "interactionGoal": { + "properties": { + "type": { + "type": "string", + "enum": ["anyOf", "allOf", "oneOf", "none"] + }, + "elementIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "allowSenderInteraction": { + "type": "boolean" + }, + "interactiveData": { + "properties": { + "text": { + "type": "string" + }, + "formFields": { + "type": "array", + "items": { + "properties": { + "elementType": { + "type": "string" }, - "conversationType": { - "description": "Type of conversation: 'user' for direct messages, 'group' for group chats", - "type": "string" + "elementId": { + "type": "string" }, - "unreadMessageCount": { - "description": "Number of unread messages for the authenticated user in this conversation", - "type": "string" + "defaultValue": { + "type": "string" }, - "createdAt": { - "description": "Unix timestamp when the conversation was created", - "type": "integer" + "label": { + "type": "string" }, - "updatedAt": { - "description": "Unix timestamp of the last activity in this conversation", - "type": "integer" + "optional": { + "type": "boolean" }, - "lastMessage": { - "description": "The most recent message in this conversation", - "properties": { - "id": { - "description": "Unique identifier of the message", - "type": "string" - }, - "conversationId": { - "description": "Conversation ID this message belongs to", - "type": "string" - }, - "sender": { - "description": "UID of the message sender", - "type": "string" - }, - "receiverType": { - "description": "Type of receiver: 'user' or 'group'", - "type": "string" - }, - "receiver": { - "description": "UID or GUID of the receiver", - "type": "string" - }, - "category": { - "description": "Message category: 'message', 'custom', or 'action'", - "type": "string" - }, - "type": { - "description": "Message type (e.g., 'text', 'image')", - "type": "string" - }, - "data": { - "description": "Message content and metadata", - "type": "object", - "allOf": [ - { - "properties": { - "action": { - "description": "Action type for action messages", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/objectEntitySchema" - } - ] - }, - "sentAt": { - "description": "Unix timestamp when the message was sent", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the message was last updated", - "type": "integer" - } - }, - "type": "object" + "maxLines": { + "type": "integer" }, - "conversationWith": { - "description": "The user or group entity this conversation is with", - "type": "object" + "placeholder": { + "type": "object" } - }, - "type": "object" - }, - "userReceiverDetails": { - "required": [ - "uid", - "name" - ], + }, + "type": "object" + } + }, + "submitElement": { "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the receiver.", - "type": "string" - }, - "name": { - "description": "Name of the receiver.", + "elementType": { + "type": "string" + }, + "elementId": { + "type": "string" + }, + "buttonText": { + "type": "string" + }, + "disableAfterInteracted": { + "type": "boolean" + }, + "optional": { + "type": "boolean" + }, + "action": { + "properties": { + "url": { + "type": "string" + }, + "method": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "dataKey": { "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user receiving the message.", + }, + "actionType": { "type": "string" + } }, - "link": { - "description": "Profile page URL of the receiver.", - "type": "string" + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "interactiveCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories is interactive.", + "type": "string", + "default": "interactive", + "enum": ["interactive"] + }, + "type": { + "description": "Type of the message. The available values are card, form and customInteractive.", + "type": "string", + "default": "card", + "enum": ["card", "form", "customInteractive", "scheduler"] + }, + "data": { + "description": "JSON containing message attributes. Please select the appropriate schema based on the type property.", + "type": "object", + "oneOf": [ + { + "$ref": "#/components/schemas/interactionFormSchema" + }, + { + "$ref": "#/components/schemas/interactionCardSchema" + }, + { + "$ref": "#/components/schemas/SchedulerSchema" + }, + { + "$ref": "#/components/schemas/customInteractiveSchema" + } + ] + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "example": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "allOf", + "elementIds": ["element8"] + }, + "allowSenderInteraction": true, + "interactiveData": { + "title": "Form Title", + "formFields": [ + { + "elementType": "textInput", + "elementId": "element1", + "defaultValue": "vivek", + "label": "Name", + "optional": false, + "maxLines": 1, + "placeholder": { + "text": "write your name here" + } + }, + { + "elementType": "textInput", + "elementId": "element2", + "label": "Last Name", + "optional": false, + "maxLines": 1 + }, + { + "elementType": "textInput", + "elementId": "element3", + "label": "Address", + "optional": false, + "maxLines": 5 + }, + { + "elementType": "dropdown", + "elementId": "element4", + "label": "Country", + "optional": false, + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "INDIA" + }, + { + "value": "option2", + "label": "AUSTRALIA" + } + ] + }, + { + "elementType": "checkbox", + "elementId": "element5", + "optional": true, + "label": "Services", + "options": [ + { + "value": "option1", + "label": "Garbage" + }, + { + "value": "option2", + "label": "Electricity Bill" + }, + { + "value": "option3", + "label": "Lift" + } + ], + "defaultValue": ["option1", "option2"] + }, + { + "elementType": "singleSelect", + "elementId": "element6", + "optional": false, + "label": "Wing", + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "A Wing" + }, + { + "value": "option2", + "label": "B Wing" + } + ] + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "About us", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + } + ], + "submitElement": { + "elementType": "button", + "elementId": "element8", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "superhero2", + "receiverType": "user" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + } + } + }, + "category": "interactive", + "type": "form", + "receiver": "superhero1", + "tags": ["tag1"] + } + }, + "interactiveMessageSchema": { + "properties": { + "current": { + "properties": { + "limit": { + "type": "integer" + }, + "count": { + "type": "integer" + } + }, + "type": "object" + }, + "next": { + "properties": { + "affix": { + "type": "string" + }, + "sentAt": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "messageCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories are message and custom.", + "type": "string", + "default": "message", + "enum": ["message"] + }, + "type": { + "description": "Type of the message. The available values are text, image, file, audio, video.", + "type": "string", + "default": "text", + "enum": ["text", "image", "file", "audio", "video"] + }, + "data": { + "description": "JSON containing message attributes.", + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "attachments": { + "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + "type": "array", + "items": { + "properties": { + "url": { + "description": "Contains the URL of the attachment.", + "type": "string" }, - "role": { - "description": "Role of the receiver. Should be created already via the Create role API.", - "type": "string" + "name": { + "description": "Name of the attachment.", + "type": "string" }, - "createdAt": { - "description": "A 10-digit timestamp at which the receiver was created.", - "type": "integer" + "mimeType": { + "description": "Mime Type of attachment.", + "type": "string" }, - "metadata": { - "description": "Additional details about the receiver.", - "type": "object" + "extension": { + "description": "The extension of the attachment.", + "type": "string" }, - "tags": { - "description": "A string array containing receiver tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] + "size": { + "description": "The size of the attachment(in bytes).", + "type": "string" } - }, + }, + "type": "object" + } + } + }, + "type": "object" + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "messageMetaSchema": { + "properties": { + "current": { + "properties": { + "limit": { + "type": "integer" + }, + "count": { + "type": "integer" + } + }, + "type": "object" + }, + "next": { + "properties": { + "affix": { + "type": "string" + }, + "sentAt": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "messageReactionSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "metadata": { "type": "object" - }, - "userSchema": { - "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", + }, + "entities": { "properties": { - "uid": { - "description": "Unique identifier for the user. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", - "type": "string" - }, - "name": { - "description": "Display name of the user shown in chat interfaces", + "sender": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { "type": "string" + } }, - "avatar": { - "description": "URL of the user's profile picture. Must be a valid, publicly accessible URL", + "type": "object" + }, + "receiver": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { "type": "string" + } }, - "link": { - "description": "Optional URL associated with the user's profile (e.g., website, social profile)", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "reactions": { + "type": "array", + "items": { + "properties": { + "reaction": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "reactedByMe": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "messageSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "entities": { + "properties": { + "sender": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { "type": "string" + } }, - "metadata": { - "description": "Custom key-value pairs for storing application-specific user data", + "type": "object" + }, + "receiver": { + "properties": { + "entity": { "properties": { - "email": { - "description": "Example metadata field - you can store any custom data here", - "type": "string" - } + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } }, "type": "object" - }, - "status": { - "description": "Online presence status of the user. Values: 'available' (online) or 'offline'", + }, + "entityType": { "type": "string" + } }, - "role": { - "description": "Role assigned to the user for access control. Default role is 'default'. Custom roles can be created via the Roles API", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "metaSchema": { + "properties": { + "pagination": { + "properties": { + "total": { + "type": "integer" + }, + "count": { + "type": "integer" + }, + "per_page": { + "type": "integer" + }, + "current_page": { + "type": "integer" + }, + "total_pages": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "muteConversation": { + "properties": { + "id": { + "description": "uid or guid", + "type": "string" + }, + "type": { + "description": "oneOnOne or group", + "type": "string", + "enum": ["oneOnOne", "group"] + }, + "until": { + "description": "This is a valid timestamp from the future, E.g: 1710696964705", + "type": "integer", + "format": "int64" + } + }, + "type": "object" + }, + "objectEntitySchema": { + "properties": { + "entities": { + "properties": { + "by": { + "properties": { + "entity": { + "properties": { + "uid": { "type": "string" - }, - "lastActiveAt": { - "description": "Unix timestamp of the user's last activity in the app", - "type": "integer" - }, - "hasBlockedMe": { - "description": "Indicates if this user has blocked the authenticated user (only present in user-context responses)", - "type": "boolean" - }, - "blockedByMe": { - "description": "Indicates if the authenticated user has blocked this user (only present in user-context responses)", - "type": "boolean" - }, - "tags": { - "description": "Custom tags for categorizing and filtering users", - "type": "array", - "items": { - "type": "string" - } - }, - "deactivatedAt": { - "description": "Unix timestamp when the user was deactivated. Null if user is active", - "type": "integer" - }, - "createdAt": { - "description": "Unix timestamp when the user account was created", + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { "type": "integer" + } }, - "updatedAt": { - "description": "Unix timestamp when the user account was last updated", - "type": "integer" - } + "type": "object" + }, + "entityType": { + "type": "string" + } }, "type": "object" - }, - "userSenderDetails": { - "required": [ - "uid", - "name" - ], + }, + "for": { "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the sender.", + "entity": { + "properties": { + "guid": { "type": "string" - }, - "name": { - "description": "Name of the sender.", + }, + "icon": { "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user sending the message.", + }, + "name": { "type": "string" - }, - "link": { - "description": "Profile page URL of the sender.", + }, + "type": { "type": "string" - }, - "role": { - "description": "Role of the sender. Should be created already via the Create role API.", + }, + "owner": { "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the sender was created.", + }, + "createdAt": { "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "updatedBy": { + "type": "integer" + }, + "description": { + "type": "integer" + }, + "membersCount": { + "type": "integer" + }, + "conversationId": { + "type": "integer" + } }, - "metadata": { - "description": "Additional details about the sender.", - "type": "object" - }, - "tags": { - "description": "A string array containing sender tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } + "type": "object" + }, + "entityType": { + "type": "string" + } }, "type": "object" - }, - "webhookSchema": { - "description": "Represents a webhook configuration for receiving real-time event notifications. Webhooks send HTTP POST requests to your server when specified events occur in CometChat.", + }, + "on": { "properties": { - "id": { - "description": "Unique identifier for the webhook, auto-generated by CometChat", + "entity": { + "properties": { + "uid": { "type": "string" - }, - "name": { - "description": "Display name for the webhook to help identify its purpose", + }, + "link": { "type": "string" - }, - "webhookURL": { - "description": "The HTTPS endpoint URL where webhook payloads will be sent. Must be publicly accessible", + }, + "name": { "type": "string" - }, - "useBasicAuth": { - "description": "Whether to use HTTP Basic Authentication when sending webhook requests", - "type": "boolean" - }, - "username": { - "description": "Username for HTTP Basic Authentication (required if useBasicAuth is true)", + }, + "role": { "type": "string" - }, - "password": { - "description": "Password for HTTP Basic Authentication (required if useBasicAuth is true). Not returned in responses", + }, + "avatar": { "type": "string" - }, - "triggers": { - "description": "List of event triggers that will fire this webhook. See triggerSchema for available triggers", - "type": "array", - "items": { - "type": "string" - } - }, - "enabled": { - "description": "Whether the webhook is currently active. Disabled webhooks will not receive event notifications", - "type": "boolean" - }, - "createdAt": { - "description": "Unix timestamp when the webhook was created", + }, + "status": { + "type": "string" + }, + "createdAt": { "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the webhook was last updated", + }, + "updatedAt": { "type": "integer" - } - }, - "type": "object" - } - }, - "parameters": { - "authToken": { - "name": "authToken", - "in": "path", - "description": "The authentication token string for a user. Used to identify and manage specific auth tokens", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Auth Token", - "value": "" - } - } - }, - "conversationId": { - "name": "conversationId", - "in": "path", - "description": "Unique identifier of the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", - "required": true, - "schema": { - "type": "string" - } - }, - "uid--conversation": { - "name": "uid", - "in": "path", - "description": "UID of the user whose conversation needs to be fetched", - "required": true, - "schema": { - "type": "string" - } - }, - "guid--conversation": { - "name": "guid", - "in": "path", - "description": "GUID of the group whose conversation needs to be fetched", - "required": true, - "schema": { - "type": "string" - } - }, - "uid": { - "name": "uid", - "in": "path", - "description": "An UID of a user.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - }, - "guid": { - "name": "guid", - "in": "path", - "description": "A GUID of a group.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "GUID", - "value": "" - } - } - }, - "requiredonBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, - "schema": { - "type": "string" - } - }, - "requiredAppId": { - "name": "appId", - "in": "header", - "description": "(Required) App ID", - "required": true, - "schema": { - "type": "string" - } - }, - "onBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "schema": { - "type": "string" - } - }, - "messageId": { - "name": "messageId", - "in": "path", - "description": "messageId for the moderation service", - "required": true, - "schema": { - "type": "string" - } - }, - "ruleId": { - "name": "ruleId", - "in": "path", - "description": "Rule ID", - "required": true, - "schema": { - "type": "string" - } - }, - "keywordId": { - "name": "keywordId", - "in": "path", - "description": "Keyword ID", - "required": true, - "schema": { - "type": "string" - } - }, - "pushToken": { - "name": "pushToken", - "in": "path", - "description": "The push notification token to unregister or manage", - "required": true, - "schema": { - "type": "string" - } - }, - "providerId": { - "name": "providerId", - "in": "path", - "description": "Provider ID.", - "required": true, - "schema": { + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { "type": "string" + } }, - "examples": { - "string": { - "summary": "Provider ID", - "value": "" - } - } + "type": "object" + } }, - "requiredUID": { - "name": "uid", - "in": "query", - "description": "(Required) UID", - "required": true, - "schema": { - "type": "string" - } - } + "type": "object" + } }, - "examples": { - "text-message": { - "summary": "Text Message example", - "value": { - "receiver": "cometchat-uid-2", - "receiverType": "user", - "category": "message", - "type": "text", - "data": { - "text": "Hello" - } - } - }, - "custom-message": { - "summary": "Custom Message example", - "value": { - "receiverType": "user", - "data": { - "customData": { - "text": "Hello there!" - } - }, - "category": "custom", - "type": "text", - "receiver": "cometchat-uid-2", - "tags": [ - "tag1" - ] - } - }, - "media-message": { - "summary": "Media Message example", - "value": { - "receiverType": "user", - "data": { - "text": "Hello there!", - "attachments": [ - { - "name": "ironman.png", - "extension": "png", - "mimeType": "image/png", - "url": "https: //files-.cometchat.io//media/.png?fat=" - } - ] - }, - "category": "message", - "type": "image", - "receiver": "cometchat-uid-2" - } - } + "type": "object" + }, + "oneOnOne": { + "properties": { + "messagesSetting": { + "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "messagesOverride": { + "type": "boolean" + }, + "repliesSetting": { + "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "repliesOverride": { + "type": "boolean" + }, + "reactionsSetting": { + "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "reactionsOverride": { + "type": "boolean" + }, + "messageEditedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "messageDeletedSetting": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + } }, - "securitySchemes": { - "apiKey": { - "type": "apiKey", - "description": "API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).", - "name": "apikey", - "in": "header" - } - } - }, - "tags": [ - { - "name": "API Keys", - "description": "Manage API keys for authenticating REST API requests. API keys control access to your CometChat app and define permission scopes (fullAccess or authOnly). Use these endpoints to create, list, update, and delete API keys for different integration scenarios such as server-side operations or client authentication." + "type": "object" + }, + "pnSettingSchema": { + "description": "Response data", + "properties": { + "preferences": { + "$ref": "#/components/schemas/Preferences" + }, + "sound": { + "$ref": "#/components/schemas/Sound" + }, + "templates": { + "$ref": "#/components/schemas/Templates" + } + }, + "type": "object" + }, + "pnTokenSchema": { + "description": "Response data", + "oneOf": [ + { + "title": "PlatformFCM", + "$ref": "#/components/schemas/PlatformFCM" + }, + { + "title": "PlatformAPNS", + "$ref": "#/components/schemas/PlatformAPNS" + }, + { + "title": "PlatformVOIP", + "$ref": "#/components/schemas/PlatformVOIP" + } + ] + }, + "pnUpdatePreferences": { + "description": "Response data", + "properties": { + "groupPreferences": { + "properties": { + "groupMessages": { + "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupReplies": { + "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupReactions": { + "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupMemberLeft": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberAdded": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberJoined": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberKicked": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberBanned": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberUnbanned": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberScopeChanged": { + "description": "1: Don't notify\n2: Notify", + "type": "integer", + "enum": [1, 2] + } + }, + "type": "object" + }, + "oneOnOnePreferences": { + "properties": { + "oneOnOneMessages": { + "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "oneOnOneReplies": { + "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "oneOnOneReactions": { + "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "type": "integer", + "enum": [1, 2, 3] + } + }, + "type": "object" + }, + "mutePreferences": { + "$ref": "#/components/schemas/MutePreferences" + }, + "usePrivacyTemplate": { + "type": "boolean" + } }, - { - "name": "Roles", - "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." + "type": "object" + }, + "pushNotificationSchema": { + "properties": { + "success": { + "type": "boolean" + } }, - { - "name": "Auth Tokens", - "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." + "type": "object" + }, + "pushProviders": { + "description": "Response data", + "type": "array", + "items": {} + }, + "reactionSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "messageId": { + "type": "string" + }, + "reaction": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "reactedAt": { + "type": "integer" + }, + "reactedBy": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + } }, - { - "name": "Users", - "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed. Start here to populate your app with users." + "type": "object" + }, + "roleSchema": { + "description": "Response data", + "properties": { + "role": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "email": { + "type": "string" + }, + "settings": { + "properties": { + "listUsers": { + "type": "string" + }, + "sendMessagesTo": { + "type": "string" + } + }, + "type": "object" + }, + "createdAt": { + "type": "integer" + } }, - { - "name": "Blocked Users", - "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." + "type": "object" + }, + "sms": { + "properties": { + "notifyForUnreadOnly": { + "description": "If the value is false, the notification will contain all the messages, not just unread.", + "type": "boolean" + }, + "intervalInSeconds": { + "type": "integer" + }, + "maxPerDay": { + "type": "integer" + }, + "maxPerDayPerConversation": { + "type": "integer" + } }, - { - "name": "Friends", - "description": "Manage friend relationships between users. Friends lists enable features like showing online friends, friend-only messaging, and social connections. Use these endpoints to add friends, remove friends, and retrieve a user's friend list with pagination support." + "type": "object" + }, + "triggerSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "category": { + "type": "string" + }, + "description": { + "type": "string" + } }, - { - "name": "Groups", - "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." + "type": "object" + }, + "unmuteConversation": { + "properties": { + "id": { + "description": "uid or guid", + "type": "string" + }, + "type": { + "description": "oneOnOne or group", + "type": "string", + "enum": ["oneOnOne", "group"] + } }, - { - "name": "Group Members", - "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." + "type": "object" + }, + "unregisterpnToken": { + "required": ["authToken"], + "properties": { + "authToken": { + "type": "string" + } }, - { - "name": "Banned Users", - "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." + "type": "object" + }, + "updatemessageSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "action": { + "type": "string" + }, + "entities": { + "properties": { + "by": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "for": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "on": { + "properties": { + "entity": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "entities": { + "properties": { + "sender": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "receiver": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "editedAt": { + "type": "integer" + }, + "editedBy": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": {} + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } }, - { - "name": "Messages", - "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." + "type": "object" + }, + "usageMetricsSchema": { + "description": "Response data", + "properties": { + "metrics": { + "properties": { + "audio_minutes": { + "type": "integer" + }, + "video_minutes": { + "type": "integer" + }, + "recorded_minutes": { + "type": "integer" + }, + "active_users": { + "type": "integer" + }, + "concurrent_users": { + "type": "integer" + } + }, + "type": "object" + }, + "time_range": { + "properties": { + "fromDate": { + "type": "integer" + }, + "toDate": { + "type": "integer" + } + }, + "type": "object" + } }, - { - "name": "Conversations", - "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." + "type": "object" + }, + "userConversationSchema": { + "description": "Response data", + "properties": { + "conversationId": { + "type": "string" + }, + "conversationType": { + "type": "string" + }, + "unreadMessageCount": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "lastMessage": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object", + "allOf": [ + { + "properties": { + "action": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/objectEntitySchema" + } + ] + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "conversationWith": { + "type": "object" + } }, - { - "name": "Calls", - "description": "Manage voice and video calling functionality. Access call history, retrieve call details, and monitor call quality metrics. Calls integrate with CometChat's real-time communication infrastructure for audio and video conversations." + "type": "object" + }, + "userSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } }, - { - "name": "Notifications", - "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." + "type": "object" + }, + "webhookSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "webhookURL": { + "type": "string" + }, + "useBasicAuth": { + "type": "boolean" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } }, - { - "name": "Moderation", - "description": "The REST collections for Moderations." + "type": "object" + } + }, + "parameters": { + "authToken": { + "name": "authToken", + "in": "path", + "description": "An auth token of a user.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Restrict Features", - "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." + "examples": { + "string": { + "summary": "Auth Token", + "value": "superhero1_1625206799abcdef" + } + } + }, + "conversationId": { + "name": "conversationId", + "in": "path", + "description": "(Required) conversation id", + "required": true, + "schema": { + "type": "string" + } + }, + "uid--conversation": { + "name": "uid", + "in": "path", + "description": "UID of the user whose conversation needs to be fetched.", + "required": true, + "schema": { + "type": "string" + } + }, + "guid--conversation": { + "name": "guid", + "in": "path", + "description": "GUID of the group whose conversation needs to be fetched.", + "required": true, + "schema": { + "type": "string" + } + }, + "uid": { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Webhooks", - "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." + "examples": { + "string": { + "summary": "UID", + "value": "superhero1" + } + } + }, + "guid": { + "name": "guid", + "in": "path", + "description": "A GUID of a group.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Triggers", - "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." + "examples": { + "string": { + "summary": "GUID", + "value": "supergroup" + } + } + }, + "requiredonBehalfOf": { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + "requiredAppId": { + "name": "appId", + "in": "header", + "description": "(Required) App ID", + "required": true, + "schema": { + "type": "string" + } + }, + "onBehalfOf": { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + }, + "pushToken": { + "name": "pushToken", + "in": "path", + "description": "(Required) Push Token", + "required": true, + "schema": { + "type": "string" + } + }, + "providerId": { + "name": "providerId", + "in": "path", + "description": "Provider ID.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Metrics", - "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." + "examples": { + "string": { + "summary": "Provider ID", + "value": "provider_12345" + } + } + }, + "requiredUID": { + "name": "uid", + "in": "query", + "description": "(Required) UID", + "required": true, + "schema": { + "type": "string" } - ] -} \ No newline at end of file + } + }, + "securitySchemes": { + "apiKey": { + "type": "apiKey", + "description": "API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).", + "name": "apikey", + "in": "header" + } + } + }, + "tags": [ + { + "name": "API Keys", + "description": "The API keys are used to authorise the APIs" + }, + { + "name": "Roles", + "description": "The roles are used to give user access rights" + }, + { + "name": "Users", + "description": "The REST collection for users." + }, + { + "name": "Auth Tokens", + "description": "The auth tokens are used to login end users using client SDKs." + }, + { + "name": "Blocked Users", + "description": "The REST collections for blocked users." + }, + { + "name": "Friends", + "description": "List,add and remove friends by passing UID in path variables" + }, + { + "name": "Groups", + "description": "The REST collections for groups." + }, + { + "name": "Banned Users", + "description": "Ban and Unban user by passing other UID in path variables." + }, + { + "name": "Group Members", + "description": "The REST collections for group members." + }, + { + "name": "Messages", + "description": "The REST collections for messages." + }, + { + "name": "Conversations", + "description": "The REST collections for conversations." + }, + { + "name": "Restrict Features", + "description": "Allows Restricting Features" + }, + { + "name": "Metrics", + "description": "Allows accessing Data Metrics" + }, + { + "name": "Triggers", + "description": "Allows adding triggers to a webhook." + }, + { + "name": "Webhooks", + "description": "Allows accessing Webhooks." + }, + { + "name": "Notifications", + "description": "Allows configuring Notifications core." + } + ] +} diff --git a/data-import-apis.json b/data-import-apis.json index 61f9913a2..8b08b2837 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Data Import APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API. These APIs enable you to build chat functionality including user management, group conversations, direct messaging, push notifications, and content moderation.", + "description": "Manage messages, users, groups for a particular app using our Chat API.", "version": "3.0" }, "servers": [ @@ -32,7 +32,8 @@ "Messages" ], "summary": "Import Messages", - "description": "Bulk imports messages from an external system into your CometChat app. Use this endpoint when migrating chat history from another platform or restoring messages from a backup.

**When to use:** Migrating chat history from another chat platform, restoring messages from a backup, importing historical conversations for compliance, or pre-populating conversations with sample data for testing.", + "description": "The CometChat message import API allows customers to import their messages’ data into the CometChat systems.", + "operationId": "import-messages", "requestBody": { "content": { "application/json": { @@ -50,7 +51,7 @@ ], "properties": { "": { - "description": "Wraps a single message object. The **<muid>** will be a primary key/unique Identifier of the message.", + "description": "Wraps a single message object. The <muid> will be a primary key/unique Identifier of the message.", "required": [ "muid", "sender", @@ -60,7 +61,7 @@ ], "properties": { "muid": { - "description": "The value should be the same as value of the placeholder **<muid>** which wraps the message object.", + "description": "The value should be the same as value of the placeholder <muid> which wraps the message object.", "type": "string" }, "sender": { @@ -121,7 +122,7 @@ ], "properties": { "url": { - "description": "Publicly accessible URL of the attachment.", + "description": "Contains the URL of the attachment. The developer has to make sure that the URL is accessible while calling the data_import API. The API will be downloading the attachment from its current location and upload it to CometChat’s attachment storage.", "type": "string" }, "name": { @@ -386,71 +387,6 @@ } }, "type": "object" - }, - "mentionedUserDetails": { - "description": "Optional field that provides user details when data.text includes a mention, formatted using CometChat’s mention template (<@uid:UID>).", - "properties": { - "": { - "description": "A map where each key is a user’s unique identifier (UID) and the value is that user’s details. The <uid> will be replaced by the mentioned user’s primary key.", - "properties": { - "": { - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the owner. The value should be the same as value of the placeholder which wraps the mentionedUserDetails object.", - "type": "string" - }, - "name": { - "description": "Name of the owner.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the owner.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the owner.", - "type": "string" - }, - "role": { - "description": "Role of the owner. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the owner was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the owner was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the owner.", - "type": "object" - }, - "tags": { - "description": "A string array containing owner tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the owner was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" } }, "type": "object" @@ -466,7 +402,7 @@ "type": "text", "category": "message", "data": { - "text": "Hi there", + "text": "Hi there,", "attachments": [ { "name": "hi.png", @@ -510,13 +446,7 @@ }, "tags": [ "tag1" - ], - "mentionedUserDetails": { - "example-uid-new": { - "uid": "example-uid-new", - "name": "example-uid" - } - } + ] } } } @@ -649,7 +579,8 @@ "Users" ], "summary": "Import Users", - "description": "Bulk imports users from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or syncing users from your existing database.

**When to use:** Migrating users from another chat platform, syncing users from your application database, restoring users from a backup, or pre-populating users before launching your app.", + "description": "The CometChat user import API allows customers to import their users’ data into the CometChat systems.", + "operationId": "import-users", "requestBody": { "content": { "application/json": { @@ -662,14 +593,14 @@ ], "properties": { "": { - "description": "Wraps a user object. The **<uid>** will be a primary key/unique Identifier of the user.", + "description": "Wraps a user object. The <uid> will be a primary key/unique Identifier of the user.", "required": [ "uid", "name" ], "properties": { "uid": { - "description": "The value should be the same as value of the placeholder **<uid>** which wraps the user object.", + "description": "The value should be the same as value of the placeholder <uid> which wraps the user object.", "type": "string" }, "name": { @@ -802,7 +733,8 @@ "Groups" ], "summary": "Import Groups", - "description": "Bulk imports groups from an external system into your CometChat app. Use this endpoint when migrating from another chat platform or setting up predefined groups.

**When to use:** Migrating groups from another chat platform, creating predefined groups for your organization, restoring groups from a backup, or setting up team/department groups before launch.", + "description": "The CometChat group import API allows customers to import their groups’ data into the CometChat systems.", + "operationId": "import-groups", "requestBody": { "content": { "application/json": { @@ -815,7 +747,7 @@ ], "properties": { "": { - "description": "Wraps a group object. The **<guid>** will be a primary key/unique Identifier of the group.", + "description": "Wraps a group object. The <guid> will be a primary key/unique Identifier of the group.", "required": [ "guid", "name", @@ -823,7 +755,7 @@ ], "properties": { "guid": { - "description": "The value should be the same as value of the placeholder **<guid>** which wraps the group object.", + "description": "The value should be the same as value of the placeholder <guid> which wraps the group object.", "type": "string" }, "name": { @@ -1001,7 +933,8 @@ "Groups" ], "summary": "Import Group Members", - "description": "Bulk imports group memberships from an external system into your CometChat app. Use this endpoint when migrating group members from another platform or setting up predefined group memberships.

**When to use:** Migrating group memberships from another chat platform, setting up team/department memberships before launch, restoring group memberships from a backup, or bulk adding users to multiple groups during onboarding.", + "description": "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems.", + "operationId": "import-members", "requestBody": { "content": { "application/json": { @@ -1014,7 +947,7 @@ ], "properties": { "_member_": { - "description": "Wraps a single member object. The **<guid>_member_<uid>** will will be a primary key/unique Identifier of the member.", + "description": "Wraps a single member object. The <guid>_member_<uid> will will be a primary key/unique Identifier of the member.", "required": [ "memberId", "guid", @@ -1022,7 +955,7 @@ ], "properties": { "memberId": { - "description": "The value should be the same as value of the placeholder **<guid>_member_<uid>** which wraps the member object.", + "description": "The value should be the same as value of the placeholder <guid>_member_<uid> which wraps the member object.", "type": "string" }, "guid": { @@ -1238,169 +1171,36 @@ "components": { "schemas": { "APIKeySchema": { - "description": "Represents an API key used for authenticating requests to the CometChat REST API. API keys have different scopes that determine what operations they can perform.", + "description": "Response data", "properties": { "apiKey": { - "description": "The API key string used in the apiKey header for authentication. Keep this secure and never expose in client-side code", "type": "string" }, "name": { - "description": "Display name for the API key to help identify its purpose (e.g., 'Production Server', 'Development')", "type": "string" }, "scope": { - "description": "Permission scope of the API key. Values: 'fullAccess' (all operations), 'authOnly' (only create auth tokens for users)", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the API key was created", "type": "integer" } }, "type": "object" }, - "CategoryType": { - "description": "Type of entries in the list", - "type": "string", - "enum": [ - "word", - "pattern", - "sentence-similarity" - ] - }, "CommonFields": { - "description": "Common fields required for all push notification token registrations", "properties": { "authToken": { - "description": "The user's authentication token. Links the push token to a specific user session", "type": "string", "example": "superhero3_1710141033938cf7e3c67cc44465440d" }, "timezone": { - "description": "User's timezone for scheduling notifications appropriately (IANA timezone format)", "type": "string", "example": "Asia/Kolkata" } }, "type": "object" }, - "Condition": { - "properties": { - "id": { - "description": "Unique identifier of a condition", - "type": "integer", - "example": 1 - }, - "entity": { - "description": "Entity type in which moderation will be performed.", - "type": "string", - "example": "message" - }, - "operand": { - "description": "Type of message content to moderate (e.g., text, image, video, custom).", - "type": "string", - "enum": [ - "text", - "image", - "video", - "custom" - ], - "example": "image" - }, - "operator": { - "description": "Operation to be performed for condition evaluation (e.g., contains, equals).", - "type": "string", - "enum": [ - "contains", - "equals" - ], - "example": "contains" - }, - "category": { - "description": "Type of entries for evaluation, either 'word' or 'pattern'.", - "type": "string", - "enum": [ - "word", - "pattern" - ], - "example": "word" - }, - "isKeywordReferencePresent": { - "description": "Indicates if the value contains a reference to a keyword list.", - "type": "boolean", - "example": false - }, - "isMediaPresent": { - "description": "Indicates if the incoming message contains media content.", - "type": "boolean", - "example": true - }, - "value": { - "description": "Actual value for the condition, or reference ID if isKeywordReferencePresent is true, or a formula if isMediaPresent is true.", - "type": "string", - "example": "violence_greaterThan_30" - } - }, - "type": "object" - }, - "CustomEmailProviderConfig": { - "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "useStoredEmailID": { - "description": "If enabled, the webhook will be triggered for a user only if their email address is stored within CometChat.", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL to be triggered for the respective events.", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" - } - }, - "type": "object" - }, - "CustomSMSProviderConfig": { - "properties": { - "isEnabled": { - "description": "Use custom provider", - "type": "boolean" - }, - "useStoredPhNo": { - "description": "If enabled, the webhook will be triggered for a user only if their phone number is stored within CometChat.", - "type": "boolean" - }, - "webhookURL": { - "description": "The webhook URL triggered for respective events", - "type": "string" - }, - "useBasicAuth": { - "description": "To enable basic auth for the URL", - "type": "boolean" - }, - "basicAuthUsername": { - "description": "The username for Basic auth", - "type": "string" - }, - "basicAuthPassword": { - "description": "The password for Basic auth", - "type": "string" - } - }, - "type": "object" - }, "Day": { "properties": { "from": { @@ -1424,7 +1224,7 @@ "Group": { "properties": { "messagesSetting": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", "enum": [ 1, @@ -1436,7 +1236,7 @@ "type": "boolean" }, "repliesSetting": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", "enum": [ 1, @@ -1448,7 +1248,7 @@ "type": "boolean" }, "reactionsSetting": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", "enum": [ 1, @@ -1460,7 +1260,7 @@ "type": "boolean" }, "memberLeftSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1471,7 +1271,7 @@ "type": "boolean" }, "memberAddedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1482,7 +1282,7 @@ "type": "boolean" }, "memberJoinedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1493,7 +1293,7 @@ "type": "boolean" }, "memberKickedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1504,7 +1304,7 @@ "type": "boolean" }, "memberBannedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1515,7 +1315,7 @@ "type": "boolean" }, "memberUnbannedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1526,7 +1326,7 @@ "type": "boolean" }, "memberScopeChangedSetting": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -1535,106 +1335,10 @@ }, "memberScopeChangedOverride": { "type": "boolean" - }, - "messageEditedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "messageDeletedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - } - }, - "type": "object" - }, - "GroupFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], - "properties": { - "entity": { - "description": "Type of entity for group filter", - "type": "string", - "enum": [ - "group" - ] - }, - "operand": { - "description": "Field to apply the filter on for 'group'", - "type": "string", - "enum": [ - "guid", - "name", - "type", - "tags", - "createdAt" - ] - }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "notEquals", - "in", - "notIn", - "startsWith", - "endsWith", - "lessThan", - "greaterThan" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "exampleValue" - }, - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" } }, "type": "object" }, - "KeywordList": { - "discriminator": { - "propertyName": "category", - "mapping": { - "word": "#/components/schemas/WordPatternSchema", - "pattern": "#/components/schemas/PatternSchema", - "sentence-similarity": "#/components/schemas/SentenceSimilaritySchema" - } - }, - "oneOf": [ - { - "$ref": "#/components/schemas/WordPatternSchema" - }, - { - "$ref": "#/components/schemas/PatternSchema" - }, - { - "$ref": "#/components/schemas/SentenceSimilaritySchema" - } - ] - }, "MediaMessageTemplate": { "properties": { "titleOneOnOne": { @@ -1664,110 +1368,6 @@ }, "type": "object" }, - "ModerationData": { - "properties": { - "id": { - "type": "string", - "example": "moderation-test" - }, - "name": { - "type": "string", - "example": "Video Moderation" - }, - "description": { - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "enabled": { - "type": "boolean", - "example": true - }, - "conditions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } - }, - "action": { - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "active": { - "type": "boolean", - "example": true - }, - "createdAt": { - "type": "integer", - "example": 1720003247 - }, - "updatedAt": { - "type": "integer", - "example": 1720003247 - }, - "revisionId": { - "type": "string", - "example": "253179cf5f665257_moderation-test_1" - } - }, - "type": "object" - }, - "ModerationRequestBody": { - "properties": { - "id": { - "description": "Unique identifier for the moderation rule.", - "type": "string", - "example": "moderation-test" - }, - "name": { - "description": "Descriptive name for the moderation rule.", - "type": "string", - "example": "Video Moderation" - }, - "enabled": { - "description": "Indicates whether the rule is active.", - "type": "boolean", - "example": true - }, - "description": { - "description": "Detailed explanation of the rule's purpose.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "action": { - "description": "Actions to be taken when a violation is detected.", - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "filters": { - "description": "List of filters to apply", - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/UserFilter" - }, - { - "$ref": "#/components/schemas/GroupFilter" - } - ] - } - }, - "conditions": { - "description": "List of conditions that must be met for the rule to trigger.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } - } - }, - "type": "object" - }, "Mute": { "properties": { "dndPreferenceOverride": { @@ -1835,50 +1435,11 @@ }, "type": "object" }, - "PatternSchema": { - "required": [ - "category", - "searchTerms" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the pattern list.", - "type": "string", - "example": "ID-of-the-pattern-list" - }, - "name": { - "description": "Descriptive name for the pattern list.", - "type": "string", - "example": "Name of the pattern list" - }, - "description": { - "description": "Detailed explanation of the pattern list's purpose.", - "type": "string", - "example": "Description of the pattern list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - } - }, - "type": "object" - }, "PlatformAPNS": { - "description": "APNS (Apple Push Notification Service) token registration for iOS devices", "allOf": [ { "properties": { "platform": { - "description": "Platform identifier for APNS-based push notifications", "type": "string", "enum": [ "apns_ios_device", @@ -1888,12 +1449,10 @@ ] }, "providerId": { - "description": "ID of the APNS provider configuration to use for sending notifications", "type": "string", "example": "apns-provider-2" }, "deviceToken": { - "description": "The APNS device token obtained from iOS", "type": "string" } }, @@ -1905,12 +1464,10 @@ ] }, "PlatformFCM": { - "description": "FCM (Firebase Cloud Messaging) token registration for Android, iOS, Web, Flutter, React Native, and Ionic platforms", "allOf": [ { "properties": { "platform": { - "description": "Platform identifier for FCM-based push notifications", "type": "string", "enum": [ "fcm_android", @@ -1925,12 +1482,10 @@ ] }, "providerId": { - "description": "ID of the FCM provider configuration to use for sending notifications", "type": "string", "example": "fcm-provider-2" }, "fcmToken": { - "description": "The FCM registration token obtained from Firebase SDK", "type": "string" } }, @@ -1942,12 +1497,10 @@ ] }, "PlatformVOIP": { - "description": "APNS VOIP token registration for iOS voice/video call push notifications", "allOf": [ { "properties": { "platform": { - "description": "Platform identifier for VOIP push notifications", "type": "string", "enum": [ "apns_ios_voip", @@ -1957,12 +1510,10 @@ ] }, "providerId": { - "description": "ID of the APNS VOIP provider configuration to use", "type": "string", "example": "apns-provider-2" }, "voipToken": { - "description": "The APNS VOIP token obtained from iOS for call notifications", "type": "string" } }, @@ -1975,123 +1526,14 @@ }, "Preferences": { "properties": { - "push": { - "properties": { - "includeMessageObjectSetting": { - "description": "Include the message object in the push payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Include the sender's metadata as part of the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Include the receiver's metadata as part of the message object", - "type": "boolean" - }, - "trimTextFieldSetting": { - "description": "Trim the text field if present.", - "type": "boolean" - }, - "includeMessageMetadataSetting": { - "description": "Include the message's metadata as part of the message object", - "type": "boolean" - }, - "customJson": { - "description": "A custom JSON object for miscellaneous data", - "type": "object" - } - }, - "type": "object" - }, - "call": { - "properties": { - "initiatedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "ongoingSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "cancelledSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "busySetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "rejectedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "unansweredSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - }, - "endedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ], - "example": 2 - } - }, - "type": "object" - }, - "bypassPreferencesForMentions": { - "type": "boolean" - }, - "bypassPreferencesForGroupMentions": { - "type": "boolean" - }, - "group": { - "$ref": "#/components/schemas/Group" + "group": { + "$ref": "#/components/schemas/Group" }, "oneOnOne": { "$ref": "#/components/schemas/oneOnOne" }, "mute": { "$ref": "#/components/schemas/Mute" - }, - "email": { - "$ref": "#/components/schemas/email" - }, - "sms": { - "$ref": "#/components/schemas/sms" } }, "type": "object" @@ -2122,48 +1564,6 @@ }, "type": "object" }, - "SentenceSimilaritySchema": { - "required": [ - "category", - "disallowedSentences" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the keyword list.", - "type": "string", - "example": "ID-of-the-sentences-list" - }, - "name": { - "description": "Descriptive name for the keyword list.", - "type": "string", - "example": "Name of the sentences list" - }, - "description": { - "description": "Detailed explanation of the keyword list's purpose.", - "type": "string", - "example": "Description of the sentences list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "disallowedSentences": { - "description": "Comma-separated sentences that are disallowed if the category is 'sentence-similarity'.", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Hello, let's connect on Whatsapp." - ] - } - }, - "type": "object" - }, "ServiceAccountCreds": { "properties": { "project_id": { @@ -2273,318 +1673,149 @@ } ] }, - "emailSubjectTemplateDefault": { - "properties": { - "subjectGroup": { - "type": "string", - "example": "While you were away..." - }, - "subjectOneOnOne": { - "type": "string", - "example": "While you were away..." - } - }, - "type": "object" - }, - "emailSubjectTemplatePrivacy": { - "properties": { - "subjectGroup": { - "type": "string", - "example": "While you were away..." - }, - "subjectOneOnOne": { - "type": "string", - "example": "While you were away..." - } - }, - "type": "object" - }, - "smsContentTemplateDefault": { - "properties": { - "bodyGroup": { - "type": "string", - "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." - }, - "bodyOneOnOne": { - "type": "string", - "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." - } - }, - "type": "object" - }, - "smsContentTemplatePrivacy": { - "properties": { - "bodyGroup": { - "type": "string", - "example": "You've received new messages in {{groupDetails.name}}! You can read the message at https://your-website.com." - }, - "bodyOneOnOne": { - "type": "string", - "example": "You've received new messages from {{sender.name}}! You can read the message at https://your-website.com." - } - }, - "type": "object" - } - }, - "type": "object" - }, - "UserFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], - "properties": { - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" - }, - "entity": { - "description": "Type of entity for user filter", - "type": "string", - "enum": [ - "user" - ] + "interactiveFormTemplateDefault": { + "$ref": "#/components/schemas/Template" }, - "operand": { - "description": "Field to apply the filter on for 'user'", - "type": "string", - "enum": [ - "uid", - "name", - "role", - "tags", - "createdAt" - ] + "interactiveFormTemplatePrivacy": { + "$ref": "#/components/schemas/Template" }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "not equals", - "in", - "not in", - "startsWith" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "admin" - } - }, - "type": "object" - }, - "WordPatternSchema": { - "required": [ - "category", - "searchTerms" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" + "interactiveCardTemplateDefault": { + "$ref": "#/components/schemas/Template" }, - "id": { - "description": "Unique identifier for the word list.", - "type": "string", - "example": "ID-of-the-word-list" + "interactiveCardTemplatePrivacy": { + "$ref": "#/components/schemas/Template" }, - "name": { - "description": "Descriptive name for the word list.", - "type": "string", - "example": "Name of the word list" + "interactiveSchedulerTemplateDefault": { + "$ref": "#/components/schemas/Template" }, - "description": { - "description": "Detailed explanation of the word list's purpose.", - "type": "string", - "example": "Description of the word list" + "interactiveSchedulerTemplatePrivacy": { + "$ref": "#/components/schemas/Template" }, - "category": { - "$ref": "#/components/schemas/CategoryType" + "interactiveCustomTemplateDefault": { + "$ref": "#/components/schemas/Template" }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." + "interactiveCustomTemplatePrivacy": { + "$ref": "#/components/schemas/Template" } }, "type": "object" }, "authTokenSchema": { - "description": "Represents an authentication token for a user. Auth tokens are used by client SDKs to authenticate users and establish real-time connections.", + "description": "Response data", "properties": { "uid": { - "description": "Unique identifier of the user this auth token belongs to", "type": "string" }, "authToken": { - "description": "The authentication token string. Pass this to the CometChat SDK login method to authenticate the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the auth token was created", "type": "integer" } }, "type": "object" }, "bannedUserSchema": { - "description": "Represents a user who has been banned from a group. Banned users cannot rejoin the group until unbanned.", + "description": "Response data", "properties": { "uid": { - "description": "Unique identifier of the banned user", "type": "string" }, "name": { - "description": "Display name of the banned user", "type": "string" }, "avatar": { - "description": "URL of the banned user's profile picture", "type": "string" }, "status": { - "description": "Online presence status of the banned user", "type": "string" }, "role": { - "description": "Role assigned to the banned user in the CometChat app", "type": "string" }, "scope": { - "description": "The user's membership scope before being banned. Values: 'admin', 'moderator', 'participant'", "type": "string" }, "isBanned": { - "description": "Always true for banned user records", "type": "boolean" }, "joinedAt": { - "description": "Unix timestamp when the user originally joined the group", "type": "integer" }, "createdAt": { - "description": "Unix timestamp when the user's account was created", "type": "integer" } }, "type": "object" }, "blockedUserSchema": { - "description": "Represents a blocked user relationship. Contains information about when and how the block was established.", + "description": "Response data", "properties": { - "uid": { - "description": "Unique identifier of the blocked user", - "type": "string" - }, - "name": { - "description": "Display name of the blocked user", - "type": "string" - }, - "avatar": { - "description": "URL of the blocked user's profile picture", - "type": "string" - }, "blockedByMe": { - "description": "True if the authenticated user blocked this user", "type": "boolean" }, "blockedByMeAt": { - "description": "Unix timestamp when the authenticated user blocked this user", "type": "integer" }, - "hasBlockedMe": { - "description": "True if this user has blocked the authenticated user", - "type": "boolean" - }, "blockedAt": { - "description": "Unix timestamp when the block relationship was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the block relationship was last updated", "type": "integer" }, "conversationId": { - "description": "Conversation ID for the blocked user relationship. Format: 'user_'", "type": "string" } }, "type": "object" }, "conversationSchema": { - "description": "Represents a conversation thread between users or within a group. Contains the conversation metadata, last message, and the entity (user/group) the conversation is with.", + "description": "Response data", "properties": { "conversationId": { - "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", "type": "string" }, "conversationType": { - "description": "Type of conversation. Values: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { - "description": "Number of unread messages in this conversation for the authenticated user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the conversation was created (first message sent)", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the conversation was last updated (last message sent)", "type": "integer" }, "lastMessage": { - "description": "The most recent message in this conversation", "properties": { "id": { - "description": "Unique identifier of the last message", "type": "string" }, "conversationId": { - "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { - "description": "UID of the user who sent the message", "type": "string" }, "receiverType": { - "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { - "description": "UID or GUID of the message receiver", "type": "string" }, "category": { - "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { - "description": "Message type (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { - "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { - "description": "Action type for action messages", "type": "string" } }, @@ -2596,18 +1827,14 @@ ] }, "sentAt": { - "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the message was last updated", "type": "integer" }, "receipts": { - "description": "Message delivery and read receipts", "properties": { "data": { - "description": "Array of receipt records", "type": "array", "items": {} } @@ -2618,86 +1845,54 @@ "type": "object" }, "conversationWith": { - "description": "The user or group entity this conversation is with", "type": "object" } }, "type": "object" }, "conversationWithSchema": { - "description": "Represents the entity (user or group) that a conversation is with. Contains either user or group properties depending on conversation type.", "properties": { - "uid": { - "description": "Unique identifier of the user (for user conversations)", - "type": "string" - }, "guid": { - "description": "Unique identifier of the group (for group conversations)", "type": "string" }, "name": { - "description": "Display name of the user or group", "type": "string" }, "description": { - "description": "Description of the group (for group conversations)", - "type": "string" - }, - "avatar": { - "description": "URL of the user's avatar (for user conversations)", "type": "string" }, "icon": { - "description": "URL of the group's icon (for group conversations)", "type": "string" }, "type": { - "description": "Group type: 'public', 'password', or 'private' (for group conversations)", - "type": "string" - }, - "status": { - "description": "Online status of the user: 'available' or 'offline' (for user conversations)", - "type": "string" - }, - "role": { - "description": "Role of the user (for user conversations)", "type": "string" }, "scope": { - "description": "Authenticated user's scope in the group: 'admin', 'moderator', 'participant' (for group conversations)", "type": "string" }, "membersCount": { - "description": "Number of members in the group (for group conversations)", "type": "integer" }, "joinedAt": { - "description": "Unix timestamp when the authenticated user joined the group (for group conversations)", "type": "integer" }, "conversationId": { - "description": "Conversation ID for this entity", "type": "string" }, "hasJoined": { - "description": "Whether the authenticated user has joined the group (for group conversations)", "type": "boolean", "default": "true" }, "createdAt": { - "description": "Unix timestamp when the user/group was created", "type": "integer" }, "owner": { - "description": "UID of the group owner (for group conversations)", "type": "string" }, "updatedAt": { - "description": "Unix timestamp when the user/group was last updated", "type": "integer" }, "updatedBy": { - "description": "UID of the user who last updated the group (for group conversations)", "type": "string" } }, @@ -2736,19 +1931,17 @@ "type": "object" }, "customCategorySchema": { - "title": "custom", - "description": "Request body schema for sending custom messages with application-defined types and data structures. Use this schema when category is 'custom'.", "properties": { "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", + "description": "The receiver of the message.", "type": "string" }, "muid": { - "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", + "description": "The muid will be a unique Identifier of the message.", "type": "string" }, "receiverType": { - "description": "Specifies whether the message is being sent to a user or group", + "description": "The receiverType of the message. either user or group", "type": "string", "enum": [ "user", @@ -2756,43 +1949,37 @@ ] }, "category": { - "description": "Message category. Use 'custom' for application-defined message types. Available options: custom", + "description": "Category of the message. The available categories is custom.", "type": "string", "default": "custom", "enum": [ "custom" ] }, - "quotedMessageId": { - "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", - "type": "string" - }, "type": { - "description": "Application-defined message type (e.g., 'location', 'poll', 'payment'). You can use any custom string value based on your application needs", + "description": "Type of the message.", "type": "string" }, "data": { - "description": "Custom message payload", + "description": "JSON containing message attributes.", "properties": { "customData": { - "description": "Any JSON object containing your custom message data", + "description": "when category==”custom”, this property can have any JSON object.", "type": "object" } }, "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", "properties": { "uids": { - "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { - "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -2802,7 +1989,7 @@ "type": "object" }, "tags": { - "description": "Custom tags for categorizing and filtering messages", + "description": "A list of tags to identify specific messages.", "type": "array", "items": { "type": "string" @@ -2812,26 +1999,21 @@ "type": "object" }, "dataPointSchema": { - "description": "Represents a single data point in messaging metrics. Contains counts for messages sent and receipts within a specific time range.", + "description": "Response data", "properties": { "messagesSent": { - "description": "Total number of messages sent during this time period", "type": "integer" }, "readReceipts": { - "description": "Total number of read receipts generated during this time period", "type": "integer" }, "deliveryReceipts": { - "description": "Total number of delivery receipts generated during this time period", "type": "integer" }, "startTime": { - "description": "Unix timestamp marking the start of this data point's time range", "type": "integer" }, "endTime": { - "description": "Unix timestamp marking the end of this data point's time range", "type": "integer" } }, @@ -2848,40 +2030,6 @@ }, "type": "object" }, - "email": { - "properties": { - "notifyForUnreadOnly": { - "description": "If the value is false, the notification will contain all the messages, not just unread.", - "type": "boolean" - }, - "intervalInSeconds": { - "type": "integer" - }, - "maxPerDay": { - "type": "integer" - }, - "maxPerDayPerConversation": { - "type": "integer" - }, - "includeMessageObjectSetting": { - "description": "Includes the message object in the email payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Includes sender metadata in the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Includes receiver metadata in the message object", - "type": "boolean" - }, - "includeMessageMetadataSetting": { - "description": "Includes message metadata in the message object", - "type": "boolean" - } - }, - "type": "object" - }, "fcmCreateProviderSchema": { "properties": { "providerId": { @@ -2911,180 +2059,139 @@ "type": "object" }, "groupEntitySchema": { - "description": "Represents an action message generated for group member operations (join, leave, kick, ban, scope change). Contains details about who performed the action and who was affected.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { - "description": "Conversation ID of the group. Format: 'group_'", "type": "string" }, "sender": { - "description": "UID of the user who triggered this action (e.g., admin who kicked a member)", "type": "string" }, "receiverType": { - "description": "Always 'group' for group member actions", "type": "string" }, "receiver": { - "description": "GUID of the group where the action occurred", "type": "string" }, "category": { - "description": "Always 'action' for group member operations", "type": "string" }, "type": { - "description": "Type of action: 'groupMemberJoined', 'groupMemberLeft', 'groupMemberKicked', 'groupMemberBanned', 'groupMemberScopeChanged'", "type": "string" }, "data": { - "description": "Contains action details and entity information", "properties": { "action": { - "description": "The action that was performed (e.g., 'joined', 'left', 'kicked', 'banned', 'scopeChanged')", "type": "string" }, "entities": { - "description": "Contains information about the actors and targets of the action", "properties": { "by": { - "description": "The user who performed the action", "properties": { "entity": { - "description": "User details of the action performer", "properties": { "uid": { - "description": "Unique identifier of the user", "type": "string" }, "name": { - "description": "Display name of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "on": { - "description": "The user who was affected by the action (e.g., the kicked member)", "properties": { "entity": { - "description": "User details of the affected member", "properties": { "uid": { - "description": "Unique identifier of the affected user", "type": "string" }, "name": { - "description": "Display name of the affected user", "type": "string" }, "role": { - "description": "Role assigned to the affected user", "type": "string" }, "avatar": { - "description": "URL of the affected user's avatar", "type": "string" }, "status": { - "description": "Online status of the affected user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the affected user was created", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { - "description": "The group where the action occurred", "properties": { "entity": { - "description": "Group details", "properties": { "guid": { - "description": "Unique identifier of the group", "type": "string" }, "icon": { - "description": "URL of the group's icon", "type": "string" }, "name": { - "description": "Display name of the group", "type": "string" }, "tags": { - "description": "Tags associated with the group", "type": "array", "items": { "type": "string" } }, "type": { - "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { - "description": "UID of the group owner", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the group was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the group was last updated", "type": "integer" }, "description": { - "description": "Description of the group", "type": "string" }, "membersCount": { - "description": "Current number of members in the group", "type": "integer" }, "conversationId": { - "description": "Conversation ID for this group", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'group'", "type": "string" } }, @@ -3097,91 +2204,72 @@ "type": "object" }, "avatar": { - "description": "URL of the user's avatar image", "type": "string" }, "metadata": { - "description": "Custom metadata associated with the user", "properties": { "email": { - "description": "Example metadata field", "type": "string" } }, "type": "object" }, "status": { - "description": "Online status of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "groupMemberListSchema": { - "description": "Represents a member of a group. Contains user information along with their group-specific membership details.", + "description": "Response data", "properties": { "uid": { - "description": "Unique identifier of the group member", "type": "string" }, "name": { - "description": "Display name of the group member", "type": "string" }, "avatar": { - "description": "URL of the member's avatar image", "type": "string" }, "status": { - "description": "Online status of the member: 'available' or 'offline'", "type": "string" }, "role": { - "description": "Role assigned to the member in the CometChat app", "type": "string" }, "scope": { - "description": "Member's scope within this group. Values: 'admin' (full control), 'moderator' (can manage members), 'participant' (regular member)", "type": "string" }, "joinedAt": { - "description": "Unix timestamp when the member joined this group", "type": "integer" }, "createdAt": { - "description": "Unix timestamp when the member's user account was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the member's user account was last updated", "type": "integer" }, "conversationId": { - "description": "Conversation ID for direct messaging with this member. Format: 'user_'", "type": "string" } }, "type": "object" }, "groupMemberSchema": { - "description": "Response schema for bulk group member operations. Contains results for each member organized by their scope (admin, moderator, participant) or ban status.", + "description": "Response data", "properties": { "usersToBan": { - "description": "Results for users being banned from the group", "properties": { "": { - "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { - "description": "Whether the ban operation succeeded", "type": "boolean" } }, @@ -3191,17 +2279,13 @@ "type": "object" }, "admins": { - "description": "Results for users being added as admins", "properties": { "": { - "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { - "description": "Whether the operation succeeded", "type": "boolean" }, "data": { - "description": "Action message generated for this operation", "type": "object" } }, @@ -3211,17 +2295,13 @@ "type": "object" }, "moderators": { - "description": "Results for users being added as moderators", "properties": { "": { - "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { - "description": "Whether the operation succeeded", "type": "boolean" }, "data": { - "description": "Action message generated for this operation", "type": "object" } }, @@ -3231,17 +2311,13 @@ "type": "object" }, "participants": { - "description": "Results for users being added as participants", "properties": { "": { - "description": "Result for a specific user (keyed by their UID)", "properties": { "success": { - "description": "Whether the operation succeeded", "type": "boolean" }, "data": { - "description": "Action message generated for this operation", "type": "object" } }, @@ -3253,148 +2329,419 @@ }, "type": "object" }, - "groupReceiverDetails": { - "required": [ - "guid", - "name", - "type" - ], + "groupSchema": { + "description": "Response data", "properties": { "guid": { - "description": "The primary-key/ unique identifier of the group.", "type": "string" }, "name": { - "description": "Name of the group.", + "type": "string" + }, + "description": { "type": "string" }, "icon": { - "description": "An URL for a group icon.", "type": "string" }, "type": { - "description": "Type of the group. Can be public, password or private.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "A password required to join the the group with type password", "type": "string" }, - "owner": { - "description": "Owner of the group.", + "scope": { "type": "string" }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the group was created.", + "membersCount": { "type": "integer" }, - "metadata": { - "description": "Additional data for the group.", - "type": "object" + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean" + }, + "owner": { + "type": "string" }, "tags": { - "description": "A string array containing grouptags.", "type": "array", "items": { "type": "string" - }, - "default": [] + } + }, + "createdAt": { + "type": "integer" } }, "type": "object" }, - "groupSchema": { - "description": "Represents a CometChat group for multi-user conversations. Groups can be public, password-protected, or private.", + "interactiveCategorySchema": { "properties": { - "guid": { - "description": "Unique identifier for the group. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", + "receiver": { + "description": "The receiver of the message.", "type": "string" }, - "name": { - "description": "Display name of the group shown in chat interfaces", + "muid": { + "description": "The muid will be a unique Identifier of the message.", "type": "string" }, - "description": { - "description": "Optional description of the group's purpose or topic", - "type": "string" + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": [ + "user", + "group" + ] }, - "icon": { - "description": "URL of the group's icon/avatar image. Must be a valid, publicly accessible URL", - "type": "string" + "category": { + "description": "Category of the message. The available categories is interactive.", + "type": "string", + "default": "interactive", + "enum": [ + "interactive" + ] }, "type": { - "description": "Access type of the group. Values: 'public' (anyone can join), 'password' (requires password to join), 'private' (invite-only, users must be added by admin/owner)", - "type": "string" - }, - "password": { - "description": "Password required to join the group (only for type='password'). Not returned in responses for security", - "type": "string" - }, - "scope": { - "description": "The authenticated user's membership scope in this group. Values: 'admin', 'moderator', 'participant'. Only present in user-context responses", - "type": "string" - }, - "membersCount": { - "description": "Current number of members in the group", - "type": "integer" - }, - "joinedAt": { - "description": "Unix timestamp when the authenticated user joined this group. Only present in user-context responses", - "type": "integer" - }, - "conversationId": { - "description": "Conversation ID for this group. Format: 'group_'", - "type": "string" - }, - "hasJoined": { - "description": "Indicates if the authenticated user is a member of this group. Only present in user-context responses", - "type": "boolean" + "description": "Type of the message. The available values are card, form and customInteractive.", + "type": "string", + "default": "card", + "enum": [ + "card", + "form", + "customInteractive", + "scheduler" + ] }, - "owner": { - "description": "UID of the user who owns this group. The owner has full administrative privileges", - "type": "string" + "data": { + "description": "JSON containing message attributes.", + "properties": { + "text": { + "type": "string" + }, + "interactionGoal": { + "properties": { + "type": { + "type": "string", + "enum": [ + "anyOf", + "allOf", + "oneOf", + "none" + ] + }, + "elementIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "allowSenderInteraction": { + "type": "boolean" + }, + "interactiveData": { + "properties": { + "title": { + "type": "string" + }, + "formFields": { + "type": "array", + "items": { + "properties": { + "elementType": { + "type": "string" + }, + "elementId": { + "type": "string" + }, + "defaultValue": { + "type": "string" + }, + "label": { + "type": "string" + }, + "optional": { + "type": "boolean" + }, + "maxLines": { + "type": "integer" + }, + "placeholder": { + "type": "object" + } + }, + "type": "object" + } + }, + "submitElement": { + "properties": { + "elementType": { + "type": "string" + }, + "elementId": { + "type": "string" + }, + "buttonText": { + "type": "string" + }, + "disableAfterInteracted": { + "type": "boolean" + }, + "optional": { + "type": "boolean" + }, + "action": { + "properties": { + "url": { + "type": "string" + }, + "method": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "dataKey": { + "type": "string" + }, + "actionType": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "metadata": { + "type": "object" + } + }, + "type": "object" + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + } + }, + "type": "object", + "example": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "allOf", + "elementIds": [ + "element8" + ] + }, + "allowSenderInteraction": true, + "interactiveData": { + "title": "Form Title", + "formFields": [ + { + "elementType": "textInput", + "elementId": "element1", + "defaultValue": "vivek", + "label": "Name", + "optional": false, + "maxLines": 1, + "placeholder": { + "text": "write your name here" + } + }, + { + "elementType": "textInput", + "elementId": "element2", + "label": "Last Name", + "optional": false, + "maxLines": 1 + }, + { + "elementType": "textInput", + "elementId": "element3", + "label": "Address", + "optional": false, + "maxLines": 5 + }, + { + "elementType": "dropdown", + "elementId": "element4", + "label": "Country", + "optional": false, + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "INDIA" + }, + { + "value": "option2", + "label": "AUSTRALIA" + } + ] + }, + { + "elementType": "checkbox", + "elementId": "element5", + "optional": true, + "label": "Services", + "options": [ + { + "value": "option1", + "label": "Garbage" + }, + { + "value": "option2", + "label": "Electricity Bill" + }, + { + "value": "option3", + "label": "Lift" + } + ], + "defaultValue": [ + "option1", + "option2" + ] + }, + { + "elementType": "singleSelect", + "elementId": "element6", + "optional": false, + "label": "Wing", + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "A Wing" + }, + { + "value": "option2", + "label": "B Wing" + } + ] + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "About us", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + } + ], + "submitElement": { + "elementType": "button", + "elementId": "element8", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "superhero2", + "receiverType": "user" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "superhero1" + }, + "dataKey": "CometChatData" + } + } + } }, - "metadata": { - "description": "Custom key-value pairs for storing application-specific group data", + "category": "interactive", + "type": "form", + "receiver": "superhero1", + "tags": [ + "tag1" + ] + } + }, + "interactiveMessageSchema": { + "properties": { + "current": { + "properties": { + "limit": { + "type": "integer" + }, + "count": { + "type": "integer" + } + }, "type": "object" }, - "tags": { - "description": "Custom tags for categorizing and filtering groups", - "type": "array", - "items": { - "type": "string" - } - }, - "createdAt": { - "description": "Unix timestamp when the group was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the group was last updated", - "type": "integer" + "next": { + "properties": { + "affix": { + "type": "string" + }, + "sentAt": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "type": "object" } }, "type": "object" }, "messageCategorySchema": { - "title": "message", - "description": "Request body schema for sending standard messages (text, image, file, audio, video). Use this schema when category is 'message'.", "properties": { "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", + "description": "The receiver of the message.", "type": "string" }, "muid": { - "description": "Message unique identifier - a client-generated ID to prevent duplicate messages and enable message tracking", + "description": "The muid will be a unique Identifier of the message.", "type": "string" }, "receiverType": { - "description": "Specifies whether the message is being sent to a user or group", + "description": "The receiverType of the message. either user or group", "type": "string", "enum": [ "user", @@ -3402,19 +2749,15 @@ ] }, "category": { - "description": "Message category. Use 'message' for standard message types (text, image, file, audio, video). Available options: message", + "description": "Category of the message. The available categories are message and custom.", "type": "string", "default": "message", "enum": [ "message" ] }, - "quotedMessageId": { - "description": "ID of a message to quote/reply to. When provided, the response includes a 'quotedMessage' node with the referenced message", - "type": "string" - }, "type": { - "description": "The type of message content being sent. Available options: text, image, file, audio, video", + "description": "Type of the message. The available values are text, image, file, audio, video.", "type": "string", "default": "text", "enum": [ @@ -3426,39 +2769,37 @@ ] }, "data": { - "description": "Message content and attachments", + "description": "JSON containing message attributes.", "properties": { "text": { - "description": "Text content of the message (required for type='text')", "type": "string" }, "metadata": { - "description": "Custom key-value pairs for application-specific data", "type": "object" }, "attachments": { - "description": "Array of file attachments. Required for image, video, audio, or file message types", + "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", "type": "array", "items": { "properties": { "url": { - "description": "Public URL where the attachment file is hosted", + "description": "Contains the URL of the attachment.", "type": "string" }, "name": { - "description": "Display name of the attachment file", + "description": "Name of the attachment.", "type": "string" }, "mimeType": { - "description": "MIME type of the attachment (e.g., 'image/png', 'application/pdf')", + "description": "Mime Type of attachment.", "type": "string" }, "extension": { - "description": "File extension without the dot (e.g., 'png', 'pdf')", + "description": "The extension of the attachment.", "type": "string" }, "size": { - "description": "File size in bytes", + "description": "The size of the attachment(in bytes).", "type": "string" } }, @@ -3469,17 +2810,15 @@ "type": "object" }, "multipleReceivers": { - "description": "Send the same message to multiple users and/or groups in a single request. A maximum of 25 uids/guids can be sent per request.", + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", "properties": { "uids": { - "description": "Array of user UIDs to receive the message", "type": "array", "items": { "type": "string" } }, "guids": { - "description": "Array of group GUIDs to receive the message", "type": "array", "items": { "type": "string" @@ -3489,7 +2828,7 @@ "type": "object" }, "tags": { - "description": "Custom tags for categorizing and filtering messages", + "description": "A list of tags to identify specific messages.", "type": "array", "items": { "type": "string" @@ -3499,35 +2838,27 @@ "type": "object" }, "messageMetaSchema": { - "description": "Pagination metadata for message list responses. Contains information about the current page and cursor for fetching the next page.", "properties": { "current": { - "description": "Information about the current page of results", "properties": { "limit": { - "description": "Maximum number of messages requested per page", "type": "integer" }, "count": { - "description": "Actual number of messages returned in this response", "type": "integer" } }, "type": "object" }, "next": { - "description": "Cursor information for fetching the next page of messages", "properties": { "affix": { - "description": "Pagination direction indicator ('append' or 'prepend')", "type": "string" }, "sentAt": { - "description": "Unix timestamp of the last message, used as cursor for next page", "type": "integer" }, "id": { - "description": "ID of the last message, used as cursor for next page", "type": "string" } }, @@ -3537,133 +2868,102 @@ "type": "object" }, "messageReactionSchema": { - "description": "Represents a message with its aggregated reaction counts. Extends the standard message schema with reaction summary information.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for this message", "type": "string" }, "conversationId": { - "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { - "description": "UID of the user who sent this message", "type": "string" }, "receiverType": { - "description": "Type of receiver: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { - "description": "UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { - "description": "Category of the message: 'message', 'custom', or 'action'", "type": "string" }, "type": { - "description": "Type of message content (e.g., 'text', 'image', 'file')", "type": "string" }, "data": { - "description": "Contains the message content and metadata", "properties": { "text": { - "description": "Text content of the message", "type": "string" }, "metadata": { - "description": "Custom metadata attached to the message", "type": "object" }, "entities": { - "description": "Sender and receiver entity information", "properties": { "sender": { - "description": "Information about the message sender", "properties": { "entity": { - "description": "Sender user details", "properties": { "uid": { - "description": "Sender's unique identifier", "type": "string" }, "name": { - "description": "Sender's display name", "type": "string" }, "role": { - "description": "Sender's role", "type": "string" }, "avatar": { - "description": "URL of sender's avatar", "type": "string" }, "status": { - "description": "Sender's online status", "type": "string" }, "createdAt": { - "description": "Account creation timestamp", "type": "integer" }, "conversationId": { - "description": "Conversation ID for sender context", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { - "description": "Information about the message receiver", "properties": { "entity": { - "description": "Receiver entity details", "properties": { "uid": { - "description": "Receiver's unique identifier", "type": "string" }, "name": { - "description": "Receiver's display name", "type": "string" }, "role": { - "description": "Receiver's role", "type": "string" }, "avatar": { - "description": "URL of receiver's avatar", "type": "string" }, "status": { - "description": "Receiver's online status", "type": "string" }, "createdAt": { - "description": "Account creation timestamp", "type": "integer" }, "conversationId": { - "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -3676,20 +2976,16 @@ "type": "object" }, "reactions": { - "description": "Aggregated reaction counts for this message, grouped by reaction type", "type": "array", "items": { "properties": { "reaction": { - "description": "The reaction emoji or identifier", "type": "string" }, "count": { - "description": "Total number of users who added this reaction", "type": "integer" }, "reactedByMe": { - "description": "Whether the current authenticated user has added this reaction", "type": "boolean" } }, @@ -3697,144 +2993,111 @@ } }, "sentAt": { - "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "messageSchema": { - "description": "Represents a message sent between users or in a group conversation. Contains the message content, sender/receiver information, and metadata.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for this message, auto-generated by CometChat", "type": "string" }, "conversationId": { - "description": "Identifier linking this message to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { - "description": "The UID of the user who sent this message", "type": "string" }, "receiverType": { - "description": "Indicates whether the message was sent to a user or group. Values: 'user' for direct messages, 'group' for group messages", "type": "string" }, "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { - "description": "The category of the message. Values: 'message' for standard messages (text, image, file, audio, video), 'custom' for custom message types, 'action' for system-generated action messages", "type": "string" }, "type": { - "description": "The type of message content. For category='message': 'text', 'image', 'file', 'audio', 'video'. For category='custom': any custom type string defined by your application", "type": "string" }, "data": { - "description": "Contains the message content and related metadata", "properties": { "text": { - "description": "The text content of the message (for text messages)", "type": "string" }, "metadata": { - "description": "Custom key-value pairs attached to the message for application-specific data", "type": "object" }, "entities": { - "description": "Contains detailed information about the sender and receiver entities", "properties": { "sender": { - "description": "Information about the message sender", "properties": { "entity": { - "description": "The sender user object", "properties": { "uid": { - "description": "Unique identifier of the sender", "type": "string" }, "name": { - "description": "Display name of the sender", "type": "string" }, "role": { - "description": "Role assigned to the sender (e.g., 'default', 'admin')", "type": "string" }, "avatar": { - "description": "URL of the sender's avatar image", "type": "string" }, "status": { - "description": "Online status of the sender ('available' or 'offline')", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the sender's account was created", "type": "integer" }, "conversationId": { - "description": "Conversation ID for the sender's context", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'user' for sender", "type": "string" } }, "type": "object" }, "receiver": { - "description": "Information about the message receiver (user or group)", "properties": { "entity": { - "description": "The receiver entity object (user or group)", "properties": { "uid": { - "description": "Unique identifier of the receiver (for user receivers)", "type": "string" }, "name": { - "description": "Display name of the receiver", "type": "string" }, "role": { - "description": "Role assigned to the receiver (for user receivers)", "type": "string" }, "avatar": { - "description": "URL of the receiver's avatar image", "type": "string" }, "status": { - "description": "Online status of the receiver ('available' or 'offline')", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the receiver's account was created", "type": "integer" }, "conversationId": { - "description": "Conversation ID for the receiver's context", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Type of entity: 'user' for direct messages, 'group' for group messages", "type": "string" } }, @@ -3847,11 +3110,9 @@ "type": "object" }, "sentAt": { - "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the message was last updated (e.g., edited)", "type": "integer" } }, @@ -3882,58 +3143,6 @@ }, "type": "object" }, - "moderationMessageData": { - "description": "Can contain any additional properties except for the key properties.", - "properties": { - "text": { - "description": "The meaning of the `data.text` property depends on the values of `category` and `type`:\n1. When `category` is `'message'` and `type` is `'text'`, it represents the text content of the message.\n2. When `category` is `'message'` and `type` is not `'text'`, it represents the caption associated with the attachment.", - "type": "string" - }, - "customData": { - "description": "when category==”custom”, this property can have any JSON object.", - "type": "object" - }, - "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", - "type": "array", - "items": { - "required": [ - "name", - "mimeType", - "extension", - "url" - ], - "properties": { - "url": { - "description": "Contains the URL of the attachment. The developer has to make sure that the URL is accessible while calling the API. The API will be downloading the attachment from its current location and upload it to CometChat’s attachment storage.", - "type": "string" - }, - "name": { - "description": "Name of the attachment.", - "type": "string" - }, - "mimeType": { - "description": "Mime Type of attachment.", - "type": "string" - }, - "extension": { - "description": "The extension of the attachment.", - "type": "string" - }, - "size": { - "description": "The size of the attachment(in bytes).", - "type": "string" - } - }, - "type": "object" - } - }, - "metadata": { - "type": "object" - } - }, - "type": "object" - }, "muteConversation": { "properties": { "id": { @@ -3957,154 +3166,118 @@ "type": "object" }, "objectEntitySchema": { - "description": "Contains entity information for action messages, describing who performed an action, who it affects, and what was acted upon.", "properties": { "entities": { - "description": "Container for action-related entities", "properties": { "by": { - "description": "The user who performed the action", "properties": { "entity": { - "description": "User details of the action performer", "properties": { "uid": { - "description": "Unique identifier of the user", "type": "string" }, "name": { - "description": "Display name of the user", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user was created", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { - "description": "The entity affected by the action (user or group)", "properties": { "entity": { - "description": "Details of the affected entity", "properties": { "guid": { - "description": "Group identifier (for group entities)", "type": "string" }, "icon": { - "description": "URL of the group icon", "type": "string" }, "name": { - "description": "Display name of the entity", "type": "string" }, "type": { - "description": "Group type: 'public', 'password', or 'private'", "type": "string" }, "owner": { - "description": "UID of the group owner", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the entity was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the entity was last updated", "type": "integer" }, "updatedBy": { - "description": "UID of the user who last updated the entity", "type": "integer" }, "description": { - "description": "Description of the group", "type": "integer" }, "membersCount": { - "description": "Number of members in the group", "type": "integer" }, "conversationId": { - "description": "Conversation ID for this entity", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { - "description": "The object that was acted upon (e.g., a user being added/removed)", "properties": { "entity": { - "description": "Details of the acted-upon entity", "properties": { "uid": { - "description": "Unique identifier of the user", "type": "string" }, "link": { - "description": "Profile link of the user", "type": "string" }, "name": { - "description": "Display name of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "avatar": { - "description": "URL of the user's avatar", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the user was last updated", "type": "integer" }, "conversationId": { - "description": "Conversation ID for this user", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Type of entity, typically 'user'", "type": "string" } }, @@ -4119,7 +3292,7 @@ "oneOnOne": { "properties": { "messagesSetting": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", "enum": [ 1, @@ -4131,7 +3304,7 @@ "type": "boolean" }, "repliesSetting": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", "enum": [ 1, @@ -4143,7 +3316,7 @@ "type": "boolean" }, "reactionsSetting": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", "enum": [ 1, @@ -4153,22 +3326,6 @@ }, "reactionsOverride": { "type": "boolean" - }, - "messageEditedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "messageDeletedSetting": { - "description": "1: Don't notify\n2: Notify", - "type": "integer", - "enum": [ - 1, - 2 - ] } }, "type": "object" @@ -4189,7 +3346,7 @@ "type": "object" }, "pnTokenSchema": { - "description": "Push notification token registration schema. Supports FCM (Firebase Cloud Messaging), APNS (Apple Push Notification Service), and VOIP tokens for different platforms.", + "description": "Response data", "oneOf": [ { "$ref": "#/components/schemas/PlatformFCM" @@ -4208,7 +3365,7 @@ "groupPreferences": { "properties": { "groupMessages": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", "enum": [ 1, @@ -4217,7 +3374,7 @@ ] }, "groupReplies": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", "enum": [ 1, @@ -4226,7 +3383,7 @@ ] }, "groupReactions": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", "enum": [ 1, @@ -4235,7 +3392,7 @@ ] }, "groupMemberLeft": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4243,7 +3400,7 @@ ] }, "groupMemberAdded": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4251,7 +3408,7 @@ ] }, "groupMemberJoined": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4259,7 +3416,7 @@ ] }, "groupMemberKicked": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4267,7 +3424,7 @@ ] }, "groupMemberBanned": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4275,7 +3432,7 @@ ] }, "groupMemberUnbanned": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4283,7 +3440,7 @@ ] }, "groupMemberScopeChanged": { - "description": "1: Don't notify\n2: Notify", + "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", "enum": [ 1, @@ -4296,7 +3453,7 @@ "oneOnOnePreferences": { "properties": { "oneOnOneMessages": { - "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", "enum": [ 1, @@ -4305,7 +3462,7 @@ ] }, "oneOnOneReplies": { - "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", "enum": [ 1, @@ -4314,7 +3471,7 @@ ] }, "oneOnOneReactions": { - "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", "enum": [ 1, @@ -4348,57 +3505,44 @@ "items": {} }, "reactionSchema": { - "description": "Represents a single reaction added to a message by a user. Contains the reaction emoji/identifier and information about who reacted.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for this reaction record", "type": "string" }, "messageId": { - "description": "ID of the message this reaction is attached to", "type": "string" }, "reaction": { - "description": "The reaction emoji or identifier (e.g., '👍', 'heart', 'laugh')", "type": "string" }, "uid": { - "description": "UID of the user who added this reaction", "type": "string" }, "reactedAt": { - "description": "Unix timestamp when the reaction was added", "type": "integer" }, "reactedBy": { - "description": "Detailed information about the user who added the reaction", "properties": { "uid": { - "description": "Unique identifier of the user", "type": "string" }, "name": { - "description": "Display name of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "avatar": { - "description": "URL of the user's avatar image", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user account was created", "type": "integer" }, "conversationId": { - "description": "Conversation ID for the user's context", "type": "string" } }, @@ -4408,92 +3552,50 @@ "type": "object" }, "roleSchema": { - "description": "Represents a user role for access control. Roles define what actions users can perform and who they can interact with in the chat system.", + "description": "Response data", "properties": { "role": { - "description": "Unique identifier for the role. This value is assigned to users via the 'role' property", "type": "string" }, "name": { - "description": "Display name for the role (e.g., 'Administrator', 'Moderator', 'Premium User')", "type": "string" }, "description": { - "description": "Human-readable description of the role's purpose and permissions", "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific role data", "type": "object" }, + "email": { + "type": "string" + }, "settings": { - "description": "Role-specific settings that control user capabilities", "properties": { "listUsers": { - "description": "Controls which users this role can see. Values: 'all' (see all users), 'friends' (only friends), 'none' (no users)", "type": "string" }, "sendMessagesTo": { - "description": "Controls who this role can send messages to. Values: 'all' (anyone), 'friends' (only friends), 'none' (no one)", "type": "string" } }, "type": "object" }, "createdAt": { - "description": "Unix timestamp when the role was created", - "type": "integer" - } - }, - "type": "object" - }, - "sms": { - "properties": { - "notifyForUnreadOnly": { - "description": "If the value is false, the notification will contain all the messages, not just unread.", - "type": "boolean" - }, - "intervalInSeconds": { - "type": "integer" - }, - "maxPerDay": { - "type": "integer" - }, - "maxPerDayPerConversation": { "type": "integer" - }, - "includeMessageObjectSetting": { - "description": "Includes the message object in the SMS payload", - "type": "boolean" - }, - "includeSenderMetadataSetting": { - "description": "Includes sender metadata in the message object", - "type": "boolean" - }, - "includeReceiverMetadataSetting": { - "description": "Includes receiver metadata in the message object", - "type": "boolean" - }, - "includeMessageMetadataSetting": { - "description": "Includes message metadata in the message object", - "type": "boolean" } }, "type": "object" }, "triggerSchema": { - "description": "Represents an event trigger that can be assigned to webhooks. Triggers define which events will cause webhook notifications to be sent.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for the trigger (e.g., 'message_sent', 'user_created', 'group_member_joined')", "type": "string" }, "category": { - "description": "Category grouping for the trigger. Values: 'message' (message events), 'user' (user events), 'group' (group events), 'call' (call events)", "type": "string" }, "description": { - "description": "Human-readable description of when this trigger fires", "type": "string" } }, @@ -4517,262 +3619,201 @@ "type": "object" }, "unregisterpnToken": { - "description": "Request body for unregistering a push notification token", "required": [ "authToken" ], "properties": { "authToken": { - "description": "The user's authentication token associated with the push token to unregister", "type": "string" } }, "type": "object" }, "updatemessageSchema": { - "description": "Represents an action message generated when a message is edited or updated. Contains information about who made the change, the affected message, and the action performed.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for this action message", "type": "string" }, "conversationId": { - "description": "Identifier linking this action to its conversation. Format: 'user_' for 1-on-1 chats or 'group_' for group chats", "type": "string" }, "sender": { - "description": "The UID of the user who triggered this action (typically the message editor)", "type": "string" }, "receiverType": { - "description": "Indicates whether the original message was in a user or group conversation. Values: 'user' or 'group'", "type": "string" }, "receiver": { - "description": "The UID of the recipient user or GUID of the recipient group", "type": "string" }, "category": { - "description": "Always 'action' for update message notifications", "type": "string" }, "type": { - "description": "The type of action performed, e.g., 'edited' for message edits", "type": "string" }, "data": { - "description": "Contains details about the action and affected entities", "properties": { "action": { - "description": "The action that was performed (e.g., 'edited')", "type": "string" }, "entities": { - "description": "Contains information about who performed the action, who it affects, and what was changed", "properties": { "by": { - "description": "The user who performed the action", "properties": { "entity": { - "description": "User details of the action performer", "properties": { "uid": { - "description": "Unique identifier of the user who performed the action", "type": "string" }, "name": { - "description": "Display name of the user", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user account was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the user was last updated", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity, always 'user'", "type": "string" } }, "type": "object" }, "for": { - "description": "The user or group affected by the action", "properties": { "entity": { - "description": "Details of the affected entity", "properties": { "uid": { - "description": "Unique identifier of the affected user", "type": "string" }, "name": { - "description": "Display name of the affected user", "type": "string" }, "avatar": { - "description": "URL of the user's avatar image", "type": "string" }, "status": { - "description": "Online status of the user", "type": "string" }, "role": { - "description": "Role assigned to the user", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the user account was created", "type": "integer" } }, "type": "object" }, "entityType": { - "description": "Type of entity: 'user' or 'group'", "type": "string" } }, "type": "object" }, "on": { - "description": "The message that was acted upon", "properties": { "entity": { - "description": "The original message that was edited", "properties": { "id": { - "description": "Unique identifier of the edited message", "type": "string" }, "conversationId": { - "description": "Conversation ID of the edited message", "type": "string" }, "sender": { - "description": "UID of the original message sender", "type": "string" }, "receiverType": { - "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { - "description": "UID or GUID of the message receiver", "type": "string" }, "category": { - "description": "Category of the original message", "type": "string" }, "type": { - "description": "Type of the original message", "type": "string" }, "data": { - "description": "Content of the edited message", "properties": { "text": { - "description": "The updated text content", "type": "string" }, "entities": { - "description": "Sender and receiver entity information", "properties": { "sender": { - "description": "Sender information", "properties": { "entity": { - "description": "Sender user details", "properties": { "uid": { - "description": "Sender's unique identifier", "type": "string" }, "name": { - "description": "Sender's display name", "type": "string" }, "role": { - "description": "Sender's role", "type": "string" }, "avatar": { - "description": "URL of sender's avatar", "type": "string" }, "status": { - "description": "Sender's online status", "type": "string" }, "createdAt": { - "description": "Account creation timestamp", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Entity type, always 'user'", "type": "string" } }, "type": "object" }, "receiver": { - "description": "Receiver information", "properties": { "entity": { - "description": "Receiver entity details", "properties": { "uid": { - "description": "Receiver's unique identifier", "type": "string" }, "name": { - "description": "Receiver's display name", "type": "string" }, "role": { - "description": "Receiver's role", "type": "string" }, "avatar": { - "description": "URL of receiver's avatar", "type": "string" }, "status": { - "description": "Receiver's online status", "type": "string" }, "createdAt": { - "description": "Account creation timestamp", "type": "string" }, "conversationId": { - "description": "Conversation ID for receiver context", "type": "string" } }, "type": "object" }, "entityType": { - "description": "Entity type: 'user' or 'group'", "type": "string" } }, @@ -4785,23 +3826,18 @@ "type": "object" }, "sentAt": { - "description": "Unix timestamp when the original message was sent", "type": "integer" }, "editedAt": { - "description": "Unix timestamp when the message was edited", "type": "integer" }, "editedBy": { - "description": "UID of the user who edited the message", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp of the last update", "type": "integer" }, "tags": { - "description": "Tags associated with the message", "type": "array", "items": {} } @@ -4809,7 +3845,6 @@ "type": "object" }, "entityType": { - "description": "Entity type, always 'message'", "type": "string" } }, @@ -4822,54 +3857,43 @@ "type": "object" }, "sentAt": { - "description": "Unix timestamp when this action message was generated", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when this action message was last updated", "type": "integer" } }, "type": "object" }, "usageMetricsSchema": { - "description": "Aggregated usage metrics for your CometChat app. Contains call minutes, user activity, and the time range for the data.", + "description": "Response data", "properties": { "metrics": { - "description": "Usage metric values for the specified time range", "properties": { "audio_minutes": { - "description": "Total minutes of audio calls during the time range", "type": "integer" }, "video_minutes": { - "description": "Total minutes of video calls during the time range", "type": "integer" }, "recorded_minutes": { - "description": "Total minutes of recorded calls during the time range", "type": "integer" }, "active_users": { - "description": "Number of unique users who were active during the time range", "type": "integer" }, "concurrent_users": { - "description": "Peak number of users connected simultaneously during the time range", "type": "integer" } }, "type": "object" }, "time_range": { - "description": "The time range for which metrics are reported", "properties": { "fromDate": { - "description": "Unix timestamp marking the start of the metrics period", "type": "integer" }, "toDate": { - "description": "Unix timestamp marking the end of the metrics period", "type": "integer" } }, @@ -4879,67 +3903,52 @@ "type": "object" }, "userConversationSchema": { - "description": "Represents a user-specific view of a conversation, including unread counts and last message from the user's perspective.", + "description": "Response data", "properties": { "conversationId": { - "description": "Unique identifier for the conversation. Format: 'user_' for 1-on-1 or 'group_' for groups", "type": "string" }, "conversationType": { - "description": "Type of conversation: 'user' for direct messages, 'group' for group chats", "type": "string" }, "unreadMessageCount": { - "description": "Number of unread messages for the authenticated user in this conversation", "type": "string" }, "createdAt": { - "description": "Unix timestamp when the conversation was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp of the last activity in this conversation", "type": "integer" }, "lastMessage": { - "description": "The most recent message in this conversation", "properties": { "id": { - "description": "Unique identifier of the message", "type": "string" }, "conversationId": { - "description": "Conversation ID this message belongs to", "type": "string" }, "sender": { - "description": "UID of the message sender", "type": "string" }, "receiverType": { - "description": "Type of receiver: 'user' or 'group'", "type": "string" }, "receiver": { - "description": "UID or GUID of the receiver", "type": "string" }, "category": { - "description": "Message category: 'message', 'custom', or 'action'", "type": "string" }, "type": { - "description": "Message type (e.g., 'text', 'image')", "type": "string" }, "data": { - "description": "Message content and metadata", "type": "object", "allOf": [ { "properties": { "action": { - "description": "Action type for action messages", "type": "string" } }, @@ -4951,228 +3960,80 @@ ] }, "sentAt": { - "description": "Unix timestamp when the message was sent", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the message was last updated", "type": "integer" } }, "type": "object" }, "conversationWith": { - "description": "The user or group entity this conversation is with", - "type": "object" - } - }, - "type": "object" - }, - "userReceiverDetails": { - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the receiver.", - "type": "string" - }, - "name": { - "description": "Name of the receiver.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user receiving the message.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the receiver.", - "type": "string" - }, - "role": { - "description": "Role of the receiver. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the receiver was created.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the receiver.", "type": "object" - }, - "tags": { - "description": "A string array containing receiver tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] } }, "type": "object" }, "userSchema": { - "description": "Represents a CometChat user account. Contains the user's profile information, status, and metadata.", + "description": "Response data", "properties": { "uid": { - "description": "Unique identifier for the user. Must be unique across your app. Allowed characters: alphanumeric, underscore, and hyphen", "type": "string" }, "name": { - "description": "Display name of the user shown in chat interfaces", "type": "string" }, "avatar": { - "description": "URL of the user's profile picture. Must be a valid, publicly accessible URL", - "type": "string" - }, - "link": { - "description": "Optional URL associated with the user's profile (e.g., website, social profile)", "type": "string" }, "metadata": { - "description": "Custom key-value pairs for storing application-specific user data", "properties": { "email": { - "description": "Example metadata field - you can store any custom data here", "type": "string" } }, "type": "object" }, "status": { - "description": "Online presence status of the user. Values: 'available' (online) or 'offline'", - "type": "string" - }, - "role": { - "description": "Role assigned to the user for access control. Default role is 'default'. Custom roles can be created via the Roles API", - "type": "string" - }, - "lastActiveAt": { - "description": "Unix timestamp of the user's last activity in the app", - "type": "integer" - }, - "hasBlockedMe": { - "description": "Indicates if this user has blocked the authenticated user (only present in user-context responses)", - "type": "boolean" - }, - "blockedByMe": { - "description": "Indicates if the authenticated user has blocked this user (only present in user-context responses)", - "type": "boolean" - }, - "tags": { - "description": "Custom tags for categorizing and filtering users", - "type": "array", - "items": { - "type": "string" - } - }, - "deactivatedAt": { - "description": "Unix timestamp when the user was deactivated. Null if user is active", - "type": "integer" - }, - "createdAt": { - "description": "Unix timestamp when the user account was created", - "type": "integer" - }, - "updatedAt": { - "description": "Unix timestamp when the user account was last updated", - "type": "integer" - } - }, - "type": "object" - }, - "userSenderDetails": { - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the sender.", - "type": "string" - }, - "name": { - "description": "Name of the sender.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user sending the message.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the sender.", "type": "string" }, "role": { - "description": "Role of the sender. Should be created already via the Create role API.", "type": "string" }, "createdAt": { - "description": "A 10-digit timestamp at which the sender was created.", "type": "integer" - }, - "metadata": { - "description": "Additional details about the sender.", - "type": "object" - }, - "tags": { - "description": "A string array containing sender tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] } }, "type": "object" }, "webhookSchema": { - "description": "Represents a webhook configuration for receiving real-time event notifications. Webhooks send HTTP POST requests to your server when specified events occur in CometChat.", + "description": "Response data", "properties": { "id": { - "description": "Unique identifier for the webhook, auto-generated by CometChat", "type": "string" }, "name": { - "description": "Display name for the webhook to help identify its purpose", "type": "string" }, "webhookURL": { - "description": "The HTTPS endpoint URL where webhook payloads will be sent. Must be publicly accessible", "type": "string" }, "useBasicAuth": { - "description": "Whether to use HTTP Basic Authentication when sending webhook requests", "type": "boolean" }, "username": { - "description": "Username for HTTP Basic Authentication (required if useBasicAuth is true)", "type": "string" }, "password": { - "description": "Password for HTTP Basic Authentication (required if useBasicAuth is true). Not returned in responses", "type": "string" }, - "triggers": { - "description": "List of event triggers that will fire this webhook. See triggerSchema for available triggers", - "type": "array", - "items": { - "type": "string" - } - }, "enabled": { - "description": "Whether the webhook is currently active. Disabled webhooks will not receive event notifications", "type": "boolean" }, "createdAt": { - "description": "Unix timestamp when the webhook was created", "type": "integer" }, "updatedAt": { - "description": "Unix timestamp when the webhook was last updated", "type": "integer" } }, @@ -5183,7 +4044,7 @@ "authToken": { "name": "authToken", "in": "path", - "description": "The authentication token string for a user. Used to identify and manage specific auth tokens", + "description": "An auth token of a user.", "required": true, "schema": { "type": "string" @@ -5198,7 +4059,7 @@ "conversationId": { "name": "conversationId", "in": "path", - "description": "Unique identifier of the conversation. Format: 'user_' for 1-on-1 conversations or 'group_' for group conversations", + "description": "(Required) conversation id", "required": true, "schema": { "type": "string" @@ -5207,7 +4068,7 @@ "uid--conversation": { "name": "uid", "in": "path", - "description": "UID of the user whose conversation needs to be fetched", + "description": "UID of the user whose conversation needs to be fetched.", "required": true, "schema": { "type": "string" @@ -5216,7 +4077,7 @@ "guid--conversation": { "name": "guid", "in": "path", - "description": "GUID of the group whose conversation needs to be fetched", + "description": "GUID of the group whose conversation needs to be fetched.", "required": true, "schema": { "type": "string" @@ -5278,37 +4139,10 @@ "type": "string" } }, - "messageId": { - "name": "messageId", - "in": "path", - "description": "messageId for the moderation service", - "required": true, - "schema": { - "type": "string" - } - }, - "ruleId": { - "name": "ruleId", - "in": "path", - "description": "Rule ID", - "required": true, - "schema": { - "type": "string" - } - }, - "keywordId": { - "name": "keywordId", - "in": "path", - "description": "Keyword ID", - "required": true, - "schema": { - "type": "string" - } - }, "pushToken": { "name": "pushToken", "in": "path", - "description": "The push notification token to unregister or manage", + "description": "(Required) Push Token", "required": true, "schema": { "type": "string" @@ -5339,57 +4173,6 @@ } } }, - "examples": { - "text-message": { - "summary": "Text Message example", - "value": { - "receiver": "cometchat-uid-2", - "receiverType": "user", - "category": "message", - "type": "text", - "data": { - "text": "Hello" - } - } - }, - "custom-message": { - "summary": "Custom Message example", - "value": { - "receiverType": "user", - "data": { - "customData": { - "text": "Hello there!" - } - }, - "category": "custom", - "type": "text", - "receiver": "cometchat-uid-2", - "tags": [ - "tag1" - ] - } - }, - "media-message": { - "summary": "Media Message example", - "value": { - "receiverType": "user", - "data": { - "text": "Hello there!", - "attachments": [ - { - "name": "ironman.png", - "extension": "png", - "mimeType": "image/png", - "url": "https: //files-.cometchat.io//media/.png?fat=" - } - ] - }, - "category": "message", - "type": "image", - "receiver": "cometchat-uid-2" - } - } - }, "securitySchemes": { "apiKey": { "type": "apiKey", @@ -5402,75 +4185,71 @@ "tags": [ { "name": "API Keys", - "description": "Manage API keys for authenticating REST API requests. API keys control access to your CometChat app and define permission scopes (fullAccess or authOnly). Use these endpoints to create, list, update, and delete API keys for different integration scenarios such as server-side operations or client authentication." + "description": "The API keys are used to authorise the APIs" }, { "name": "Roles", - "description": "Configure role-based access control (RBAC) for your users. Roles define what API endpoints and features users can access. Use these endpoints to create custom roles, assign permissions, and manage access rights across your application. Default roles include 'default' for regular users and 'admin' for administrative access." + "description": "The roles are used to give user access rights" }, { - "name": "Auth Tokens", - "description": "Generate and manage authentication tokens for user login. Auth tokens are required by CometChat client SDKs (Web, iOS, Android) to establish real-time connections. Use these endpoints to create tokens when users log in to your app, list active tokens, and revoke tokens for security purposes such as logout or session management." + "name": "Users", + "description": "The REST collection for users." }, { - "name": "Users", - "description": "Create and manage user accounts in your CometChat app. Users are the core entities that send and receive messages. Use these endpoints to create users during onboarding, update user profiles (name, avatar, metadata), list users with filtering and pagination, deactivate/reactivate accounts, and permanently delete users when needed. Start here to populate your app with users." + "name": "Auth Tokens", + "description": "The auth tokens are used to login end users using client SDKs." }, { "name": "Blocked Users", - "description": "Manage user blocking relationships. When a user blocks another user, they will no longer receive messages, calls, or presence updates from the blocked user. Use these endpoints to block users, unblock users, and retrieve the list of blocked users for a specific user." + "description": "The REST collections for blocked users." }, { "name": "Friends", - "description": "Manage friend relationships between users. Friends lists enable features like showing online friends, friend-only messaging, and social connections. Use these endpoints to add friends, remove friends, and retrieve a user's friend list with pagination support." + "description": "List,add and remove friends by passing UID in path variables" }, { "name": "Groups", - "description": "Create and manage group conversations. Groups enable multi-user chat rooms with configurable privacy settings (public, password-protected, or private). Use these endpoints to create groups, update group settings (name, icon, metadata), manage group ownership, and delete groups. Groups support features like member limits, join modes, and custom metadata." + "description": "The REST collections for groups." }, { - "name": "Group Members", - "description": "Manage group membership and member roles. Members can have different scopes: 'participant' (regular member), 'moderator' (can kick/mute users), or 'admin' (full group management). Use these endpoints to add members, remove members, update member scope, and list group members with filtering options." + "name": "Banned Users", + "description": "Ban and Unban user by passing other UID in path variables." }, { - "name": "Banned Users", - "description": "Manage banned users within groups. Banning removes a user from a group and prevents them from rejoining. Use these endpoints to ban disruptive users, unban users to restore access, and list all banned users in a group. Only group admins and moderators can perform ban operations." + "name": "Group Members", + "description": "The REST collections for group members." }, { "name": "Messages", - "description": "Send, retrieve, and manage messages in conversations. Messages can be text, media, custom data, or system messages. Use these endpoints to send messages on behalf of users, retrieve message history with pagination, edit messages, delete messages, and manage message metadata. Supports both 1-on-1 and group conversations." + "description": "The REST collections for messages." }, { "name": "Conversations", - "description": "Access and manage conversation threads. A conversation represents the message history between two users (1-on-1) or within a group. Use these endpoints to list conversations with unread counts, retrieve specific conversations, mark conversations as read/delivered, reset conversation history, and delete conversations." - }, - { - "name": "Calls", - "description": "Manage voice and video calling functionality. Access call history, retrieve call details, and monitor call quality metrics. Calls integrate with CometChat's real-time communication infrastructure for audio and video conversations." + "description": "The REST collections for conversations." }, { - "name": "Notifications", - "description": "Configure push notification settings and delivery. Push notifications alert users about new messages and events when they're not actively using your app. Use these endpoints to configure FCM/APNS credentials, customize notification templates, manage user notification preferences, register device tokens, and control notification delivery settings." + "name": "Restrict Features", + "description": "Allows Restricting Features" }, { - "name": "Moderation", - "description": "The REST collections for Moderations." + "name": "Metrics", + "description": "Allows accessing Data Metrics" }, { - "name": "Restrict Features", - "description": "Control feature availability for users based on roles. Feature restrictions allow you to enable or disable specific CometChat features (messaging, calling, groups) for different user segments. Use these endpoints to configure feature access rules and manage feature availability across your app." + "name": "Triggers", + "description": "Allows adding triggers to a webhook." }, { "name": "Webhooks", - "description": "Set up webhook endpoints to receive real-time event notifications. Webhooks enable server-to-server communication when events occur in your CometChat app (new messages, user actions, group changes). Use these endpoints to create webhooks, configure target URLs, manage authentication, and control which events trigger notifications." - }, - { - "name": "Triggers", - "description": "Configure event triggers for webhooks. Triggers define which CometChat events (message sent, user created, group joined, etc.) should fire webhook notifications. Use these endpoints to add triggers to webhooks, remove triggers, and list available trigger types for real-time event integration." + "description": "Allows accessing Webhooks." }, { - "name": "Metrics", - "description": "Access usage analytics and metrics for your CometChat app. Metrics provide insights into message volume, active users, API usage, and other key performance indicators. Use these endpoints to retrieve daily/monthly statistics, monitor app health, and track usage against your subscription limits." + "name": "Push Notifications", + "description": "Allows configuring Push Notifications." } - ] + ], + "x-readme": { + "explorer-enabled": true, + "proxy-enabled": true + } } \ No newline at end of file diff --git a/docs.json b/docs.json index 40c1b93e6..9e5b195d6 100644 --- a/docs.json +++ b/docs.json @@ -36,81 +36,16 @@ "ai-agent-service.json" ], "navigation": { - "products": [ + "tabs": [ { - "product": "Home", - "pages": [ - "index", - { - "group": "Docs MCP", - "hidden": true, - "pages": ["mcp-server"] - } - ] - }, - { - "product": "Home", - "hidden": true, - "tabs": [ - { - "tab": "On-Premise Deployment", - "hidden": true, - "dropdowns": [ - { - "dropdown": "Docker", - "icon": "/images/icons/docker.svg", - "pages": [ - { - "group": "Getting Started", - "pages": [ - "on-premise-deployment/docker/overview", - "on-premise-deployment/docker/prerequisites", - "on-premise-deployment/docker/configuration-reference" - ] - }, - { - "group": "Deployment", - "pages": [ - "on-premise-deployment/docker/production-deployment", - "on-premise-deployment/docker/air-gapped-deployment" - ] - }, - { - "group": "Operations", - "pages": [ - "on-premise-deployment/docker/monitoring", - "on-premise-deployment/docker/security", - "on-premise-deployment/docker/persistence-and-backup" - ] - }, - { - "group": "Scaling & Maintenance", - "pages": [ - "on-premise-deployment/docker/scaling", - "on-premise-deployment/docker/upgrades", - "on-premise-deployment/docker/troubleshooting" - ] - } - ] - }, - { - "dropdown": "Kubernetes", - "icon": "/images/icons/kubernetes.svg", - "pages": ["on-premise-deployment/kubernetes/overview"] - } - ] - } - ] + "tab": "Home", + "pages": ["index"] }, { - "product": "Chat & Messaging", - "tabs": [ + "tab": "Platform", + "groups": [ { - "tab": "Chat & Calling", - "pages": ["chat-call"] - }, - { - "tab": "Platform", + "group": "Chat & Calling", "pages": [ "fundamentals/overview", "fundamentals/implementation-checklist", @@ -190,254 +125,197 @@ "fundamentals/ai-user-copilot/smart-replies", "fundamentals/ai-user-copilot/conversation-summary" ] - }, - "fundamentals/multi-tenancy", - "fundamentals/data-import-and-migration", - "fundamentals/webhooks" + } ] }, { - "group": "User-Roles", - "pages": ["fundamentals/user-roles-and-permissions"] + "group": "Multi tenancy", + "pages": [ + "fundamentals/multi-tenancy-overview", + "fundamentals/multi-tenancy-best-practices" + ] }, + "fundamentals/limits", { - "group": "Guides", - "pages": ["fundamentals/user-auth"] - } - ] - }, - { - "tab": "Widget Builder", - "dropdowns": [ - { - "dropdown": "HTML", - "icon": "/images/icons/html5.svg", + "group": "Data import and migration", "pages": [ - "/widget/html/overview", - "/widget/html/integration", - "/widget/html/advanced", - { - "group": " ", - "pages": [ - "/widget/html/legacy" - ] - } + "fundamentals/data-import-and-migration-overview", + "fundamentals/import-historical-data", + "fundamentals/live-data-migration" ] }, { - "dropdown": "WordPress", - "icon": "/images/icons/wordpress.svg", + "group": "Webhooks", "pages": [ - "/widget/wordpress/overview", - "/widget/wordpress/integration", + "fundamentals/webhooks-overview", + "fundamentals/webhooks-management", + "fundamentals/webhooks-events", { - "group": " ", + "group": "Legacy Webhooks", "pages": [ - "/widget/wordpress/legacy" + "fundamentals/webhooks-legacy-overview", + "fundamentals/webhooks-legacy-management", + "fundamentals/webhooks-legacy-events" ] } ] }, { - "dropdown": "Shopify", - "icon": "/images/icons/shopify.svg", - "pages": [ - "/widget/shopify/overview", - "/widget/shopify/integration" - ] - }, - { - "dropdown": "Squarespace", - "icon": "/images/icons/squarespace.svg", - "pages": [ - "/widget/squarespace/overview", - "/widget/squarespace/integration" - ] - }, - { - "dropdown": "Wix", - "icon": "/images/icons/wix.svg", - "pages": ["/widget/wix/overview", "/widget/wix/integration"] - }, - { - "dropdown": "Webflow", - "icon": "/images/icons/webflow.svg", - "pages": [ - "/widget/webflow/overview", - "/widget/webflow/integration" - ] + "group": "User-Roles", + "pages": ["fundamentals/user-roles-and-permissions"] } ] }, { - "tab": "UI Kit Builder", - "tab-id": "chat-builder", - "dropdowns": [ + "group": "Notifications", + "pages": [ + "notifications/overview", { - "dropdown": "React", - "icon": "/images/icons/react.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/react/overview", - "chat-builder/react/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/react/builder-settings", - "chat-builder/react/builder-dir-structure", - "chat-builder/react/builder-customisations" - ] - } + "group": "Push Notifications", + "pages": [ + "notifications/push-overview", + "notifications/push-integration", + "notifications/push-customization" ] }, { - "dropdown": "Next.js", - "icon": "/images/icons/nextjs.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/nextjs/overview", - "chat-builder/nextjs/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/nextjs/builder-settings", - "chat-builder/nextjs/builder-dir-structure", - "chat-builder/nextjs/builder-customisations" - ] - } + "group": "Email Notifications", + "pages": [ + "notifications/email-overview", + "notifications/email-integration", + "notifications/email-customization" ] }, { - "dropdown": "React Router", - "icon": "/images/icons/react-router.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/react-router/overview", - "chat-builder/react-router/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/react-router/builder-settings", - "chat-builder/react-router/builder-dir-structure", - "chat-builder/react-router/builder-customisations" - ] - } + "group": "SMS Notifications", + "pages": [ + "notifications/sms-overview", + "notifications/sms-integration", + "notifications/sms-customization" ] }, + "notifications/preferences-templates-sounds", + "notifications/logs", + "notifications/constraints-and-limits", { - "dropdown": "Android", - "icon": "/images/icons/android.svg", - "groups": [ + "group": "Legacy Notifications (Extension)", + "pages": [ { - "group": " ", + "group": "Push Notification Extension (Legacy)", "pages": [ - "chat-builder/android/overview", - "chat-builder/android/integration" + "notifications/push-notification-extension-overview", + "notifications/web-push-notifications", + "notifications/android-push-notifications", + "notifications/android-connection-service", + "notifications/ios-fcm-push-notifications", + "notifications/ios-apns-push-notifications", + "notifications/flutter-push-notifications", + "notifications/react-native-push-notifications", + "notifications/capacitor-cordova-ionic-push-notifications", + "notifications/migration-guide-push-notifications", + "notifications/mute-functionality", + "notifications/token-management", + "notifications/legacy-push-notifications" ] }, - { - "group": "Reference", - "pages": [ - "chat-builder/android/builder-settings", - "chat-builder/android/builder-dir-structure", - "chat-builder/android/builder-customisations" - ] - } + "notifications/email-notification-extension", + "notifications/sms-notification-extension" ] - }, + } + ] + }, + { + "group": "Moderation", + "pages": [ + "moderation/overview", + "moderation/getting-started", + "moderation/rules-management", + "moderation/lists-management", + "moderation/blocked-messages", + "moderation/constraints-and-limits", { - "dropdown": "iOS", - "icon": "/images/icons/swift.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/ios/overview", - "chat-builder/ios/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/ios/builder-settings", - "chat-builder/ios/builder-dir-structure", - "chat-builder/ios/builder-customisations" - ] - } + "group": "Legacy Moderation (Extensions)", + "pages": [ + "moderation/legacy/slow-mode", + "moderation/legacy/report-user", + "moderation/legacy/report-message", + "moderation/legacy/data-masking-filter", + "moderation/legacy/profanity-filter", + "moderation/legacy/image-moderation", + "moderation/legacy/sentiment-analysis", + "moderation/legacy/in-flight-message-moderation", + "moderation/legacy/virus-malware-scanner", + "moderation/legacy/xss-filter" ] }, { - "dropdown": "Flutter", - "icon": "/images/icons/flutter.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/flutter/overview", - "chat-builder/flutter/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/flutter/builder-settings", - "chat-builder/flutter/builder-dir-structure", - "chat-builder/flutter/builder-customisations" - ] - } + "group": "OpenAI", + "pages": [ + "moderation/open-ai/openai-overview", + "moderation/open-ai/openai-custom" ] }, { - "dropdown": "React Native", - "icon": "/images/icons/react.svg", - "groups": [ - { - "group": " ", - "pages": [ - "chat-builder/react-native/overview", - "chat-builder/react-native/integration" - ] - }, - { - "group": "Reference", - "pages": [ - "chat-builder/react-native/builder-settings", - "chat-builder/react-native/builder-dir-structure", - "chat-builder/react-native/builder-customisations" - ] - } + "group": "Custom API", + "pages": [ + "moderation/custom/custom-api-overview", + "moderation/custom/custom-api" ] - } + }, + "moderation/webhooks-overview", + "moderation/api-explorer" + ] + }, + { + "group": "AI Chatbots", + "pages": [ + "ai-chatbots/overview", + "ai-chatbots/bots", + "ai-chatbots/instructions", + "ai-chatbots/custom-agents" ] }, { - "tab": "UI Kits", - "dropdowns": [ + "group": "Insights", + "pages": ["insights"] + } + ] + }, + { + "tab": "UI Kits", + "dropdowns": [ + { + "dropdown": "React", + "icon": "react", + "versions": [ { - "dropdown": "React", - "icon": "/images/icons/react.svg", - "versions": [ + "version": "v6", + "groups": [ { - "version": "v6", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/react/overview", { - "group": " ", + "group": "Getting Started", "pages": [ - "ui-kit/react/overview", { - "group": "Getting Started", + "group": "Chat Builder (Pre-Assembled UI)", + "pages": [ + "ui-kit/react/builder-integration", + "ui-kit/react/builder-integration-nextjs", + "ui-kit/react/builder-integration-react-router", + { + "group": "Additional Customizations", + "pages": [ + "ui-kit/react/builder-customisations", + "ui-kit/react/builder-dir-structure", + "ui-kit/react/builder-settings" + ] + } + ] + }, + { + "group": "UI Components (Assemble It Yourself)", "pages": [ { "group": "React.js", @@ -465,2749 +343,2177 @@ "ui-kit/react/react-router-one-to-one-chat", "ui-kit/react/react-router-tab-based-chat" ] - }, - { - "group": "Astro", - "pages": [ - "ui-kit/react/astro-integration", - "ui-kit/react/astro-conversation", - "ui-kit/react/astro-one-to-one-chat", - "ui-kit/react/astro-tab-based-chat" - ] - }, - "ui-kit/react/calling-integration" - ] - }, - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/react/core-features", - "ui-kit/react/extensions", - "ui-kit/react/ai-features" - ] - }, - "ui-kit/react/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react/theme", - "ui-kit/react/theme/color-resources", - "ui-kit/react/theme/message-bubble-styling", - "ui-kit/react/localize", - "ui-kit/react/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/react/components-overview", - "ui-kit/react/conversations", - "ui-kit/react/users", - "ui-kit/react/groups", - "ui-kit/react/group-members", - "ui-kit/react/message-header", - "ui-kit/react/message-list", - "ui-kit/react/message-composer", - "ui-kit/react/message-template", - "ui-kit/react/thread-header", - "ui-kit/react/incoming-call", - "ui-kit/react/outgoing-call", - "ui-kit/react/call-buttons", - "ui-kit/react/call-logs", - "ui-kit/react/search", - "ui-kit/react/ai-assistant-chat" - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/react/methods", - "ui-kit/react/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react/guide-overview", - "ui-kit/react/guide-threaded-messages", - "ui-kit/react/guide-block-unblock-user", - "ui-kit/react/guide-new-chat", - "ui-kit/react/guide-message-privately", - "ui-kit/react/guide-search-messages", - "ui-kit/react/guide-call-log-details", - "ui-kit/react/guide-group-chat", - "ui-kit/react/custom-text-formatter-guide", - "ui-kit/react/mentions-formatter-guide", - "ui-kit/react/url-formatter-guide", - "ui-kit/react/shortcut-formatter-guide" + } ] - }, + } + ] + }, + { + "group": "Features", + "pages": [ { - "group": "Migration Guide", + "group": "Chat", "pages": [ - "ui-kit/react/upgrading-from-v5" + "ui-kit/react/core-features", + "ui-kit/react/extensions", + "ui-kit/react/ai-features" ] }, - "ui-kit/react/troubleshooting", - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" + "ui-kit/react/call-features" ] - } + }, + { + "group": "Theming", + "pages": [ + "ui-kit/react/theme", + "ui-kit/react/theme/color-resources", + "ui-kit/react/theme/message-bubble-styling", + "ui-kit/react/localize", + "ui-kit/react/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react/components-overview", + "ui-kit/react/conversations", + "ui-kit/react/users", + "ui-kit/react/groups", + "ui-kit/react/group-members", + "ui-kit/react/message-header", + "ui-kit/react/message-list", + "ui-kit/react/message-composer", + "ui-kit/react/message-template", + "ui-kit/react/thread-header", + "ui-kit/react/incoming-call", + "ui-kit/react/outgoing-call", + "ui-kit/react/call-buttons", + "ui-kit/react/call-logs", + "ui-kit/react/search" + ] + }, + { + "group": "Reference", + "pages": ["ui-kit/react/methods", "ui-kit/react/events"] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react/custom-text-formatter-guide", + "ui-kit/react/mentions-formatter-guide", + "ui-kit/react/url-formatter-guide", + "ui-kit/react/shortcut-formatter-guide" + ] + }, + { + "group": "Migration Guide", + "pages": [ + "ui-kit/react/upgrading-from-v5", + "ui-kit/react/property-changes" + ] + }, + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" ] - }, + } + ] + }, + { + "version": "v5", + "groups": [ { - "version": "v5", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/react/v5/overview", { - "group": " ", + "group": "Getting Started", + "pages": [ + "ui-kit/react/v5/integration", + "ui-kit/react/v5/integration/next-js" + ] + }, + { + "group": "Features", "pages": [ - "ui-kit/react/v5/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/react/v5/integration", - "ui-kit/react/v5/integration/next-js" - ] - }, - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/react/v5/core-features", - "ui-kit/react/v5/extensions", - "ui-kit/react/v5/ai-features" - ] - }, - "ui-kit/react/v5/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react/v5/theme", - "ui-kit/react/v5/theme/color-resources", - "ui-kit/react/v5/theme/message-bubble-styling", - "ui-kit/react/v5/localize", - "ui-kit/react/v5/sound-manager" - ] - }, { - "group": "Components", + "group": "Chat", "pages": [ - "ui-kit/react/v5/components-overview", - "ui-kit/react/v5/conversations", - "ui-kit/react/v5/users", - "ui-kit/react/v5/groups", - "ui-kit/react/v5/group-members", - "ui-kit/react/v5/message-header", - "ui-kit/react/v5/message-list", - "ui-kit/react/v5/message-composer", - "ui-kit/react/v5/message-template", - "ui-kit/react/v5/threaded-message-preview", - "ui-kit/react/v5/incoming-call", - "ui-kit/react/v5/outgoing-call", - "ui-kit/react/v5/call-buttons", - "ui-kit/react/v5/call-logs" - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/react/v5/methods", - "ui-kit/react/v5/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react/v5/custom-text-formatter-guide", - "ui-kit/react/v5/mentions-formatter-guide", - "ui-kit/react/v5/url-formatter-guide", - "ui-kit/react/v5/shortcut-formatter-guide" + "ui-kit/react/v5/core-features", + "ui-kit/react/v5/extensions", + "ui-kit/react/v5/ai-features" ] }, + "ui-kit/react/v5/call-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/react/v5/theme", + "ui-kit/react/v5/theme/color-resources", + "ui-kit/react/v5/theme/message-bubble-styling", + "ui-kit/react/v5/localize", + "ui-kit/react/v5/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react/v5/components-overview", + "ui-kit/react/v5/conversations", + "ui-kit/react/v5/users", + "ui-kit/react/v5/groups", + "ui-kit/react/v5/group-members", + "ui-kit/react/v5/message-header", + "ui-kit/react/v5/message-list", + "ui-kit/react/v5/message-composer", + "ui-kit/react/v5/message-template", + "ui-kit/react/v5/threaded-message-preview", + "ui-kit/react/v5/incoming-call", + "ui-kit/react/v5/outgoing-call", + "ui-kit/react/v5/call-buttons", + "ui-kit/react/v5/call-logs" + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/react/v5/methods", + "ui-kit/react/v5/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react/v5/custom-text-formatter-guide", + "ui-kit/react/v5/mentions-formatter-guide", + "ui-kit/react/v5/url-formatter-guide", + "ui-kit/react/v5/shortcut-formatter-guide" + ] + }, + { + "group": "Migration Guide", + "pages": [ + "ui-kit/react/v5/upgrading-from-v4", + "ui-kit/react/v5/property-changes" + ] + }, + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" + ] + } + ] + }, + { + "version": "v4", + "groups": [ + { + "group": " ", + "pages": [ + "ui-kit/react/v4/overview", + "ui-kit/react/v4/getting-started", + { + "group": "Features", + "pages": [ { - "group": "Migration Guide", + "group": "Chat", "pages": [ - "ui-kit/react/v5/upgrading-from-v4", - "ui-kit/react/v5/property-changes" + "ui-kit/react/v4/core-features", + "ui-kit/react/v4/extensions" ] }, - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" + "ui-kit/react/v4/call-features", + "ui-kit/react/v4/ai-features" ] - } - ] - }, - { - "version": "v4", - "groups": [ + }, + { + "group": "Theming", + "pages": [ + "ui-kit/react/v4/theme", + "ui-kit/react/v4/localize", + "ui-kit/react/v4/sound-manager" + ] + }, { - "group": " ", + "group": "Components", "pages": [ - "ui-kit/react/v4/overview", - "ui-kit/react/v4/getting-started", + "ui-kit/react/v4/components-overview", { - "group": "Features", + "group": "Conversations", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/react/v4/core-features", - "ui-kit/react/v4/extensions" - ] - }, - "ui-kit/react/v4/call-features", - "ui-kit/react/v4/ai-features" + "ui-kit/react/v4/conversations", + "ui-kit/react/v4/conversations-with-messages", + "ui-kit/react/v4/contacts" ] }, { - "group": "Theming", + "group": "Users", "pages": [ - "ui-kit/react/v4/theme", - "ui-kit/react/v4/localize", - "ui-kit/react/v4/sound-manager" + "ui-kit/react/v4/users", + "ui-kit/react/v4/users-with-messages", + "ui-kit/react/v4/users-details" ] }, { - "group": "Components", + "group": "Groups", "pages": [ - "ui-kit/react/v4/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/react/v4/conversations", - "ui-kit/react/v4/conversations-with-messages", - "ui-kit/react/v4/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/react/v4/users", - "ui-kit/react/v4/users-with-messages", - "ui-kit/react/v4/users-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/react/v4/groups", - "ui-kit/react/v4/groups-with-messages", - "ui-kit/react/v4/create-group", - "ui-kit/react/v4/join-protected-group", - "ui-kit/react/v4/group-members", - "ui-kit/react/v4/group-add-members", - "ui-kit/react/v4/group-banned-members", - "ui-kit/react/v4/group-transfer-ownership", - "ui-kit/react/v4/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/react/v4/messages", - "ui-kit/react/v4/message-header", - "ui-kit/react/v4/message-list", - "ui-kit/react/v4/message-template", - "ui-kit/react/v4/message-composer", - "ui-kit/react/v4/message-information", - "ui-kit/react/v4/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/react/v4/interactive-form-message", - "ui-kit/react/v4/interactive-form-bubble", - "ui-kit/react/v4/interactive-card-message", - "ui-kit/react/v4/interactive-card-bubble", - "ui-kit/react/v4/interactive-element-type", - "ui-kit/react/v4/interactive-action-entity", - "ui-kit/react/v4/interactive-custom-interactive-message", - "ui-kit/react/v4/interactive-button-element", - "ui-kit/react/v4/interactive-text-input-element", - "ui-kit/react/v4/interactive-label-element", - "ui-kit/react/v4/interactive-single-select-element", - "ui-kit/react/v4/interactive-radio-button-element", - "ui-kit/react/v4/interactive-checkbox-element", - "ui-kit/react/v4/interactive-dropdown-element", - "ui-kit/react/v4/interactive-scheduler-message", - "ui-kit/react/v4/interactive-scheduler-bubble", - "ui-kit/react/v4/interactive-date-time-picker-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/react/v4/call-overview", - "ui-kit/react/v4/incoming-call", - "ui-kit/react/v4/ongoing-call", - "ui-kit/react/v4/outgoing-call", - "ui-kit/react/v4/call-buttons", - "ui-kit/react/v4/call-logs", - "ui-kit/react/v4/call-log-details", - "ui-kit/react/v4/call-log-history", - "ui-kit/react/v4/call-log-recording", - "ui-kit/react/v4/call-log-participants", - "ui-kit/react/v4/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/react/v4/reaction", - "ui-kit/react/v4/reaction-list", - "ui-kit/react/v4/reaction-info", - "ui-kit/react/v4/user-member-wrapper" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/react/v4/avatar", - "ui-kit/react/v4/status-indicator", - "ui-kit/react/v4/badge", - "ui-kit/react/v4/receipt", - "ui-kit/react/v4/date", - "ui-kit/react/v4/text-bubble", - "ui-kit/react/v4/image-bubble", - "ui-kit/react/v4/file-bubble", - "ui-kit/react/v4/audio-bubble", - "ui-kit/react/v4/video-bubble", - "ui-kit/react/v4/message-bubble", - "ui-kit/react/v4/document-bubble", - "ui-kit/react/v4/message-input", - "ui-kit/react/v4/action-sheet", - "ui-kit/react/v4/media-recorder", - "ui-kit/react/v4/list-item", - "ui-kit/react/v4/confirm-dialog", - "ui-kit/react/v4/backdrop", - "ui-kit/react/v4/emoji-keyboard", - "ui-kit/react/v4/modal", - "ui-kit/react/v4/pop-over", - "ui-kit/react/v4/icon", - "ui-kit/react/v4/loader", - "ui-kit/react/v4/icon-button", - "ui-kit/react/v4/button-group", - "ui-kit/react/v4/label", - "ui-kit/react/v4/input", - "ui-kit/react/v4/search-input", - "ui-kit/react/v4/checkbox", - "ui-kit/react/v4/radio-button", - "ui-kit/react/v4/dropdown", - "ui-kit/react/v4/cometchat-quick-view", - "ui-kit/react/v4/singleselect", - "ui-kit/react/v4/list" - ] - } + "ui-kit/react/v4/groups", + "ui-kit/react/v4/groups-with-messages", + "ui-kit/react/v4/create-group", + "ui-kit/react/v4/join-protected-group", + "ui-kit/react/v4/group-members", + "ui-kit/react/v4/group-add-members", + "ui-kit/react/v4/group-banned-members", + "ui-kit/react/v4/group-transfer-ownership", + "ui-kit/react/v4/group-details" ] }, { - "group": "Reference", + "group": "Messages", "pages": [ - "ui-kit/react/v4/methods", - "ui-kit/react/v4/events" + "ui-kit/react/v4/messages", + "ui-kit/react/v4/message-header", + "ui-kit/react/v4/message-list", + "ui-kit/react/v4/message-template", + "ui-kit/react/v4/message-composer", + "ui-kit/react/v4/message-information", + "ui-kit/react/v4/threaded-messages" ] }, { - "group": "Guides", + "group": "Interactive Messages", "pages": [ - "ui-kit/react/v4/multi-tab-chat-ui-guide", - "ui-kit/react/v4/next-js-integration-guide", - "ui-kit/react/v4/custom-text-formatter-guide", - "ui-kit/react/v4/mentions-formatter-guide", - "ui-kit/react/v4/url-formatter-guide", - "ui-kit/react/v4/shortcut-formatter-guide" + "ui-kit/react/v4/interactive-form-message", + "ui-kit/react/v4/interactive-form-bubble", + "ui-kit/react/v4/interactive-card-message", + "ui-kit/react/v4/interactive-card-bubble", + "ui-kit/react/v4/interactive-element-type", + "ui-kit/react/v4/interactive-action-entity", + "ui-kit/react/v4/interactive-custom-interactive-message", + "ui-kit/react/v4/interactive-button-element", + "ui-kit/react/v4/interactive-text-input-element", + "ui-kit/react/v4/interactive-label-element", + "ui-kit/react/v4/interactive-single-select-element", + "ui-kit/react/v4/interactive-radio-button-element", + "ui-kit/react/v4/interactive-checkbox-element", + "ui-kit/react/v4/interactive-dropdown-element", + "ui-kit/react/v4/interactive-scheduler-message", + "ui-kit/react/v4/interactive-scheduler-bubble", + "ui-kit/react/v4/interactive-date-time-picker-element" ] }, { - "group": "Migration Guide", + "group": "Calls", "pages": [ - "ui-kit/react/v4/upgrade-to-v5", - "ui-kit/react/v4/property-changes" + "ui-kit/react/v4/call-overview", + "ui-kit/react/v4/incoming-call", + "ui-kit/react/v4/ongoing-call", + "ui-kit/react/v4/outgoing-call", + "ui-kit/react/v4/call-buttons", + "ui-kit/react/v4/call-logs", + "ui-kit/react/v4/call-log-details", + "ui-kit/react/v4/call-log-history", + "ui-kit/react/v4/call-log-recording", + "ui-kit/react/v4/call-log-participants", + "ui-kit/react/v4/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/react/v4/reaction", + "ui-kit/react/v4/reaction-list", + "ui-kit/react/v4/reaction-info", + "ui-kit/react/v4/user-member-wrapper" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/react/v4/avatar", + "ui-kit/react/v4/status-indicator", + "ui-kit/react/v4/badge", + "ui-kit/react/v4/receipt", + "ui-kit/react/v4/date", + "ui-kit/react/v4/text-bubble", + "ui-kit/react/v4/image-bubble", + "ui-kit/react/v4/file-bubble", + "ui-kit/react/v4/audio-bubble", + "ui-kit/react/v4/video-bubble", + "ui-kit/react/v4/message-bubble", + "ui-kit/react/v4/document-bubble", + "ui-kit/react/v4/message-input", + "ui-kit/react/v4/action-sheet", + "ui-kit/react/v4/media-recorder", + "ui-kit/react/v4/list-item", + "ui-kit/react/v4/confirm-dialog", + "ui-kit/react/v4/backdrop", + "ui-kit/react/v4/emoji-keyboard", + "ui-kit/react/v4/modal", + "ui-kit/react/v4/pop-over", + "ui-kit/react/v4/icon", + "ui-kit/react/v4/loader", + "ui-kit/react/v4/icon-button", + "ui-kit/react/v4/button-group", + "ui-kit/react/v4/label", + "ui-kit/react/v4/input", + "ui-kit/react/v4/search-input", + "ui-kit/react/v4/checkbox", + "ui-kit/react/v4/radio-button", + "ui-kit/react/v4/dropdown", + "ui-kit/react/v4/cometchat-quick-view", + "ui-kit/react/v4/singleselect", + "ui-kit/react/v4/list" ] - }, - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" + } ] - } + }, + { + "group": "Reference", + "pages": [ + "ui-kit/react/v4/methods", + "ui-kit/react/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react/v4/multi-tab-chat-ui-guide", + "ui-kit/react/v4/next-js-integration-guide", + "ui-kit/react/v4/custom-text-formatter-guide", + "ui-kit/react/v4/mentions-formatter-guide", + "ui-kit/react/v4/url-formatter-guide", + "ui-kit/react/v4/shortcut-formatter-guide" + ] + }, + { + "group": "Migration Guide", + "pages": [ + "ui-kit/react/v4/upgrade-to-v5", + "ui-kit/react/v4/property-changes" + ] + }, + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" ] - }, + } + ] + }, + { + "version": "v3", + "groups": [ { - "version": "v3", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react/v3/overview", - "ui-kit/react/v3/key-concepts" - ] - }, - "ui-kit/react/v3/ui-components", - "ui-kit/react/v3/customize", - "ui-kit/react/v3/nextjs", - "ui-kit/react/v3/javascript-3-0-overview", - "ui-kit/react/v3/extensions-overview" + "ui-kit/react/v3/overview", + "ui-kit/react/v3/key-concepts" ] - } + }, + "ui-kit/react/v3/ui-components", + "ui-kit/react/v3/customize", + "ui-kit/react/v3/nextjs", + "ui-kit/react/v3/javascript-3-0-overview", + "ui-kit/react/v3/extensions-overview" ] - }, + } + ] + }, + { + "version": "v2", + "groups": [ + { + "group": " ", + "pages": [ + { + "group": "Overview", + "pages": [ + "ui-kit/react/v2/overview", + "ui-kit/react/v2/key-concepts", + "ui-kit/react/v2/message-structure-and-hierarchy" + ] + }, + "ui-kit/react/v2/ui-components", + "ui-kit/react/v2/customize-ui-kit", + "ui-kit/react/v2/integration-with-nextjs", + "ui-kit/react/v2/javascript-2-0-overview", + "ui-kit/react/v3/extensions-overview" + ] + } + ] + } + ] + }, + { + "dropdown": "React Native", + "icon": "react", + "versions": [ + { + "version": "v5‎", + "groups": [ { - "version": "v2", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/react-native/overview", + "ui-kit/react-native/getting-started", { - "group": " ", + "group": "Features", "pages": [ { - "group": "Overview", + "group": "Chat", "pages": [ - "ui-kit/react/v2/overview", - "ui-kit/react/v2/key-concepts", - "ui-kit/react/v2/message-structure-and-hierarchy" + "ui-kit/react-native/core-features", + "ui-kit/react-native/extensions" ] }, - "ui-kit/react/v2/ui-components", - "ui-kit/react/v2/customize-ui-kit", - "ui-kit/react/v2/integration-with-nextjs", - "ui-kit/react/v2/javascript-2-0-overview", - "ui-kit/react/v3/extensions-overview" + "ui-kit/react-native/call-features" ] - } + }, + { + "group": "Theming", + "pages": [ + "ui-kit/react-native/theme", + "ui-kit/react-native/colors", + "ui-kit/react-native/component-styling", + "ui-kit/react-native/message-bubble-styling", + "ui-kit/react-native/localize", + "ui-kit/react-native/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react-native/components-overview", + "ui-kit/react-native/conversations", + "ui-kit/react-native/users", + "ui-kit/react-native/groups", + "ui-kit/react-native/group-members", + "ui-kit/react-native/message-header", + "ui-kit/react-native/message-list", + "ui-kit/react-native/message-composer", + "ui-kit/react-native/threaded-messages-header", + "ui-kit/react-native/incoming-call", + "ui-kit/react-native/outgoing-call", + "ui-kit/react-native/call-buttons", + "ui-kit/react-native/call-logs" + ] + }, + { + "group": "References", + "pages": [ + "ui-kit/react-native/methods", + "ui-kit/react-native/events" + ] + }, + { + "group": "Advanced", + "pages": [ + "ui-kit/react-native/multi-tab-chat-ui-guide", + "ui-kit/react-native/expo-integration-guide", + "ui-kit/react-native/apple-privacy-manifest-guide", + "ui-kit/react-native/mentions-formatter-guide", + "ui-kit/react-native/shortcut-formatter-guide" + ] + }, + "ui-kit/react-native/link/sample", + "ui-kit/react-native/link/changelog" ] } ] }, { - "dropdown": "React Native", - "icon": "/images/icons/react.svg", - "versions": [ + "version": "v4‎", + "groups": [ { - "version": "v5‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/react-native/v4/overview", + "ui-kit/react-native/v4/getting-started", { - "group": " ", + "group": "Features", "pages": [ - "ui-kit/react-native/overview", - { - "group": "Getting Started", - "pages": [ - { - "group": "React Native CLI", - "pages": [ - "ui-kit/react-native/react-native-cli-integration", - "ui-kit/react-native/react-native-conversation", - "ui-kit/react-native/react-native-one-to-one-chat", - "ui-kit/react-native/react-native-tab-based-chat" - ] - }, - { - "group": "Expo", - "pages": [ - "ui-kit/react-native/expo-integration", - "ui-kit/react-native/expo-conversation", - "ui-kit/react-native/expo-one-to-one-chat", - "ui-kit/react-native/expo-tab-based-chat" - ] - } - ] - }, { - "group": "Features", + "group": "Chat", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/react-native/core-features", - "ui-kit/react-native/extensions" - ] - }, - "ui-kit/react-native/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react-native/theme", - "ui-kit/react-native/colors", - "ui-kit/react-native/component-styling", - "ui-kit/react-native/message-bubble-styling", - "ui-kit/react-native/localize", - "ui-kit/react-native/sound-manager" + "ui-kit/react-native/v4/core-features", + "ui-kit/react-native/v4/extensions" ] }, + "ui-kit/react-native/v4/call-features", + "ui-kit/react-native/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/react-native/v4/theme", + "ui-kit/react-native/v4/localize", + "ui-kit/react-native/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react-native/v4/components-overview", { - "group": "Components", + "group": "Conversations", "pages": [ - "ui-kit/react-native/components-overview", - "ui-kit/react-native/conversations", - "ui-kit/react-native/users", - "ui-kit/react-native/groups", - "ui-kit/react-native/group-members", - "ui-kit/react-native/message-header", - "ui-kit/react-native/message-list", - "ui-kit/react-native/message-composer", - "ui-kit/react-native/threaded-messages-header", - "ui-kit/react-native/incoming-call", - "ui-kit/react-native/outgoing-call", - "ui-kit/react-native/call-buttons", - "ui-kit/react-native/call-logs", - "ui-kit/react-native/ai-assistant-chat-history" + "ui-kit/react-native/v4/conversations", + "ui-kit/react-native/v4/conversations-with-messages", + "ui-kit/react-native/v4/contacts" ] }, { - "group": "Reference", + "group": "Users", "pages": [ - "ui-kit/react-native/methods", - "ui-kit/react-native/events" + "ui-kit/react-native/v4/users", + "ui-kit/react-native/v4/users-with-messages", + "ui-kit/react-native/v4/user-details" ] }, { - "group": "Guides", + "group": "Groups", "pages": [ - "ui-kit/react-native/guide-overview", - "ui-kit/react-native/guide-ai-agent", - "ui-kit/react-native/guide-new-chat", - "ui-kit/react-native/guide-group-chat", - "ui-kit/react-native/guide-threaded-messages", - "ui-kit/react-native/guide-search-messages", - "ui-kit/react-native/guide-block-unblock-user", - "ui-kit/react-native/custom-text-formatter-guide", - "ui-kit/react-native/mentions-formatter-guide", - "ui-kit/react-native/url-formatter-guide", - "ui-kit/react-native/shortcut-formatter-guide", - "ui-kit/react-native/apple-privacy-manifest-guide" + "ui-kit/react-native/v4/groups", + "ui-kit/react-native/v4/groups-with-messages", + "ui-kit/react-native/v4/create-group", + "ui-kit/react-native/v4/join-protected-group", + "ui-kit/react-native/v4/group-members", + "ui-kit/react-native/v4/group-add-members", + "ui-kit/react-native/v4/group-banned-members", + "ui-kit/react-native/v4/group-transfer-ownership", + "ui-kit/react-native/v4/group-details" ] }, { - "group": "Migration Guide", - "pages": [ - "ui-kit/react-native/upgrading-from-v4" - ] - }, - "ui-kit/react-native/troubleshooting", - "ui-kit/react-native/link/sample", - "ui-kit/react-native/link/changelog" - ] - } - ] - }, - { - "version": "v4‎", - "groups": [ - { - "group": " ", - "pages": [ - "ui-kit/react-native/v4/overview", - "ui-kit/react-native/v4/getting-started", - { - "group": "Features", + "group": "Messages", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/react-native/v4/core-features", - "ui-kit/react-native/v4/extensions" - ] - }, - "ui-kit/react-native/v4/call-features", - "ui-kit/react-native/v4/ai-features" + "ui-kit/react-native/v4/messages", + "ui-kit/react-native/v4/message-header", + "ui-kit/react-native/v4/message-list", + "ui-kit/react-native/v4/message-template", + "ui-kit/react-native/v4/message-composer", + "ui-kit/react-native/v4/message-information", + "ui-kit/react-native/v4/threaded-messages" ] }, { - "group": "Theming", + "group": "Interactive Messages", "pages": [ - "ui-kit/react-native/v4/theme", - "ui-kit/react-native/v4/localize", - "ui-kit/react-native/v4/sound-manager" + "ui-kit/react-native/v4/interactive-form-bubble", + "ui-kit/react-native/v4/interactive-form-message", + "ui-kit/react-native/v4/interactive-card-bubble", + "ui-kit/react-native/v4/interactive-card-message", + "ui-kit/react-native/v4/interactive-element-entity", + "ui-kit/react-native/v4/interactive-action-entity", + "ui-kit/react-native/v4/interactive-custom-interactive-message", + "ui-kit/react-native/v4/interactive-button-element", + "ui-kit/react-native/v4/interactive-textinput-element", + "ui-kit/react-native/v4/interactive-label-element", + "ui-kit/react-native/v4/interactive-single-select-element", + "ui-kit/react-native/v4/interactive-radio-button-element", + "ui-kit/react-native/v4/interactive-checkbox-element", + "ui-kit/react-native/v4/interactive-dropdown-element" ] }, { - "group": "Components", + "group": "Calls", "pages": [ - "ui-kit/react-native/v4/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/react-native/v4/conversations", - "ui-kit/react-native/v4/conversations-with-messages", - "ui-kit/react-native/v4/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/react-native/v4/users", - "ui-kit/react-native/v4/users-with-messages", - "ui-kit/react-native/v4/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/react-native/v4/groups", - "ui-kit/react-native/v4/groups-with-messages", - "ui-kit/react-native/v4/create-group", - "ui-kit/react-native/v4/join-protected-group", - "ui-kit/react-native/v4/group-members", - "ui-kit/react-native/v4/group-add-members", - "ui-kit/react-native/v4/group-banned-members", - "ui-kit/react-native/v4/group-transfer-ownership", - "ui-kit/react-native/v4/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/react-native/v4/messages", - "ui-kit/react-native/v4/message-header", - "ui-kit/react-native/v4/message-list", - "ui-kit/react-native/v4/message-template", - "ui-kit/react-native/v4/message-composer", - "ui-kit/react-native/v4/message-information", - "ui-kit/react-native/v4/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/react-native/v4/interactive-form-bubble", - "ui-kit/react-native/v4/interactive-form-message", - "ui-kit/react-native/v4/interactive-card-bubble", - "ui-kit/react-native/v4/interactive-card-message", - "ui-kit/react-native/v4/interactive-element-entity", - "ui-kit/react-native/v4/interactive-action-entity", - "ui-kit/react-native/v4/interactive-custom-interactive-message", - "ui-kit/react-native/v4/interactive-button-element", - "ui-kit/react-native/v4/interactive-textinput-element", - "ui-kit/react-native/v4/interactive-label-element", - "ui-kit/react-native/v4/interactive-single-select-element", - "ui-kit/react-native/v4/interactive-radio-button-element", - "ui-kit/react-native/v4/interactive-checkbox-element", - "ui-kit/react-native/v4/interactive-dropdown-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/react-native/v4/call-overview", - "ui-kit/react-native/v4/incoming-call", - "ui-kit/react-native/v4/outgoing-call", - "ui-kit/react-native/v4/ongoing-call", - "ui-kit/react-native/v4/call-buttons", - "ui-kit/react-native/v4/call-logs", - "ui-kit/react-native/v4/call-log-history", - "ui-kit/react-native/v4/call-log-recording", - "ui-kit/react-native/v4/call-log-participants", - "ui-kit/react-native/v4/call-log-details", - "ui-kit/react-native/v4/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/react-native/v4/reaction", - "ui-kit/react-native/v4/reaction-list", - "ui-kit/react-native/v4/quick-reactions" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/react-native/v4/avatar", - "ui-kit/react-native/v4/status-indicator", - "ui-kit/react-native/v4/badge", - "ui-kit/react-native/v4/receipt", - "ui-kit/react-native/v4/date", - "ui-kit/react-native/v4/text-bubble", - "ui-kit/react-native/v4/image-bubble", - "ui-kit/react-native/v4/file-bubble", - "ui-kit/react-native/v4/audio-bubble", - "ui-kit/react-native/v4/video-bubble", - "ui-kit/react-native/v4/message-bubble", - "ui-kit/react-native/v4/media-recorder", - "ui-kit/react-native/v4/list-item", - "ui-kit/react-native/v4/label-alignment" - ] - } + "ui-kit/react-native/v4/call-overview", + "ui-kit/react-native/v4/incoming-call", + "ui-kit/react-native/v4/outgoing-call", + "ui-kit/react-native/v4/ongoing-call", + "ui-kit/react-native/v4/call-buttons", + "ui-kit/react-native/v4/call-logs", + "ui-kit/react-native/v4/call-log-history", + "ui-kit/react-native/v4/call-log-recording", + "ui-kit/react-native/v4/call-log-participants", + "ui-kit/react-native/v4/call-log-details", + "ui-kit/react-native/v4/call-log-with-details" ] }, { - "group": "References", + "group": "Extras", "pages": [ - "ui-kit/react-native/v4/methods", - "ui-kit/react-native/v4/events" + "ui-kit/react-native/v4/reaction", + "ui-kit/react-native/v4/reaction-list", + "ui-kit/react-native/v4/quick-reactions" ] }, { - "group": "Guides", + "group": "Base Components", "pages": [ - "ui-kit/react-native/v4/multi-tab-chat-ui-guide", - "ui-kit/react-native/v4/expo-integration-guide", - "ui-kit/react-native/v4/apple-privacy-manifest-guide", - "ui-kit/react-native/v4/mentions-formatter-guide", - "ui-kit/react-native/v4/shortcut-formatter-guide" + "ui-kit/react-native/v4/avatar", + "ui-kit/react-native/v4/status-indicator", + "ui-kit/react-native/v4/badge", + "ui-kit/react-native/v4/receipt", + "ui-kit/react-native/v4/date", + "ui-kit/react-native/v4/text-bubble", + "ui-kit/react-native/v4/image-bubble", + "ui-kit/react-native/v4/file-bubble", + "ui-kit/react-native/v4/audio-bubble", + "ui-kit/react-native/v4/video-bubble", + "ui-kit/react-native/v4/message-bubble", + "ui-kit/react-native/v4/media-recorder", + "ui-kit/react-native/v4/list-item", + "ui-kit/react-native/v4/label-alignment" ] - }, - "ui-kit/react-native/v4/link/sample", - "ui-kit/react-native/link/changelog" + } ] - } - ] - }, - { - "version": "v3‎", - "groups": [ + }, { - "group": " ", + "group": "References", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react-native/v3/overview", - "ui-kit/react-native/v3/key-concepts" - ] - }, - "ui-kit/react-native/v3/ui-components", - "ui-kit/react-native/v3/customize-ui-kit", - "ui-kit/react-native/v3/link/sdk", - "ui-kit/react-native/v3/link/extension", - "ui-kit/react-native/v3/link/version" + "ui-kit/react-native/v4/methods", + "ui-kit/react-native/v4/events" ] - } - ] - }, + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react-native/v4/multi-tab-chat-ui-guide", + "ui-kit/react-native/v4/expo-integration-guide", + "ui-kit/react-native/v4/apple-privacy-manifest-guide", + "ui-kit/react-native/v4/mentions-formatter-guide", + "ui-kit/react-native/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/react-native/v4/link/sample", + "ui-kit/react-native/link/changelog" + ] + } + ] + }, + { + "version": "v3‎", + "groups": [ { - "version": "v2‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react-native/v2/overview", - "ui-kit/react-native/v2/key-concepts", - "ui-kit/react-native/v2/message-structure-and-hierarchy" - ] - }, - "ui-kit/react-native/v2/ui-components", - "ui-kit/react-native/v2/customize-ui-kit", - "ui-kit/react-native/v3/link/sdk", - "ui-kit/react-native/v3/link/extension" + "ui-kit/react-native/v3/overview", + "ui-kit/react-native/v3/key-concepts" ] - } + }, + "ui-kit/react-native/v3/ui-components", + "ui-kit/react-native/v3/customize-ui-kit", + "ui-kit/react-native/v3/link/sdk", + "ui-kit/react-native/v3/link/extension", + "ui-kit/react-native/v3/link/version" ] } ] }, { - "dropdown": "iOS", - "icon": "/images/icons/swift.svg", - "versions": [ + "version": "v2‎", + "groups": [ { - "version": "v5‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", + "pages": [ + "ui-kit/react-native/v2/overview", + "ui-kit/react-native/v2/key-concepts", + "ui-kit/react-native/v2/message-structure-and-hierarchy" + ] + }, + "ui-kit/react-native/v2/ui-components", + "ui-kit/react-native/v2/customize-ui-kit", + "ui-kit/react-native/v3/link/sdk", + "ui-kit/react-native/v3/link/extension" + ] + } + ] + } + ] + }, + { + "dropdown": "iOS", + "icon": "swift", + "versions": [ + { + "version": "v5‎‎", + "groups": [ + { + "group": " ", + "pages": [ + "ui-kit/ios/overview", + { + "group": "Getting Started", + "pages": [ + "ui-kit/ios/getting-started", + "ui-kit/ios/ios-conversation", + "ui-kit/ios/ios-one-to-one-chat", + "ui-kit/ios/ios-tab-based-chat" + ] + }, + { + "group": "Features", "pages": [ - "ui-kit/ios/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/ios/getting-started", - "ui-kit/ios/ios-conversation", - "ui-kit/ios/ios-one-to-one-chat", - "ui-kit/ios/ios-tab-based-chat", - "ui-kit/ios/calling-integration" - ] - }, - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/ios/core-features", - "ui-kit/ios/extensions", - "ui-kit/ios/ai-features" - ] - }, - "ui-kit/ios/call-features" - ] - }, { - "group": "Theming", + "group": "Chat", "pages": [ - "ui-kit/ios/theme-introduction", - "ui-kit/ios/color-resources", - "ui-kit/ios/component-styling", - "ui-kit/ios/message-bubble-styling", - "ui-kit/ios/localize", - "ui-kit/ios/sound-manager" + "ui-kit/ios/core-features", + "ui-kit/ios/extensions" ] }, + "ui-kit/ios/call-features", + "ui-kit/ios/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/ios/theme-introduction", + "ui-kit/ios/color-resources", + "ui-kit/ios/component-styling", + "ui-kit/ios/message-bubble-styling", + "ui-kit/ios/localize", + "ui-kit/ios/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/ios/components-overview", + "ui-kit/ios/conversations", + "ui-kit/ios/users", + "ui-kit/ios/groups", + "ui-kit/ios/group-members", + "ui-kit/ios/message-header", + "ui-kit/ios/message-list", + "ui-kit/ios/message-composer", + "ui-kit/ios/threaded-messages-header", + "ui-kit/ios/incoming-call", + "ui-kit/ios/outgoing-call", + "ui-kit/ios/ongoing-call", + "ui-kit/ios/call-buttons", + "ui-kit/ios/call-logs" + ] + }, + { + "group": "Reference", + "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] + }, + { + "group": "Advanced", + "pages": [ + "ui-kit/ios/shortcut-formatter-guide", + "ui-kit/ios/mentions-formatter-guide", + "ui-kit/ios/message-template" + ] + }, + "ui-kit/ios/link/sample", + "ui-kit/ios/link/figma", + "ui-kit/ios/link/changelog" + ] + } + ] + }, + { + "version": "v4‎‎", + "groups": [ + { + "group": " ", + "pages": [ + "ui-kit/ios/v4/overview", + "ui-kit/ios/v4/getting-started", + { + "group": "Features", + "pages": [ { - "group": "Components", + "group": "Chat", "pages": [ - "ui-kit/ios/components-overview", - "ui-kit/ios/conversations", - "ui-kit/ios/users", - "ui-kit/ios/groups", - "ui-kit/ios/group-members", - "ui-kit/ios/message-header", - "ui-kit/ios/message-list", - "ui-kit/ios/message-composer", - "ui-kit/ios/threaded-messages-header", - "ui-kit/ios/incoming-call", - "ui-kit/ios/outgoing-call", - "ui-kit/ios/ongoing-call", - "ui-kit/ios/call-buttons", - "ui-kit/ios/call-logs", - "ui-kit/ios/ai-assistant-chat-history", - "ui-kit/ios/search" + "ui-kit/ios/v4/core-features", + "ui-kit/ios/v4/extensions" ] }, + "ui-kit/ios/v4/call-features", + "ui-kit/ios/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/ios/v4/theme", + "ui-kit/ios/v4/localize", + "ui-kit/ios/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/ios/v4/components-overview", { - "group": "Reference", - "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] - }, - { - "group": "Advanced", + "group": "Conversations", "pages": [ - "ui-kit/ios/shortcut-formatter-guide", - "ui-kit/ios/mentions-formatter-guide", - "ui-kit/ios/message-template" + "ui-kit/ios/v4/conversations", + "ui-kit/ios/v4/conversations-with-messages", + "ui-kit/ios/v4/contacts" ] }, { - "group": "Guides", + "group": "Users", "pages": [ - "ui-kit/ios/guide-overview", - "ui-kit/ios/guide-threaded-messages", - "ui-kit/ios/guide-block-unblock-user", - "ui-kit/ios/guide-new-chat", - "ui-kit/ios/guide-message-privately", - "ui-kit/ios/guide-call-log-details", - "ui-kit/ios/guide-group-chat", - "ui-kit/ios/guide-group-ownership", - "ui-kit/ios/guide-ai-agent" + "ui-kit/ios/v4/users", + "ui-kit/ios/v4/users-with-messages", + "ui-kit/ios/v4/user-details" ] }, { - "group": "Migration Guide", + "group": "Groups", "pages": [ - "ui-kit/ios/upgrading-from-v4" + "ui-kit/ios/v4/groups", + "ui-kit/ios/v4/groups-with-messages", + "ui-kit/ios/v4/create-group", + "ui-kit/ios/v4/join-protected-group", + "ui-kit/ios/v4/group-members", + "ui-kit/ios/v4/group-add-members", + "ui-kit/ios/v4/group-banned-members", + "ui-kit/ios/v4/group-transfer-ownership", + "ui-kit/ios/v4/group-details" ] }, - "ui-kit/ios/troubleshooting", - "ui-kit/ios/link/sample", - "ui-kit/ios/link/figma", - "ui-kit/ios/link/changelog" - ] - } - ] - }, - { - "version": "v4‎‎", - "groups": [ - { - "group": " ", - "pages": [ - "ui-kit/ios/v4/overview", - "ui-kit/ios/v4/getting-started", { - "group": "Features", + "group": "Messages", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/ios/v4/core-features", - "ui-kit/ios/v4/extensions" - ] - }, - "ui-kit/ios/v4/call-features", - "ui-kit/ios/v4/ai-features" + "ui-kit/ios/v4/messages", + "ui-kit/ios/v4/message-header", + "ui-kit/ios/v4/message-list", + "ui-kit/ios/v4/message-template", + "ui-kit/ios/v4/message-composer", + "ui-kit/ios/v4/message-information", + "ui-kit/ios/v4/threaded-messages" ] }, { - "group": "Theming", + "group": "Interactive Messages", "pages": [ - "ui-kit/ios/v4/theme", - "ui-kit/ios/v4/localize", - "ui-kit/ios/v4/sound-manager" + "ui-kit/ios/v4/interactive-form-bubble", + "ui-kit/ios/v4/interactive-form-message", + "ui-kit/ios/v4/interactive-card-bubble", + "ui-kit/ios/v4/interactive-card-message", + "ui-kit/ios/v4/interactive-element-entity", + "ui-kit/ios/v4/interactive-action-entity", + "ui-kit/ios/v4/interactive-button-element", + "ui-kit/ios/v4/interactive-label-element", + "ui-kit/ios/v4/interactive-radio-button-element", + "ui-kit/ios/v4/interactive-check-box-element", + "ui-kit/ios/v4/interactive-textinput-element", + "ui-kit/ios/v4/interactive-scheduler-message", + "ui-kit/ios/v4/interactive-scheduler-bubble", + "ui-kit/ios/v4/interactive-date-time-picker-element", + "ui-kit/ios/v4/interactive-dropdown-element" ] }, { - "group": "Components", + "group": "Calls", "pages": [ - "ui-kit/ios/v4/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/ios/v4/conversations", - "ui-kit/ios/v4/conversations-with-messages", - "ui-kit/ios/v4/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/ios/v4/users", - "ui-kit/ios/v4/users-with-messages", - "ui-kit/ios/v4/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/ios/v4/groups", - "ui-kit/ios/v4/groups-with-messages", - "ui-kit/ios/v4/create-group", - "ui-kit/ios/v4/join-protected-group", - "ui-kit/ios/v4/group-members", - "ui-kit/ios/v4/group-add-members", - "ui-kit/ios/v4/group-banned-members", - "ui-kit/ios/v4/group-transfer-ownership", - "ui-kit/ios/v4/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/ios/v4/messages", - "ui-kit/ios/v4/message-header", - "ui-kit/ios/v4/message-list", - "ui-kit/ios/v4/message-template", - "ui-kit/ios/v4/message-composer", - "ui-kit/ios/v4/message-information", - "ui-kit/ios/v4/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/ios/v4/interactive-form-bubble", - "ui-kit/ios/v4/interactive-form-message", - "ui-kit/ios/v4/interactive-card-bubble", - "ui-kit/ios/v4/interactive-card-message", - "ui-kit/ios/v4/interactive-element-entity", - "ui-kit/ios/v4/interactive-action-entity", - "ui-kit/ios/v4/interactive-button-element", - "ui-kit/ios/v4/interactive-label-element", - "ui-kit/ios/v4/interactive-radio-button-element", - "ui-kit/ios/v4/interactive-check-box-element", - "ui-kit/ios/v4/interactive-textinput-element", - "ui-kit/ios/v4/interactive-scheduler-message", - "ui-kit/ios/v4/interactive-scheduler-bubble", - "ui-kit/ios/v4/interactive-date-time-picker-element", - "ui-kit/ios/v4/interactive-dropdown-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/ios/v4/call-overview", - "ui-kit/ios/v4/incoming-call", - "ui-kit/ios/v4/ongoing-call", - "ui-kit/ios/v4/outgoing-call", - "ui-kit/ios/v4/call-buttons", - "ui-kit/ios/v4/call-logs", - "ui-kit/ios/v4/call-log-details", - "ui-kit/ios/v4/call-log-history", - "ui-kit/ios/v4/call-log-recording", - "ui-kit/ios/v4/call-log-participants", - "ui-kit/ios/v4/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/ios/v4/reactions", - "ui-kit/ios/v4/quick-reactions", - "ui-kit/ios/v4/reactions-list" - ] - }, - { - "group": "Base-Components", - "pages": [ - "ui-kit/ios/v4/avatar", - "ui-kit/ios/v4/status-indicator", - "ui-kit/ios/v4/badge", - "ui-kit/ios/v4/receipt", - "ui-kit/ios/v4/date", - "ui-kit/ios/v4/text-bubble", - "ui-kit/ios/v4/image-bubble", - "ui-kit/ios/v4/file-bubble", - "ui-kit/ios/v4/audio-bubble", - "ui-kit/ios/v4/video-bubble", - "ui-kit/ios/v4/message-bubble", - "ui-kit/ios/v4/message-input", - "ui-kit/ios/v4/action-sheet", - "ui-kit/ios/v4/media-recorder", - "ui-kit/ios/v4/list-item", - "ui-kit/ios/v4/list-base" - ] - } + "ui-kit/ios/v4/call-overview", + "ui-kit/ios/v4/incoming-call", + "ui-kit/ios/v4/ongoing-call", + "ui-kit/ios/v4/outgoing-call", + "ui-kit/ios/v4/call-buttons", + "ui-kit/ios/v4/call-logs", + "ui-kit/ios/v4/call-log-details", + "ui-kit/ios/v4/call-log-history", + "ui-kit/ios/v4/call-log-recording", + "ui-kit/ios/v4/call-log-participants", + "ui-kit/ios/v4/call-log-with-details" ] }, { - "group": "Reference", + "group": "Extras", "pages": [ - "ui-kit/ios/v4/methods", - "ui-kit/ios/v4/events" + "ui-kit/ios/v4/reactions", + "ui-kit/ios/v4/quick-reactions", + "ui-kit/ios/v4/reactions-list" ] }, { - "group": "Guides", + "group": "Base-Components", "pages": [ - "ui-kit/ios/v4/multi-tab-chat-ui-guide", - "ui-kit/ios/v4/mentions-formatter-guide", - "ui-kit/ios/v4/shortcut-formatter-guide" + "ui-kit/ios/v4/avatar", + "ui-kit/ios/v4/status-indicator", + "ui-kit/ios/v4/badge", + "ui-kit/ios/v4/receipt", + "ui-kit/ios/v4/date", + "ui-kit/ios/v4/text-bubble", + "ui-kit/ios/v4/image-bubble", + "ui-kit/ios/v4/file-bubble", + "ui-kit/ios/v4/audio-bubble", + "ui-kit/ios/v4/video-bubble", + "ui-kit/ios/v4/message-bubble", + "ui-kit/ios/v4/message-input", + "ui-kit/ios/v4/action-sheet", + "ui-kit/ios/v4/media-recorder", + "ui-kit/ios/v4/list-item", + "ui-kit/ios/v4/list-base" ] - }, - "ui-kit/ios/v4/link/sample", - "ui-kit/ios/link/changelog" + } ] - } + }, + { + "group": "Reference", + "pages": [ + "ui-kit/ios/v4/methods", + "ui-kit/ios/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/ios/v4/multi-tab-chat-ui-guide", + "ui-kit/ios/v4/mentions-formatter-guide", + "ui-kit/ios/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/ios/v4/link/sample", + "ui-kit/ios/link/changelog" ] - }, + } + ] + }, + { + "version": "v3‎‎", + "groups": [ + { + "group": " ", + "pages": [ + { + "group": "Overview", + "pages": [ + "ui-kit/ios/v3/overview", + "ui-kit/ios/v3/key-concepts" + ] + }, + "ui-kit/ios/v3/ios-ui-components", + "ui-kit/ios/v3/customize-ui-kit", + "ui-kit/ios/v3/ios-3-0-overview", + "ui-kit/ios/v3/link/extension", + "ui-kit/ios/v3/link/version" + ] + } + ] + }, + { + "version": "v2‎‎", + "groups": [ { - "version": "v3‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/ios/v3/overview", - "ui-kit/ios/v3/key-concepts" - ] - }, - "ui-kit/ios/v3/ios-ui-components", - "ui-kit/ios/v3/customize-ui-kit", - "ui-kit/ios/v3/ios-3-0-overview", - "ui-kit/ios/v3/link/extension", - "ui-kit/ios/v3/link/version" + "ui-kit/ios/v2/overview", + "ui-kit/ios/v2/key-concepts", + "ui-kit/ios/v2/message-structure-and-hierarchy" ] - } + }, + "ui-kit/ios/v2/ui-components", + "ui-kit/ios/v2/ios-customize-ui-kit", + "ui-kit/ios/v2/ios-2-0-overview", + "ui-kit/ios/v3/link/extension" ] - }, + } + ] + } + ] + }, + { + "dropdown": "Android", + "icon": "android", + "versions": [ + { + "version": "v5‎‎‎", + "groups": [ { - "version": "v2‎‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/android/overview", + { + "group": "Getting Started", + "pages": [ + "ui-kit/android/getting-started", + "ui-kit/android/android-conversation", + "ui-kit/android/android-one-to-one-chat", + "ui-kit/android/android-tab-based-chat" + ] + }, { - "group": " ", + "group": "Features", "pages": [ { - "group": "Overview", + "group": "Chat", "pages": [ - "ui-kit/ios/v2/overview", - "ui-kit/ios/v2/key-concepts", - "ui-kit/ios/v2/message-structure-and-hierarchy" + "ui-kit/android/core-features", + "ui-kit/android/extensions", + "ui-kit/android/ai-features" ] }, - "ui-kit/ios/v2/ui-components", - "ui-kit/ios/v2/ios-customize-ui-kit", - "ui-kit/ios/v2/ios-2-0-overview", - "ui-kit/ios/v3/link/extension" + "ui-kit/android/call-features" ] - } + }, + { + "group": "Theming", + "pages": [ + "ui-kit/android/theme-introduction", + "ui-kit/android/color-resources", + "ui-kit/android/component-styling", + "ui-kit/android/message-bubble-styling", + "ui-kit/android/localize", + "ui-kit/android/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/android/components-overview", + "ui-kit/android/conversations", + "ui-kit/android/users", + "ui-kit/android/groups", + "ui-kit/android/group-members", + "ui-kit/android/message-header", + "ui-kit/android/message-list", + "ui-kit/android/message-composer", + "ui-kit/android/threaded-messages-header", + "ui-kit/android/incoming-call", + "ui-kit/android/outgoing-call", + "ui-kit/android/call-buttons", + "ui-kit/android/call-logs" + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/android/methods", + "ui-kit/android/events" + ] + }, + { + "group": "Advanced", + "pages": [ + "ui-kit/android/message-template", + "ui-kit/android/mentions-formatter-guide", + "ui-kit/android/shortcut-formatter-guide" + ] + }, + "ui-kit/android/link/sample", + "ui-kit/android/link/figma", + "ui-kit/android/link/changelog" ] } ] }, { - "dropdown": "Android", - "icon": "/images/icons/android.svg", - "versions": [ + "version": "v4‎‎‎", + "groups": [ { - "version": "v5‎‎‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/android/v4/overview", + "ui-kit/android/v4/getting-started", { - "group": " ", + "group": "Features", "pages": [ - "ui-kit/android/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/android/getting-started", - "ui-kit/android/android-conversation", - "ui-kit/android/android-one-to-one-chat", - "ui-kit/android/android-tab-based-chat", - "ui-kit/android/calling-integration" - ] - }, { - "group": "Features", + "group": "Chat", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/android/core-features", - "ui-kit/android/extensions", - "ui-kit/android/ai-features" - ] - }, - "ui-kit/android/call-features" + "ui-kit/android/v4/core-features", + "ui-kit/android/v4/extensions" ] }, + "ui-kit/android/v4/call-features", + "ui-kit/android/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/android/v4/theme", + "ui-kit/android/v4/localize", + "ui-kit/android/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/android/v4/components-overview", { - "group": "Theming", + "group": "Conversations", "pages": [ - "ui-kit/android/theme-introduction", - "ui-kit/android/color-resources", - "ui-kit/android/component-styling", - "ui-kit/android/message-bubble-styling", - "ui-kit/android/localize", - "ui-kit/android/sound-manager" + "ui-kit/android/v4/conversations", + "ui-kit/android/v4/conversations-with-messages", + "ui-kit/android/v4/contacts" ] }, { - "group": "Customization", + "group": "Users", "pages": [ - "ui-kit/android/customization-overview", - "ui-kit/android/customization-view-slots", - "ui-kit/android/customization-styles", - "ui-kit/android/customization-viewmodel-data", - "ui-kit/android/customization-adapters", - "ui-kit/android/customization-events", - "ui-kit/android/customization-state-views", - "ui-kit/android/customization-text-formatters", - "ui-kit/android/customization-menu-options", - "ui-kit/android/customization-datasource" + "ui-kit/android/v4/users", + "ui-kit/android/v4/users-with-messages" ] }, { - "group": "Components", + "group": "Groups", "pages": [ - "ui-kit/android/components-overview", - "ui-kit/android/conversations", - "ui-kit/android/users", - "ui-kit/android/groups", - "ui-kit/android/group-members", - "ui-kit/android/message-header", - "ui-kit/android/message-list", - "ui-kit/android/message-composer", - "ui-kit/android/message-template", - "ui-kit/android/threaded-messages-header", - "ui-kit/android/incoming-call", - "ui-kit/android/outgoing-call", - "ui-kit/android/call-buttons", - "ui-kit/android/call-logs", - "ui-kit/android/ai-assistant-chat-history", - "ui-kit/android/search" + "ui-kit/android/v4/groups", + "ui-kit/android/v4/groups-with-messages", + "ui-kit/android/v4/create-group", + "ui-kit/android/v4/join-protected-group", + "ui-kit/android/v4/group-members", + "ui-kit/android/v4/group-add-members", + "ui-kit/android/v4/banned-members", + "ui-kit/android/v4/transfer-ownership", + "ui-kit/android/v4/group-details" ] }, { - "group": "Reference", + "group": "Messages", "pages": [ - "ui-kit/android/methods", - "ui-kit/android/events" + "ui-kit/android/v4/messages", + "ui-kit/android/v4/message-header", + "ui-kit/android/v4/message-list", + "ui-kit/android/v4/message-template", + "ui-kit/android/v4/message-composer", + "ui-kit/android/v4/message-information", + "ui-kit/android/v4/threaded-messages" ] }, { - "group": "Guides", + "group": "Interactive Messages", "pages": [ - "ui-kit/android/guide-overview", - "ui-kit/android/guide-threaded-messages", - "ui-kit/android/guide-block-unblock-user", - "ui-kit/android/guide-new-chat", - "ui-kit/android/guide-message-privately", - "ui-kit/android/guide-search-messages", - "ui-kit/android/guide-call-log-details", - "ui-kit/android/guide-group-chat", - "ui-kit/android/guide-ai-agent", - "ui-kit/android/custom-text-formatter-guide", - "ui-kit/android/mentions-formatter-guide", - "ui-kit/android/shortcut-formatter-guide" + "ui-kit/android/v4/interactive-form-bubble", + "ui-kit/android/v4/interactive-form-message", + "ui-kit/android/v4/interactive-card-bubble", + "ui-kit/android/v4/interactive-card-message", + "ui-kit/android/v4/interactive-element-entity", + "ui-kit/android/v4/interactive-action-entity", + "ui-kit/android/v4/interactive-custom-message", + "ui-kit/android/v4/interactive-button-element", + "ui-kit/android/v4/interactive-textinput-element", + "ui-kit/android/v4/interactive-label-element", + "ui-kit/android/v4/interactive-single-select-element", + "ui-kit/android/v4/interactive-radio-button-element", + "ui-kit/android/v4/interactive-checkbox-element", + "ui-kit/android/v4/interactive-spinner-element", + "ui-kit/android/v4/interactive-scheduler-message", + "ui-kit/android/v4/interactive-date-time-element" ] }, { - "group": "Migration Guide", + "group": "Calls", "pages": [ - "ui-kit/android/upgrading-from-v4" + "ui-kit/android/v4/call-overview", + "ui-kit/android/v4/incoming-call", + "ui-kit/android/v4/ongoing-call", + "ui-kit/android/v4/outgoing-call", + "ui-kit/android/v4/call-buttons", + "ui-kit/android/v4/call-logs", + "ui-kit/android/v4/call-log-details", + "ui-kit/android/v4/call-log-history", + "ui-kit/android/v4/call-log-recording", + "ui-kit/android/v4/call-log-participants", + "ui-kit/android/v4/call-log-with-details" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/android/v4/avatar", + "ui-kit/android/v4/status-indicator", + "ui-kit/android/v4/badge", + "ui-kit/android/v4/receipt", + "ui-kit/android/v4/date", + "ui-kit/android/v4/text-bubble", + "ui-kit/android/v4/image-bubble", + "ui-kit/android/v4/file-bubble", + "ui-kit/android/v4/audio-bubble", + "ui-kit/android/v4/video-bubble", + "ui-kit/android/v4/message-bubble", + "ui-kit/android/v4/message-input", + "ui-kit/android/v4/action-sheet", + "ui-kit/android/v4/media-recorder", + "ui-kit/android/v4/list-item", + "ui-kit/android/v4/list-base" ] - }, - "ui-kit/android/troubleshooting", - "ui-kit/android/link/sample", - "ui-kit/android/link/figma", - "ui-kit/android/link/changelog" + } ] - } + }, + { + "group": "Reference", + "pages": [ + "ui-kit/android/v4/methods", + "ui-kit/android/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/android/v4/multi-tab-chat-ui-guide", + "ui-kit/android/v4/mentions-formatter-guide", + "ui-kit/android/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/android/v4/link/java", + "ui-kit/android/v4/link/kotlin", + "ui-kit/android/v4/link/changelog" ] - }, + } + ] + }, + { + "version": "v3‎‎‎", + "groups": [ { - "version": "v4‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - "ui-kit/android/v4/overview", - "ui-kit/android/v4/getting-started", - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/android/v4/core-features", - "ui-kit/android/v4/extensions" - ] - }, - "ui-kit/android/v4/call-features", - "ui-kit/android/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/android/v4/theme", - "ui-kit/android/v4/localize", - "ui-kit/android/v4/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/android/v4/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/android/v4/conversations", - "ui-kit/android/v4/conversations-with-messages", - "ui-kit/android/v4/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/android/v4/users", - "ui-kit/android/v4/users-with-messages" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/android/v4/groups", - "ui-kit/android/v4/groups-with-messages", - "ui-kit/android/v4/create-group", - "ui-kit/android/v4/join-protected-group", - "ui-kit/android/v4/group-members", - "ui-kit/android/v4/group-add-members", - "ui-kit/android/v4/banned-members", - "ui-kit/android/v4/transfer-ownership", - "ui-kit/android/v4/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/android/v4/messages", - "ui-kit/android/v4/message-header", - "ui-kit/android/v4/message-list", - "ui-kit/android/v4/message-template", - "ui-kit/android/v4/message-composer", - "ui-kit/android/v4/message-information", - "ui-kit/android/v4/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/android/v4/interactive-form-bubble", - "ui-kit/android/v4/interactive-form-message", - "ui-kit/android/v4/interactive-card-bubble", - "ui-kit/android/v4/interactive-card-message", - "ui-kit/android/v4/interactive-element-entity", - "ui-kit/android/v4/interactive-action-entity", - "ui-kit/android/v4/interactive-custom-message", - "ui-kit/android/v4/interactive-button-element", - "ui-kit/android/v4/interactive-textinput-element", - "ui-kit/android/v4/interactive-label-element", - "ui-kit/android/v4/interactive-single-select-element", - "ui-kit/android/v4/interactive-radio-button-element", - "ui-kit/android/v4/interactive-checkbox-element", - "ui-kit/android/v4/interactive-spinner-element", - "ui-kit/android/v4/interactive-scheduler-message", - "ui-kit/android/v4/interactive-date-time-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/android/v4/call-overview", - "ui-kit/android/v4/incoming-call", - "ui-kit/android/v4/ongoing-call", - "ui-kit/android/v4/outgoing-call", - "ui-kit/android/v4/call-buttons", - "ui-kit/android/v4/call-logs", - "ui-kit/android/v4/call-log-details", - "ui-kit/android/v4/call-log-history", - "ui-kit/android/v4/call-log-recording", - "ui-kit/android/v4/call-log-participants", - "ui-kit/android/v4/call-log-with-details" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/android/v4/avatar", - "ui-kit/android/v4/status-indicator", - "ui-kit/android/v4/badge", - "ui-kit/android/v4/receipt", - "ui-kit/android/v4/date", - "ui-kit/android/v4/text-bubble", - "ui-kit/android/v4/image-bubble", - "ui-kit/android/v4/file-bubble", - "ui-kit/android/v4/audio-bubble", - "ui-kit/android/v4/video-bubble", - "ui-kit/android/v4/message-bubble", - "ui-kit/android/v4/message-input", - "ui-kit/android/v4/action-sheet", - "ui-kit/android/v4/media-recorder", - "ui-kit/android/v4/list-item", - "ui-kit/android/v4/list-base" - ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/android/v4/methods", - "ui-kit/android/v4/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/android/v4/multi-tab-chat-ui-guide", - "ui-kit/android/v4/mentions-formatter-guide", - "ui-kit/android/v4/shortcut-formatter-guide" - ] - }, - "ui-kit/android/v4/link/java", - "ui-kit/android/v4/link/kotlin", - "ui-kit/android/v4/link/changelog" + "ui-kit/android/v3/overview", + "ui-kit/android/v3/conversationlist", + "ui-kit/android/v3/key-concepts", + "ui-kit/android/v3/how-to-add-uikit-module" ] - } + }, + "ui-kit/android/v3/android-java-ui-components", + "ui-kit/android/v3/android-customize-ui-kit", + "ui-kit/android/v3/folder-structure-android-uikit", + "ui-kit/android/v3/link/sdk", + "ui-kit/android/v3/link/extension", + "ui-kit/android/v3/link/version" ] - }, + } + ] + }, + { + "version": "v2‎‎‎", + "groups": [ { - "version": "v3‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/android/v3/overview", - "ui-kit/android/v3/conversationlist", - "ui-kit/android/v3/key-concepts", - "ui-kit/android/v3/how-to-add-uikit-module" - ] - }, - "ui-kit/android/v3/android-java-ui-components", - "ui-kit/android/v3/android-customize-ui-kit", - "ui-kit/android/v3/folder-structure-android-uikit", - "ui-kit/android/v3/link/sdk", - "ui-kit/android/v3/link/extension", - "ui-kit/android/v3/link/version" + "ui-kit/android/v2/overview", + "ui-kit/android/v2/key-concepts", + "ui-kit/android/v2/message-structure-and-hierarchy" ] - } + }, + "ui-kit/android/v2/ui-components", + "ui-kit/android/v2/customize-ui-kit", + "ui-kit/android/v2/folder-structure-android-uikit", + "ui-kit/android/v2/link/sdk", + "ui-kit/android/v3/link/extension" ] - }, + } + ] + } + ] + }, + { + "dropdown": "Flutter", + "icon": "flutter", + "versions": [ + { + "version": "v5‎‎‎‎", + "groups": [ { - "version": "v2‎‎‎", - "groups": [ + "group": " ", + "pages": [ + { + "group": "Overview", + "pages": ["ui-kit/flutter/overview"] + }, + { + "group": "Getting Started", + "pages": [ + "ui-kit/flutter/getting-started", + "ui-kit/flutter/flutter-conversation", + "ui-kit/flutter/flutter-one-to-one-chat", + "ui-kit/flutter/flutter-tab-based-chat" + ] + }, { - "group": " ", + "group": "Features", "pages": [ { - "group": "Overview", + "group": "Chat", "pages": [ - "ui-kit/android/v2/overview", - "ui-kit/android/v2/key-concepts", - "ui-kit/android/v2/message-structure-and-hierarchy" + "ui-kit/flutter/core-features", + "ui-kit/flutter/extensions" ] }, - "ui-kit/android/v2/ui-components", - "ui-kit/android/v2/customize-ui-kit", - "ui-kit/android/v2/folder-structure-android-uikit", - "ui-kit/android/v2/link/sdk", - "ui-kit/android/v3/link/extension" + "ui-kit/flutter/call-features", + "ui-kit/flutter/ai-features" ] - } + }, + { + "group": "Theming", + "pages": [ + "ui-kit/flutter/theme-introduction", + "ui-kit/flutter/color-resources", + "ui-kit/flutter/component-styling", + "ui-kit/flutter/message-bubble-styling", + "ui-kit/flutter/localize", + "ui-kit/flutter/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/flutter/components-overview", + "ui-kit/flutter/conversations", + "ui-kit/flutter/users", + "ui-kit/flutter/groups", + "ui-kit/flutter/group-members", + "ui-kit/flutter/message-header", + "ui-kit/flutter/message-list", + "ui-kit/flutter/message-composer", + "ui-kit/flutter/threaded-messages-header", + "ui-kit/flutter/incoming-call", + "ui-kit/flutter/outgoing-call", + "ui-kit/flutter/call-buttons", + "ui-kit/flutter/call-logs" + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/flutter/methods", + "ui-kit/flutter/events" + ] + }, + { + "group": "Advanced", + "pages": [ + "ui-kit/flutter/message-template", + "ui-kit/flutter/mentions-formatter-guide", + "ui-kit/flutter/shortcut-formatter-guide" + ] + }, + { + "group": "Guides", + "pages": ["ui-kit/flutter/multi-tab-chat-ui-guide"] + }, + "ui-kit/flutter/link/sample", + "ui-kit/flutter/link/changelog" ] } ] }, { - "dropdown": "Flutter", - "icon": "/images/icons/flutter.svg", - "versions": [ + "version": "v4‎‎‎‎", + "groups": [ { - "version": "v5‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/flutter/v4/overview", + "ui-kit/flutter/v4/getting-started", { - "group": " ", + "group": "Features", "pages": [ - "ui-kit/flutter/overview", { - "group": "Getting Started", + "group": "Chat", "pages": [ - "ui-kit/flutter/getting-started", - "ui-kit/flutter/flutter-conversation", - "ui-kit/flutter/flutter-one-to-one-chat", - "ui-kit/flutter/flutter-tab-based-chat", - "ui-kit/flutter/calling-integration" + "ui-kit/flutter/v4/core-features", + "ui-kit/flutter/v4/extensions" ] }, + "ui-kit/flutter/v4/call-features", + "ui-kit/flutter/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/flutter/v4/theme", + "ui-kit/flutter/v4/localize", + "ui-kit/flutter/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/flutter/v4/components-overview", { - "group": "Features", + "group": "Conversations", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/flutter/core-features", - "ui-kit/flutter/extensions", - "ui-kit/flutter/ai-features" - ] - }, - "ui-kit/flutter/call-features" + "ui-kit/flutter/v4/conversations", + "ui-kit/flutter/v4/conversations-with-messages", + "ui-kit/flutter/v4/contacts" ] }, { - "group": "Theming", + "group": "Users", "pages": [ - "ui-kit/flutter/theme-introduction", - "ui-kit/flutter/color-resources", - "ui-kit/flutter/component-styling", - "ui-kit/flutter/message-bubble-styling", - "ui-kit/flutter/localize", - "ui-kit/flutter/sound-manager" + "ui-kit/flutter/v4/users", + "ui-kit/flutter/v4/users-with-messages", + "ui-kit/flutter/v4/user-details" ] }, { - "group": "Components", + "group": "Groups", "pages": [ - "ui-kit/flutter/components-overview", - "ui-kit/flutter/conversations", - "ui-kit/flutter/users", - "ui-kit/flutter/groups", - "ui-kit/flutter/group-members", - "ui-kit/flutter/message-header", - "ui-kit/flutter/message-list", - "ui-kit/flutter/message-composer", - "ui-kit/flutter/message-template", - "ui-kit/flutter/threaded-messages-header", - "ui-kit/flutter/incoming-call", - "ui-kit/flutter/outgoing-call", - "ui-kit/flutter/call-buttons", - "ui-kit/flutter/call-logs", - "ui-kit/flutter/search", - "ui-kit/flutter/ai-assistant-chat-history" + "ui-kit/flutter/v4/groups", + "ui-kit/flutter/v4/groups-with-messages", + "ui-kit/flutter/v4/create-group", + "ui-kit/flutter/v4/join-protected-group", + "ui-kit/flutter/v4/group-members", + "ui-kit/flutter/v4/group-add-members", + "ui-kit/flutter/v4/group-banned-members", + "ui-kit/flutter/v4/group-transfer-ownership", + "ui-kit/flutter/v4/group-details" ] }, { - "group": "Reference", + "group": "Messages", "pages": [ - "ui-kit/flutter/methods", - "ui-kit/flutter/events" + "ui-kit/flutter/v4/messages", + "ui-kit/flutter/v4/message-header", + "ui-kit/flutter/v4/message-list", + "ui-kit/flutter/v4/message-template", + "ui-kit/flutter/v4/message-composer", + "ui-kit/flutter/v4/message-information", + "ui-kit/flutter/v4/threaded-messages" ] }, { - "group": "Guides", + "group": "Interactive Messages", "pages": [ - "ui-kit/flutter/guide-overview", - "ui-kit/flutter/guide-threaded-messages", - "ui-kit/flutter/guide-block-unblock-user", - "ui-kit/flutter/guide-new-chat", - "ui-kit/flutter/guide-message-privately", - "ui-kit/flutter/guide-search-messages", - "ui-kit/flutter/guide-call-log-details", - "ui-kit/flutter/guide-group-chat", - "ui-kit/flutter/guide-message-agentic-flow", - "ui-kit/flutter/custom-text-formatter-guide", - "ui-kit/flutter/mentions-formatter-guide", - "ui-kit/flutter/url-formatter-guide", - "ui-kit/flutter/shortcut-formatter-guide" + "ui-kit/flutter/v4/interactive-form-bubble", + "ui-kit/flutter/v4/interactive-form-message", + "ui-kit/flutter/v4/interactive-card-bubble", + "ui-kit/flutter/v4/interactive-card-message", + "ui-kit/flutter/v4/interactive-element-entity", + "ui-kit/flutter/v4/interactive-action-entity", + "ui-kit/flutter/v4/interactive-button-element", + "ui-kit/flutter/v4/interactive-label-element", + "ui-kit/flutter/v4/interactive-radio-button-element", + "ui-kit/flutter/v4/interactive-check-box-element", + "ui-kit/flutter/v4/interactive-textinput-element", + "ui-kit/flutter/v4/interactive-scheduler-message", + "ui-kit/flutter/v4/interactive-scheduler-bubble", + "ui-kit/flutter/v4/interactive-date-time-picker-element", + "ui-kit/flutter/v4/interactive-dropdown-element" ] }, { - "group": "Migration Guide", + "group": "Calls", "pages": [ - "ui-kit/flutter/upgrading-from-v4" + "ui-kit/flutter/v4/call-overview", + "ui-kit/flutter/v4/incoming-call", + "ui-kit/flutter/v4/ongoing-call", + "ui-kit/flutter/v4/outgoing-call", + "ui-kit/flutter/v4/call-buttons", + "ui-kit/flutter/v4/call-logs", + "ui-kit/flutter/v4/call-log-details", + "ui-kit/flutter/v4/call-log-history", + "ui-kit/flutter/v4/call-log-recording", + "ui-kit/flutter/v4/call-log-participants", + "ui-kit/flutter/v4/call-log-with-details" + ] + }, + { + "group": "Base-Components", + "pages": [ + "ui-kit/flutter/v4/status-indicator", + "ui-kit/flutter/v4/badge", + "ui-kit/flutter/v4/receipt", + "ui-kit/flutter/v4/date", + "ui-kit/flutter/v4/text-bubble", + "ui-kit/flutter/v4/image-bubble", + "ui-kit/flutter/v4/file-bubble", + "ui-kit/flutter/v4/audio-bubble", + "ui-kit/flutter/v4/video-bubble", + "ui-kit/flutter/v4/message-bubble", + "ui-kit/flutter/v4/message-input", + "ui-kit/flutter/v4/action-sheet", + "ui-kit/flutter/v4/emoji-keyboard", + "ui-kit/flutter/v4/list-item", + "ui-kit/flutter/v4/list-base", + "ui-kit/flutter/v4/confirm-dialog", + "ui-kit/flutter/v4/card", + "ui-kit/flutter/v4/button", + "ui-kit/flutter/v4/media-recorder", + "ui-kit/flutter/v4/call-bubble", + "ui-kit/flutter/v4/quick-view", + "ui-kit/flutter/v4/single-select", + "ui-kit/flutter/v4/avatar" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/flutter/v4/reactions", + "ui-kit/flutter/v4/reactions-list" ] - }, - "ui-kit/flutter/link/sample", - "ui-kit/flutter/link/changelog", - "ui-kit/flutter/troubleshooting" + } ] - } + }, + { + "group": "Reference", + "pages": [ + "ui-kit/flutter/v4/methods", + "ui-kit/flutter/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/flutter/v4/multi-tab-chat-ui-guide", + "ui-kit/flutter/v4/mentions-formatter-guide", + "ui-kit/flutter/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/flutter/link/sample", + "ui-kit/flutter/link/changelog" ] - }, + } + ] + } + ] + }, + { + "dropdown": "Angular", + "icon": "angular", + "versions": [ + { + "version": "v4‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/angular/overview", + "ui-kit/angular/getting-started", { - "group": " ", + "group": "Features", "pages": [ - "ui-kit/flutter/v4/overview", - "ui-kit/flutter/v4/getting-started", { - "group": "Features", + "group": "Chat", "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/flutter/v4/core-features", - "ui-kit/flutter/v4/extensions" - ] - }, - "ui-kit/flutter/v4/call-features", - "ui-kit/flutter/v4/ai-features" + "ui-kit/angular/core-features", + "ui-kit/angular/extensions" ] }, + "ui-kit/angular/call-features", + "ui-kit/angular/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/angular/theme", + "ui-kit/angular/localize", + "ui-kit/angular/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/angular/components-overview", { - "group": "Theming", + "group": "Conversations", "pages": [ - "ui-kit/flutter/v4/theme", - "ui-kit/flutter/v4/localize", - "ui-kit/flutter/v4/sound-manager" + "ui-kit/angular/conversations", + "ui-kit/angular/conversations-with-messages", + "ui-kit/angular/contacts" ] }, { - "group": "Components", + "group": "Users", "pages": [ - "ui-kit/flutter/v4/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/flutter/v4/conversations", - "ui-kit/flutter/v4/conversations-with-messages", - "ui-kit/flutter/v4/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/flutter/v4/users", - "ui-kit/flutter/v4/users-with-messages", - "ui-kit/flutter/v4/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/flutter/v4/groups", - "ui-kit/flutter/v4/groups-with-messages", - "ui-kit/flutter/v4/create-group", - "ui-kit/flutter/v4/join-protected-group", - "ui-kit/flutter/v4/group-members", - "ui-kit/flutter/v4/group-add-members", - "ui-kit/flutter/v4/group-banned-members", - "ui-kit/flutter/v4/group-transfer-ownership", - "ui-kit/flutter/v4/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/flutter/v4/messages", - "ui-kit/flutter/v4/message-header", - "ui-kit/flutter/v4/message-list", - "ui-kit/flutter/v4/message-template", - "ui-kit/flutter/v4/message-composer", - "ui-kit/flutter/v4/message-information", - "ui-kit/flutter/v4/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/flutter/v4/interactive-form-bubble", - "ui-kit/flutter/v4/interactive-form-message", - "ui-kit/flutter/v4/interactive-card-bubble", - "ui-kit/flutter/v4/interactive-card-message", - "ui-kit/flutter/v4/interactive-element-entity", - "ui-kit/flutter/v4/interactive-action-entity", - "ui-kit/flutter/v4/interactive-button-element", - "ui-kit/flutter/v4/interactive-label-element", - "ui-kit/flutter/v4/interactive-radio-button-element", - "ui-kit/flutter/v4/interactive-check-box-element", - "ui-kit/flutter/v4/interactive-textinput-element", - "ui-kit/flutter/v4/interactive-scheduler-message", - "ui-kit/flutter/v4/interactive-scheduler-bubble", - "ui-kit/flutter/v4/interactive-date-time-picker-element", - "ui-kit/flutter/v4/interactive-dropdown-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/flutter/v4/call-overview", - "ui-kit/flutter/v4/incoming-call", - "ui-kit/flutter/v4/ongoing-call", - "ui-kit/flutter/v4/outgoing-call", - "ui-kit/flutter/v4/call-buttons", - "ui-kit/flutter/v4/call-logs", - "ui-kit/flutter/v4/call-log-details", - "ui-kit/flutter/v4/call-log-history", - "ui-kit/flutter/v4/call-log-recording", - "ui-kit/flutter/v4/call-log-participants", - "ui-kit/flutter/v4/call-log-with-details" - ] - }, - { - "group": "Base-Components", - "pages": [ - "ui-kit/flutter/v4/status-indicator", - "ui-kit/flutter/v4/badge", - "ui-kit/flutter/v4/receipt", - "ui-kit/flutter/v4/date", - "ui-kit/flutter/v4/text-bubble", - "ui-kit/flutter/v4/image-bubble", - "ui-kit/flutter/v4/file-bubble", - "ui-kit/flutter/v4/audio-bubble", - "ui-kit/flutter/v4/video-bubble", - "ui-kit/flutter/v4/message-bubble", - "ui-kit/flutter/v4/message-input", - "ui-kit/flutter/v4/action-sheet", - "ui-kit/flutter/v4/emoji-keyboard", - "ui-kit/flutter/v4/list-item", - "ui-kit/flutter/v4/list-base", - "ui-kit/flutter/v4/confirm-dialog", - "ui-kit/flutter/v4/card", - "ui-kit/flutter/v4/button", - "ui-kit/flutter/v4/media-recorder", - "ui-kit/flutter/v4/call-bubble", - "ui-kit/flutter/v4/quick-view", - "ui-kit/flutter/v4/single-select", - "ui-kit/flutter/v4/avatar" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/flutter/v4/reactions", - "ui-kit/flutter/v4/reactions-list" - ] - } + "ui-kit/angular/users", + "ui-kit/angular/users-with-messages", + "ui-kit/angular/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/angular/groups", + "ui-kit/angular/groups-with-messages", + "ui-kit/angular/create-group", + "ui-kit/angular/join-protected-group", + "ui-kit/angular/group-members", + "ui-kit/angular/group-add-members", + "ui-kit/angular/group-banned-members", + "ui-kit/angular/group-transfer-ownership", + "ui-kit/angular/group-details" ] }, { - "group": "Reference", + "group": "Messages", "pages": [ - "ui-kit/flutter/v4/methods", - "ui-kit/flutter/v4/events" + "ui-kit/angular/messages", + "ui-kit/angular/message-header", + "ui-kit/angular/message-list", + "ui-kit/angular/message-template", + "ui-kit/angular/message-composer", + "ui-kit/angular/message-information", + "ui-kit/angular/threaded-messages" ] }, { - "group": "Guides", + "group": "Interactive Messages", "pages": [ - "ui-kit/flutter/v4/multi-tab-chat-ui-guide", - "ui-kit/flutter/v4/mentions-formatter-guide", - "ui-kit/flutter/v4/shortcut-formatter-guide" + "ui-kit/angular/interactive-form-message", + "ui-kit/angular/interactive-form-bubble", + "ui-kit/angular/interactive-card-message", + "ui-kit/angular/interactive-card-bubble", + "ui-kit/angular/interactive-element-type", + "ui-kit/angular/interactive-action-entity", + "ui-kit/angular/interactive-custom-interactive-message", + "ui-kit/angular/interactive-button-element", + "ui-kit/angular/interactive-text-input-element", + "ui-kit/angular/interactive-label-element", + "ui-kit/angular/interactive-single-select-element", + "ui-kit/angular/interactive-radio-button-element", + "ui-kit/angular/interactive-checkbox-element", + "ui-kit/angular/interactive-dropdown-element", + "ui-kit/angular/interactive-scheduler-message", + "ui-kit/angular/interactive-scheduler-bubble", + "ui-kit/angular/interactive-date-time-picker-element" ] }, - "ui-kit/flutter/link/sample", - "ui-kit/flutter/link/changelog" + { + "group": "Calls", + "pages": [ + "ui-kit/angular/call-overview", + "ui-kit/angular/incoming-call", + "ui-kit/angular/ongoing-call", + "ui-kit/angular/outgoing-call", + "ui-kit/angular/call-buttons", + "ui-kit/angular/call-logs", + "ui-kit/angular/call-log-details", + "ui-kit/angular/call-log-history", + "ui-kit/angular/call-log-recording", + "ui-kit/angular/call-log-participants", + "ui-kit/angular/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/angular/reaction", + "ui-kit/angular/reaction-list", + "ui-kit/angular/reaction-info", + "ui-kit/angular/user-member-wrapper" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/angular/avatar", + "ui-kit/angular/status-indicator", + "ui-kit/angular/badge", + "ui-kit/angular/receipt", + "ui-kit/angular/date", + "ui-kit/angular/text-bubble", + "ui-kit/angular/image-bubble", + "ui-kit/angular/file-bubble", + "ui-kit/angular/audio-bubble", + "ui-kit/angular/video-bubble", + "ui-kit/angular/message-bubble", + "ui-kit/angular/document-bubble", + "ui-kit/angular/message-input", + "ui-kit/angular/action-sheet", + "ui-kit/angular/media-recorder", + "ui-kit/angular/list-item", + "ui-kit/angular/confirm-dialog", + "ui-kit/angular/backdrop", + "ui-kit/angular/emoji-keyboard", + "ui-kit/angular/modal", + "ui-kit/angular/pop-over", + "ui-kit/angular/icon", + "ui-kit/angular/loader", + "ui-kit/angular/icon-button", + "ui-kit/angular/button-group", + "ui-kit/angular/label", + "ui-kit/angular/input", + "ui-kit/angular/search-input", + "ui-kit/angular/checkbox", + "ui-kit/angular/radio-button", + "ui-kit/angular/dropdown", + "ui-kit/angular/cometchat-quick-view", + "ui-kit/angular/singleselect", + "ui-kit/angular/list" + ] + } ] - } + }, + { + "group": "Reference", + "pages": [ + "ui-kit/angular/methods", + "ui-kit/angular/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/angular/multi-tab-chat-ui-guide", + "ui-kit/angular/new-attachment-option-guide", + "ui-kit/angular/custom-text-formatter-guide", + "ui-kit/angular/mentions-formatter-guide", + "ui-kit/angular/url-formatter-guide", + "ui-kit/angular/shortcut-formatter-guide", + "ui-kit/angular/new-message-option-guide", + "ui-kit/angular/custom-message-guide" + ] + }, + "ui-kit/angular/link/sample", + "ui-kit/angular/link/changelog" ] } ] }, { - "dropdown": "Angular", - "icon": "/images/icons/angular.svg", - "versions": [ + "version": "v3‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - "ui-kit/angular/overview", - "ui-kit/angular/getting-started", - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/angular/core-features", - "ui-kit/angular/extensions" - ] - }, - "ui-kit/angular/call-features", - "ui-kit/angular/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/angular/theme", - "ui-kit/angular/localize", - "ui-kit/angular/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/angular/components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/angular/conversations", - "ui-kit/angular/conversations-with-messages", - "ui-kit/angular/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/angular/users", - "ui-kit/angular/users-with-messages", - "ui-kit/angular/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/angular/groups", - "ui-kit/angular/groups-with-messages", - "ui-kit/angular/create-group", - "ui-kit/angular/join-protected-group", - "ui-kit/angular/group-members", - "ui-kit/angular/group-add-members", - "ui-kit/angular/group-banned-members", - "ui-kit/angular/group-transfer-ownership", - "ui-kit/angular/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/angular/messages", - "ui-kit/angular/message-header", - "ui-kit/angular/message-list", - "ui-kit/angular/message-template", - "ui-kit/angular/message-composer", - "ui-kit/angular/message-information", - "ui-kit/angular/threaded-messages" - ] - }, - { - "group": "Interactive Messages", - "pages": [ - "ui-kit/angular/interactive-form-message", - "ui-kit/angular/interactive-form-bubble", - "ui-kit/angular/interactive-card-message", - "ui-kit/angular/interactive-card-bubble", - "ui-kit/angular/interactive-element-type", - "ui-kit/angular/interactive-action-entity", - "ui-kit/angular/interactive-custom-interactive-message", - "ui-kit/angular/interactive-button-element", - "ui-kit/angular/interactive-text-input-element", - "ui-kit/angular/interactive-label-element", - "ui-kit/angular/interactive-single-select-element", - "ui-kit/angular/interactive-radio-button-element", - "ui-kit/angular/interactive-checkbox-element", - "ui-kit/angular/interactive-dropdown-element", - "ui-kit/angular/interactive-scheduler-message", - "ui-kit/angular/interactive-scheduler-bubble", - "ui-kit/angular/interactive-date-time-picker-element" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/angular/call-overview", - "ui-kit/angular/incoming-call", - "ui-kit/angular/ongoing-call", - "ui-kit/angular/outgoing-call", - "ui-kit/angular/call-buttons", - "ui-kit/angular/call-logs", - "ui-kit/angular/call-log-details", - "ui-kit/angular/call-log-history", - "ui-kit/angular/call-log-recording", - "ui-kit/angular/call-log-participants", - "ui-kit/angular/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/angular/reaction", - "ui-kit/angular/reaction-list", - "ui-kit/angular/reaction-info", - "ui-kit/angular/user-member-wrapper" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/angular/avatar", - "ui-kit/angular/status-indicator", - "ui-kit/angular/badge", - "ui-kit/angular/receipt", - "ui-kit/angular/date", - "ui-kit/angular/text-bubble", - "ui-kit/angular/image-bubble", - "ui-kit/angular/file-bubble", - "ui-kit/angular/audio-bubble", - "ui-kit/angular/video-bubble", - "ui-kit/angular/message-bubble", - "ui-kit/angular/document-bubble", - "ui-kit/angular/message-input", - "ui-kit/angular/action-sheet", - "ui-kit/angular/media-recorder", - "ui-kit/angular/list-item", - "ui-kit/angular/confirm-dialog", - "ui-kit/angular/backdrop", - "ui-kit/angular/emoji-keyboard", - "ui-kit/angular/modal", - "ui-kit/angular/pop-over", - "ui-kit/angular/icon", - "ui-kit/angular/loader", - "ui-kit/angular/icon-button", - "ui-kit/angular/button-group", - "ui-kit/angular/label", - "ui-kit/angular/input", - "ui-kit/angular/search-input", - "ui-kit/angular/checkbox", - "ui-kit/angular/radio-button", - "ui-kit/angular/dropdown", - "ui-kit/angular/cometchat-quick-view", - "ui-kit/angular/singleselect", - "ui-kit/angular/list" - ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/angular/methods", - "ui-kit/angular/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/angular/multi-tab-chat-ui-guide", - "ui-kit/angular/new-attachment-option-guide", - "ui-kit/angular/custom-text-formatter-guide", - "ui-kit/angular/mentions-formatter-guide", - "ui-kit/angular/url-formatter-guide", - "ui-kit/angular/shortcut-formatter-guide", - "ui-kit/angular/new-message-option-guide", - "ui-kit/angular/custom-message-guide" - ] - }, - "ui-kit/angular/link/sample", - "ui-kit/angular/link/changelog" + "ui-kit/angular/3.0/overview", + "ui-kit/angular/3.0/key-concepts" ] - } + }, + "ui-kit/angular/3.0/ui-components", + "ui-kit/angular/3.0/javascript-3-0-overview", + "ui-kit/angular/3.0/link/extension", + "ui-kit/angular/3.0/link/version" ] - }, + } + ] + }, + { + "version": "v2‎‎‎‎‎", + "groups": [ { - "version": "v3‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/angular/3.0/overview", - "ui-kit/angular/3.0/key-concepts" - ] - }, - "ui-kit/angular/3.0/ui-components", - "ui-kit/angular/3.0/javascript-3-0-overview", - "ui-kit/angular/3.0/link/extension", - "ui-kit/angular/3.0/link/version" + "ui-kit/angular/2.0/overview", + "ui-kit/angular/2.0/key-concepts", + "ui-kit/angular/2.0/message-structure-and-hierarchy" ] - } + }, + "ui-kit/angular/2.0/ui-components", + "ui-kit/angular/2.0/link/sdk", + "ui-kit/angular/3.0/link/extension" ] - }, + } + ] + } + ] + }, + { + "dropdown": "Vue", + "icon": "vuejs", + "versions": [ + { + "version": "v4‎‎‎‎‎‎", + "groups": [ { - "version": "v2‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ + "ui-kit/vue/overview", + "ui-kit/vue/key-concepts", { - "group": " ", + "group": "Integration", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/angular/2.0/overview", - "ui-kit/angular/2.0/key-concepts", - "ui-kit/angular/2.0/message-structure-and-hierarchy" - ] - }, - "ui-kit/angular/2.0/ui-components", - "ui-kit/angular/2.0/link/sdk", - "ui-kit/angular/3.0/link/extension" + "ui-kit/vue/integration", + "ui-kit/vue/ui-kit-methods", + "ui-kit/vue/theme" ] - } + }, + "ui-kit/vue/nuxtjs-integration", + "ui-kit/vue/ui-components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/vue/conversations-with-messages", + "ui-kit/vue/conversations", + "ui-kit/vue/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/vue/users-with-messages", + "ui-kit/vue/users", + "ui-kit/vue/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/vue/groups-with-messages", + "ui-kit/vue/groups", + "ui-kit/vue/group-members", + "ui-kit/vue/group-add-members", + "ui-kit/vue/group-banned-members", + "ui-kit/vue/group-transfer-ownership", + "ui-kit/vue/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/vue/messages", + "ui-kit/vue/message-header", + "ui-kit/vue/message-list", + "ui-kit/vue/message-composer", + "ui-kit/vue/message-information", + "ui-kit/vue/threaded-messages" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/vue/calls-integration", + "ui-kit/vue/incoming-call", + "ui-kit/vue/ongoing-call", + "ui-kit/vue/outgoing-call", + "ui-kit/vue/call-buttons" + ] + }, + { + "group": "AI", + "pages": [ + "ui-kit/vue/ai-integration", + "ui-kit/vue/ai-conversation-starter", + "ui-kit/vue/ai-smart-replies", + "ui-kit/vue/ai-conversation-summary", + "ui-kit/vue/ai-assist-bot" + ] + }, + { + "group": "Views", + "pages": [ + "ui-kit/vue/message-bubble", + "ui-kit/vue/user-member-wrapper", + "ui-kit/vue/tabs" + ] + }, + "ui-kit/vue/web-elements", + "ui-kit/vue/shared-elements", + "ui-kit/vue/link/sample", + "ui-kit/vue/link/changelog" ] } ] }, { - "dropdown": "Vue", - "icon": "/images/icons/vuejs.svg", - "versions": [ - { - "version": "v4‎‎‎‎‎‎", - "groups": [ - { - "group": " ", - "pages": [ - "ui-kit/vue/overview", - "ui-kit/vue/key-concepts", - { - "group": "Integration", - "pages": [ - "ui-kit/vue/integration", - "ui-kit/vue/ui-kit-methods", - "ui-kit/vue/theme" - ] - }, - "ui-kit/vue/nuxtjs-integration", - "ui-kit/vue/ui-components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/vue/conversations-with-messages", - "ui-kit/vue/conversations", - "ui-kit/vue/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/vue/users-with-messages", - "ui-kit/vue/users", - "ui-kit/vue/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/vue/groups-with-messages", - "ui-kit/vue/groups", - "ui-kit/vue/group-members", - "ui-kit/vue/group-add-members", - "ui-kit/vue/group-banned-members", - "ui-kit/vue/group-transfer-ownership", - "ui-kit/vue/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/vue/messages", - "ui-kit/vue/message-header", - "ui-kit/vue/message-list", - "ui-kit/vue/message-composer", - "ui-kit/vue/message-information", - "ui-kit/vue/threaded-messages" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/vue/calls-integration", - "ui-kit/vue/incoming-call", - "ui-kit/vue/ongoing-call", - "ui-kit/vue/outgoing-call", - "ui-kit/vue/call-buttons" - ] - }, - { - "group": "AI", - "pages": [ - "ui-kit/vue/ai-integration", - "ui-kit/vue/ai-conversation-starter", - "ui-kit/vue/ai-smart-replies", - "ui-kit/vue/ai-conversation-summary", - "ui-kit/vue/ai-assist-bot" - ] - }, - { - "group": "Views", - "pages": [ - "ui-kit/vue/message-bubble", - "ui-kit/vue/user-member-wrapper", - "ui-kit/vue/tabs" - ] - }, - "ui-kit/vue/web-elements", - "ui-kit/vue/shared-elements", - "ui-kit/vue/link/sample", - "ui-kit/vue/link/changelog" - ] - } - ] - }, + "version": "v3‎‎‎‎‎‎", + "groups": [ { - "version": "v3‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/vue/3.0/overview", - "ui-kit/vue/3.0/key-concepts" - ] - }, - "ui-kit/vue/3.0/ui-components", - "ui-kit/vue/3.0/integration-with-nuxtjs", - "ui-kit/vue/3.0/javascript-3-0-overview", - "ui-kit/vue/3.0/link/extension", - "ui-kit/vue/3.0/link/version" + "ui-kit/vue/3.0/overview", + "ui-kit/vue/3.0/key-concepts" ] - } + }, + "ui-kit/vue/3.0/ui-components", + "ui-kit/vue/3.0/integration-with-nuxtjs", + "ui-kit/vue/3.0/javascript-3-0-overview", + "ui-kit/vue/3.0/link/extension", + "ui-kit/vue/3.0/link/version" ] - }, + } + ] + }, + { + "version": "v2‎‎‎‎‎‎", + "groups": [ { - "version": "v2‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/vue/2.0/overview", - "ui-kit/vue/2.0/key-concepts", - "ui-kit/vue/2.0/message-structure-and-hierarchy" - ] - }, - "ui-kit/vue/2.0/ui-components", - "ui-kit/vue/2.0/javascript-2-0-overview", - "ui-kit/vue/3.0/link/extension" + "ui-kit/vue/2.0/overview", + "ui-kit/vue/2.0/key-concepts", + "ui-kit/vue/2.0/message-structure-and-hierarchy" ] - } + }, + "ui-kit/vue/2.0/ui-components", + "ui-kit/vue/2.0/javascript-2-0-overview", + "ui-kit/vue/3.0/link/extension" ] } ] } ] - }, + } + ] + }, + { + "tab": "SDKs", + "dropdowns": [ { - "tab": "SDKs", - "dropdowns": [ + "dropdown": "JavaScript", + "icon": "js", + "versions": [ { - "dropdown": "JavaScript", - "icon": "/images/icons/js.svg", - "versions": [ + "version": "v4‎‎‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/javascript/overview", - "sdk/javascript/key-concepts", - "sdk/javascript/message-structure-and-hierarchy", - "sdk/javascript/rate-limits" - ] - }, - { - "group": "Setup", - "pages": ["sdk/javascript/setup-sdk"] - }, - { - "group": "Authentication", - "pages": [ - "sdk/javascript/authentication-overview", - "sdk/javascript/login-listener" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/messaging-overview", - "sdk/javascript/send-message", - "sdk/javascript/receive-message", - "sdk/javascript/additional-message-filtering", - "sdk/javascript/retrieve-conversations", - "sdk/javascript/threaded-messages", - "sdk/javascript/edit-message", - "sdk/javascript/delete-message", - "sdk/javascript/flag-message", - "sdk/javascript/delete-conversation", - "sdk/javascript/typing-indicators", - "sdk/javascript/interactive-messages", - "sdk/javascript/transient-messages", - "sdk/javascript/delivery-read-receipts", - "sdk/javascript/mentions", - "sdk/javascript/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/calling-overview", - "sdk/javascript/calling-setup", - "sdk/javascript/default-call", - "sdk/javascript/direct-call", - "sdk/javascript/standalone-calling", - "sdk/javascript/recording", - "sdk/javascript/virtual-background", - "sdk/javascript/video-view-customisation", - "sdk/javascript/custom-css", - "sdk/javascript/presenter-mode", - "sdk/javascript/call-logs", - "sdk/javascript/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/users-overview", - "sdk/javascript/retrieve-users", - "sdk/javascript/user-management", - "sdk/javascript/block-users" - ] - }, - { - "group": "User Presence", - "pages": ["sdk/javascript/user-presence"] - }, - { - "group": "Groups", - "pages": [ - "sdk/javascript/groups-overview", - "sdk/javascript/retrieve-groups", - "sdk/javascript/create-group", - "sdk/javascript/update-group", - "sdk/javascript/join-group", - "sdk/javascript/leave-group", - "sdk/javascript/delete-group", - "sdk/javascript/retrieve-group-members", - "sdk/javascript/group-add-members", - "sdk/javascript/group-kick-ban-members", - "sdk/javascript/group-change-member-scope", - "sdk/javascript/transfer-group-ownership" - ] - }, - "sdk/javascript/ai-moderation", - "sdk/javascript/ai-agents", - { - "group": "Resources", - "pages": [ - "sdk/javascript/resources-overview", - "sdk/javascript/all-real-time-listeners", - "sdk/javascript/upgrading-from-v3" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/javascript/advanced-overview", - "sdk/javascript/connection-status", - "sdk/javascript/managing-web-sockets-connections-manually" - ] - }, - { - "group": "UI Kits", - "pages": [ - "sdk/javascript/react-overview", - "sdk/javascript/vue-overview", - "sdk/javascript/angular-overview" - ] - }, - "sdk/javascript/extensions-overview", - "sdk/javascript/ai-user-copilot-overview", - "sdk/javascript/ai-chatbots-overview", - "sdk/javascript/webhooks-overview", - "sdk/javascript/changelog" + "sdk/javascript/overview", + "sdk/javascript/key-concepts", + "sdk/javascript/message-structure-and-hierarchy", + "sdk/javascript/rate-limits" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎", - "groups": [ + }, + { + "group": "Setup", + "pages": ["sdk/javascript/setup-sdk"] + }, { - "group": " ", + "group": "Authentication", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/javascript/3.0/overview", - "sdk/javascript/3.0/key-concepts", - "sdk/javascript/3.0/message-structure-and-hierarchy", - "sdk/javascript/3.0/rate-limits" - ] - }, - "sdk/javascript/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/javascript/3.0/authentication", - "sdk/javascript/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/3.0/messaging", - "sdk/javascript/3.0/messaging-send-message", - "sdk/javascript/3.0/messaging-receive-message", - "sdk/javascript/3.0/messaging-additional-message-filtering", - "sdk/javascript/3.0/messaging-retrieve-conversations", - "sdk/javascript/3.0/threaded-messages", - "sdk/javascript/3.0/messaging-edit-message", - "sdk/javascript/3.0/messaging-delete-message", - "sdk/javascript/3.0/messaging-delete-conversation", - "sdk/javascript/3.0/messaging-typing-indicators", - "sdk/javascript/3.0/messaging-transient-messages", - "sdk/javascript/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/javascript/3.0/calling-v3", - "sdk/javascript/3.0/v3-setup", - "sdk/javascript/3.0/v3-default-call", - "sdk/javascript/3.0/v3-direct-calling", - "sdk/javascript/3.0/calling-recording-v3", - "sdk/javascript/3.0/virtual-background-v3", - "sdk/javascript/3.0/video-view-customisation-v3", - "sdk/javascript/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/3.0/calling", - "sdk/javascript/3.0/calling-direct-calling", - "sdk/javascript/3.0/calling-default-calling", - "sdk/javascript/3.0/calling-custom-css", - "sdk/javascript/3.0/calling-recording", - "sdk/javascript/3.0/virtual-background", - "sdk/javascript/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/3.0/users", - "sdk/javascript/3.0/users-retrieve-users", - "sdk/javascript/3.0/users-user-management", - "sdk/javascript/3.0/users-block-users" - ] - }, - "sdk/javascript/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/javascript/3.0/groups", - "sdk/javascript/3.0/groups-retrieve-groups", - "sdk/javascript/3.0/groups-create-group", - "sdk/javascript/3.0/groups-update-group", - "sdk/javascript/3.0/groups-join-group", - "sdk/javascript/3.0/groups-leave-group", - "sdk/javascript/3.0/groups-delete-group", - "sdk/javascript/3.0/groups-retrieve-group-members", - "sdk/javascript/3.0/groups-add-members-to-group", - "sdk/javascript/3.0/groups-kick-ban-members", - "sdk/javascript/3.0/groups-change-member-scope", - "sdk/javascript/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/javascript/3.0/bots", - "sdk/javascript/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/javascript/3.0/resources", - "sdk/javascript/3.0/resources-all-real-time-listeners", - "sdk/javascript/3.0/resources-upgrading-from-v2" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/javascript/3.0/advanced", - "sdk/javascript/3.0/advanced-connection-listeners", - "sdk/javascript/3.0/advanced-managing-web-socket-connections-manually" - ] - }, - "sdk/javascript/3.0/extensions-overview", - { - "group": "V3 UI Kits", - "pages": [ - "sdk/javascript/3.0/react-v3-overview", - "sdk/javascript/3.0/vue-3-0-overview", - "sdk/javascript/3.0/angular-3-0-overview" - ] - } + "sdk/javascript/authentication-overview", + "sdk/javascript/login-listener" ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Messaging", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/javascript/2.0/overview", - "sdk/javascript/2.0/key-concepts", - "sdk/javascript/2.0/message-structure-and-hierarchy", - "sdk/javascript/2.0/rate-limits" - ] - }, - "sdk/javascript/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/javascript/2.0/authentication", - "sdk/javascript/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/2.0/messaging", - "sdk/javascript/2.0/messaging-send-message", - "sdk/javascript/2.0/messaging-receive-message", - "sdk/javascript/2.0/messaging-additional-message-filtering", - "sdk/javascript/2.0/messaging-retrieve-conversations", - "sdk/javascript/2.0/threaded-messages", - "sdk/javascript/2.0/messaging-edit-message", - "sdk/javascript/2.0/messaging-delete-message", - "sdk/javascript/2.0/messaging-delete-conversation", - "sdk/javascript/2.0/messaging-typing-indicators", - "sdk/javascript/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/2.0/calling", - "sdk/javascript/2.0/calling-direct-calling", - "sdk/javascript/2.0/calling-default-calling", - "sdk/javascript/2.0/calling-custom-css", - "sdk/javascript/2.0/calling-recording" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/2.0/users", - "sdk/javascript/2.0/users-retrieve-users", - "sdk/javascript/2.0/users-user-management", - "sdk/javascript/2.0/users-block-users" - ] - }, - "sdk/javascript/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/javascript/2.0/groups", - "sdk/javascript/2.0/groups-retrieve-groups", - "sdk/javascript/2.0/groups-create-group", - "sdk/javascript/2.0/groups-update-group", - "sdk/javascript/2.0/groups-join-group", - "sdk/javascript/2.0/groups-leave-group", - "sdk/javascript/2.0/groups-delete-group", - "sdk/javascript/2.0/groups-retrieve-group-members", - "sdk/javascript/2.0/groups-add-members-to-group", - "sdk/javascript/2.0/groups-kick-ban-members", - "sdk/javascript/2.0/groups-change-member-scope", - "sdk/javascript/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/javascript/2.0/bots", - "sdk/javascript/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/javascript/2.0/resources", - "sdk/javascript/2.0/resources-all-real-time-listeners", - "sdk/javascript/2.0/resources-upgrading-from-v1" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/javascript/2.0/advanced", - "sdk/javascript/2.0/advanced-connection-listeners" - ] - } + "sdk/javascript/messaging-overview", + "sdk/javascript/send-message", + "sdk/javascript/receive-message", + "sdk/javascript/additional-message-filtering", + "sdk/javascript/retrieve-conversations", + "sdk/javascript/threaded-messages", + "sdk/javascript/edit-message", + "sdk/javascript/delete-message", + "sdk/javascript/delete-conversation", + "sdk/javascript/typing-indicators", + "sdk/javascript/interactive-messages", + "sdk/javascript/transient-messages", + "sdk/javascript/delivery-read-receipts", + "sdk/javascript/mentions", + "sdk/javascript/reactions" ] - } + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/calling-overview", + "sdk/javascript/calling-setup", + "sdk/javascript/default-call", + "sdk/javascript/direct-call", + "sdk/javascript/recording", + "sdk/javascript/virtual-background", + "sdk/javascript/video-view-customisation", + "sdk/javascript/custom-css", + "sdk/javascript/presenter-mode", + "sdk/javascript/call-logs", + "sdk/javascript/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/users-overview", + "sdk/javascript/retrieve-users", + "sdk/javascript/user-management", + "sdk/javascript/block-users" + ] + }, + { + "group": "User Presence", + "pages": ["sdk/javascript/user-presence"] + }, + { + "group": "Groups", + "pages": [ + "sdk/javascript/groups-overview", + "sdk/javascript/retrieve-groups", + "sdk/javascript/create-group", + "sdk/javascript/update-group", + "sdk/javascript/join-group", + "sdk/javascript/leave-group", + "sdk/javascript/delete-group", + "sdk/javascript/retrieve-group-members", + "sdk/javascript/group-add-members", + "sdk/javascript/group-kick-ban-members", + "sdk/javascript/group-change-member-scope", + "sdk/javascript/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/javascript/resources-overview", + "sdk/javascript/all-real-time-listeners", + "sdk/javascript/upgrading-from-v3" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/advanced-overview", + "sdk/javascript/connection-status", + "sdk/javascript/managing-web-sockets-connections-manually" + ] + }, + { + "group": "UI Kits", + "pages": [ + "sdk/javascript/react-overview", + "sdk/javascript/vue-overview", + "sdk/javascript/angular-overview" + ] + }, + "sdk/javascript/extensions-overview", + "sdk/javascript/ai-user-copilot-overview", + "sdk/javascript/ai-chatbots-overview", + "sdk/javascript/webhooks-overview", + "sdk/javascript/changelog" ] } ] }, { - "dropdown": "React Native", - "icon": "/images/icons/react.svg", - "versions": [ + "version": "v3‎‎‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/overview", - "sdk/react-native/key-concepts", - "sdk/react-native/message-structure-and-hierarchy", - "sdk/react-native/rate-limits" - ] - }, - "sdk/react-native/setup-sdk", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/authentication-overview", - "sdk/react-native/login-listener" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/messaging-overview", - "sdk/react-native/send-message", - "sdk/react-native/receive-messages", - "sdk/react-native/additional-message-filtering", - "sdk/react-native/retrieve-conversations", - "sdk/react-native/threaded-messages", - "sdk/react-native/edit-message", - "sdk/react-native/flag-message", - "sdk/react-native/delete-message", - "sdk/react-native/delete-conversation", - "sdk/react-native/typing-indicators", - "sdk/react-native/interactive-messages", - "sdk/react-native/transient-messages", - "sdk/react-native/delivery-read-receipts", - "sdk/react-native/mentions", - "sdk/react-native/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/react-native/calling-overview", - "sdk/react-native/calling-setup", - "sdk/react-native/default-call", - "sdk/react-native/direct-call", - "sdk/react-native/standalone-calling", - "sdk/react-native/recording", - "sdk/react-native/video-view-customisation", - "sdk/react-native/presenter-mode", - "sdk/react-native/call-logs", - "sdk/react-native/expo-integration-guide", - "sdk/react-native/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/react-native/users-overview", - "sdk/react-native/retrieve-users", - "sdk/react-native/user-management", - "sdk/react-native/block-users" - ] - }, - "sdk/react-native/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/react-native/groups-overview", - "sdk/react-native/retrieve-groups", - "sdk/react-native/create-group", - "sdk/react-native/update-group", - "sdk/react-native/join-group", - "sdk/react-native/leave-group", - "sdk/react-native/delete-group", - "sdk/react-native/retrieve-group-members", - "sdk/react-native/group-add-members", - "sdk/react-native/group-kick-ban-members", - "sdk/react-native/group-change-member-scope", - "sdk/react-native/transfer-group-ownership" - ] - }, - "sdk/react-native/ai-moderation", - "sdk/react-native/ai-agents", - { - "group": "Resources", - "pages": [ - "sdk/react-native/resources-overview", - "sdk/react-native/real-time-listeners", - { - "group": "Push Notifications", - "pages": [ - "notifications/react-native-push-notifications-android", - "notifications/react-native-push-notifications-ios" - ] - }, - "sdk/react-native/push-notification-html-stripping", - "sdk/react-native/upgrading-from-v3" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/react-native/advanced-overview", - "sdk/react-native/connection-status", - "sdk/react-native/managing-web-sockets-connections-manually" - ] - }, - "sdk/react-native/extensions-overview", - "sdk/react-native/ai-user-copilot-overview", - "sdk/react-native/ai-chatbots-overview", - "sdk/react-native/webhooks-overview", - "sdk/react-native/react-native-overview", - "sdk/react-native/changelog" + "sdk/javascript/3.0/overview", + "sdk/javascript/3.0/key-concepts", + "sdk/javascript/3.0/message-structure-and-hierarchy", + "sdk/javascript/3.0/rate-limits" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎", - "groups": [ + }, + "sdk/javascript/3.0/setup", { - "group": " ", + "group": "Authentication", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/3.0/overview", - "sdk/react-native/3.0/key-concepts", - "sdk/react-native/3.0/message-structure-and-hierarchy", - "sdk/react-native/3.0/rate-limits" - ] - }, - "sdk/react-native/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/3.0/authentication", - "sdk/react-native/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/3.0/messaging", - "sdk/react-native/3.0/messaging-send-message", - "sdk/react-native/3.0/messaging-receive-messages", - "sdk/react-native/3.0/messaging-additional-message-filtering", - "sdk/react-native/3.0/messaging-retrieve-conversations", - "sdk/react-native/3.0/threaded-messages", - "sdk/react-native/3.0/messaging-edit-message", - "sdk/react-native/3.0/messaging-delete-message", - "sdk/react-native/3.0/messaging-delete-conversation", - "sdk/react-native/3.0/messaging-typing-indicators", - "sdk/react-native/3.0/transient-messages", - "sdk/react-native/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/react-native/3.0/calling-v3", - "sdk/react-native/3.0/v3-setup", - "sdk/react-native/3.0/v3-default-calling", - "sdk/react-native/3.0/v3-direct-calling", - "sdk/react-native/3.0/v3-video-view-customisation", - "sdk/react-native/3.0/recording-beta-v3", - "sdk/react-native/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/react-native/3.0/calling", - "sdk/react-native/3.0/calling-direct-calling", - "sdk/react-native/3.0/calling-default-calling", - "sdk/react-native/3.0/calling-recording", - "sdk/react-native/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/react-native/3.0/users", - "sdk/react-native/3.0/users-retrieve-users", - "sdk/react-native/3.0/users-user-management", - "sdk/react-native/3.0/users-block-users" - ] - }, - "sdk/react-native/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/react-native/3.0/groups", - "sdk/react-native/3.0/groups-retrieve-groups", - "sdk/react-native/3.0/groups-create-group", - "sdk/react-native/3.0/groups-update-group", - "sdk/react-native/3.0/groups-join-group", - "sdk/react-native/3.0/groups-leave-group", - "sdk/react-native/3.0/groups-delete-group", - "sdk/react-native/3.0/groups-retrieve-group-members", - "sdk/react-native/3.0/groups-add-members-to-group", - "sdk/react-native/3.0/groups-kick-ban-members", - "sdk/react-native/3.0/groups-change-member-scope", - "sdk/react-native/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/react-native/3.0/bots", - "sdk/react-native/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/react-native/3.0/resources", - "sdk/react-native/3.0/resources-all-real-time-listeners", - "sdk/react-native/3.0/resources-upgrading-from-v2", - "sdk/react-native/3.0/resources-push-notification-setup" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/react-native/3.0/advanced", - "sdk/react-native/3.0/advanced-connection-listener", - "sdk/react-native/3.0/managing-web-socket-connections-manually" - ] - }, - "sdk/react-native/3.0/extensions-overview", - "sdk/react-native/3.0/react-native-3-0-overview" + "sdk/javascript/3.0/authentication", + "sdk/javascript/3.0/authentication-login-listeners" ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Messaging", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/2.0/overview", - "sdk/react-native/2.0/key-concepts", - "sdk/react-native/2.0/message-structure-and-hierarchy", - "sdk/react-native/2.0/rate-limits" - ] - }, - "sdk/react-native/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/2.0/authentication", - "sdk/react-native/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/2.0/messaging", - "sdk/react-native/2.0/messaging-send-message", - "sdk/react-native/2.0/messaging-receive-messages", - "sdk/react-native/2.0/messaging-additional-message-filtering", - "sdk/react-native/2.0/messaging-retrieve-conversations", - "sdk/react-native/2.0/threaded-messages", - "sdk/react-native/2.0/messaging-edit-message", - "sdk/react-native/2.0/messaging-delete-message", - "sdk/react-native/2.0/messaging-delete-conversation", - "sdk/react-native/2.0/messaging-typing-indicators", - "sdk/react-native/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/react-native/2.0/calling", - "sdk/react-native/2.0/calling-direct-calling", - "sdk/react-native/2.0/calling-default-calling" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/react-native/2.0/users", - "sdk/react-native/2.0/users-retrieve-users", - "sdk/react-native/2.0/users-user-management", - "sdk/react-native/2.0/users-block-users" - ] - }, - "sdk/react-native/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/react-native/2.0/groups", - "sdk/react-native/2.0/groups-retrieve-groups", - "sdk/react-native/2.0/groups-create-group", - "sdk/react-native/2.0/groups-update-group", - "sdk/react-native/2.0/groups-join-group", - "sdk/react-native/2.0/groups-leave-group", - "sdk/react-native/2.0/groups-delete-group", - "sdk/react-native/2.0/groups-retrieve-group-members", - "sdk/react-native/2.0/groups-add-members-to-group", - "sdk/react-native/2.0/groups-kick-ban-members", - "sdk/react-native/2.0/groups-change-member-scope", - "sdk/react-native/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/react-native/2.0/bots", - "sdk/react-native/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/react-native/2.0/resources", - "sdk/react-native/2.0/resources-all-real-time-listeners", - "sdk/react-native/2.0/resources-upgrading-from-v1", - "sdk/react-native/2.0/resources-push-notification-setup" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/react-native/2.0/advanced", - "sdk/react-native/2.0/advanced-connection-listener" - ] - } + "sdk/javascript/3.0/messaging", + "sdk/javascript/3.0/messaging-send-message", + "sdk/javascript/3.0/messaging-receive-message", + "sdk/javascript/3.0/messaging-additional-message-filtering", + "sdk/javascript/3.0/messaging-retrieve-conversations", + "sdk/javascript/3.0/threaded-messages", + "sdk/javascript/3.0/messaging-edit-message", + "sdk/javascript/3.0/messaging-delete-message", + "sdk/javascript/3.0/messaging-delete-conversation", + "sdk/javascript/3.0/messaging-typing-indicators", + "sdk/javascript/3.0/messaging-transient-messages", + "sdk/javascript/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/javascript/3.0/calling-v3", + "sdk/javascript/3.0/v3-setup", + "sdk/javascript/3.0/v3-default-call", + "sdk/javascript/3.0/v3-direct-calling", + "sdk/javascript/3.0/calling-recording-v3", + "sdk/javascript/3.0/virtual-background-v3", + "sdk/javascript/3.0/video-view-customisation-v3", + "sdk/javascript/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/3.0/calling", + "sdk/javascript/3.0/calling-direct-calling", + "sdk/javascript/3.0/calling-default-calling", + "sdk/javascript/3.0/calling-custom-css", + "sdk/javascript/3.0/calling-recording", + "sdk/javascript/3.0/virtual-background", + "sdk/javascript/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/3.0/users", + "sdk/javascript/3.0/users-retrieve-users", + "sdk/javascript/3.0/users-user-management", + "sdk/javascript/3.0/users-block-users" + ] + }, + "sdk/javascript/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/javascript/3.0/groups", + "sdk/javascript/3.0/groups-retrieve-groups", + "sdk/javascript/3.0/groups-create-group", + "sdk/javascript/3.0/groups-update-group", + "sdk/javascript/3.0/groups-join-group", + "sdk/javascript/3.0/groups-leave-group", + "sdk/javascript/3.0/groups-delete-group", + "sdk/javascript/3.0/groups-retrieve-group-members", + "sdk/javascript/3.0/groups-add-members-to-group", + "sdk/javascript/3.0/groups-kick-ban-members", + "sdk/javascript/3.0/groups-change-member-scope", + "sdk/javascript/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/javascript/3.0/bots", + "sdk/javascript/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/javascript/3.0/resources", + "sdk/javascript/3.0/resources-all-real-time-listeners", + "sdk/javascript/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/3.0/advanced", + "sdk/javascript/3.0/advanced-connection-listeners", + "sdk/javascript/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/javascript/3.0/extensions-overview", + { + "group": "V3 UI Kits", + "pages": [ + "sdk/javascript/3.0/react-v3-overview", + "sdk/javascript/3.0/vue-3-0-overview", + "sdk/javascript/3.0/angular-3-0-overview" ] } ] @@ -3215,2019 +2521,1319 @@ ] }, { - "dropdown": "iOS", - "icon": "/images/icons/swift.svg", - "versions": [ + "version": "v2‎‎‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ios/overview", - "sdk/ios/key-concepts", - "sdk/ios/message-structure-and-hierarchy", - "sdk/ios/rate-limits" - ] - }, - "sdk/ios/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ios/authentication-overview", - "sdk/ios/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/messaging-overview", - "sdk/ios/send-message", - "sdk/ios/receive-message", - "sdk/ios/additional-message-filtering", - "sdk/ios/retrieve-conversations", - "sdk/ios/threaded-messages", - "sdk/ios/edit-message", - "sdk/ios/delete-message", - "sdk/ios/delete-conversation", - "sdk/ios/flag-message", - "sdk/ios/typing-indicators", - "sdk/ios/delivery-read-receipts", - "sdk/ios/interactive-messages", - "sdk/ios/transient-messages", - "sdk/ios/mentions", - "sdk/ios/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/calling-overview", - "sdk/ios/calling-setup", - "sdk/ios/default-calling", - "sdk/ios/direct-calling", - "sdk/ios/standalone-calling", - "sdk/ios/recording", - "sdk/ios/video-view-customisation", - "sdk/ios/presenter-mode", - "sdk/ios/call-logs", - "sdk/ios/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/users-overview", - "sdk/ios/retrieve-users", - "sdk/ios/user-management", - "sdk/ios/block-users" - ] - }, - "sdk/ios/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ios/groups-overview", - "sdk/ios/retrieve-groups", - "sdk/ios/create-group", - "sdk/ios/update-group", - "sdk/ios/join-group", - "sdk/ios/leave-group", - "sdk/ios/delete-group", - "sdk/ios/group-add-members", - "sdk/ios/retrieve-group-members", - "sdk/ios/group-kick-member", - "sdk/ios/group-change-member-scope", - "sdk/ios/transfer-group-ownership" - ] - }, - "sdk/ios/ai-moderation", - "sdk/ios/ai-agents", - { - "group": "Advanced", - "pages": [ - "sdk/ios/advanced", - "sdk/ios/connection-status", - "sdk/ios/web-socket-connection-behaviour", - "sdk/ios/managing-web-socket-connections-manually", - "sdk/ios/marking-delivered-with-push-notification", - "sdk/ios/publishing-app-on-appstore" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/ios/resources-overview", - "sdk/ios/all-real-time-delegates-listeners", - "sdk/ios/increment-app-icon-badge-count", - "sdk/ios/remove-delivered-notifications", - "sdk/ios/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/launch-chat-window-on-tap-of-push-notification", - "sdk/ios/prepare-your-app-for-background-updates", - "sdk/ios/upgrading-from-v3-to-v4", - "sdk/ios/upgrading-from-v2" - ] - }, - "sdk/ios/extensions-overview", - "sdk/ios/ai-user-copilot-overview", - "sdk/ios/ai-chatbots-overview", - "sdk/ios/webhooks-overview", - "sdk/ios/ios-overview", - "sdk/ios/changelog" + "sdk/javascript/2.0/overview", + "sdk/javascript/2.0/key-concepts", + "sdk/javascript/2.0/message-structure-and-hierarchy", + "sdk/javascript/2.0/rate-limits" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎‎", - "groups": [ + }, + "sdk/javascript/2.0/setup", { - "group": " ", + "group": "Authentication", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ios/3.0/overview", - "sdk/ios/3.0/key-concepts", - "sdk/ios/3.0/message-structure-and-hierarchy", - "sdk/ios/3.0/rate-limits" - ] - }, - "sdk/ios/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ios/3.0/authentication", - "sdk/ios/3.0/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/3.0/messaging", - "sdk/ios/3.0/send-a-message", - "sdk/ios/3.0/receive-a-message", - "sdk/ios/3.0/additional-message-filtering", - "sdk/ios/3.0/retrieve-conversations", - "sdk/ios/3.0/threaded-messages", - "sdk/ios/3.0/edit-a-message", - "sdk/ios/3.0/delete-a-message", - "sdk/ios/3.0/delete-a-conversation", - "sdk/ios/3.0/typing-indicators", - "sdk/ios/3.0/delivery-read-receipts", - "sdk/ios/3.0/transient-messages" - ] - }, - { - "group": "Calling V3", - "pages": [ - "sdk/ios/3.0/calling-v3", - "sdk/ios/3.0/integration", - "sdk/ios/3.0/default-calling", - "sdk/ios/3.0/direct-calling", - "sdk/ios/3.0/recording", - "sdk/ios/3.0/video-view-customisation", - "sdk/ios/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/3.0/calling", - "sdk/ios/3.0/direct-calling1", - "sdk/ios/3.0/default-calling1", - "sdk/ios/3.0/recording1", - "sdk/ios/3.0/video-view-customisation1" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/3.0/users", - "sdk/ios/3.0/retrieve-users", - "sdk/ios/3.0/user-management", - "sdk/ios/3.0/block-users" - ] - }, - "sdk/ios/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ios/3.0/groups", - "sdk/ios/3.0/retrieve-groups", - "sdk/ios/3.0/create-a-group", - "sdk/ios/3.0/update-a-group", - "sdk/ios/3.0/join-a-group", - "sdk/ios/3.0/leave-a-group", - "sdk/ios/3.0/delete-a-group", - "sdk/ios/3.0/add-members-to-a-group", - "sdk/ios/3.0/retrieve-group-members", - "sdk/ios/3.0/kick-member-from-a-group", - "sdk/ios/3.0/change-member-scope", - "sdk/ios/3.0/transfer-group-ownership" - ] - }, - "sdk/ios/3.0/bots", - "sdk/ios/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ios/3.0/resources", - "sdk/ios/3.0/all-real-time-delegates-listeners", - "sdk/ios/3.0/increment-app-icon-badge-count", - "sdk/ios/3.0/upgrading-from-v2", - "sdk/ios/3.0/remove-delivered-notifications", - "sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/3.0/launch-chat-window-push-notification", - "sdk/ios/3.0/prepare-your-app-for-background-updates" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ios/3.0/advanced", - "sdk/ios/3.0/connection-status", - "sdk/ios/3.0/publishing-app-on-appstore", - "sdk/ios/3.0/managing-web-socket-connections-manually" - ] - }, - "sdk/ios/3.0/extensions-overview" + "sdk/javascript/2.0/authentication", + "sdk/javascript/2.0/authentication-login-listeners" ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Messaging", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ios/2.0/overview", - "sdk/ios/2.0/key-concepts", - "sdk/ios/2.0/message-structure-and-hierarchy", - "sdk/ios/2.0/rate-limits" - ] - }, - "sdk/ios/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ios/2.0/authentication", - "sdk/ios/2.0/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/2.0/messaging", - "sdk/ios/2.0/send-a-message", - "sdk/ios/2.0/receive-a-message", - "sdk/ios/2.0/additional-message-filtering", - "sdk/ios/2.0/retrieve-conversations", - "sdk/ios/2.0/threaded-messages", - "sdk/ios/2.0/edit-a-message", - "sdk/ios/2.0/delete-a-message", - "sdk/ios/2.0/delete-a-conversation", - "sdk/ios/2.0/typing-indicators", - "sdk/ios/2.0/delivery-read-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/2.0/calling", - "sdk/ios/2.0/direct-calling1", - "sdk/ios/2.0/default-calling1" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/2.0/users", - "sdk/ios/2.0/retrieve-users", - "sdk/ios/2.0/user-management", - "sdk/ios/2.0/block-users" - ] - }, - "sdk/ios/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ios/2.0/groups", - "sdk/ios/2.0/retrieve-groups", - "sdk/ios/2.0/create-a-group", - "sdk/ios/2.0/update-a-group", - "sdk/ios/2.0/join-a-group", - "sdk/ios/2.0/leave-a-group", - "sdk/ios/2.0/delete-a-group", - "sdk/ios/2.0/add-members-to-a-group", - "sdk/ios/2.0/retrieve-group-members", - "sdk/ios/2.0/kick-member-from-a-group", - "sdk/ios/2.0/change-member-scope", - "sdk/ios/2.0/transfer-group-ownership" - ] - }, - "sdk/ios/2.0/extensions", - { - "group": "Advanced", - "pages": [ - "sdk/ios/2.0/advanced", - "sdk/ios/2.0/connection-status", - "sdk/ios/2.0/publishing-app-on-appstore" - ] - }, - "sdk/ios/2.0/bots", - "sdk/ios/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ios/2.0/resources", - "sdk/ios/2.0/all-real-time-delegates-listeners", - "sdk/ios/2.0/increment-app-icon-badge-count", - "sdk/ios/2.0/upgrading-from-v1", - "sdk/ios/2.0/remove-delivered-notifications", - "sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/2.0/launch-chat-window-push-notification" - ] - } + "sdk/javascript/2.0/messaging", + "sdk/javascript/2.0/messaging-send-message", + "sdk/javascript/2.0/messaging-receive-message", + "sdk/javascript/2.0/messaging-additional-message-filtering", + "sdk/javascript/2.0/messaging-retrieve-conversations", + "sdk/javascript/2.0/threaded-messages", + "sdk/javascript/2.0/messaging-edit-message", + "sdk/javascript/2.0/messaging-delete-message", + "sdk/javascript/2.0/messaging-delete-conversation", + "sdk/javascript/2.0/messaging-typing-indicators", + "sdk/javascript/2.0/messaging-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/2.0/calling", + "sdk/javascript/2.0/calling-direct-calling", + "sdk/javascript/2.0/calling-default-calling", + "sdk/javascript/2.0/calling-custom-css", + "sdk/javascript/2.0/calling-recording" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/2.0/users", + "sdk/javascript/2.0/users-retrieve-users", + "sdk/javascript/2.0/users-user-management", + "sdk/javascript/2.0/users-block-users" + ] + }, + "sdk/javascript/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/javascript/2.0/groups", + "sdk/javascript/2.0/groups-retrieve-groups", + "sdk/javascript/2.0/groups-create-group", + "sdk/javascript/2.0/groups-update-group", + "sdk/javascript/2.0/groups-join-group", + "sdk/javascript/2.0/groups-leave-group", + "sdk/javascript/2.0/groups-delete-group", + "sdk/javascript/2.0/groups-retrieve-group-members", + "sdk/javascript/2.0/groups-add-members-to-group", + "sdk/javascript/2.0/groups-kick-ban-members", + "sdk/javascript/2.0/groups-change-member-scope", + "sdk/javascript/2.0/groups-transfer-group-ownership" + ] + }, + "sdk/javascript/2.0/bots", + "sdk/javascript/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/javascript/2.0/resources", + "sdk/javascript/2.0/resources-all-real-time-listeners", + "sdk/javascript/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/2.0/advanced", + "sdk/javascript/2.0/advanced-connection-listeners" ] } ] } ] - }, + } + ] + }, + { + "dropdown": "React Native", + "icon": "react", + "versions": [ { - "dropdown": "Android", - "icon": "/images/icons/android.svg", - "versions": [ + "version": "v4‎‎‎‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/android/overview", - "sdk/android/key-concepts", - "sdk/android/message-structure-and-hierarchy", - "sdk/android/rate-limits" - ] - }, - "sdk/android/setup", - { - "group": "Authentication", - "pages": [ - "sdk/android/authentication-overview", - "sdk/android/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/android/messaging-overview", - "sdk/android/send-message", - "sdk/android/receive-messages", - "sdk/android/additional-message-filtering", - "sdk/android/retrieve-conversations", - "sdk/android/threaded-messages", - "sdk/android/edit-message", - "sdk/android/delete-message", - "sdk/android/flag-message", - "sdk/android/delete-conversation", - "sdk/android/typing-indicators", - "sdk/android/delivery-read-receipts", - "sdk/android/transient-messages", - "sdk/android/interactive-messages", - "sdk/android/mentions", - "sdk/android/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/android/calling-overview", - "sdk/android/calling-setup", - "sdk/android/default-calling", - "sdk/android/direct-calling", - "sdk/android/standalone-calling", - "sdk/android/recording", - "sdk/android/video-view-customisation", - "sdk/android/presenter-mode", - "sdk/android/call-logs", - "sdk/android/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/android/users-overview", - "sdk/android/retrieve-users", - "sdk/android/user-management", - "sdk/android/block-users" - ] - }, - "sdk/android/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/android/groups-overview", - "sdk/android/retrieve-groups", - "sdk/android/create-group", - "sdk/android/update-group", - "sdk/android/join-group", - "sdk/android/leave-group", - "sdk/android/delete-group", - "sdk/android/retrieve-group-members", - "sdk/android/group-add-members", - "sdk/android/group-kick-member", - "sdk/android/group-change-member-scope", - "sdk/android/transfer-group-ownership" - ] - }, - "sdk/android/ai-moderation", - "sdk/android/ai-agents", - { - "group": "Resources", - "pages": [ - "sdk/android/resources-overview", - "sdk/android/real-time-listeners", - "sdk/android/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/android/advanced-overview", - "sdk/android/connection-status", - "sdk/android/publishing-app-on-playstore", - "sdk/android/connection-behaviour" - ] - }, - "sdk/android/extensions-overview", - "sdk/android/ai-user-copilot-overview", - "sdk/android/ai-chatbots-overview", - "sdk/android/webhooks-overview", - "sdk/android/android-overview", - "sdk/android/changelog" + "sdk/react-native/overview", + "sdk/react-native/key-concepts", + "sdk/react-native/message-structure-and-hierarchy", + "sdk/react-native/rate-limits" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, + "sdk/react-native/setup-sdk", { - "group": " ", + "group": "Authentication", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/android/3.0/overview", - "sdk/android/3.0/key-concepts", - "sdk/android/3.0/message-structure-and-hierarchy", - "sdk/android/3.0/rate-limits" - ] - }, - { - "group": "Authentication", - "pages": [ - "sdk/android/3.0/authentication", - "sdk/android/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/android/3.0/messaging", - "sdk/android/3.0/messaging-send-message", - "sdk/android/3.0/messaging-receive-messages", - "sdk/android/3.0/messaging-additional-message-filtering", - "sdk/android/3.0/messaging-retrieve-conversations", - "sdk/android/3.0/threaded-messages", - "sdk/android/3.0/messaging-edit-message", - "sdk/android/3.0/messaging-delete-message", - "sdk/android/3.0/messaging-delete-conversation", - "sdk/android/3.0/messaging-typing-indicators", - "sdk/android/3.0/messaging-transient-messages", - "sdk/android/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/android/3.0/calling-v3", - "sdk/android/3.0/setup-v3", - "sdk/android/3.0/default-calling-v3", - "sdk/android/3.0/direct-calling-v3", - "sdk/android/3.0/video-view-customisation-v3", - "sdk/android/3.0/calling-recording-v3", - "sdk/android/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/android/3.0/calling", - "sdk/android/3.0/calling-direct-calling", - "sdk/android/3.0/calling-default-calling", - "sdk/android/3.0/calling-recording", - "sdk/android/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/android/3.0/users", - "sdk/android/3.0/users-retrieve-users", - "sdk/android/3.0/users-user-management", - "sdk/android/3.0/users-block-users" - ] - }, - "sdk/android/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/android/3.0/groups", - "sdk/android/3.0/groups-retrieve-groups", - "sdk/android/3.0/groups-create-group", - "sdk/android/3.0/groups-update-group", - "sdk/android/3.0/groups-join-group", - "sdk/android/3.0/groups-leave-group", - "sdk/android/3.0/groups-delete-group", - "sdk/android/3.0/groups-retrieve-group-members", - "sdk/android/3.0/groups-add-members-to-group", - "sdk/android/3.0/groups-kick-ban-members", - "sdk/android/3.0/groups-change-member-scope", - "sdk/android/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/android/3.0/bots", - "sdk/android/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/android/3.0/android-resources", - "sdk/android/3.0/resources-all-real-time-listeners", - "sdk/android/3.0/resources-upgrading-from-v2" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/android/3.0/android-advanced", - "sdk/android/3.0/advanced-connection-status", - "sdk/android/3.0/advanced-publishing-app-on-playstore", - "sdk/android/3.0/advanced-managing-web-socket-connections-manually" - ] - }, - "sdk/android/3.0/setup", - "sdk/android/3.0/extensions-overview", - { - "group": "V3 UI Kits", - "pages": [ - "sdk/android/3.0/android-3-0-overview", - "sdk/android/3.0/kotlin-overview" - ] - } + "sdk/react-native/authentication-overview", + "sdk/react-native/login-listener" ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Messaging", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/android/2.0/overview", - "sdk/android/2.0/key-concepts", - "sdk/android/2.0/message-structure-and-hierarchy", - "sdk/android/2.0/rate-limits" - ] - }, - "sdk/android/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/android/2.0/authentication", - "sdk/android/2.0/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/android/2.0/messaging", - "sdk/android/2.0/send-message", - "sdk/android/2.0/receive-messages", - "sdk/android/2.0/additional-message-filtering", - "sdk/android/2.0/retrieve-conversations", - "sdk/android/2.0/threaded-messages", - "sdk/android/2.0/edit-message", - "sdk/android/2.0/delete-message", - "sdk/android/2.0/delete-conversation", - "sdk/android/2.0/typing-indicators", - "sdk/android/2.0/delivery-read-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/android/2.0/calling", - "sdk/android/2.0/direct-calling", - "sdk/android/2.0/default-calling" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/android/2.0/users", - "sdk/android/2.0/retrieve-users", - "sdk/android/2.0/user-management", - "sdk/android/2.0/block-users" - ] - }, - "sdk/android/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/android/2.0/groups", - "sdk/android/2.0/retrieve-groups", - "sdk/android/2.0/create-a-group", - "sdk/android/2.0/update-a-group", - "sdk/android/2.0/join-a-group", - "sdk/android/2.0/leave-a-group", - "sdk/android/2.0/delete-a-group", - "sdk/android/2.0/retrieve-group-members", - "sdk/android/2.0/add-members-to-a-group", - "sdk/android/2.0/kick-member-from-a-group", - "sdk/android/2.0/change-member-scope", - "sdk/android/2.0/transfer-group-ownership" - ] - }, - "sdk/android/2.0/extensions", - "sdk/android/2.0/bots", - "sdk/android/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/android/2.0/resources", - "sdk/android/2.0/resources-all-real-time-listeners", - "sdk/android/2.0/resources-upgrading-from-v1" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/android/2.0/advanced", - "sdk/android/2.0/connection-status", - "sdk/android/2.0/publishing-app-on-playstore" - ] - } + "sdk/react-native/messaging-overview", + "sdk/react-native/send-message", + "sdk/react-native/receive-messages", + "sdk/react-native/additional-message-filtering", + "sdk/react-native/retrieve-conversations", + "sdk/react-native/threaded-messages", + "sdk/react-native/edit-message", + "sdk/react-native/delete-message", + "sdk/react-native/delete-conversation", + "sdk/react-native/typing-indicators", + "sdk/react-native/interactive-messages", + "sdk/react-native/transient-messages", + "sdk/react-native/delivery-read-receipts", + "sdk/react-native/mentions", + "sdk/react-native/reactions" ] - } + }, + { + "group": "Calling", + "pages": [ + "sdk/react-native/calling-overview", + "sdk/react-native/calling-setup", + "sdk/react-native/default-call", + "sdk/react-native/direct-call", + "sdk/react-native/recording", + "sdk/react-native/video-view-customisation", + "sdk/react-native/presenter-mode", + "sdk/react-native/call-logs", + "sdk/react-native/expo-integration-guide", + "sdk/react-native/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/react-native/users-overview", + "sdk/react-native/retrieve-users", + "sdk/react-native/user-management", + "sdk/react-native/block-users" + ] + }, + "sdk/react-native/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/react-native/groups-overview", + "sdk/react-native/retrieve-groups", + "sdk/react-native/create-group", + "sdk/react-native/update-group", + "sdk/react-native/join-group", + "sdk/react-native/leave-group", + "sdk/react-native/delete-group", + "sdk/react-native/retrieve-group-members", + "sdk/react-native/group-add-members", + "sdk/react-native/group-kick-ban-members", + "sdk/react-native/group-change-member-scope", + "sdk/react-native/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/react-native/resources-overview", + "sdk/react-native/real-time-listeners", + "sdk/react-native/push-notification-setup", + "sdk/react-native/upgrading-from-v3" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/react-native/advanced-overview", + "sdk/react-native/connection-status", + "sdk/react-native/managing-web-sockets-connections-manually" + ] + }, + "sdk/react-native/extensions-overview", + "sdk/react-native/ai-user-copilot-overview", + "sdk/react-native/ai-chatbots-overview", + "sdk/react-native/webhooks-overview", + "sdk/react-native/react-native-overview", + "sdk/react-native/changelog" ] } ] }, { - "dropdown": "Flutter", - "icon": "/images/icons/flutter.svg", - "versions": [ + "version": "v3‎‎‎‎‎‎‎‎", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "group": " ", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/flutter/overview", - "sdk/flutter/key-concepts", - "sdk/flutter/message-structure-and-hierarchy", - "sdk/flutter/rate-limits" - ] - }, - "sdk/flutter/setup", - { - "group": "Authentication", - "pages": [ - "sdk/flutter/authentication-overview", - "sdk/flutter/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/flutter/messaging-overview", - "sdk/flutter/send-message", - "sdk/flutter/receive-messages", - "sdk/flutter/additional-message-filtering", - "sdk/flutter/retrieve-conversations", - "sdk/flutter/edit-message", - "sdk/flutter/flag-message", - "sdk/flutter/delete-message", - "sdk/flutter/delete-conversation", - "sdk/flutter/typing-indicators", - "sdk/flutter/interactive-messages", - "sdk/flutter/transient-messages", - "sdk/flutter/delivery-read-receipts", - "sdk/flutter/threaded-messages", - "sdk/flutter/mentions", - "sdk/flutter/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/flutter/calling-overview", - "sdk/flutter/calling-setup", - "sdk/flutter/default-call", - "sdk/flutter/direct-call", - "sdk/flutter/standalone-calling", - "sdk/flutter/video-view-customisation", - "sdk/flutter/recording", - "sdk/flutter/presenter-mode", - "sdk/flutter/call-logs", - "sdk/flutter/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/flutter/users-overview", - "sdk/flutter/retrieve-users", - "sdk/flutter/user-management", - "sdk/flutter/block-users" - ] - }, - "sdk/flutter/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/flutter/groups-overview", - "sdk/flutter/retrieve-groups", - "sdk/flutter/create-group", - "sdk/flutter/update-group", - "sdk/flutter/join-group", - "sdk/flutter/leave-group", - "sdk/flutter/delete-group", - "sdk/flutter/retrieve-group-members", - "sdk/flutter/group-add-members", - "sdk/flutter/group-kick-member", - "sdk/flutter/group-change-member-scope", - "sdk/flutter/transfer-group-ownership" - ] - }, - "sdk/flutter/ai-moderation", - "sdk/flutter/ai-agents", - { - "group": "Resources", - "pages": [ - "sdk/flutter/resources-overview", - "sdk/flutter/real-time-listeners", - "sdk/flutter/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/flutter/advanced-overview", - "sdk/flutter/connection-status", - "sdk/flutter/connection-behaviour" - ] - }, - "sdk/flutter/extensions-overview", - "sdk/flutter/ai-user-copilot-overview", - "sdk/flutter/ai-chatbots-overview", - "sdk/flutter/webhooks-overview", - "sdk/flutter/flutter-overview", - "sdk/flutter/changelog" + "sdk/react-native/3.0/overview", + "sdk/react-native/3.0/key-concepts", + "sdk/react-native/3.0/message-structure-and-hierarchy", + "sdk/react-native/3.0/rate-limits" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, + "sdk/react-native/3.0/setup", { - "group": " ", + "group": "Authentication", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/flutter/3.0/overview", - "sdk/flutter/3.0/key-concepts", - "sdk/flutter/3.0/message-structure-and-hierarchy", - "sdk/flutter/3.0/rate-limits" - ] - }, - "sdk/flutter/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/flutter/3.0/authentication", - "sdk/flutter/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/flutter/3.0/messaging", - "sdk/flutter/3.0/messaging-send-message", - "sdk/flutter/3.0/messaging-receive-messages", - "sdk/flutter/3.0/messaging-additional-message-filtering", - "sdk/flutter/3.0/messaging-retrieve-conversations", - "sdk/flutter/3.0/messaging-edit-message", - "sdk/flutter/3.0/messaging-delete-message", - "sdk/flutter/3.0/messaging-delete-conversation", - "sdk/flutter/3.0/messaging-typing-indicators", - "sdk/flutter/3.0/messaging-transient-messages", - "sdk/flutter/3.0/messaging-receipts", - "sdk/flutter/3.0/threaded-messages" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/flutter/3.0/calling-v3", - "sdk/flutter/3.0/calling-setup", - "sdk/flutter/3.0/default-calling", - "sdk/flutter/3.0/direct-calling", - "sdk/flutter/3.0/video-view-customisation", - "sdk/flutter/3.0/recording", - "sdk/flutter/3.0/presenter" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/flutter/3.0/users", - "sdk/flutter/3.0/users-retrieve-users", - "sdk/flutter/3.0/users-user-management", - "sdk/flutter/3.0/users-block-users" - ] - }, - "sdk/flutter/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/flutter/3.0/groups", - "sdk/flutter/3.0/groups-retrieve-groups", - "sdk/flutter/3.0/groups-create-group", - "sdk/flutter/3.0/groups-update-group", - "sdk/flutter/3.0/groups-join-group", - "sdk/flutter/3.0/groups-leave-group", - "sdk/flutter/3.0/groups-delete-group", - "sdk/flutter/3.0/groups-retrieve-group-members", - "sdk/flutter/3.0/groups-add-members-to-group", - "sdk/flutter/3.0/groups-kick-ban-members", - "sdk/flutter/3.0/groups-change-member-scope", - "sdk/flutter/3.0/groups-transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/flutter/3.0/flutter-resources", - "sdk/flutter/3.0/resources-all-real-time-listeners" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/flutter/3.0/advanced", - "sdk/flutter/3.0/advanced-connection-status", - "sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually" - ] - }, - "sdk/flutter/extensions-overview" + "sdk/react-native/3.0/authentication", + "sdk/react-native/3.0/authentication-login-listeners" ] - } - ] - } - ] - }, - { - "dropdown": "Ionic (Deprecated)", - "icon": "/images/icons/ionic.svg", - "versions": [ - { - "version": "v4‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Messaging", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic-legacy/overview", - "sdk/ionic-legacy/key-concepts", - "sdk/ionic-legacy/message-structure-and-hierarchy", - "sdk/ionic-legacy/rate-limits" - ] - }, - "sdk/ionic-legacy/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic-legacy/authentication", - "sdk/ionic-legacy/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic-legacy/messaging-overview", - "sdk/ionic-legacy/send-message", - "sdk/ionic-legacy/receive-messages", - "sdk/ionic-legacy/additional-message-filtering", - "sdk/ionic-legacy/retrieve-conversations", - "sdk/ionic-legacy/threaded-messages", - "sdk/ionic-legacy/edit-message", - "sdk/ionic-legacy/delete-message", - "sdk/ionic-legacy/delete-conversation", - "sdk/ionic-legacy/typing-indicators", - "sdk/ionic-legacy/interactive-messages", - "sdk/ionic-legacy/transient-messages", - "sdk/ionic-legacy/delivery-read-receipts", - "sdk/ionic-legacy/mentions", - "sdk/ionic-legacy/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic-legacy/calling-overview", - "sdk/ionic-legacy/calling-setup", - "sdk/ionic-legacy/default-call", - "sdk/ionic-legacy/direct-call", - "sdk/ionic-legacy/video-view-customisation", - "sdk/ionic-legacy/recording", - "sdk/ionic-legacy/presenter-mode" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic-legacy/users-overview", - "sdk/ionic-legacy/retrieve-users", - "sdk/ionic-legacy/user-management", - "sdk/ionic-legacy/block-users" - ] - }, - "sdk/ionic-legacy/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic-legacy/groups-overview", - "sdk/ionic-legacy/retrieve-groups", - "sdk/ionic-legacy/create-group", - "sdk/ionic-legacy/update-group", - "sdk/ionic-legacy/join-group", - "sdk/ionic-legacy/leave-group", - "sdk/ionic-legacy/delete-group", - "sdk/ionic-legacy/retrieve-group-members", - "sdk/ionic-legacy/group-add-members", - "sdk/ionic-legacy/group-kick-member", - "sdk/ionic-legacy/group-change-member-scope", - "sdk/ionic-legacy/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/ionic-legacy/resources-overview", - "sdk/ionic-legacy/real-time-listeners", - "sdk/ionic-legacy/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic-legacy/advanced", - "sdk/ionic-legacy/connection-status", - "sdk/ionic-legacy/connection-behaviour", - "sdk/ionic-legacy/managing-connections-manually" - ] - }, - "sdk/ionic-legacy/extensions-overview", - "sdk/ionic-legacy/ai-user-copilot-overview", - "sdk/ionic-legacy/ai-chatbots-overview", - "sdk/ionic-legacy/webhooks-overview", - "sdk/ionic-legacy/changelog" + "sdk/react-native/3.0/messaging", + "sdk/react-native/3.0/messaging-send-message", + "sdk/react-native/3.0/messaging-receive-messages", + "sdk/react-native/3.0/messaging-additional-message-filtering", + "sdk/react-native/3.0/messaging-retrieve-conversations", + "sdk/react-native/3.0/threaded-messages", + "sdk/react-native/3.0/messaging-edit-message", + "sdk/react-native/3.0/messaging-delete-message", + "sdk/react-native/3.0/messaging-delete-conversation", + "sdk/react-native/3.0/messaging-typing-indicators", + "sdk/react-native/3.0/transient-messages", + "sdk/react-native/3.0/messaging-receipts" ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Calling v3", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic-legacy/3.0/overview", - "sdk/ionic-legacy/3.0/key-concepts", - "sdk/ionic-legacy/3.0/message-structure-and-hierarchy", - "sdk/ionic-legacy/3.0/rate-limits" - ] - }, - "sdk/ionic-legacy/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic-legacy/3.0/authentication", - "sdk/ionic-legacy/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic-legacy/3.0/messaging", - "sdk/ionic-legacy/3.0/messaging-send-message", - "sdk/ionic-legacy/3.0/messaging-receive-messages", - "sdk/ionic-legacy/3.0/messaging-additional-message-filtering", - "sdk/ionic-legacy/3.0/messaging-retrieve-conversations", - "sdk/ionic-legacy/3.0/threaded-messages", - "sdk/ionic-legacy/3.0/messaging-edit-message", - "sdk/ionic-legacy/3.0/messaging-delete-message", - "sdk/ionic-legacy/3.0/messaging-delete-conversation", - "sdk/ionic-legacy/3.0/messaging-typing-indicators", - "sdk/ionic-legacy/3.0/transient-messages", - "sdk/ionic-legacy/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/ionic-legacy/3.0/calling-v3", - "sdk/ionic-legacy/3.0/v3-setup", - "sdk/ionic-legacy/3.0/v3-start-call-session", - "sdk/ionic-legacy/3.0/v3-video-view-customisation", - "sdk/ionic-legacy/3.0/v3-calling-recording" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic-legacy/3.0/calling", - "sdk/ionic-legacy/3.0/calling-direct-calling", - "sdk/ionic-legacy/3.0/calling-default-calling", - "sdk/ionic-legacy/3.0/calling-recording", - "sdk/ionic-legacy/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic-legacy/3.0/users", - "sdk/ionic-legacy/3.0/users-retrieve-users", - "sdk/ionic-legacy/3.0/users-user-management", - "sdk/ionic-legacy/3.0/users-block-users" - ] - }, - "sdk/ionic-legacy/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic-legacy/3.0/groups", - "sdk/ionic-legacy/3.0/groups-retrieve-groups", - "sdk/ionic-legacy/3.0/groups-create-group", - "sdk/ionic-legacy/3.0/groups-update-group", - "sdk/ionic-legacy/3.0/groups-join-group", - "sdk/ionic-legacy/3.0/groups-leave-group", - "sdk/ionic-legacy/3.0/groups-delete-group", - "sdk/ionic-legacy/3.0/groups-retrieve-group-members", - "sdk/ionic-legacy/3.0/groups-add-members-to-group", - "sdk/ionic-legacy/3.0/groups-kick-ban-members", - "sdk/ionic-legacy/3.0/groups-change-member-scope", - "sdk/ionic-legacy/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/ionic-legacy/3.0/bots", - "sdk/ionic-legacy/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ionic-legacy/3.0/resources", - "sdk/ionic-legacy/3.0/resources-all-real-time-listeners", - "sdk/ionic-legacy/3.0/resources-upgrading-from-v2" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic-legacy/3.0/advanced", - "sdk/ionic-legacy/3.0/advanced-connection-listener", - "sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually" - ] - }, - "sdk/ionic-legacy/extensions-overview" + "sdk/react-native/3.0/calling-v3", + "sdk/react-native/3.0/v3-setup", + "sdk/react-native/3.0/v3-default-calling", + "sdk/react-native/3.0/v3-direct-calling", + "sdk/react-native/3.0/v3-video-view-customisation", + "sdk/react-native/3.0/recording-beta-v3", + "sdk/react-native/3.0/presenter-mode" ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Calling", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic-legacy/2.0/overview", - "sdk/ionic-legacy/2.0/key-concepts", - "sdk/ionic-legacy/2.0/message-structure-and-hierarchy", - "sdk/ionic-legacy/2.0/rate-limits" - ] - }, - "sdk/ionic-legacy/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic-legacy/2.0/authentication", - "sdk/ionic-legacy/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic-legacy/2.0/messaging", - "sdk/ionic-legacy/2.0/messaging-send-message", - "sdk/ionic-legacy/2.0/messaging-receive-messages", - "sdk/ionic-legacy/2.0/messaging-additional-message-filtering", - "sdk/ionic-legacy/2.0/messaging-retrieve-conversations", - "sdk/ionic-legacy/2.0/threaded-messages", - "sdk/ionic-legacy/2.0/messaging-edit-message", - "sdk/ionic-legacy/2.0/messaging-delete-message", - "sdk/ionic-legacy/2.0/messaging-delete-conversation", - "sdk/ionic-legacy/2.0/messaging-typing-indicators", - "sdk/ionic-legacy/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic-legacy/2.0/calling", - "sdk/ionic-legacy/2.0/calling-direct-calling", - "sdk/ionic-legacy/2.0/calling-default-calling" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic-legacy/2.0/users", - "sdk/ionic-legacy/2.0/users-retrieve-users", - "sdk/ionic-legacy/2.0/users-user-management", - "sdk/ionic-legacy/2.0/users-block-users" - ] - }, - "sdk/ionic-legacy/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic-legacy/2.0/groups", - "sdk/ionic-legacy/2.0/groups-retrieve-groups", - "sdk/ionic-legacy/2.0/groups-create-group", - "sdk/ionic-legacy/2.0/groups-update-group", - "sdk/ionic-legacy/2.0/groups-join-group", - "sdk/ionic-legacy/2.0/groups-leave-group", - "sdk/ionic-legacy/2.0/groups-delete-group", - "sdk/ionic-legacy/2.0/groups-retrieve-group-members", - "sdk/ionic-legacy/2.0/groups-add-members-to-group", - "sdk/ionic-legacy/2.0/groups-kick-ban-members", - "sdk/ionic-legacy/2.0/groups-change-member-scope", - "sdk/ionic-legacy/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/ionic-legacy/2.0/bots", - "sdk/ionic-legacy/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ionic-legacy/2.0/resources", - "sdk/ionic-legacy/2.0/resources-all-real-time-listeners", - "sdk/ionic-legacy/2.0/resources-upgrading-from-v1" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic-legacy/2.0/advanced", - "sdk/ionic-legacy/2.0/advanced-connection-listener" - ] - } + "sdk/react-native/3.0/calling", + "sdk/react-native/3.0/calling-direct-calling", + "sdk/react-native/3.0/calling-default-calling", + "sdk/react-native/3.0/calling-recording", + "sdk/react-native/3.0/video-view-customisation" ] - } - ] - } - ] - } - ] - }, - { - "tab": "APIs", - "groups": [ - { - "group": "Chat APIs", - "pages": [ - "rest-api/chat-apis", - { - "group": "Setup & Authentication", - "expanded": false, - "icon": "key", - "pages": [ + }, { - "group": "API Keys", + "group": "Users", "pages": [ - "rest-api/api-keys", - "rest-api/api-keys/list", - "rest-api/api-keys/create", - "rest-api/api-keys/get", - "rest-api/api-keys/update", - "rest-api/api-keys/delete" + "sdk/react-native/3.0/users", + "sdk/react-native/3.0/users-retrieve-users", + "sdk/react-native/3.0/users-user-management", + "sdk/react-native/3.0/users-block-users" ] }, + "sdk/react-native/3.0/user-presence", { - "group": "Auth Tokens", + "group": "Groups", "pages": [ - "rest-api/auth-tokens", - "rest-api/auth-tokens/list", - "rest-api/auth-tokens/create", - "rest-api/auth-tokens/flush", - "rest-api/auth-tokens/get", - "rest-api/auth-tokens/update", - "rest-api/auth-tokens/delete" + "sdk/react-native/3.0/groups", + "sdk/react-native/3.0/groups-retrieve-groups", + "sdk/react-native/3.0/groups-create-group", + "sdk/react-native/3.0/groups-update-group", + "sdk/react-native/3.0/groups-join-group", + "sdk/react-native/3.0/groups-leave-group", + "sdk/react-native/3.0/groups-delete-group", + "sdk/react-native/3.0/groups-retrieve-group-members", + "sdk/react-native/3.0/groups-add-members-to-group", + "sdk/react-native/3.0/groups-kick-ban-members", + "sdk/react-native/3.0/groups-change-member-scope", + "sdk/react-native/3.0/groups-transfer-group-ownership" ] - } + }, + "sdk/react-native/3.0/bots", + "sdk/react-native/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/react-native/3.0/resources", + "sdk/react-native/3.0/resources-all-real-time-listeners", + "sdk/react-native/3.0/resources-upgrading-from-v2", + "sdk/react-native/3.0/resources-push-notification-setup" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/react-native/3.0/advanced", + "sdk/react-native/3.0/advanced-connection-listener", + "sdk/react-native/3.0/managing-web-socket-connections-manually" + ] + }, + "sdk/react-native/3.0/extensions-overview", + "sdk/react-native/3.0/react-native-3-0-overview" ] - }, + } + ] + }, + { + "version": "v2‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Users & Groups", - "expanded": false, - "icon": "users", + "group": " ", "pages": [ { - "group": "User Roles", + "group": "Overview", "pages": [ - "rest-api/roles", - "rest-api/roles/list", - "rest-api/roles/create", - "rest-api/roles/get", - "rest-api/roles/update", - "rest-api/roles/delete", - { - "group": "Restrict Features", - "pages": [ - "rest-api/restrict-features", - "rest-api/restrict-features/list-restricted-features", - "rest-api/restrict-features/restrict-features", - "rest-api/restrict-features/allow-features" - ] - } + "sdk/react-native/2.0/overview", + "sdk/react-native/2.0/key-concepts", + "sdk/react-native/2.0/message-structure-and-hierarchy", + "sdk/react-native/2.0/rate-limits" ] }, + "sdk/react-native/2.0/setup", { - "group": "Users", + "group": "Authentication", + "pages": [ + "sdk/react-native/2.0/authentication", + "sdk/react-native/2.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", "pages": [ - "rest-api/users", - "rest-api/users/list", - "rest-api/users/reactivate", - "rest-api/users/create", - "rest-api/users/deactivate", - "rest-api/users/get", - "rest-api/users/update", - "rest-api/users/delete" + "sdk/react-native/2.0/messaging", + "sdk/react-native/2.0/messaging-send-message", + "sdk/react-native/2.0/messaging-receive-messages", + "sdk/react-native/2.0/messaging-additional-message-filtering", + "sdk/react-native/2.0/messaging-retrieve-conversations", + "sdk/react-native/2.0/threaded-messages", + "sdk/react-native/2.0/messaging-edit-message", + "sdk/react-native/2.0/messaging-delete-message", + "sdk/react-native/2.0/messaging-delete-conversation", + "sdk/react-native/2.0/messaging-typing-indicators", + "sdk/react-native/2.0/messaging-receipts" ] }, { - "group": "Blocked Users", + "group": "Calling", "pages": [ - "rest-api/blocked-users", - "rest-api/blocked-users/list-blocked-users", - "rest-api/blocked-users/block-user", - "rest-api/blocked-users/unblock-user" + "sdk/react-native/2.0/calling", + "sdk/react-native/2.0/calling-direct-calling", + "sdk/react-native/2.0/calling-default-calling" ] }, { - "group": "Friends", + "group": "Users", "pages": [ - "rest-api/friends", - "rest-api/friends/list-friends", - "rest-api/friends/add-friends", - "rest-api/friends/remove-friends" + "sdk/react-native/2.0/users", + "sdk/react-native/2.0/users-retrieve-users", + "sdk/react-native/2.0/users-user-management", + "sdk/react-native/2.0/users-block-users" ] }, + "sdk/react-native/2.0/user-presence", { "group": "Groups", "pages": [ - "rest-api/groups", - "rest-api/groups/list", - "rest-api/groups/create", - "rest-api/groups/get", - "rest-api/groups/update", - "rest-api/groups/delete" + "sdk/react-native/2.0/groups", + "sdk/react-native/2.0/groups-retrieve-groups", + "sdk/react-native/2.0/groups-create-group", + "sdk/react-native/2.0/groups-update-group", + "sdk/react-native/2.0/groups-join-group", + "sdk/react-native/2.0/groups-leave-group", + "sdk/react-native/2.0/groups-delete-group", + "sdk/react-native/2.0/groups-retrieve-group-members", + "sdk/react-native/2.0/groups-add-members-to-group", + "sdk/react-native/2.0/groups-kick-ban-members", + "sdk/react-native/2.0/groups-change-member-scope", + "sdk/react-native/2.0/groups-transfer-group-ownership" ] }, + "sdk/react-native/2.0/bots", + "sdk/react-native/2.0/webhooks", { - "group": "Group Members", + "group": "Resources", "pages": [ - "rest-api/group-members", - "rest-api/group-members/list", - "rest-api/group-members/add-members", - "rest-api/group-members/change-scope", - "rest-api/group-members/kick" + "sdk/react-native/2.0/resources", + "sdk/react-native/2.0/resources-all-real-time-listeners", + "sdk/react-native/2.0/resources-upgrading-from-v1", + "sdk/react-native/2.0/resources-push-notification-setup" ] }, { - "group": "Banned Users", + "group": "Advanced", "pages": [ - "rest-api/banned-users", - "rest-api/banned-users/ban", - "rest-api/banned-users/unban", - "rest-api/banned-users/list" + "sdk/react-native/2.0/advanced", + "sdk/react-native/2.0/advanced-connection-listener" ] } ] - }, + } + ] + } + ] + }, + { + "dropdown": "iOS", + "icon": "swift", + "versions": [ + { + "version": "v4‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Chat & Messaging", - "expanded": false, - "icon": "comments", + "group": " ", "pages": [ { - "group": "Messages", + "group": "Overview", "pages": [ - "rest-api/messages", - "rest-api/messages/list-messages", - "rest-api/messages/send-message", - "rest-api/messages/get-message", - "rest-api/messages/update-message", - "rest-api/messages/delete-message", - "rest-api/messages/mark-message-as-interacted", - "rest-api/messages/list-all-reactions", - "rest-api/messages/list-reactions-with-a-specific-emojiunicodes", - "rest-api/messages/add-reaction", - "rest-api/messages/remove-reaction", - "rest-api/messages/list-threaded-messages", - "rest-api/messages/send-threaded-message", - "rest-api/messages/list-user-messages", - "rest-api/messages/list-group-messages", - "rest-api/messages/send-bot-message" + "sdk/ios/overview", + "sdk/ios/key-concepts", + "sdk/ios/message-structure-and-hierarchy", + "sdk/ios/rate-limits" ] }, + "sdk/ios/setup", { - "group": "Conversations", + "group": "Authentication", "pages": [ - "rest-api/conversations", - "rest-api/conversations/list-conversations", - "rest-api/conversations/get-conversation", - "rest-api/conversations/delete-conversation", - "rest-api/conversations/get-user-conversation", - "rest-api/conversations/update-user-conversation", - "rest-api/conversations/reset-user-conversation", - "rest-api/conversations/mark-user-conversation-as-delivered", - "rest-api/conversations/mark-user-conversation-as-read", - "rest-api/conversations/mark-conversation-messages-as-unread", - "rest-api/conversations/get-group-conversation", - "rest-api/conversations/update-group-conversation", - "rest-api/conversations/reset-group-conversation", - "rest-api/conversations/mark-group-conversation-as-delivered", - "rest-api/conversations/mark-group-conversation-as-read", - "rest-api/conversations/mark-group-conversation-as-unread" + "sdk/ios/authentication-overview", + "sdk/ios/login-listeners" ] - } - ] - }, - { - "group": "Voice & Video Calls", - "expanded": false, - "icon": "phone-volume", - "pages": [ - "rest-api/calls", - "rest-api/list-calls", - "rest-api/get-call" - ] - }, - { - "group": "Platform Features", - "expanded": false, - "icon": "sliders", - "pages": [ + }, { - "group": "Metrics", - "pages": [ - "rest-api/metrics/usage-metrics", - "rest-api/metrics/message-metrics" - ] - }, - { - "group": "Moderation", - "pages": [ - "rest-api/moderation", - "rest-api/moderation/list-rules", - "rest-api/moderation/add-rule", - "rest-api/moderation/get-rule", - "rest-api/moderation/update-rule", - "rest-api/moderation/remove-rule", - "rest-api/moderation/list-keywords", - "rest-api/moderation/add-keywords", - "rest-api/moderation/get-keyword", - "rest-api/moderation/update-keyword", - "rest-api/moderation/remove-keyword", - "rest-api/moderation/get-rule-revisions", - "rest-api/moderation/list-blocked-messages", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/create-reasons", - "rest-api/moderation/list-reasons", - "rest-api/moderation/get-reason-details", - "rest-api/moderation/update-reason-details", - "rest-api/moderation/delete-reasons", - "rest-api/moderation/flag-a-message", - "rest-api/moderation/review-blocked-message", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/blockreview-flagged-message", - "rest-api/moderation/list-flagged-messages", - "rest-api/moderation/list-reviewed-messages" - ] - }, - { - "group": "Notification Engine", - "pages": [ - "rest-api/notifications/list-settings", - "rest-api/notifications/reset-settings", - "rest-api/notifications/update-settings", - "rest-api/notifications/list-fcm-providers", - "rest-api/notifications/update-fcm-provider", - "rest-api/notifications/add-fcm-provider", - "rest-api/notifications/delete-fcm-provider", - "rest-api/notifications/change-default-fcm-provider", - "rest-api/notifications/list-apns-providers", - "rest-api/notifications/update-apns-providers", - "rest-api/notifications/add-apns-provider", - "rest-api/notifications/delete-apns-providers", - "rest-api/notifications/change-default-apns-provider", - "rest-api/notifications/list-preferences", - "rest-api/notifications/reset-preferences", - "rest-api/notifications/update-preferences", - "rest-api/notifications/list-push-tokens", - "rest-api/notifications/register-push-token", - "rest-api/notifications/unregister-push-tokens-for-authtoken", - "rest-api/notifications/delete-the-given-push-token", - "rest-api/notifications/list-muted-conversations", - "rest-api/notifications/mute-notifications-for-conversations", - "rest-api/notifications/unmute-notifications-for-conversations", - "rest-api/notifications/get-timezone", - "rest-api/notifications/update-timezone", - "rest-api/notifications/get-contact-details", - "rest-api/notifications/delete-contact-details", - "rest-api/notifications/update-contact-details", - "rest-api/notifications/get-twilio-credentials", - "rest-api/notifications/update-twilio-credentials", - "rest-api/notifications/save-twilio-credentials", - "rest-api/notifications/delete-twilio-credentials", - "rest-api/notifications/get-sendgrid-credentials", - "rest-api/notifications/update-sendgrid-credentials", - "rest-api/notifications/save-sendgrid-credentials", - "rest-api/notifications/delete-sendgrid-credentials", - "rest-api/notifications/get-custom-provider-for-push-notifications", - "rest-api/notifications/update-custom-provider-for-push-notifications", - "rest-api/notifications/save-custom-provider-for-push-notifications", - "rest-api/notifications/delete-the-custom-provider-for-push-notifications", - "rest-api/notifications/get-custom-provider-for-sms-notifications", - "rest-api/notifications/update-custom-provider-for-sms-notifications", - "rest-api/notifications/save-custom-provider-for-sms-notifications", - "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", - "rest-api/notifications/get-custom-provider-for-email-notifications", - "rest-api/notifications/update-custom-provider-for-email-notifications", - "rest-api/notifications/save-custom-provider-for-email-notifications", - "rest-api/notifications/delete-the-custom-provider-for-email-notifications", - "rest-api/notifications/notifications-logs" + "group": "Messaging", + "pages": [ + "sdk/ios/messaging-overview", + "sdk/ios/send-message", + "sdk/ios/receive-message", + "sdk/ios/additional-message-filtering", + "sdk/ios/retrieve-conversations", + "sdk/ios/threaded-messages", + "sdk/ios/edit-message", + "sdk/ios/delete-message", + "sdk/ios/delete-conversation", + "sdk/ios/typing-indicators", + "sdk/ios/delivery-read-receipts", + "sdk/ios/interactive-messages", + "sdk/ios/transient-messages", + "sdk/ios/mentions", + "sdk/ios/reactions" ] - } - ] - }, - { - "group": "Data Import", - "expanded": false, - "icon": "file-import", - "pages": [ - "rest-api/data-import", + }, { - "group": "Messages", + "group": "Calling", "pages": [ - "rest-api/data-import-apis/messages/import-messages" + "sdk/ios/calling-overview", + "sdk/ios/calling-integration", + "sdk/ios/default-calling", + "sdk/ios/direct-calling", + "sdk/ios/recording", + "sdk/ios/video-view-customisation", + "sdk/ios/presenter-mode", + "sdk/ios/call-logs", + "sdk/ios/session-timeout" ] }, { "group": "Users", "pages": [ - "rest-api/data-import-apis/users/import-users" + "sdk/ios/users-overview", + "sdk/ios/retrieve-users", + "sdk/ios/user-management", + "sdk/ios/block-users" ] }, + "sdk/ios/user-presence", { "group": "Groups", "pages": [ - "rest-api/data-import-apis/groups/import-groups", - "rest-api/data-import-apis/groups/import-group-members" + "sdk/ios/groups-overview", + "sdk/ios/retrieve-groups", + "sdk/ios/create-group", + "sdk/ios/update-group", + "sdk/ios/join-group", + "sdk/ios/leave-group", + "sdk/ios/delete-group", + "sdk/ios/group-add-members", + "sdk/ios/retrieve-group-members", + "sdk/ios/group-kick-member", + "sdk/ios/group-change-member-scope", + "sdk/ios/transfer-group-ownership" ] - } + }, + { + "group": "Advanced", + "pages": [ + "sdk/ios/advanced", + "sdk/ios/connection-status", + "sdk/ios/web-socket-connection-behaviour", + "sdk/ios/managing-web-socket-connections-manually", + "sdk/ios/marking-delivered-with-push-notification", + "sdk/ios/publishing-app-on-appstore" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/ios/resources-overview", + "sdk/ios/all-real-time-delegates-listeners", + "sdk/ios/increment-app-icon-badge-count", + "sdk/ios/remove-delivered-notifications", + "sdk/ios/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/launch-chat-window-on-tap-of-push-notification", + "sdk/ios/prepare-your-app-for-background-updates", + "sdk/ios/upgrading-from-v3-to-v4", + "sdk/ios/upgrading-from-v2" + ] + }, + "sdk/ios/extensions-overview", + "sdk/ios/ai-user-copilot-overview", + "sdk/ios/ai-chatbots-overview", + "sdk/ios/webhooks-overview", + "sdk/ios/ios-overview", + "sdk/ios/changelog" ] - }, - "rest-api/rate-limits" + } ] }, { - "group": "Management APIs (Multi-Tenancy)", - "pages": [ - "rest-api/management-apis", + "version": "v3‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "App Management", - "expanded": false, - "icon": "grid-2", + "group": " ", "pages": [ { - "group": "App", - "pages": [ - "rest-api/management-apis/app/list", - "rest-api/management-apis/app/create", - "rest-api/management-apis/app/delete", - "rest-api/management-apis/app/fetch-usage" - ] - }, - { - "group": "Extensions", - "pages": [ - "rest-api/extensions-overview", - "rest-api/management-apis/extensions/list-extensions", - "rest-api/management-apis/extensions/enabledisable", - "rest-api/management-apis/extensions/chat-widgets-list", - "rest-api/management-apis/extensions/chat-widgets-update", - "rest-api/management-apis/extensions/chat-widgets-create", - "rest-api/management-apis/extensions/giphy-get-settings", - "rest-api/management-apis/extensions/giphy-update-settings", - "rest-api/management-apis/extensions/giphy-store-settings", - "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", - "rest-api/management-apis/extensions/xss-filter-get-settings", - "rest-api/management-apis/extensions/xss-filter-update-settings", - "rest-api/management-apis/extensions/xss-filter-store-settings", - "rest-api/management-apis/extensions/xss-filter-delete-settings", - "rest-api/management-apis/extensions/image-moderation-get-settings", - "rest-api/management-apis/extensions/image-moderation-update-settings", - "rest-api/management-apis/extensions/image-moderation-store-settings", - "rest-api/management-apis/extensions/image-moderation-delete-settings", - "rest-api/management-apis/extensions/report-user-get-settings", - "rest-api/management-apis/extensions/report-user-update-settings", - "rest-api/management-apis/extensions/report-user-store-settings", - "rest-api/management-apis/extensions/report-user-delete-settings", - "rest-api/management-apis/extensions/report-message-get-settings", - "rest-api/management-apis/extensions/report-message-update-settings", - "rest-api/management-apis/extensions/report-message-store-settings", - "rest-api/management-apis/extensions/report-message-delete-settings", - "rest-api/management-apis/extensions/voice-transcription-get-settings", - "rest-api/management-apis/extensions/voice-transcription-update-settings", - "rest-api/management-apis/extensions/voice-transcription-store-settings", - "rest-api/management-apis/extensions/voice-transcription-delete-settings", - "rest-api/management-apis/extensions/stipop-get-settings", - "rest-api/management-apis/extensions/stipop-update-settings", - "rest-api/management-apis/extensions/stipop-store-settings", - "rest-api/management-apis/extensions/stipop-delete-settings", - "rest-api/management-apis/extensions/sentiment-analysis-get-settings", - "rest-api/management-apis/extensions/sentiment-analysis-update-settings", - "rest-api/management-apis/extensions/sentiment-analysis-store-settings", - "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", - "rest-api/management-apis/extensions/tinyurl-get-settings", - "rest-api/management-apis/extensions/tinyurl-update-settings", - "rest-api/management-apis/extensions/tinyurl-store-settings", - "rest-api/management-apis/extensions/tinyurl-delete-settings", - "rest-api/management-apis/extensions/intercom-get-settings", - "rest-api/management-apis/extensions/intercom-update-settings", - "rest-api/management-apis/extensions/intercom-store-settings", - "rest-api/management-apis/extensions/intercom-delete-settings", - "rest-api/management-apis/extensions/bitly-get-settings", - "rest-api/management-apis/extensions/bitly-update-settings", - "rest-api/management-apis/extensions/bitly-store-settings", - "rest-api/management-apis/extensions/bitly-delete-settings", - "rest-api/management-apis/extensions/rich-media-preview-get-settings", - "rest-api/management-apis/extensions/rich-media-preview-update-settings", - "rest-api/management-apis/extensions/rich-media-preview-store-settings", - "rest-api/management-apis/extensions/rich-media-preview-delete-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", - "rest-api/management-apis/extensions/video-broadcasting-get-settings", - "rest-api/management-apis/extensions/video-broadcasting-update-settings", - "rest-api/management-apis/extensions/video-broadcasting-store-settings", - "rest-api/management-apis/extensions/video-broadcasting-delete-settings", - "rest-api/management-apis/extensions/tenor-gifs-get-settings", - "rest-api/management-apis/extensions/tenor-gifs-update-settings", - "rest-api/management-apis/extensions/tenor-gifs-store-settings", - "rest-api/management-apis/extensions/tenor-gifs-delete-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", - "rest-api/management-apis/extensions/stickers-extension-get-settings", - "rest-api/management-apis/extensions/stickers-extension-update-settings", - "rest-api/management-apis/extensions/stickers-extension-delete-settings", - "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", - "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", - "rest-api/management-apis/extensions/push-notification-get-certificate", - "rest-api/management-apis/extensions/email-replies-get-settings", - "rest-api/management-apis/extensions/email-replies-update-settings", - "rest-api/management-apis/extensions/email-replies-store-settings", - "rest-api/management-apis/extensions/email-replies-delete-settings", - "rest-api/management-apis/extensions/sms-notification-get-settings", - "rest-api/management-apis/extensions/sms-notification-update-settings", - "rest-api/management-apis/extensions/sms-notification-store-settings", - "rest-api/management-apis/extensions/sms-notification-delete-settings", - "rest-api/management-apis/extensions/push-notification-get-settings", - "rest-api/management-apis/extensions/push-notification-update-settings", - "rest-api/management-apis/extensions/push-notification-store-settings", - "rest-api/management-apis/extensions/push-notification-delete-settings", - "rest-api/management-apis/extensions/chatwoot-get-settings", - "rest-api/management-apis/extensions/chatwoot-update-settings", - "rest-api/management-apis/extensions/chatwoot-store-settings", - "rest-api/management-apis/extensions/chatwoot-delete-settings", - "rest-api/management-apis/extensions/message-shortcuts-get-settings", - "rest-api/management-apis/extensions/message-shortcuts-update-settings", - "rest-api/management-apis/extensions/message-shortcuts-store-settings", - "rest-api/management-apis/extensions/message-shortcuts-delete-settings", - "rest-api/management-apis/extensions/email-notification-get-settings", - "rest-api/management-apis/extensions/email-notification-update-settings", - "rest-api/management-apis/extensions/email-notification-store-settings", - "rest-api/management-apis/extensions/email-notification-delete-settings", - "rest-api/management-apis/extensions/data-masking-get-settings", - "rest-api/management-apis/extensions/data-masking-store-or-update-settings", - "rest-api/management-apis/extensions/data-masking-delete-settings", - "rest-api/management-apis/extensions/profanity-filter-get-settings", - "rest-api/management-apis/extensions/profanity-filter-update-settings", - "rest-api/management-apis/extensions/profanity-filter-adds-settings", - "rest-api/management-apis/extensions/profanity-filter-delete-settings" - ] - }, - { - "group": "Settings", - "pages": [ - "rest-api/settings", - "rest-api/management-apis/settings/list-settings", - "rest-api/management-apis/settings/maps-settings", - "rest-api/management-apis/settings/unmaps-settings" + "group": "Overview", + "pages": [ + "sdk/ios/3.0/overview", + "sdk/ios/3.0/key-concepts", + "sdk/ios/3.0/message-structure-and-hierarchy", + "sdk/ios/3.0/rate-limits" ] - } + }, + "sdk/ios/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ios/3.0/authentication", + "sdk/ios/3.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ios/3.0/messaging", + "sdk/ios/3.0/send-a-message", + "sdk/ios/3.0/receive-a-message", + "sdk/ios/3.0/additional-message-filtering", + "sdk/ios/3.0/retrieve-conversations", + "sdk/ios/3.0/threaded-messages", + "sdk/ios/3.0/edit-a-message", + "sdk/ios/3.0/delete-a-message", + "sdk/ios/3.0/delete-a-conversation", + "sdk/ios/3.0/typing-indicators", + "sdk/ios/3.0/delivery-read-receipts", + "sdk/ios/3.0/transient-messages" + ] + }, + { + "group": "Calling V3", + "pages": [ + "sdk/ios/3.0/calling-v3", + "sdk/ios/3.0/integration", + "sdk/ios/3.0/default-calling", + "sdk/ios/3.0/direct-calling", + "sdk/ios/3.0/recording", + "sdk/ios/3.0/video-view-customisation", + "sdk/ios/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ios/3.0/calling", + "sdk/ios/3.0/direct-calling1", + "sdk/ios/3.0/default-calling1", + "sdk/ios/3.0/recording1", + "sdk/ios/3.0/video-view-customisation1" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ios/3.0/users", + "sdk/ios/3.0/retrieve-users", + "sdk/ios/3.0/user-management", + "sdk/ios/3.0/block-users" + ] + }, + "sdk/ios/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ios/3.0/groups", + "sdk/ios/3.0/retrieve-groups", + "sdk/ios/3.0/create-a-group", + "sdk/ios/3.0/update-a-group", + "sdk/ios/3.0/join-a-group", + "sdk/ios/3.0/leave-a-group", + "sdk/ios/3.0/delete-a-group", + "sdk/ios/3.0/add-members-to-a-group", + "sdk/ios/3.0/retrieve-group-members", + "sdk/ios/3.0/kick-member-from-a-group", + "sdk/ios/3.0/change-member-scope", + "sdk/ios/3.0/transfer-group-ownership" + ] + }, + "sdk/ios/3.0/bots", + "sdk/ios/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ios/3.0/resources", + "sdk/ios/3.0/all-real-time-delegates-listeners", + "sdk/ios/3.0/increment-app-icon-badge-count", + "sdk/ios/3.0/upgrading-from-v2", + "sdk/ios/3.0/remove-delivered-notifications", + "sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/3.0/launch-chat-window-push-notification", + "sdk/ios/3.0/prepare-your-app-for-background-updates" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ios/3.0/advanced", + "sdk/ios/3.0/connection-status", + "sdk/ios/3.0/publishing-app-on-appstore", + "sdk/ios/3.0/managing-web-socket-connections-manually" + ] + }, + "sdk/ios/3.0/extensions-overview" ] - }, + } + ] + }, + { + "version": "v2‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Access Control", - "expanded": false, - "icon": "lock", + "group": " ", "pages": [ { - "group": "Team Management", + "group": "Overview", + "pages": [ + "sdk/ios/2.0/overview", + "sdk/ios/2.0/key-concepts", + "sdk/ios/2.0/message-structure-and-hierarchy", + "sdk/ios/2.0/rate-limits" + ] + }, + "sdk/ios/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ios/2.0/authentication", + "sdk/ios/2.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ios/2.0/messaging", + "sdk/ios/2.0/send-a-message", + "sdk/ios/2.0/receive-a-message", + "sdk/ios/2.0/additional-message-filtering", + "sdk/ios/2.0/retrieve-conversations", + "sdk/ios/2.0/threaded-messages", + "sdk/ios/2.0/edit-a-message", + "sdk/ios/2.0/delete-a-message", + "sdk/ios/2.0/delete-a-conversation", + "sdk/ios/2.0/typing-indicators", + "sdk/ios/2.0/delivery-read-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ios/2.0/calling", + "sdk/ios/2.0/direct-calling1", + "sdk/ios/2.0/default-calling1" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ios/2.0/users", + "sdk/ios/2.0/retrieve-users", + "sdk/ios/2.0/user-management", + "sdk/ios/2.0/block-users" + ] + }, + "sdk/ios/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ios/2.0/groups", + "sdk/ios/2.0/retrieve-groups", + "sdk/ios/2.0/create-a-group", + "sdk/ios/2.0/update-a-group", + "sdk/ios/2.0/join-a-group", + "sdk/ios/2.0/leave-a-group", + "sdk/ios/2.0/delete-a-group", + "sdk/ios/2.0/add-members-to-a-group", + "sdk/ios/2.0/retrieve-group-members", + "sdk/ios/2.0/kick-member-from-a-group", + "sdk/ios/2.0/change-member-scope", + "sdk/ios/2.0/transfer-group-ownership" + ] + }, + "sdk/ios/2.0/extensions", + { + "group": "Advanced", + "pages": [ + "sdk/ios/2.0/advanced", + "sdk/ios/2.0/connection-status", + "sdk/ios/2.0/publishing-app-on-appstore" + ] + }, + "sdk/ios/2.0/bots", + "sdk/ios/2.0/webhooks", + { + "group": "Resources", "pages": [ - "rest-api/management-apis/team-management/list-collaborators", - "rest-api/management-apis/team-management/addsremove-collaborators" + "sdk/ios/2.0/resources", + "sdk/ios/2.0/all-real-time-delegates-listeners", + "sdk/ios/2.0/increment-app-icon-badge-count", + "sdk/ios/2.0/upgrading-from-v1", + "sdk/ios/2.0/remove-delivered-notifications", + "sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/2.0/launch-chat-window-push-notification" ] } ] - }, - { - "group": "Webhooks", - "pages": [ - "rest-api/management-apis/webhooks/overview", - "rest-api/management-apis/webhooks/list-webhooks", - "rest-api/management-apis/webhooks/create-webhook", - "rest-api/management-apis/webhooks/get-webhook", - "rest-api/management-apis/webhooks/update-webhook", - "rest-api/management-apis/webhooks/delete-webhook", - "rest-api/management-apis/webhooks/list-triggers", - "rest-api/management-apis/webhooks/add-triggers", - "rest-api/management-apis/webhooks/remove-triggers" - ] } ] } ] - } - ] - }, - { - "product": "Voice & Video Calling", - "tabs": [ - { - "tab": "Calling", - "pages": [ - "calls" - ] - }, - { - "tab": "Platform", - "pages": [ - "calls/platform/overview", - "calls/platform/features", - "calls/platform/compatibility", - "calls/platform/user-sync" - ] }, { - "tab": "SDK", - "tab-id": "calls-sdk", - "dropdowns": [ + "dropdown": "Android", + "icon": "android", + "versions": [ { - "dropdown": "JavaScript", - "icon": "/images/icons/js.svg", - "pages": [ - { - "group": "Overview", - "pages": [ - "calls/javascript/overview" - ] - }, - { - "group": "Integrations", - "pages": [ - "calls/javascript/react-integration", - "calls/javascript/vue-integration", - "calls/javascript/angular-integration", - "calls/javascript/nextjs-integration", - "calls/javascript/ionic-integration" - ] - }, - { - "group": "Getting Started", - "pages": [ - "calls/javascript/setup", - "calls/javascript/authentication" - ] - }, - { - "group": "Call Session", - "pages": [ - "calls/javascript/session-settings", - "calls/javascript/join-session", - "calls/javascript/actions", - "calls/javascript/events" - ] - }, - { - "group": "Features", - "pages": [ - "calls/javascript/ringing", - "calls/javascript/call-layouts", - "calls/javascript/recording", - "calls/javascript/call-logs", - "calls/javascript/participant-management", - "calls/javascript/screen-sharing", - "calls/javascript/virtual-background", - "calls/javascript/picture-in-picture", - "calls/javascript/raise-hand", - "calls/javascript/idle-timeout" - ] - }, + "version": "v4‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "calls/javascript/custom-control-panel", - "calls/javascript/device-management", - "calls/javascript/permissions-handling", - "calls/javascript/in-call-chat", - "calls/javascript/share-invite" + { + "group": "Overview", + "pages": [ + "sdk/android/overview", + "sdk/android/key-concepts", + "sdk/android/message-structure-and-hierarchy", + "sdk/android/rate-limits" + ] + }, + "sdk/android/setup", + { + "group": "Authentication", + "pages": [ + "sdk/android/authentication-overview", + "sdk/android/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/messaging-overview", + "sdk/android/send-message", + "sdk/android/receive-messages", + "sdk/android/additional-message-filtering", + "sdk/android/retrieve-conversations", + "sdk/android/threaded-messages", + "sdk/android/edit-message", + "sdk/android/delete-message", + "sdk/android/delete-conversation", + "sdk/android/typing-indicators", + "sdk/android/delivery-read-receipts", + "sdk/android/transient-messages", + "sdk/android/interactive-messages", + "sdk/android/mentions", + "sdk/android/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/calling-overview", + "sdk/android/setup-calling", + "sdk/android/direct-calling", + "sdk/android/default-calling", + "sdk/android/recording", + "sdk/android/video-view-customisation", + "sdk/android/presenter-mode", + "sdk/android/call-logs", + "sdk/android/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/users-overview", + "sdk/android/retrieve-users", + "sdk/android/user-management", + "sdk/android/block-users" + ] + }, + "sdk/android/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/groups-overview", + "sdk/android/retrieve-groups", + "sdk/android/create-group", + "sdk/android/update-group", + "sdk/android/join-group", + "sdk/android/leave-group", + "sdk/android/delete-group", + "sdk/android/retrieve-group-members", + "sdk/android/group-add-members", + "sdk/android/group-kick-member", + "sdk/android/group-change-member-scope", + "sdk/android/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/android/resources-overview", + "sdk/android/real-time-listeners", + "sdk/android/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/advanced-overview", + "sdk/android/connection-status", + "sdk/android/publishing-app-on-playstore", + "sdk/android/connection-behaviour" + ] + }, + "sdk/android/extensions-overview", + "sdk/android/ai-user-copilot-overview", + "sdk/android/ai-chatbots-overview", + "sdk/android/webhooks-overview", + "sdk/android/android-overview", + "sdk/android/changelog" ] } ] }, { - "dropdown": "React Native", - "icon": "/images/icons/react.svg", - "pages": [ - { - "group": "Overview", - "pages": [ - "calls/react-native/overview" - ] - }, - { - "group": "Getting Started", - "pages": [ - "calls/react-native/setup", - "calls/react-native/authentication", - "calls/react-native/session-settings" - ] - }, - { - "group": "Call Session", - "pages": [ - "calls/react-native/join-session", - "calls/react-native/actions", - "calls/react-native/events" - ] - }, - { - "group": "Features", - "pages": [ - "calls/react-native/call-layouts", - "calls/react-native/call-logs", - "calls/react-native/recording", - "calls/react-native/participant-management", - "calls/react-native/screen-sharing", - "calls/react-native/audio-modes", - "calls/react-native/raise-hand", - "calls/react-native/idle-timeout", - "calls/react-native/ringing" - ] - }, + "version": "v3‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "calls/react-native/picture-in-picture", - "calls/react-native/voip-calling", - "calls/react-native/background-handling", - "calls/react-native/custom-control-panel", - "calls/react-native/custom-participant-list", - "calls/react-native/in-call-chat", - "calls/react-native/share-invite" + { + "group": "Overview", + "pages": [ + "sdk/android/3.0/overview", + "sdk/android/3.0/key-concepts", + "sdk/android/3.0/message-structure-and-hierarchy", + "sdk/android/3.0/rate-limits" + ] + }, + { + "group": "Authentication", + "pages": [ + "sdk/android/3.0/authentication", + "sdk/android/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/3.0/messaging", + "sdk/android/3.0/messaging-send-message", + "sdk/android/3.0/messaging-receive-messages", + "sdk/android/3.0/messaging-additional-message-filtering", + "sdk/android/3.0/messaging-retrieve-conversations", + "sdk/android/3.0/threaded-messages", + "sdk/android/3.0/messaging-edit-message", + "sdk/android/3.0/messaging-delete-message", + "sdk/android/3.0/messaging-delete-conversation", + "sdk/android/3.0/messaging-typing-indicators", + "sdk/android/3.0/messaging-transient-messages", + "sdk/android/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/android/3.0/calling-v3", + "sdk/android/3.0/setup-v3", + "sdk/android/3.0/default-calling-v3", + "sdk/android/3.0/direct-calling-v3", + "sdk/android/3.0/video-view-customisation-v3", + "sdk/android/3.0/calling-recording-v3", + "sdk/android/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/3.0/calling", + "sdk/android/3.0/calling-direct-calling", + "sdk/android/3.0/calling-default-calling", + "sdk/android/3.0/calling-recording", + "sdk/android/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/3.0/users", + "sdk/android/3.0/users-retrieve-users", + "sdk/android/3.0/users-user-management", + "sdk/android/3.0/users-block-users" + ] + }, + "sdk/android/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/3.0/groups", + "sdk/android/3.0/groups-retrieve-groups", + "sdk/android/3.0/groups-create-group", + "sdk/android/3.0/groups-update-group", + "sdk/android/3.0/groups-join-group", + "sdk/android/3.0/groups-leave-group", + "sdk/android/3.0/groups-delete-group", + "sdk/android/3.0/groups-retrieve-group-members", + "sdk/android/3.0/groups-add-members-to-group", + "sdk/android/3.0/groups-kick-ban-members", + "sdk/android/3.0/groups-change-member-scope", + "sdk/android/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/android/3.0/bots", + "sdk/android/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/android/3.0/android-resources", + "sdk/android/3.0/resources-all-real-time-listeners", + "sdk/android/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/3.0/android-advanced", + "sdk/android/3.0/advanced-connection-status", + "sdk/android/3.0/advanced-publishing-app-on-playstore", + "sdk/android/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/android/3.0/setup", + "sdk/android/3.0/extensions-overview", + { + "group": "V3 UI Kits", + "pages": [ + "sdk/android/3.0/android-3-0-overview", + "sdk/android/3.0/kotlin-overview" + ] + } ] } ] }, { - "dropdown": "iOS", - "icon": "/images/icons/swift.svg", - "pages": [ - { - "group": "Overview", - "pages": [ - "calls/ios/overview" - ] - }, - { - "group": "Getting Started", - "pages": [ - "calls/ios/setup", - "calls/ios/authentication" - ] - }, + "version": "v2‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Call Session", + "group": " ", "pages": [ - "calls/ios/session-settings", - "calls/ios/join-session", - "calls/ios/actions", - "calls/ios/events" - ] - }, - { - "group": "Features", - "pages": [ - "calls/ios/ringing", - "calls/ios/call-layouts", - "calls/ios/audio-modes", - "calls/ios/recording", - "calls/ios/call-logs", - "calls/ios/participant-management", - "calls/ios/screen-sharing", - "calls/ios/picture-in-picture", - "calls/ios/raise-hand", - "calls/ios/idle-timeout" - ] - }, - { - "group": "Advanced", - "pages": [ - "calls/ios/custom-control-panel", - "calls/ios/custom-participant-list", - "calls/ios/voip-calling", - "calls/ios/background-handling", - "calls/ios/in-call-chat", - "calls/ios/share-invite" + { + "group": "Overview", + "pages": [ + "sdk/android/2.0/overview", + "sdk/android/2.0/key-concepts", + "sdk/android/2.0/message-structure-and-hierarchy", + "sdk/android/2.0/rate-limits" + ] + }, + "sdk/android/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/android/2.0/authentication", + "sdk/android/2.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/2.0/messaging", + "sdk/android/2.0/send-message", + "sdk/android/2.0/receive-messages", + "sdk/android/2.0/additional-message-filtering", + "sdk/android/2.0/retrieve-conversations", + "sdk/android/2.0/threaded-messages", + "sdk/android/2.0/edit-message", + "sdk/android/2.0/delete-message", + "sdk/android/2.0/delete-conversation", + "sdk/android/2.0/typing-indicators", + "sdk/android/2.0/delivery-read-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/2.0/calling", + "sdk/android/2.0/direct-calling", + "sdk/android/2.0/default-calling" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/2.0/users", + "sdk/android/2.0/retrieve-users", + "sdk/android/2.0/user-management", + "sdk/android/2.0/block-users" + ] + }, + "sdk/android/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/2.0/groups", + "sdk/android/2.0/retrieve-groups", + "sdk/android/2.0/create-a-group", + "sdk/android/2.0/update-a-group", + "sdk/android/2.0/join-a-group", + "sdk/android/2.0/leave-a-group", + "sdk/android/2.0/delete-a-group", + "sdk/android/2.0/retrieve-group-members", + "sdk/android/2.0/add-members-to-a-group", + "sdk/android/2.0/kick-member-from-a-group", + "sdk/android/2.0/change-member-scope", + "sdk/android/2.0/transfer-group-ownership" + ] + }, + "sdk/android/2.0/extensions", + "sdk/android/2.0/bots", + "sdk/android/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/android/2.0/resources", + "sdk/android/2.0/resources-all-real-time-listeners", + "sdk/android/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/2.0/advanced", + "sdk/android/2.0/connection-status", + "sdk/android/2.0/publishing-app-on-playstore" + ] + } ] } ] - }, + } + ] + }, + { + "dropdown": "Flutter", + "icon": "flutter", + "versions": [ { - "dropdown": "Android", - "icon": "/images/icons/android.svg", - "pages": [ - { - "group": "Overview", - "pages": [ - "calls/android/overview" - ] - }, - { - "group": "Getting Started", - "pages": [ - "calls/android/setup", - "calls/android/authentication" - ] - }, - { - "group": "Call Session", - "pages": [ - "calls/android/session-settings", - "calls/android/join-session", - "calls/android/actions", - "calls/android/events" - ] - }, - { - "group": "Features", - "pages": [ - "calls/android/ringing", - "calls/android/call-layouts", - "calls/android/audio-modes", - "calls/android/recording", - "calls/android/call-logs", - "calls/android/participant-management", - "calls/android/screen-sharing", - "calls/android/picture-in-picture", - "calls/android/raise-hand", - "calls/android/idle-timeout" - ] - }, + "version": "v4‎‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "calls/android/custom-control-panel", - "calls/android/custom-participant-list", - "calls/android/voip-calling", - "calls/android/background-handling", - "calls/android/in-call-chat", - "calls/android/share-invite" + { + "group": "Overview", + "pages": [ + "sdk/flutter/overview", + "sdk/flutter/key-concepts", + "sdk/flutter/message-structure-and-hierarchy", + "sdk/flutter/rate-limits" + ] + }, + "sdk/flutter/setup", + { + "group": "Authentication", + "pages": [ + "sdk/flutter/authentication-overview", + "sdk/flutter/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/flutter/messaging-overview", + "sdk/flutter/send-message", + "sdk/flutter/receive-messages", + "sdk/flutter/additional-message-filtering", + "sdk/flutter/retrieve-conversations", + "sdk/flutter/edit-message", + "sdk/flutter/delete-message", + "sdk/flutter/delete-conversation", + "sdk/flutter/typing-indicators", + "sdk/flutter/interactive-messages", + "sdk/flutter/transient-messages", + "sdk/flutter/delivery-read-receipts", + "sdk/flutter/threaded-messages", + "sdk/flutter/mentions", + "sdk/flutter/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/flutter/calling-overview", + "sdk/flutter/calling-setup", + "sdk/flutter/default-call", + "sdk/flutter/direct-call", + "sdk/flutter/video-view-customisation", + "sdk/flutter/recording", + "sdk/flutter/presenter-mode", + "sdk/flutter/call-logs", + "sdk/flutter/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/flutter/users-overview", + "sdk/flutter/retrieve-users", + "sdk/flutter/user-management", + "sdk/flutter/block-users" + ] + }, + "sdk/flutter/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/flutter/groups-overview", + "sdk/flutter/retrieve-groups", + "sdk/flutter/create-group", + "sdk/flutter/update-group", + "sdk/flutter/join-group", + "sdk/flutter/leave-group", + "sdk/flutter/delete-group", + "sdk/flutter/retrieve-group-members", + "sdk/flutter/group-add-members", + "sdk/flutter/group-kick-member", + "sdk/flutter/group-change-member-scope", + "sdk/flutter/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/flutter/resources-overview", + "sdk/flutter/real-time-listeners", + "sdk/flutter/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/flutter/advanced-overview", + "sdk/flutter/connection-status", + "sdk/flutter/connection-behaviour" + ] + }, + "sdk/flutter/extensions-overview", + "sdk/flutter/ai-user-copilot-overview", + "sdk/flutter/ai-chatbots-overview", + "sdk/flutter/webhooks-overview", + "sdk/flutter/flutter-overview", + "sdk/flutter/changelog" ] } ] }, { - "dropdown": "Flutter", - "icon": "/images/icons/flutter.svg", - "pages": [ - { - "group": "Overview", - "pages": [ - "calls/flutter/overview" - ] - }, - { - "group": "Getting Started", - "pages": [ - "calls/flutter/setup", - "calls/flutter/authentication" - ] - }, - { - "group": "Call Session", - "pages": [ - "calls/flutter/session-settings", - "calls/flutter/join-session", - "calls/flutter/actions", - "calls/flutter/events" - ] - }, - { - "group": "Features", - "pages": [ - "calls/flutter/ringing", - "calls/flutter/call-layouts", - "calls/flutter/audio-modes", - "calls/flutter/recording", - "calls/flutter/call-logs", - "calls/flutter/participant-management", - "calls/flutter/screen-sharing", - "calls/flutter/picture-in-picture", - "calls/flutter/raise-hand", - "calls/flutter/idle-timeout" - ] - }, + "version": "v3‎‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "calls/flutter/custom-control-panel", - "calls/flutter/custom-participant-list", - "calls/flutter/voip-calling", - "calls/flutter/background-handling", - "calls/flutter/in-call-chat", - "calls/flutter/share-invite" + { + "group": "Overview", + "pages": [ + "sdk/flutter/3.0/overview", + "sdk/flutter/3.0/key-concepts", + "sdk/flutter/3.0/message-structure-and-hierarchy", + "sdk/flutter/3.0/rate-limits" + ] + }, + "sdk/flutter/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/flutter/3.0/authentication", + "sdk/flutter/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/flutter/3.0/messaging", + "sdk/flutter/3.0/messaging-send-message", + "sdk/flutter/3.0/messaging-receive-messages", + "sdk/flutter/3.0/messaging-additional-message-filtering", + "sdk/flutter/3.0/messaging-retrieve-conversations", + "sdk/flutter/3.0/messaging-edit-message", + "sdk/flutter/3.0/messaging-delete-message", + "sdk/flutter/3.0/messaging-delete-conversation", + "sdk/flutter/3.0/messaging-typing-indicators", + "sdk/flutter/3.0/messaging-transient-messages", + "sdk/flutter/3.0/messaging-receipts", + "sdk/flutter/3.0/threaded-messages" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/flutter/3.0/calling-v3", + "sdk/flutter/3.0/calling-setup", + "sdk/flutter/3.0/default-calling", + "sdk/flutter/3.0/direct-calling", + "sdk/flutter/3.0/video-view-customisation", + "sdk/flutter/3.0/recording", + "sdk/flutter/3.0/presenter" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/flutter/3.0/users", + "sdk/flutter/3.0/users-retrieve-users", + "sdk/flutter/3.0/users-user-management", + "sdk/flutter/3.0/users-block-users" + ] + }, + "sdk/flutter/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/flutter/3.0/groups", + "sdk/flutter/3.0/groups-retrieve-groups", + "sdk/flutter/3.0/groups-create-group", + "sdk/flutter/3.0/groups-update-group", + "sdk/flutter/3.0/groups-join-group", + "sdk/flutter/3.0/groups-leave-group", + "sdk/flutter/3.0/groups-delete-group", + "sdk/flutter/3.0/groups-retrieve-group-members", + "sdk/flutter/3.0/groups-add-members-to-group", + "sdk/flutter/3.0/groups-kick-ban-members", + "sdk/flutter/3.0/groups-change-member-scope", + "sdk/flutter/3.0/groups-transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/flutter/3.0/flutter-resources", + "sdk/flutter/3.0/resources-all-real-time-listeners" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/flutter/3.0/advanced", + "sdk/flutter/3.0/advanced-connection-status", + "sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually" + ] + }, + "sdk/flutter/extensions-overview" ] } ] @@ -5235,202 +3841,773 @@ ] }, { - "tab": "API", - "tab-id": "calls-api", - "pages": [ - { - "group": "Calls", - "pages": [ - "calls/api/overview", - "calls/api/list-calls", - "calls/api/get-call" - ] - } - ] - } - ] - }, - { - "product": "AI Agents", - "tabs": [ - { - "tab": "AI Agents", - "pages": ["ai-agents"] - }, - { - "tab": "Agent Builder", - "pages": [ - "/ai-agents/agent-builder/overview", - { - "group": "Advanced", - "pages": [ - "/ai-agents/agent-builder/instructions", - "/ai-agents/agent-builder/knowledge-base/overview", - "/ai-agents/agent-builder/tools/overview", - "/ai-agents/agent-builder/mcp/overview", - "/ai-agents/agent-builder/frontend-actions/overview", - "/ai-agents/agent-builder/variables/overview" - ] - }, - { - "group": "Guides", - "pages": [ - "/ai-agents/agent-builder/guides/implementing-authorization" - ] - } - ] - }, - { - "tab": "Bring Your Own Agent", - "dropdowns": [ + "dropdown": "Ionic", + "icon": "square-ring", + "versions": [ { - "dropdown": "Mastra", - "icon": "/images/icons/mastra.svg", - "pages": [ - "/ai-agents/mastra", - "/ai-agents/mastra-actions", - "/ai-agents/mastra-tools", - "/ai-agents/mastra-runtime-context", - { - "group": "Guides", - "pages": [ - "/ai-agents/mastra-knowledge-agent", - "/ai-agents/mastra-frontend-actions-agent", - "/ai-agents/mastra-backend-tools-agent", - "/ai-agents/mastra-orchestrator-agent" - ] - }, + "version": "v4‎‎‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Tutorials", + "group": " ", "pages": [ - "/ai-agents/mastra-product-hunt-agent", - "/ai-agents/mastra-knowlege-agent-pdf" + { + "group": "Overview", + "pages": [ + "sdk/ionic/overview", + "sdk/ionic/key-concepts", + "sdk/ionic/message-structure-and-hierarchy", + "sdk/ionic/rate-limits" + ] + }, + "sdk/ionic/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic/authentication", + "sdk/ionic/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic/messaging-overview", + "sdk/ionic/send-message", + "sdk/ionic/receive-messages", + "sdk/ionic/additional-message-filtering", + "sdk/ionic/retrieve-conversations", + "sdk/ionic/threaded-messages", + "sdk/ionic/edit-message", + "sdk/ionic/delete-message", + "sdk/ionic/delete-conversation", + "sdk/ionic/typing-indicators", + "sdk/ionic/interactive-messages", + "sdk/ionic/transient-messages", + "sdk/ionic/delivery-read-receipts", + "sdk/ionic/mentions", + "sdk/ionic/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic/calling-overview", + "sdk/ionic/calling-setup", + "sdk/ionic/default-call", + "sdk/ionic/direct-call", + "sdk/ionic/video-view-customisation", + "sdk/ionic/recording", + "sdk/ionic/presenter-mode" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic/users-overview", + "sdk/ionic/retrieve-users", + "sdk/ionic/user-management", + "sdk/ionic/block-users" + ] + }, + "sdk/ionic/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic/groups-overview", + "sdk/ionic/retrieve-groups", + "sdk/ionic/create-group", + "sdk/ionic/update-group", + "sdk/ionic/join-group", + "sdk/ionic/leave-group", + "sdk/ionic/delete-group", + "sdk/ionic/retrieve-group-members", + "sdk/ionic/group-add-members", + "sdk/ionic/group-kick-member", + "sdk/ionic/group-change-member-scope", + "sdk/ionic/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/ionic/resources-overview", + "sdk/ionic/real-time-listeners", + "sdk/ionic/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic/advanced", + "sdk/ionic/connection-status", + "sdk/ionic/connection-behaviour", + "sdk/ionic/managing-connections-manually" + ] + }, + "sdk/ionic/extensions-overview", + "sdk/ionic/ai-user-copilot-overview", + "sdk/ionic/ai-chatbots-overview", + "sdk/ionic/webhooks-overview", + "sdk/ionic/changelog" ] } ] }, { - "dropdown": "CrewAI", - "icon": "/images/icons/crew-ai.svg", - "pages": [ - "/ai-agents/crew-ai", - "/ai-agents/crew-ai-actions", - "/ai-agents/crew-ai-tools", - { - "group": "Guides", - "pages": ["/ai-agents/crew-ai-knowledge-agent"] - }, - { - "group": "Tutorials", - "pages": ["/ai-agents/crew-ai-product-hunt-agent"] - } - ] - }, - { - "dropdown": "Agno", - "icon": "/images/icons/agno.svg", - "pages": [ - "/ai-agents/agno", - "/ai-agents/agno-actions", - "/ai-agents/agno-tools", - { - "group": "Guides", - "pages": ["/ai-agents/agno-knowledge-agent"] - }, - { - "group": "Tutorials", - "pages": ["/ai-agents/agno-product-hunt-agent"] - } - ] - }, - { - "dropdown": "Vercel AI", - "icon": "/images/icons/vercel.png", - "pages": [ - "/ai-agents/vercel", - "/ai-agents/vercel-actions", - "/ai-agents/vercel-tools", - { - "group": "Guides", - "pages": ["/ai-agents/vercel-knowledge-agent"] - }, - { - "group": "Tutorials", - "pages": ["/ai-agents/vercel-product-hunt-agent"] - } - ] - }, - { - "dropdown": "LangGraph", - "icon": "/images/icons/lang-graph.svg", - "pages": [ - "/ai-agents/langgraph", - { - "group": "Guides", - "pages": ["/ai-agents/langgraph-knowledge-agent"] - }, - { - "group": "Tutorials", - "pages": ["/ai-agents/langgraph-product-hunt-agent"] - } - ] - }, - { - "dropdown": "AG2", - "icon": "/images/icons/ag2.svg", - "pages": [ - "/ai-agents/ag2", - "/ai-agents/ag2-actions", - "/ai-agents/ag2-tools", - { - "group": "Guides", - "pages": ["/ai-agents/ag2-knowledge-agent"] - }, + "version": "v3‎‎‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Tutorials", - "pages": ["/ai-agents/ag2-product-hunt-agent"] - } + "group": " ", + "pages": [ + { + "group": "Overview", + "pages": [ + "sdk/ionic/3.0/overview", + "sdk/ionic/3.0/key-concepts", + "sdk/ionic/3.0/message-structure-and-hierarchy", + "sdk/ionic/3.0/rate-limits" + ] + }, + "sdk/ionic/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic/3.0/authentication", + "sdk/ionic/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic/3.0/messaging", + "sdk/ionic/3.0/messaging-send-message", + "sdk/ionic/3.0/messaging-receive-messages", + "sdk/ionic/3.0/messaging-additional-message-filtering", + "sdk/ionic/3.0/messaging-retrieve-conversations", + "sdk/ionic/3.0/threaded-messages", + "sdk/ionic/3.0/messaging-edit-message", + "sdk/ionic/3.0/messaging-delete-message", + "sdk/ionic/3.0/messaging-delete-conversation", + "sdk/ionic/3.0/messaging-typing-indicators", + "sdk/ionic/3.0/transient-messages", + "sdk/ionic/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/ionic/3.0/calling-v3", + "sdk/ionic/3.0/v3-setup", + "sdk/ionic/3.0/v3-start-call-session", + "sdk/ionic/3.0/v3-video-view-customisation", + "sdk/ionic/3.0/v3-calling-recording" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic/3.0/calling", + "sdk/ionic/3.0/calling-direct-calling", + "sdk/ionic/3.0/calling-default-calling", + "sdk/ionic/3.0/calling-recording", + "sdk/ionic/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic/3.0/users", + "sdk/ionic/3.0/users-retrieve-users", + "sdk/ionic/3.0/users-user-management", + "sdk/ionic/3.0/users-block-users" + ] + }, + "sdk/ionic/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic/3.0/groups", + "sdk/ionic/3.0/groups-retrieve-groups", + "sdk/ionic/3.0/groups-create-group", + "sdk/ionic/3.0/groups-update-group", + "sdk/ionic/3.0/groups-join-group", + "sdk/ionic/3.0/groups-leave-group", + "sdk/ionic/3.0/groups-delete-group", + "sdk/ionic/3.0/groups-retrieve-group-members", + "sdk/ionic/3.0/groups-add-members-to-group", + "sdk/ionic/3.0/groups-kick-ban-members", + "sdk/ionic/3.0/groups-change-member-scope", + "sdk/ionic/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/ionic/3.0/bots", + "sdk/ionic/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ionic/3.0/resources", + "sdk/ionic/3.0/resources-all-real-time-listeners", + "sdk/ionic/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic/3.0/advanced", + "sdk/ionic/3.0/advanced-connection-listener", + "sdk/ionic/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/ionic/extensions-overview" + ] + } ] }, { - "dropdown": "AG-UI", - "icon": "/images/icons/agui.svg", - "pages": [ - "/ai-agents/ag-ui", - "/ai-agents/ag-ui-actions", - "/ai-agents/ag-ui-tools", - { - "group": "Guides", - "pages": ["/ai-agents/cometchat-ag-ui-byoa"] - }, + "version": "v2‎‎‎‎‎‎‎‎‎‎‎‎", + "groups": [ { - "group": "Implementation", + "group": " ", "pages": [ - "/ai-agents/cometchat-ag-ui-express", - "/ai-agents/cometchat-ag-ui-nestjs" + { + "group": "Overview", + "pages": [ + "sdk/ionic/2.0/overview", + "sdk/ionic/2.0/key-concepts", + "sdk/ionic/2.0/message-structure-and-hierarchy", + "sdk/ionic/2.0/rate-limits" + ] + }, + "sdk/ionic/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic/2.0/authentication", + "sdk/ionic/2.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic/2.0/messaging", + "sdk/ionic/2.0/messaging-send-message", + "sdk/ionic/2.0/messaging-receive-messages", + "sdk/ionic/2.0/messaging-additional-message-filtering", + "sdk/ionic/2.0/messaging-retrieve-conversations", + "sdk/ionic/2.0/threaded-messages", + "sdk/ionic/2.0/messaging-edit-message", + "sdk/ionic/2.0/messaging-delete-message", + "sdk/ionic/2.0/messaging-delete-conversation", + "sdk/ionic/2.0/messaging-typing-indicators", + "sdk/ionic/2.0/messaging-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic/2.0/calling", + "sdk/ionic/2.0/calling-direct-calling", + "sdk/ionic/2.0/calling-default-calling" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic/2.0/users", + "sdk/ionic/2.0/users-retrieve-users", + "sdk/ionic/2.0/users-user-management", + "sdk/ionic/2.0/users-block-users" + ] + }, + "sdk/ionic/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic/2.0/groups", + "sdk/ionic/2.0/groups-retrieve-groups", + "sdk/ionic/2.0/groups-create-group", + "sdk/ionic/2.0/groups-update-group", + "sdk/ionic/2.0/groups-join-group", + "sdk/ionic/2.0/groups-leave-group", + "sdk/ionic/2.0/groups-delete-group", + "sdk/ionic/2.0/groups-retrieve-group-members", + "sdk/ionic/2.0/groups-add-members-to-group", + "sdk/ionic/2.0/groups-kick-ban-members", + "sdk/ionic/2.0/groups-change-member-scope", + "sdk/ionic/2.0/groups-transfer-group-ownership" + ] + }, + "sdk/ionic/2.0/bots", + "sdk/ionic/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ionic/2.0/resources", + "sdk/ionic/2.0/resources-all-real-time-listeners", + "sdk/ionic/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic/2.0/advanced", + "sdk/ionic/2.0/advanced-connection-listener" + ] + } ] } ] } ] + } + ] + }, + { + "tab": "Widgets", + "pages": [ + "widget/overview", + "widget/builder-guide-html", + "widget/builder-guide-wordpress", + "widget/builder-guide-squarespace", + "widget/builder-guide-wix", + "widget/builder-guide-webflow", + { + "group": "Legacy", + "pages": [ + "widget/legacy/overview", + "widget/legacy/wordpress-buddypress", + "widget/legacy/html-bootstrap-jquery" + ] }, { - "tab": "Widget Builder", - "tab-id": "ai-agent-chat-builder", - "pages": ["/ai-agents/chat-widget"] + "group": "Advanced", + "pages": ["widget/legacy/custom-build"] + } + ] + }, + { + "tab": "APIs", + "groups": [ + { + "group": "Chat APIs", + "pages": [ + "rest-api/chat-apis", + { + "group": "API Keys", + "pages": [ + "rest-api/api-keys", + "rest-api/api-keys/list", + "rest-api/api-keys/create", + "rest-api/api-keys/get", + "rest-api/api-keys/update", + "rest-api/api-keys/delete" + ] + }, + { + "group": "Roles", + "pages": [ + "rest-api/roles", + "rest-api/roles/list", + "rest-api/roles/create", + "rest-api/roles/get", + "rest-api/roles/update", + "rest-api/roles/delete" + ] + }, + { + "group": "Users", + "pages": [ + "rest-api/users", + "rest-api/users/list", + "rest-api/users/reactivate", + "rest-api/users/create", + "rest-api/users/deactivate", + "rest-api/users/get", + "rest-api/users/update", + "rest-api/users/delete" + ] + }, + { + "group": "Auth Tokens", + "pages": [ + "rest-api/auth-tokens", + "rest-api/auth-tokens/list", + "rest-api/auth-tokens/create", + "rest-api/auth-tokens/flush", + "rest-api/auth-tokens/get", + "rest-api/auth-tokens/update", + "rest-api/auth-tokens/delete" + ] + }, + { + "group": "Blocked Users", + "pages": [ + "rest-api/blocked-users", + "rest-api/blocked-users/list-blocked-users", + "rest-api/blocked-users/block-user", + "rest-api/blocked-users/unblock-user" + ] + }, + { + "group": "Calls", + "pages": [ + "rest-api/calls", + "rest-api/list-calls", + "rest-api/get-call" + ] + }, + { + "group": "Friends", + "pages": [ + "rest-api/friends", + "rest-api/friends/list-friends", + "rest-api/friends/add-friends", + "rest-api/friends/remove-friends" + ] + }, + { + "group": "Groups", + "pages": [ + "rest-api/groups", + "rest-api/groups/list", + "rest-api/groups/create", + "rest-api/groups/get", + "rest-api/groups/update", + "rest-api/groups/delete" + ] + }, + { + "group": "Banned Users", + "pages": [ + "rest-api/banned-users", + "rest-api/banned-users/ban", + "rest-api/banned-users/unban", + "rest-api/banned-users/list" + ] + }, + { + "group": "Group Members", + "pages": [ + "rest-api/group-members", + "rest-api/group-members/list", + "rest-api/group-members/add-members", + "rest-api/group-members/change-scope", + "rest-api/group-members/kick" + ] + }, + { + "group": "Messages", + "pages": [ + "rest-api/messages", + "rest-api/messages/list-messages", + "rest-api/messages/send-message", + "rest-api/messages/get-message", + "rest-api/messages/update-message", + "rest-api/messages/delete-message", + "rest-api/messages/list-all-reactions", + "rest-api/messages/list-reactions-with-a-specific-emoji-unicode", + "rest-api/messages/add-reaction", + "rest-api/messages/remove-reaction", + "rest-api/messages/list-threaded-messages", + "rest-api/messages/send-threaded-message", + "rest-api/messages/list-user-messages", + "rest-api/messages/list-group-messages", + "rest-api/messages/send-bot-message" + ] + }, + { + "group": "Conversations", + "pages": [ + "rest-api/conversations", + "rest-api/conversations/list-conversations", + "rest-api/conversations/get-conversation", + "rest-api/conversations/delete-conversation", + "rest-api/conversations/get-user-conversation", + "rest-api/conversations/update-user-conversation", + "rest-api/conversations/reset-user-conversation", + "rest-api/conversations/mark-user-conversation-as-delivered", + "rest-api/conversations/mark-user-conversation-as-read", + "rest-api/conversations/mark-conversation-messages-as-unread", + "rest-api/conversations/get-group-conversation", + "rest-api/conversations/update-group-conversation", + "rest-api/conversations/reset-group-conversation", + "rest-api/conversations/mark-group-conversation-as-delivered", + "rest-api/conversations/mark-group-conversation-as-read", + "rest-api/conversations/mark-group-conversation-as-unread" + ] + }, + { + "group": "Restrict Features", + "pages": [ + "rest-api/restrict-features", + "rest-api/restrict-features/list-restricted-features", + "rest-api/restrict-features/restrict-features", + "rest-api/restrict-features/allow-features" + ] + }, + { + "group": "Metrics", + "pages": [ + "rest-api/metrics/usage-metrics", + "rest-api/metrics/message-metrics" + ] + }, + { + "group": "Notifications", + "pages": [ + "rest-api/notifications/list-settings", + "rest-api/notifications/reset-settings", + "rest-api/notifications/update-settings", + "rest-api/notifications/list-fcm-providers", + "rest-api/notifications/update-fcm-provider", + "rest-api/notifications/add-fcm-provider", + "rest-api/notifications/delete-fcm-provider", + "rest-api/notifications/change-default-fcm-provider", + "rest-api/notifications/list-apns-providers", + "rest-api/notifications/update-apns-providers", + "rest-api/notifications/add-apns-provider", + "rest-api/notifications/delete-apns-providers", + "rest-api/notifications/change-default-apns-provider", + "rest-api/notifications/list-preferences", + "rest-api/notifications/reset-preferences", + "rest-api/notifications/update-preferences", + "rest-api/notifications/list-push-tokens", + "rest-api/notifications/register-push-token", + "rest-api/notifications/unregister-push-tokens-for-authtoken", + "rest-api/notifications/delete-the-given-push-token", + "rest-api/notifications/list-muted-conversations", + "rest-api/notifications/mute-notifications-for-conversations", + "rest-api/notifications/unmute-notifications-for-conversations", + "rest-api/notifications/get-timezone", + "rest-api/notifications/update-timezone", + "rest-api/notifications/get-contact-details", + "rest-api/notifications/delete-contact-details", + "rest-api/notifications/update-contact-details", + "rest-api/notifications/get-twilio-credentials", + "rest-api/notifications/update-twilio-credentials", + "rest-api/notifications/save-twilio-credentials", + "rest-api/notifications/delete-twilio-credentials", + "rest-api/notifications/get-sendgrid-credentials", + "rest-api/notifications/update-sendgrid-credentials", + "rest-api/notifications/save-sendgrid-credentials", + "rest-api/notifications/delete-sendgrid-credentials", + "rest-api/notifications/get-custom-provider-for-push-notifications", + "rest-api/notifications/update-custom-provider-for-push-notifications", + "rest-api/notifications/save-custom-provider-for-push-notifications", + "rest-api/notifications/delete-the-custom-provider-for-push-notifications", + "rest-api/notifications/get-custom-provider-for-sms-notifications", + "rest-api/notifications/update-custom-provider-for-sms-notifications", + "rest-api/notifications/save-custom-provider-for-sms-notifications", + "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", + "rest-api/notifications/get-custom-provider-for-email-notifications", + "rest-api/notifications/update-custom-provider-for-email-notifications", + "rest-api/notifications/save-custom-provider-for-email-notifications", + "rest-api/notifications/delete-the-custom-provider-for-email-notifications", + "rest-api/notifications/notifications-logs" + ] + }, + "rest-api/constraints-rate-limits-and-errors" + ] }, { - "tab": "Custom Bots", - "hidden": true, - "pages": ["/ai-chatbots/custom-bots"] + "group": "Data Import APIs", + "pages": [ + "rest-api/data-import", + { + "group": "Messages", + "pages": ["rest-api/data-import-apis/messages/import-messages"] + }, + { + "group": "Users", + "pages": ["rest-api/data-import-apis/users/import-users"] + }, + { + "group": "Groups", + "pages": [ + "rest-api/data-import-apis/groups/import-groups", + "rest-api/data-import-apis/groups/import-group-members" + ] + }, + "rest-api/data-migration-constraints-rate-limits-and-errors" + ] }, { - "tab": "AI Bots (Legacy)", - "hidden": true, + "group": "Management APIs (Multi-Tenancy)", "pages": [ - "/ai-chatbots/ai-bots/overview", - "/ai-chatbots/ai-bots/instructions", - "/ai-chatbots/ai-bots/bots" + "rest-api/management-apis", + { + "group": "App", + "pages": [ + "rest-api/management-apis/app/list", + "rest-api/management-apis/app/create", + "rest-api/management-apis/app/delete", + "rest-api/management-apis/app/fetch-usage" + ] + }, + { + "group": "Extensions", + "pages": [ + "rest-api/extensions-overview", + "rest-api/management-apis/extensions/list-extensions", + "rest-api/management-apis/extensions/enabledisable", + "rest-api/management-apis/extensions/chat-widgets-list", + "rest-api/management-apis/extensions/chat-widgets-update", + "rest-api/management-apis/extensions/chat-widgets-create", + "rest-api/management-apis/extensions/giphy-get-settings", + "rest-api/management-apis/extensions/giphy-update-settings", + "rest-api/management-apis/extensions/giphy-store-settings", + "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", + "rest-api/management-apis/extensions/xss-filter-get-settings", + "rest-api/management-apis/extensions/xss-filter-update-settings", + "rest-api/management-apis/extensions/xss-filter-store-settings", + "rest-api/management-apis/extensions/xss-filter-delete-settings", + "rest-api/management-apis/extensions/image-moderation-get-settings", + "rest-api/management-apis/extensions/image-moderation-update-settings", + "rest-api/management-apis/extensions/image-moderation-store-settings", + "rest-api/management-apis/extensions/image-moderation-delete-settings", + "rest-api/management-apis/extensions/report-user-get-settings", + "rest-api/management-apis/extensions/report-user-update-settings", + "rest-api/management-apis/extensions/report-user-store-settings", + "rest-api/management-apis/extensions/report-user-delete-settings", + "rest-api/management-apis/extensions/report-message-get-settings", + "rest-api/management-apis/extensions/report-message-update-settings", + "rest-api/management-apis/extensions/report-message-store-settings", + "rest-api/management-apis/extensions/report-message-delete-settings", + "rest-api/management-apis/extensions/voice-transcription-get-settings", + "rest-api/management-apis/extensions/voice-transcription-update-settings", + "rest-api/management-apis/extensions/voice-transcription-store-settings", + "rest-api/management-apis/extensions/voice-transcription-delete-settings", + "rest-api/management-apis/extensions/stipop-get-settings", + "rest-api/management-apis/extensions/stipop-update-settings", + "rest-api/management-apis/extensions/stipop-store-settings", + "rest-api/management-apis/extensions/stipop-delete-settings", + "rest-api/management-apis/extensions/sentiment-analysis-get-settings", + "rest-api/management-apis/extensions/sentiment-analysis-update-settings", + "rest-api/management-apis/extensions/sentiment-analysis-store-settings", + "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", + "rest-api/management-apis/extensions/tinyurl-get-settings", + "rest-api/management-apis/extensions/tinyurl-update-settings", + "rest-api/management-apis/extensions/tinyurl-store-settings", + "rest-api/management-apis/extensions/tinyurl-delete-settings", + "rest-api/management-apis/extensions/intercom-get-settings", + "rest-api/management-apis/extensions/intercom-update-settings", + "rest-api/management-apis/extensions/intercom-store-settings", + "rest-api/management-apis/extensions/intercom-delete-settings", + "rest-api/management-apis/extensions/bitly-get-settings", + "rest-api/management-apis/extensions/bitly-update-settings", + "rest-api/management-apis/extensions/bitly-store-settings", + "rest-api/management-apis/extensions/bitly-delete-settings", + "rest-api/management-apis/extensions/rich-media-preview-get-settings", + "rest-api/management-apis/extensions/rich-media-preview-update-settings", + "rest-api/management-apis/extensions/rich-media-preview-store-settings", + "rest-api/management-apis/extensions/rich-media-preview-delete-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", + "rest-api/management-apis/extensions/video-broadcasting-get-settings", + "rest-api/management-apis/extensions/video-broadcasting-update-settings", + "rest-api/management-apis/extensions/video-broadcasting-store-settings", + "rest-api/management-apis/extensions/video-broadcasting-delete-settings", + "rest-api/management-apis/extensions/tenor-gifs-get-settings", + "rest-api/management-apis/extensions/tenor-gifs-update-settings", + "rest-api/management-apis/extensions/tenor-gifs-store-settings", + "rest-api/management-apis/extensions/tenor-gifs-delete-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", + "rest-api/management-apis/extensions/stickers-extension-get-settings", + "rest-api/management-apis/extensions/stickers-extension-update-settings", + "rest-api/management-apis/extensions/stickers-extension-delete-settings", + "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", + "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", + "rest-api/management-apis/extensions/push-notification-get-certificate", + "rest-api/management-apis/extensions/email-replies-get-settings", + "rest-api/management-apis/extensions/email-replies-update-settings", + "rest-api/management-apis/extensions/email-replies-store-settings", + "rest-api/management-apis/extensions/email-replies-delete-settings", + "rest-api/management-apis/extensions/sms-notification-get-settings", + "rest-api/management-apis/extensions/sms-notification-update-settings", + "rest-api/management-apis/extensions/sms-notification-store-settings", + "rest-api/management-apis/extensions/sms-notification-delete-settings", + "rest-api/management-apis/extensions/push-notification-get-settings", + "rest-api/management-apis/extensions/push-notification-update-settings", + "rest-api/management-apis/extensions/push-notification-store-settings", + "rest-api/management-apis/extensions/push-notification-delete-settings", + "rest-api/management-apis/extensions/chatwoot-get-settings", + "rest-api/management-apis/extensions/chatwoot-update-settings", + "rest-api/management-apis/extensions/chatwoot-store-settings", + "rest-api/management-apis/extensions/chatwoot-delete-settings", + "rest-api/management-apis/extensions/message-shortcuts-get-settings", + "rest-api/management-apis/extensions/message-shortcuts-update-settings", + "rest-api/management-apis/extensions/message-shortcuts-store-settings", + "rest-api/management-apis/extensions/message-shortcuts-delete-settings", + "rest-api/management-apis/extensions/email-notification-get-settings", + "rest-api/management-apis/extensions/email-notification-update-settings", + "rest-api/management-apis/extensions/email-notification-store-settings", + "rest-api/management-apis/extensions/email-notification-delete-settings", + "rest-api/management-apis/extensions/data-masking-get-settings", + "rest-api/management-apis/extensions/data-masking-store-or-update-settings", + "rest-api/management-apis/extensions/data-masking-delete-settings", + "rest-api/management-apis/extensions/profanity-filter-get-settings", + "rest-api/management-apis/extensions/profanity-filter-update-settings", + "rest-api/management-apis/extensions/profanity-filter-adds-settings", + "rest-api/management-apis/extensions/profanity-filter-delete-settings" + ] + }, + { + "group": "Team Management", + "pages": [ + "rest-api/management-apis/team-management/list-collaborators", + "rest-api/management-apis/team-management/addsremove-collaborators" + ] + }, + { + "group": "Settings", + "pages": [ + "rest-api/settings", + "rest-api/management-apis/settings/list-settings", + "rest-api/management-apis/settings/maps-settings", + "rest-api/management-apis/settings/unmaps-settings" + ] + }, + { + "group": "Webhooks", + "pages": [ + "rest-api/management-apis/webhooks/list-webhooks", + "rest-api/management-apis/webhooks/create-webhook", + "rest-api/management-apis/webhooks/get-webhook", + "rest-api/management-apis/webhooks/update-webhook", + "rest-api/management-apis/webhooks/delete-webhook", + "rest-api/management-apis/webhooks/list-triggers", + "rest-api/management-apis/webhooks/add-triggers", + "rest-api/management-apis/webhooks/remove-triggers" + ] + }, + { + "group": "Moderation", + "pages": [ + "rest-api/moderation", + "rest-api/management-apis/moderation/list-rules", + "rest-api/management-apis/moderation/add-rule", + "rest-api/management-apis/moderation/get-rule", + "rest-api/management-apis/moderation/update-rule", + "rest-api/management-apis/moderation/remove-rule", + "rest-api/management-apis/moderation/list-keywords", + "rest-api/management-apis/moderation/add-keywords", + "rest-api/management-apis/moderation/get-keyword", + "rest-api/management-apis/moderation/update-keyword", + "rest-api/management-apis/moderation/remove-keyword", + "rest-api/management-apis/moderation/get-rule-revisions", + "rest-api/management-apis/moderation/list-blocked-messages", + "rest-api/management-apis/moderation/approve-blocked-messages" + ] + }, + "rest-api/multi-tenancy-constraints-rate-limits-and-errors" ] }, { @@ -5563,1645 +4740,513 @@ "group": "Variables", "expanded": false, "icon": "brackets-curly", - "pages": [ - "ai-agents/apis/get-all-available-variables", - "ai-agents/apis/create-custom-variable", - "ai-agents/apis/update-custom-variable", - "ai-agents/apis/delete-custom-variable" - ] - } - ] - } - ] - } - ] - }, - { - "product": "AI Moderation", - "tabs": [ - { - "tab": "AI Moderation", - "pages": [ - "moderation/overview", - "moderation/getting-started", - { - "group": "Setup", - "icon": "gear", - "pages": [ - "moderation/rules-management", - "moderation/lists-management" - ] - }, - { - "group": "Message Management", - "icon": "envelope-open-text", - "pages": [ - "moderation/flagged-messages", - "moderation/blocked-messages", - "moderation/reviewed-messages" - ] - }, - { - "group": "Integrations", - "icon": "plug", - "pages": [ - { - "group": "OpenAI", - "pages": [ - "moderation/open-ai/openai-overview", - "moderation/open-ai/openai-custom" - ] - }, - { - "group": "Custom API", - "pages": [ - "moderation/custom/custom-api-overview", - "moderation/custom/custom-api" - ] - } - ] - }, - { - "group": "Reference", - "icon": "book", - "pages": [ - "moderation/constraints-and-limits", - "moderation/legacy-extensions" - ] - } - ] - }, - { - "tab": "APIs", - "pages": [ - "moderation/api-explorer", - { - "group": "Rules", - "pages": [ - "moderation/apis/list-rules", - "moderation/apis/add-rule", - "moderation/apis/get-rule", - "moderation/apis/update-rule", - "moderation/apis/remove-rule", - "moderation/apis/get-rule-revisions" - ] - }, - { - "group": "Keywords", - "pages": [ - "moderation/apis/list-keywords", - "moderation/apis/add-keywords", - "moderation/apis/get-keyword", - "moderation/apis/update-keyword", - "moderation/apis/remove-keyword" - ] - }, - { - "group": "Blocked Messages", - "pages": [ - "moderation/apis/list-blocked-messages", - "moderation/apis/approve-blocked-messages", - "moderation/apis/review-blocked-message" - ] - }, - { - "group": "Flagged Messages", - "pages": [ - "moderation/apis/list-flagged-messages", - "moderation/apis/blockreview-flagged-message", - "moderation/apis/flag-a-message" - ] - }, - { - "group": "Reviewed Messages", - "pages": [ - "moderation/apis/list-reviewed-messages" - ] - }, - { - "group": "Reasons", - "pages": [ - "moderation/apis/create-reasons", - "moderation/apis/list-reasons", - "moderation/apis/get-reason-details", - "moderation/apis/update-reason-details", - "moderation/apis/delete-reasons" - ] - } - ] - } - ] - }, - { - "product": "Notifications", - "tabs": [ - { - "tab": "Notifications", - "pages": ["notifications"] - }, - { - "tab": "Push", - "pages": [ - "notifications/push-overview", - { - "group": "Getting Started", - "pages": [ - "notifications/android-push-notifications", - "notifications/ios-apns-push-notifications", - "notifications/ios-fcm-push-notifications", - "notifications/flutter-push-notifications-android", - "notifications/flutter-push-notifications-ios", - "notifications/react-native-push-notifications-android", - "notifications/react-native-push-notifications-ios", - "notifications/web-push-notifications" - ] - }, - { - "group": " ", - "pages": [ - "notifications/preferences", - "notifications/templates-and-sounds", - "notifications/badge-count", - "notifications/custom-providers", - "notifications/logs", - "notifications/constraints-and-limits" - ] - }, - "notifications/push-notifications-extension-legacy" - ] - }, - { - "tab": "Email", - "pages": [ - "notifications/email-overview", - "notifications/email-integration", - "notifications/email-preferences", - "notifications/email-templates", - "notifications/email-custom-providers", - "notifications/email-notifications-extension-legacy" - ] - }, - { - "tab": "SMS", - "pages": [ - "notifications/sms-overview", - "notifications/sms-integration", - "notifications/sms-preferences", - "notifications/sms-templates", - "notifications/sms-custom-providers", - "notifications/sms-notifications-extension-legacy" - ] - }, - { - "tab": "APIs", - "pages": [ - { - "group": "Push APIs", - "pages": [ - "notifications/apis/push/list-fcm-providers", - "notifications/apis/push/add-fcm-provider", - "notifications/apis/push/update-fcm-provider", - "notifications/apis/push/delete-fcm-provider", - "notifications/apis/push/change-default-fcm-provider", - "notifications/apis/push/list-apns-providers", - "notifications/apis/push/add-apns-provider", - "notifications/apis/push/update-apns-providers", - "notifications/apis/push/delete-apns-providers", - "notifications/apis/push/change-default-apns-provider", - "notifications/apis/push/register-push-token", - "notifications/apis/push/list-push-tokens", - "notifications/apis/push/delete-push-token", - "notifications/apis/push/unregister-push-tokens", - "notifications/apis/push/get-custom-provider", - "notifications/apis/push/save-custom-provider", - "notifications/apis/push/update-custom-provider", - "notifications/apis/push/delete-custom-provider", - "notifications/apis/push/list-settings", - "notifications/apis/push/update-settings", - "notifications/apis/push/reset-settings", - "notifications/apis/push/list-preferences", - "notifications/apis/push/update-preferences", - "notifications/apis/push/reset-preferences", - "notifications/apis/push/get-timezone", - "notifications/apis/push/update-timezone", - "notifications/apis/push/get-contact-details", - "notifications/apis/push/update-contact-details", - "notifications/apis/push/delete-contact-details", - "notifications/apis/push/mute-conversations", - "notifications/apis/push/unmute-conversations", - "notifications/apis/push/list-muted-conversations", - "notifications/apis/push/notifications-logs" - ] - }, - { - "group": "Email APIs", - "pages": [ - "notifications/apis/email/get-sendgrid-credentials", - "notifications/apis/email/save-sendgrid-credentials", - "notifications/apis/email/update-sendgrid-credentials", - "notifications/apis/email/delete-sendgrid-credentials", - "notifications/apis/email/get-custom-provider", - "notifications/apis/email/save-custom-provider", - "notifications/apis/email/update-custom-provider", - "notifications/apis/email/delete-custom-provider" - ] - }, - { - "group": "SMS APIs", - "pages": [ - "notifications/apis/sms/get-twilio-credentials", - "notifications/apis/sms/save-twilio-credentials", - "notifications/apis/sms/update-twilio-credentials", - "notifications/apis/sms/delete-twilio-credentials", - "notifications/apis/sms/get-custom-provider", - "notifications/apis/sms/save-custom-provider", - "notifications/apis/sms/update-custom-provider", - "notifications/apis/sms/delete-custom-provider" - ] - } - ] - } - ] - }, - { - "product": "Insights", - "tabs": [ - { - "tab": "Insights", - "pages": ["insights"] - } - ] - } - ] - }, - "logo": { - "light": "/logo/light.svg", - "dark": "/logo/dark.svg" - }, - "navbar": { - "links": [ - { - "label": "Dashboard", - "href": "https://app.cometchat.com/" - } - ], - "primary": { - "type": "button", - "label": "Contact Support", - "href": "https://help.cometchat.com/hc/en-us/requests/new" - } - }, - "footer": { - "socials": { - "linkedin": "https://www.linkedin.com/company/cometchat/", - "x": "https://twitter.com/CometChat", - "github": "https://www.github.com/cometchat" - } - }, - "redirects": [ - { - "source": "/react-native/getting-started", - "destination": "/react-native/react-native-cli-integration" - }, - { - "source": "/ui-kit/react/property-changes", - "destination": "/ui-kit/react/upgrading-from-v5" - }, - { - "source": "/ui-kit/android/property-changes", - "destination": "/ui-kit/android/upgrading-from-v4" - }, - { - "source": "/ui-kit/ios/property-changes", - "destination": "/ui-kit/ios/upgrading-from-v4" - }, - { - "source": "/ui-kit/react-native/property-changes", - "destination": "/ui-kit/react-native/upgrading-from-v4" - }, - { - "source": "/ai/overview", - "destination": "/fundamentals/ai-user-copilot/overview" - }, - { - "source": "/ai/conversation-starter", - "destination": "/fundamentals/ai-user-copilot/conversation-starter" - }, - { - "source": "/ai/smart-replies", - "destination": "/fundamentals/ai-user-copilot/smart-replies" - }, - { - "source": "/ai/conversation-summary", - "destination": "/fundamentals/ai-user-copilot/conversation-summary" - }, - { - "source": "/webhooks/overview", - "destination": "/fundamentals/webhooks-overview" - }, - { - "source": "/webhooks/webhooks-management", - "destination": "/fundamentals/webhooks-management" - }, - { - "source": "/webhooks/webhooks-events", - "destination": "/fundamentals/webhooks-events" - }, - { - "source": "/webhooks/webhooks-legacy-overview", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/webhooks/webhooks-legacy-management", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/webhooks/webhooks-legacy-events", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/fundamentals/webhooks-legacy-overview", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/fundamentals/webhooks-legacy-management", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/fundamentals/webhooks-legacy-events", - "destination": "/fundamentals/webhooks-legacy" - }, - { - "source": "/ai/bots", - "destination": "/ai-chatbots/bots" - }, - { - "source": "/ai/personalities", - "destination": "/ai-chatbots/instructions" - }, - { - "source": "/bots/overview", - "destination": "/ai-chatbots/custom-bots" - }, - { - "source": "/extensions/notification-extensions", - "destination": "/fundamentals/notification-extensions" - }, - { - "source": "/extensions/message-shortcuts", - "destination": "/fundamentals/message-shortcuts" - }, - { - "source": "/extensions/avatars", - "destination": "/fundamentals/avatars" - }, - { - "source": "/extensions/thumbnail-generation", - "destination": "/fundamentals/thumbnail-generation" - }, - { - "source": "/extensions/link-preview", - "destination": "/fundamentals/link-preview" - }, - { - "source": "/extensions/rich-media-preview", - "destination": "/fundamentals/rich-media-preview" - }, - { - "source": "/extensions/voice-transcription", - "destination": "/fundamentals/voice-transcription" - }, - { - "source": "/extensions/pin-message", - "destination": "/fundamentals/pin-message" - }, - { - "source": "/extensions/save-message", - "destination": "/fundamentals/save-message" - }, - { - "source": "/extensions/tinyurl", - "destination": "/fundamentals/tinyurl" - }, - { - "source": "/extensions/bitly", - "destination": "/fundamentals/bitly" - }, - { - "source": "/extensions/email-replies", - "destination": "/fundamentals/email-replies" - }, - { - "source": "/extensions/mentions", - "destination": "/fundamentals/mentions" - }, - { - "source": "/extensions/giphy", - "destination": "/fundamentals/giphy" - }, - { - "source": "/extensions/tenor", - "destination": "/fundamentals/tenor" - }, - { - "source": "/extensions/gfycat", - "destination": "/fundamentals/gfycat" - }, - { - "source": "/extensions/reminders", - "destination": "/fundamentals/reminders" - }, - { - "source": "/extensions/smart-replies", - "destination": "/fundamentals/smart-replies" - }, - { - "source": "/extensions/message-translation", - "destination": "/fundamentals/message-translation" - }, - { - "source": "/extensions/emojis", - "destination": "/fundamentals/emojis" - }, - { - "source": "/extensions/polls", - "destination": "/fundamentals/polls" - }, - { - "source": "/extensions/reactions", - "destination": "/fundamentals/reactions" - }, - { - "source": "/extensions/stickers-stipop", - "destination": "/fundamentals/stickers-stipop" - }, - { - "source": "/extensions/stickers", - "destination": "/fundamentals/stickers" - }, - { - "source": "/extensions/video-broadcasting", - "destination": "/fundamentals/video-broadcasting" - }, - { - "source": "/extensions/collaborative-whiteboard", - "destination": "/fundamentals/collaborative-whiteboard" - }, - { - "source": "/extensions/collaborative-document", - "destination": "/fundamentals/collaborative-document" - }, - { - "source": "/extensions/chatwoot", - "destination": "/fundamentals/chatwoot" - }, - { - "source": "/extensions/intercom", - "destination": "/fundamentals/intercom" - }, - { - "source": "/extensions/moderation-extensions", - "destination": "/fundamentals/moderation-extensions" - }, - { - "source": "/extensions/disappearing-messages", - "destination": "/fundamentals/disappearing-messages" - }, - { - "source": "/extensions/end-to-end-encryption", - "destination": "/fundamentals/end-to-end-encryption" - }, - { - "source": "/extensions/overview", - "destination": "/fundamentals/extensions-overview" - }, - { - "source": "/extensions/web-push-notifications", - "destination": "/notifications/web-push-notifications" - }, - { - "source": "/extensions/android-push-notifications", - "destination": "/notifications/android-push-notifications" - }, - { - "source": "/extensions/android-connection-service", - "destination": "/notifications/android-connection-service" - }, - { - "source": "/extensions/ios-fcm-push-notifications", - "destination": "/notifications/ios-fcm-push-notifications" - }, - { - "source": "/extensions/ios-apns-push-notifications", - "destination": "/notifications/ios-apns-push-notifications" - }, - { - "source": "/extensions/flutter-push-notifications", - "destination": "/notifications/flutter-push-notifications" - }, - { - "source": "/extensions/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications" - }, - { - "source": "/extensions/capacitor-cordova-ionic-push-notifications", - "destination": "/notifications/capacitor-cordova-ionic-push-notifications" - }, - { - "source": "/extensions/migration-guide-push-notifications", - "destination": "/notifications/migration-guide-push-notifications" - }, - { - "source": "/extensions/mute-functionality", - "destination": "/notifications/mute-functionality" - }, - { - "source": "/extensions/token-management", - "destination": "/notifications/token-management" - }, - { - "source": "/extensions/legacy-push-notifications", - "destination": "/notifications/legacy-push-notifications" - }, - { - "source": "/extensions/push-notifications-overview", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/extensions/email-notifications", - "destination": "/notifications/email-notifications-extension-legacy" - }, - { - "source": "/extensions/sms-notifications", - "destination": "/notifications/sms-notifications-extension-legacy" - }, - { - "source": "/extensions/slow-mode", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/xss-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/report-user", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/report-message", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/data-masking-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/profanity-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/image-moderation", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/sentiment-analysis", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/in-flight-message-moderation", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/extensions/virus-malware-scanner", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/slow-mode", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/xss-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/report-user", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/report-message", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/data-masking-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/profanity-filter", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/image-moderation", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/sentiment-analysis", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/in-flight-message-moderation", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/moderation/virus-malware-scanner", - "destination": "/moderation/legacy-extensions" - }, - { - "source": "/ui-kit/react/v6", - "destination": "/ui-kit/react" - }, - { - "source": "/ui-kit/react/v6/:slug*", - "destination": "/ui-kit/react/:slug*" - }, - { - "source": "/ui-kit/react/6.0", - "destination": "/ui-kit/react" - }, - { - "source": "/ui-kit/react/6.0/:slug*", - "destination": "/ui-kit/react/:slug*" - }, - { - "source": "/ui-kit/react/v6/integration/next-js", - "destination": "/ui-kit/react/next-js-integration" - }, - { - "source": "/ui-kit/react", - "destination": "/ui-kit/react/overview" - }, - { - "source": "/ui-kit/react/5.0", - "destination": "/ui-kit/react/v5" - }, - { - "source": "/ui-kit/react/5.0/:slug*", - "destination": "/ui-kit/react/v5/:slug*" - }, - { - "source": "/ui-kit/react/4.0", - "destination": "/ui-kit/react/v4" - }, - { - "source": "/ui-kit/react/4.0/:slug*", - "destination": "/ui-kit/react/v4/:slug*" - }, - { - "source": "/ui-kit/react/3.0", - "destination": "/ui-kit/react/v3" - }, - { - "source": "/ui-kit/react/3.0/:slug*", - "destination": "/ui-kit/react/v3/:slug*" - }, - { - "source": "/ui-kit/react/2.0", - "destination": "/ui-kit/react/v2" - }, - { - "source": "/ui-kit/react/2.0/:slug*", - "destination": "/ui-kit/react/v2/:slug*" - }, - { - "source": "/ui-kit/ios/v5", - "destination": "/ui-kit/ios" - }, - { - "source": "/ui-kit/ios/v5/:slug*", - "destination": "/ui-kit/ios/:slug*" - }, - { - "source": "/ui-kit/ios/5.0", - "destination": "/ui-kit/ios" - }, - { - "source": "/ui-kit/ios/5.0/:slug*", - "destination": "/ui-kit/ios/:slug*" - }, - { - "source": "/ui-kit/ios/4.0", - "destination": "/ui-kit/ios/v4" - }, - { - "source": "/ui-kit/ios/4.0/:slug*", - "destination": "/ui-kit/ios/v4/:slug*" - }, - { - "source": "/ui-kit/ios/3.0", - "destination": "/ui-kit/ios/v3" - }, - { - "source": "/ui-kit/ios/3.0/:slug*", - "destination": "/ui-kit/ios/v3/:slug*" - }, - { - "source": "/ui-kit/ios/2.0", - "destination": "/ui-kit/ios/v2" - }, - { - "source": "/ui-kit/ios/2.0/:slug*", - "destination": "/ui-kit/ios/v2/:slug*" - }, - { - "source": "/ui-kit/android/v5", - "destination": "/ui-kit/android" - }, - { - "source": "/ui-kit/android/v5/:slug*", - "destination": "/ui-kit/android/:slug*" - }, - { - "source": "/ui-kit/android/5.0", - "destination": "/ui-kit/android" - }, - { - "source": "/ui-kit/android/5.0/:slug*", - "destination": "/ui-kit/android/:slug*" - }, - { - "source": "/ui-kit/android/4.0", - "destination": "/ui-kit/android/v4" - }, - { - "source": "/ui-kit/android/4.0/:slug*", - "destination": "/ui-kit/android/v4/:slug*" - }, - { - "source": "/ui-kit/android/3.0", - "destination": "/ui-kit/android/v3" - }, - { - "source": "/ui-kit/android/3.0/:slug*", - "destination": "/ui-kit/android/v3/:slug*" - }, - { - "source": "/ui-kit/android/2.0", - "destination": "/ui-kit/android/v2" - }, - { - "source": "/ui-kit/android/2.0/:slug*", - "destination": "/ui-kit/android/v2/:slug*" - }, - { - "source": "/ui-kit/flutter/v5", - "destination": "/ui-kit/flutter" - }, - { - "source": "/ui-kit/flutter/v5/:slug*", - "destination": "/ui-kit/flutter/:slug*" - }, - { - "source": "/ui-kit/flutter/5.0", - "destination": "/ui-kit/flutter" - }, - { - "source": "/ui-kit/flutter/5.0/:slug*", - "destination": "/ui-kit/flutter/:slug*" - }, - { - "source": "/ui-kit/flutter/4.0", - "destination": "/ui-kit/flutter/v4" - }, - { - "source": "/ui-kit/flutter/4.0/:slug*", - "destination": "/ui-kit/flutter/v4/:slug*" - }, - { - "source": "/ui-kit/react-native/5.0/:slug*", - "destination": "/ui-kit/react-native/:slug*" - }, - { - "source": "/ui-kit/react-native/4.0/:slug*", - "destination": "/ui-kit/react-native/v4/:slug*" - }, - { - "source": "/ai-chatbots/non-ai-bots", - "destination": "/ai-chatbots/custom-agents" - }, - { - "source": "/widget/wordpress-buddypress", - "destination": "/widget/legacy/wordpress-buddypress" - }, - { - "source": "/widget/html-bootstrap-jquery", - "destination": "/widget/legacy/html-bootstrap-jquery" - }, - { - "source": "/widget/custom-build", - "destination": "/widget/html/legacy" - }, - { - "source": "/ui-kit/react/builder-integration", - "destination": "/chat-builder/react/integration" - }, - { - "source": "/ui-kit/react/builder-integration-nextjs", - "destination": "/chat-builder/nextjs/integration" - }, - { - "source": "/ui-kit/react/builder-integration-react-router", - "destination": "/chat-builder/react-router/integration" - }, - { - "source": "/ui-kit/react/builder-customisations", - "destination": "/chat-builder/react/builder-customisations" - }, - { - "source": "/ui-kit/react/builder-dir-structure", - "destination": "/chat-builder/react/builder-dir-structure" - }, - { - "source": "/ui-kit/react/builder-settings", - "destination": "/chat-builder/react/builder-settings" - }, - { - "source": "/widget/overview", - "destination": "/widget/html/overview" - }, - { - "source": "/widget/builder-guide-html", - "destination": "/widget/html/integration" - }, - { - "source": "/widget/builder-guide-wordpress", - "destination": "/widget/wordpress/integration" - }, - { - "source": "/widget/builder-guide-squarespace", - "destination": "/widget/squarespace/integration" - }, - { - "source": "/widget/builder-guide-wix", - "destination": "/widget/wix/integration" - }, - { - "source": "/widget/builder-guide-webflow", - "destination": "/widget/webflow/integration" - }, - { - "source": "/widget/legacy/overview", - "destination": "/widget/html/legacy" - }, - { - "source": "/widget/legacy/wordpress-buddypress", - "destination": "/widget/wordpress/legacy" - }, - { - "source": "/widget/legacy/html-bootstrap-jquery", - "destination": "/widget/html/legacy" - }, - { - "source": "/widget/legacy/custom-build", - "destination": "/widget/html/legacy" - }, - { - "source": "/widget/html/legacy/overview", - "destination": "/widget/html/legacy" - }, - { - "source": "/widget/html/legacy/html-bootstrap-jquery", - "destination": "/widget/html/legacy" - }, - { - "source": "/widget/wordpress/legacy/overview", - "destination": "/widget/wordpress/legacy" - }, - { - "source": "/widget/wordpress/legacy/wordpress-buddypress", - "destination": "/widget/wordpress/legacy" - }, - { - "source": "/widget/ai-agents", - "destination": "/ai-agents/chat-widget" - }, - { - "source": "/ai-agents/actions", - "destination": "/ai-agents/mastra-actions" - }, - { - "source": "/ai-agents/tools", - "destination": "/ai-agents/mastra-tools" - }, - { - "source": "/ai-chatbots/overview", - "destination": "/ai-chatbots/ai-bots/overview" - }, - { - "source": "/ai-chatbots/instructions", - "destination": "/ai-chatbots/ai-bots/instructions" - }, - { - "source": "/ai-chatbots/bots", - "destination": "/ai-chatbots/ai-bots/bots" - }, - { - "source": "/sdk/android/setup-calling", - "destination": "/sdk/android/calling-setup" - }, - { - "source": "/sdk/ios/calling-integration", - "destination": "/sdk/ios/calling-setup" - }, - { - "source": "/articles/docker", - "destination": "/on-premise-deployment/docker/overview" - }, - { - "source": "/notifications/push-notification-extension-overview", - "destination": "/notifications/push-notification-extension-legacy" - }, - { - "source": "/notifications/push-notification-extension-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/web-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/android-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/android-connection-service", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/ios-fcm-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/ios-apns-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/flutter-push-notifications", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/react-native-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/capacitor-cordova-ionic-push-notifications", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/mute-functionality", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/token-management", - "destination": "/notifications/push-notifications-extension-legacy" - }, - { - "source": "/notifications/email-notification-extension", - "destination": "/notifications/email-notifications-extension-legacy" - }, - { - "source": "/notifications/sms-notification-extension", - "destination": "/notifications/sms-notifications-extension-legacy" - }, - { - "source": "/notifications/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications-android" - }, - { - "source": "/sdk/ionic/overview", - "destination": "/sdk/ionic-legacy/overview" - }, - { - "source": "/sdk/ionic/key-concepts", - "destination": "/sdk/ionic-legacy/key-concepts" - }, - { - "source": "/sdk/ionic/message-structure-and-hierarchy", - "destination": "/sdk/ionic-legacy/message-structure-and-hierarchy" - }, - { - "source": "/sdk/ionic/rate-limits", - "destination": "/sdk/ionic-legacy/rate-limits" - }, - { - "source": "/sdk/ionic/setup", - "destination": "/sdk/ionic-legacy/setup" - }, - { - "source": "/sdk/ionic/authentication", - "destination": "/sdk/ionic-legacy/authentication" - }, - { - "source": "/sdk/ionic/login-listeners", - "destination": "/sdk/ionic-legacy/login-listeners" - }, - { - "source": "/sdk/ionic/messaging-overview", - "destination": "/sdk/ionic-legacy/messaging-overview" - }, - { - "source": "/sdk/ionic/send-message", - "destination": "/sdk/ionic-legacy/send-message" - }, - { - "source": "/sdk/ionic/receive-messages", - "destination": "/sdk/ionic-legacy/receive-messages" - }, - { - "source": "/sdk/ionic/additional-message-filtering", - "destination": "/sdk/ionic-legacy/additional-message-filtering" - }, - { - "source": "/sdk/ionic/retrieve-conversations", - "destination": "/sdk/ionic-legacy/retrieve-conversations" - }, - { - "source": "/sdk/ionic/threaded-messages", - "destination": "/sdk/ionic-legacy/threaded-messages" - }, - { - "source": "/sdk/ionic/edit-message", - "destination": "/sdk/ionic-legacy/edit-message" - }, - { - "source": "/sdk/ionic/delete-message", - "destination": "/sdk/ionic-legacy/delete-message" - }, - { - "source": "/sdk/ionic/delete-conversation", - "destination": "/sdk/ionic-legacy/delete-conversation" - }, - { - "source": "/sdk/ionic/typing-indicators", - "destination": "/sdk/ionic-legacy/typing-indicators" - }, - { - "source": "/sdk/ionic/interactive-messages", - "destination": "/sdk/ionic-legacy/interactive-messages" - }, - { - "source": "/sdk/ionic/transient-messages", - "destination": "/sdk/ionic-legacy/transient-messages" - }, - { - "source": "/sdk/ionic/delivery-read-receipts", - "destination": "/sdk/ionic-legacy/delivery-read-receipts" - }, - { - "source": "/sdk/ionic/mentions", - "destination": "/sdk/ionic-legacy/mentions" - }, - { - "source": "/sdk/ionic/reactions", - "destination": "/sdk/ionic-legacy/reactions" - }, - { - "source": "/sdk/ionic/calling-overview", - "destination": "/sdk/ionic-legacy/calling-overview" - }, - { - "source": "/sdk/ionic/calling-setup", - "destination": "/sdk/ionic-legacy/calling-setup" - }, - { - "source": "/sdk/ionic/default-call", - "destination": "/sdk/ionic-legacy/default-call" - }, - { - "source": "/sdk/ionic/direct-call", - "destination": "/sdk/ionic-legacy/direct-call" - }, - { - "source": "/sdk/ionic/video-view-customisation", - "destination": "/sdk/ionic-legacy/video-view-customisation" - }, - { - "source": "/sdk/ionic/recording", - "destination": "/sdk/ionic-legacy/recording" - }, - { - "source": "/sdk/ionic/presenter-mode", - "destination": "/sdk/ionic-legacy/presenter-mode" - }, - { - "source": "/sdk/ionic/users-overview", - "destination": "/sdk/ionic-legacy/users-overview" - }, - { - "source": "/sdk/ionic/retrieve-users", - "destination": "/sdk/ionic-legacy/retrieve-users" - }, - { - "source": "/sdk/ionic/user-management", - "destination": "/sdk/ionic-legacy/user-management" - }, - { - "source": "/sdk/ionic/block-users", - "destination": "/sdk/ionic-legacy/block-users" - }, - { - "source": "/sdk/ionic/user-presence", - "destination": "/sdk/ionic-legacy/user-presence" - }, - { - "source": "/sdk/ionic/groups-overview", - "destination": "/sdk/ionic-legacy/groups-overview" - }, - { - "source": "/sdk/ionic/retrieve-groups", - "destination": "/sdk/ionic-legacy/retrieve-groups" - }, - { - "source": "/sdk/ionic/create-group", - "destination": "/sdk/ionic-legacy/create-group" - }, - { - "source": "/sdk/ionic/update-group", - "destination": "/sdk/ionic-legacy/update-group" - }, - { - "source": "/sdk/ionic/join-group", - "destination": "/sdk/ionic-legacy/join-group" - }, - { - "source": "/sdk/ionic/leave-group", - "destination": "/sdk/ionic-legacy/leave-group" - }, + "pages": [ + "ai-agents/apis/get-all-available-variables", + "ai-agents/apis/create-custom-variable", + "ai-agents/apis/update-custom-variable", + "ai-agents/apis/delete-custom-variable" + ] + } + ] + } + ] + } + ] + } + ] + }, + "logo": { + "light": "/logo/light.svg", + "dark": "/logo/dark.svg" + }, + "navbar": { + "links": [ + { + "label": "Dashboard", + "href": "https://app.cometchat.com/" + } + ], + "primary": { + "type": "button", + "label": "Contact Support", + "href": "https://help.cometchat.com/hc/en-us/requests/new" + } + }, + "footer": { + "socials": { + "linkedin": "https://www.linkedin.com/company/cometchat/", + "x": "https://twitter.com/CometChat", + "github": "https://www.github.com/cometchat" + } + }, + "redirects": [ { - "source": "/sdk/ionic/delete-group", - "destination": "/sdk/ionic-legacy/delete-group" + "source": "/ai/overview", + "destination": "/fundamentals/ai-user-copilot/overview" }, { - "source": "/sdk/ionic/retrieve-group-members", - "destination": "/sdk/ionic-legacy/retrieve-group-members" + "source": "/ai/conversation-starter", + "destination": "/fundamentals/ai-user-copilot/conversation-starter" }, { - "source": "/sdk/ionic/group-add-members", - "destination": "/sdk/ionic-legacy/group-add-members" + "source": "/ai/smart-replies", + "destination": "/fundamentals/ai-user-copilot/smart-replies" }, { - "source": "/sdk/ionic/group-kick-member", - "destination": "/sdk/ionic-legacy/group-kick-member" + "source": "/ai/conversation-summary", + "destination": "/fundamentals/ai-user-copilot/conversation-summary" }, { - "source": "/sdk/ionic/group-change-member-scope", - "destination": "/sdk/ionic-legacy/group-change-member-scope" + "source": "/webhooks/overview", + "destination": "/fundamentals/webhooks-overview" }, { - "source": "/sdk/ionic/transfer-group-ownership", - "destination": "/sdk/ionic-legacy/transfer-group-ownership" + "source": "/webhooks/webhooks-management", + "destination": "/fundamentals/webhooks-management" }, { - "source": "/sdk/ionic/resources-overview", - "destination": "/sdk/ionic-legacy/resources-overview" + "source": "/webhooks/webhooks-events", + "destination": "/fundamentals/webhooks-events" }, { - "source": "/sdk/ionic/real-time-listeners", - "destination": "/sdk/ionic-legacy/real-time-listeners" + "source": "/webhooks/webhooks-legacy-overview", + "destination": "/fundamentals/webhooks-legacy-overview" }, { - "source": "/sdk/ionic/upgrading-from-v3-guide", - "destination": "/sdk/ionic-legacy/upgrading-from-v3-guide" + "source": "/webhooks/webhooks-legacy-management", + "destination": "/fundamentals/webhooks-legacy-management" }, { - "source": "/sdk/ionic/advanced", - "destination": "/sdk/ionic-legacy/advanced" + "source": "/webhooks/webhooks-legacy-events", + "destination": "/fundamentals/webhooks-legacy-events" }, { - "source": "/sdk/ionic/connection-behaviour", - "destination": "/sdk/ionic-legacy/connection-behaviour" + "source": "/ai/bots", + "destination": "/ai-chatbots/bots" }, { - "source": "/sdk/ionic/connection-status", - "destination": "/sdk/ionic-legacy/connection-status" + "source": "/ai/personalities", + "destination": "/ai-chatbots/instructions" }, { - "source": "/sdk/ionic/managing-connections-manually", - "destination": "/sdk/ionic-legacy/managing-connections-manually" + "source": "/bots/overview", + "destination": "/ai-chatbots/non-ai-bots" }, { - "source": "/sdk/ionic/extensions-overview", - "destination": "/sdk/ionic-legacy/extensions-overview" + "source": "/extensions/notification-extensions", + "destination": "/fundamentals/notification-extensions" }, { - "source": "/sdk/ionic/webhooks-overview", - "destination": "/sdk/ionic-legacy/webhooks-overview" + "source": "/extensions/message-shortcuts", + "destination": "/fundamentals/message-shortcuts" }, { - "source": "/sdk/ionic/ai-chatbots-overview", - "destination": "/sdk/ionic-legacy/ai-chatbots-overview" + "source": "/extensions/avatars", + "destination": "/fundamentals/avatars" }, { - "source": "/sdk/ionic/ai-user-copilot-overview", - "destination": "/sdk/ionic-legacy/ai-user-copilot-overview" + "source": "/extensions/thumbnail-generation", + "destination": "/fundamentals/thumbnail-generation" }, { - "source": "/sdk/ionic/changelog", - "destination": "/sdk/ionic-legacy/changelog" + "source": "/extensions/link-preview", + "destination": "/fundamentals/link-preview" }, { - "source": "/sdk/ionic/2.0/overview", - "destination": "/sdk/ionic-legacy/2.0/overview" + "source": "/extensions/rich-media-preview", + "destination": "/fundamentals/rich-media-preview" }, { - "source": "/sdk/ionic/2.0/key-concepts", - "destination": "/sdk/ionic-legacy/2.0/key-concepts" + "source": "/extensions/voice-transcription", + "destination": "/fundamentals/voice-transcription" }, { - "source": "/sdk/ionic/2.0/message-structure-and-hierarchy", - "destination": "/sdk/ionic-legacy/2.0/message-structure-and-hierarchy" + "source": "/extensions/pin-message", + "destination": "/fundamentals/pin-message" }, { - "source": "/sdk/ionic/2.0/rate-limits", - "destination": "/sdk/ionic-legacy/2.0/rate-limits" + "source": "/extensions/save-message", + "destination": "/fundamentals/save-message" }, { - "source": "/sdk/ionic/2.0/setup", - "destination": "/sdk/ionic-legacy/2.0/setup" + "source": "/extensions/tinyurl", + "destination": "/fundamentals/tinyurl" }, { - "source": "/sdk/ionic/2.0/authentication", - "destination": "/sdk/ionic-legacy/2.0/authentication" + "source": "/extensions/bitly", + "destination": "/fundamentals/bitly" }, { - "source": "/sdk/ionic/2.0/authentication-login-listeners", - "destination": "/sdk/ionic-legacy/2.0/authentication-login-listeners" + "source": "/extensions/email-replies", + "destination": "/fundamentals/email-replies" }, { - "source": "/sdk/ionic/2.0/messaging", - "destination": "/sdk/ionic-legacy/2.0/messaging" + "source": "/extensions/mentions", + "destination": "/fundamentals/mentions" }, { - "source": "/sdk/ionic/2.0/messaging-send-message", - "destination": "/sdk/ionic-legacy/2.0/messaging-send-message" + "source": "/extensions/giphy", + "destination": "/fundamentals/giphy" }, { - "source": "/sdk/ionic/2.0/messaging-receive-messages", - "destination": "/sdk/ionic-legacy/2.0/messaging-receive-messages" + "source": "/extensions/tenor", + "destination": "/fundamentals/tenor" }, { - "source": "/sdk/ionic/2.0/messaging-additional-message-filtering", - "destination": "/sdk/ionic-legacy/2.0/messaging-additional-message-filtering" + "source": "/extensions/gfycat", + "destination": "/fundamentals/gfycat" }, { - "source": "/sdk/ionic/2.0/messaging-retrieve-conversations", - "destination": "/sdk/ionic-legacy/2.0/messaging-retrieve-conversations" + "source": "/extensions/reminders", + "destination": "/fundamentals/reminders" }, { - "source": "/sdk/ionic/2.0/threaded-messages", - "destination": "/sdk/ionic-legacy/2.0/threaded-messages" + "source": "/extensions/smart-replies", + "destination": "/fundamentals/smart-replies" }, { - "source": "/sdk/ionic/2.0/messaging-edit-message", - "destination": "/sdk/ionic-legacy/2.0/messaging-edit-message" + "source": "/extensions/message-translation", + "destination": "/fundamentals/message-translation" }, { - "source": "/sdk/ionic/2.0/messaging-delete-message", - "destination": "/sdk/ionic-legacy/2.0/messaging-delete-message" + "source": "/extensions/emojis", + "destination": "/fundamentals/emojis" }, { - "source": "/sdk/ionic/2.0/messaging-delete-conversation", - "destination": "/sdk/ionic-legacy/2.0/messaging-delete-conversation" + "source": "/extensions/polls", + "destination": "/fundamentals/polls" }, { - "source": "/sdk/ionic/2.0/messaging-typing-indicators", - "destination": "/sdk/ionic-legacy/2.0/messaging-typing-indicators" + "source": "/extensions/reactions", + "destination": "/fundamentals/reactions" }, { - "source": "/sdk/ionic/2.0/messaging-receipts", - "destination": "/sdk/ionic-legacy/2.0/messaging-receipts" + "source": "/extensions/stickers-stipop", + "destination": "/fundamentals/stickers-stipop" }, { - "source": "/sdk/ionic/2.0/calling", - "destination": "/sdk/ionic-legacy/2.0/calling" + "source": "/extensions/stickers", + "destination": "/fundamentals/stickers" }, { - "source": "/sdk/ionic/2.0/calling-default-calling", - "destination": "/sdk/ionic-legacy/2.0/calling-default-calling" + "source": "/extensions/video-broadcasting", + "destination": "/fundamentals/video-broadcasting" }, { - "source": "/sdk/ionic/2.0/calling-direct-calling", - "destination": "/sdk/ionic-legacy/2.0/calling-direct-calling" + "source": "/extensions/collaborative-whiteboard", + "destination": "/fundamentals/collaborative-whiteboard" }, { - "source": "/sdk/ionic/2.0/users", - "destination": "/sdk/ionic-legacy/2.0/users" + "source": "/extensions/collaborative-document", + "destination": "/fundamentals/collaborative-document" }, { - "source": "/sdk/ionic/2.0/users-retrieve-users", - "destination": "/sdk/ionic-legacy/2.0/users-retrieve-users" + "source": "/extensions/chatwoot", + "destination": "/fundamentals/chatwoot" }, { - "source": "/sdk/ionic/2.0/users-user-management", - "destination": "/sdk/ionic-legacy/2.0/users-user-management" + "source": "/extensions/intercom", + "destination": "/fundamentals/intercom" }, { - "source": "/sdk/ionic/2.0/users-block-users", - "destination": "/sdk/ionic-legacy/2.0/users-block-users" + "source": "/extensions/moderation-extensions", + "destination": "/fundamentals/moderation-extensions" }, { - "source": "/sdk/ionic/2.0/user-presence", - "destination": "/sdk/ionic-legacy/2.0/user-presence" + "source": "/extensions/disappearing-messages", + "destination": "/fundamentals/disappearing-messages" }, { - "source": "/sdk/ionic/2.0/groups", - "destination": "/sdk/ionic-legacy/2.0/groups" + "source": "/extensions/end-to-end-encryption", + "destination": "/fundamentals/end-to-end-encryption" }, { - "source": "/sdk/ionic/2.0/groups-retrieve-groups", - "destination": "/sdk/ionic-legacy/2.0/groups-retrieve-groups" + "source": "/extensions/overview", + "destination": "/fundamentals/extensions-overview" }, { - "source": "/sdk/ionic/2.0/groups-create-group", - "destination": "/sdk/ionic-legacy/2.0/groups-create-group" + "source": "/extensions/web-push-notifications", + "destination": "/notifications/web-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-update-group", - "destination": "/sdk/ionic-legacy/2.0/groups-update-group" + "source": "/extensions/android-push-notifications", + "destination": "/notifications/android-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-join-group", - "destination": "/sdk/ionic-legacy/2.0/groups-join-group" + "source": "/extensions/android-connection-service", + "destination": "/notifications/android-connection-service" }, { - "source": "/sdk/ionic/2.0/groups-leave-group", - "destination": "/sdk/ionic-legacy/2.0/groups-leave-group" + "source": "/extensions/ios-fcm-push-notifications", + "destination": "/notifications/ios-fcm-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-delete-group", - "destination": "/sdk/ionic-legacy/2.0/groups-delete-group" + "source": "/extensions/ios-apns-push-notifications", + "destination": "/notifications/ios-apns-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-retrieve-group-members", - "destination": "/sdk/ionic-legacy/2.0/groups-retrieve-group-members" + "source": "/extensions/flutter-push-notifications", + "destination": "/notifications/flutter-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-add-members-to-group", - "destination": "/sdk/ionic-legacy/2.0/groups-add-members-to-group" + "source": "/extensions/react-native-push-notifications", + "destination": "/notifications/react-native-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-kick-ban-members", - "destination": "/sdk/ionic-legacy/2.0/groups-kick-ban-members" + "source": "/extensions/capacitor-cordova-ionic-push-notifications", + "destination": "/notifications/capacitor-cordova-ionic-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-change-member-scope", - "destination": "/sdk/ionic-legacy/2.0/groups-change-member-scope" + "source": "/extensions/migration-guide-push-notifications", + "destination": "/notifications/migration-guide-push-notifications" }, { - "source": "/sdk/ionic/2.0/groups-transfer-group-ownership", - "destination": "/sdk/ionic-legacy/2.0/groups-transfer-group-ownership" + "source": "/extensions/mute-functionality", + "destination": "/notifications/mute-functionality" }, { - "source": "/sdk/ionic/2.0/resources", - "destination": "/sdk/ionic-legacy/2.0/resources" + "source": "/extensions/token-management", + "destination": "/notifications/token-management" }, { - "source": "/sdk/ionic/2.0/resources-all-real-time-listeners", - "destination": "/sdk/ionic-legacy/2.0/resources-all-real-time-listeners" + "source": "/extensions/legacy-push-notifications", + "destination": "/notifications/legacy-push-notifications" }, { - "source": "/sdk/ionic/2.0/resources-upgrading-from-v1", - "destination": "/sdk/ionic-legacy/2.0/resources-upgrading-from-v1" + "source": "/extensions/push-notifications-overview", + "destination": "/notifications/push-notification-extension-overview" }, { - "source": "/sdk/ionic/2.0/advanced", - "destination": "/sdk/ionic-legacy/2.0/advanced" + "source": "/extensions/email-notifications", + "destination": "/notifications/email-notification-extension" }, { - "source": "/sdk/ionic/2.0/advanced-connection-listener", - "destination": "/sdk/ionic-legacy/2.0/advanced-connection-listener" + "source": "/extensions/sms-notifications", + "destination": "/notifications/sms-notification-extension" }, { - "source": "/sdk/ionic/2.0/webhooks", - "destination": "/sdk/ionic-legacy/2.0/webhooks" + "source": "/extensions/slow-mode", + "destination": "/moderation/slow-mode" }, { - "source": "/sdk/ionic/2.0/bots", - "destination": "/sdk/ionic-legacy/2.0/bots" + "source": "/extensions/xss-filter", + "destination": "/moderation/xss-filter" }, { - "source": "/sdk/ionic/3.0/overview", - "destination": "/sdk/ionic-legacy/3.0/overview" + "source": "/extensions/report-user", + "destination": "/moderation/report-user" }, { - "source": "/sdk/ionic/3.0/key-concepts", - "destination": "/sdk/ionic-legacy/3.0/key-concepts" + "source": "/extensions/report-message", + "destination": "/moderation/report-message" }, { - "source": "/sdk/ionic/3.0/message-structure-and-hierarchy", - "destination": "/sdk/ionic-legacy/3.0/message-structure-and-hierarchy" + "source": "/extensions/data-masking-filter", + "destination": "/moderation/data-masking-filter" }, { - "source": "/sdk/ionic/3.0/rate-limits", - "destination": "/sdk/ionic-legacy/3.0/rate-limits" + "source": "/extensions/profanity-filter", + "destination": "/moderation/profanity-filter" }, { - "source": "/sdk/ionic/3.0/setup", - "destination": "/sdk/ionic-legacy/3.0/setup" + "source": "/extensions/image-moderation", + "destination": "/moderation/image-moderation" }, { - "source": "/sdk/ionic/3.0/authentication", - "destination": "/sdk/ionic-legacy/3.0/authentication" + "source": "/extensions/sentiment-analysis", + "destination": "/moderation/sentiment-analysis" }, { - "source": "/sdk/ionic/3.0/authentication-login-listeners", - "destination": "/sdk/ionic-legacy/3.0/authentication-login-listeners" + "source": "/extensions/in-flight-message-moderation", + "destination": "/moderation/in-flight-message-moderation" }, { - "source": "/sdk/ionic/3.0/messaging", - "destination": "/sdk/ionic-legacy/3.0/messaging" + "source": "/extensions/virus-malware-scanner", + "destination": "/moderation/virus-malware-scanner" }, { - "source": "/sdk/ionic/3.0/messaging-send-message", - "destination": "/sdk/ionic-legacy/3.0/messaging-send-message" + "source": "/ui-kit/react/v6", + "destination": "/ui-kit/react" }, { - "source": "/sdk/ionic/3.0/messaging-receive-messages", - "destination": "/sdk/ionic-legacy/3.0/messaging-receive-messages" + "source": "/ui-kit/react/v6/:slug*", + "destination": "/ui-kit/react/:slug*" }, { - "source": "/sdk/ionic/3.0/messaging-additional-message-filtering", - "destination": "/sdk/ionic-legacy/3.0/messaging-additional-message-filtering" + "source": "/ui-kit/react/6.0", + "destination": "/ui-kit/react" }, { - "source": "/sdk/ionic/3.0/messaging-retrieve-conversations", - "destination": "/sdk/ionic-legacy/3.0/messaging-retrieve-conversations" + "source": "/ui-kit/react/6.0/:slug*", + "destination": "/ui-kit/react/:slug*" }, { - "source": "/sdk/ionic/3.0/threaded-messages", - "destination": "/sdk/ionic-legacy/3.0/threaded-messages" + "source": "/ui-kit/react/v6/integration/next-js", + "destination": "/ui-kit/react/next-js-integration" }, { - "source": "/sdk/ionic/3.0/transient-messages", - "destination": "/sdk/ionic-legacy/3.0/transient-messages" + "source": "/ui-kit/react", + "destination": "/ui-kit/react/overview" }, { - "source": "/sdk/ionic/3.0/messaging-edit-message", - "destination": "/sdk/ionic-legacy/3.0/messaging-edit-message" + "source": "/ui-kit/react/5.0", + "destination": "/ui-kit/react/v5" }, { - "source": "/sdk/ionic/3.0/messaging-delete-message", - "destination": "/sdk/ionic-legacy/3.0/messaging-delete-message" + "source": "/ui-kit/react/5.0/:slug*", + "destination": "/ui-kit/react/v5/:slug*" }, { - "source": "/sdk/ionic/3.0/messaging-delete-conversation", - "destination": "/sdk/ionic-legacy/3.0/messaging-delete-conversation" + "source": "/ui-kit/react/4.0", + "destination": "/ui-kit/react/v4" }, { - "source": "/sdk/ionic/3.0/messaging-typing-indicators", - "destination": "/sdk/ionic-legacy/3.0/messaging-typing-indicators" + "source": "/ui-kit/react/4.0/:slug*", + "destination": "/ui-kit/react/v4/:slug*" }, { - "source": "/sdk/ionic/3.0/messaging-receipts", - "destination": "/sdk/ionic-legacy/3.0/messaging-receipts" + "source": "/ui-kit/react/3.0", + "destination": "/ui-kit/react/v3" }, { - "source": "/sdk/ionic/3.0/calling", - "destination": "/sdk/ionic-legacy/3.0/calling" + "source": "/ui-kit/react/3.0/:slug*", + "destination": "/ui-kit/react/v3/:slug*" }, { - "source": "/sdk/ionic/3.0/calling-default-calling", - "destination": "/sdk/ionic-legacy/3.0/calling-default-calling" + "source": "/ui-kit/react/2.0", + "destination": "/ui-kit/react/v2" }, { - "source": "/sdk/ionic/3.0/calling-direct-calling", - "destination": "/sdk/ionic-legacy/3.0/calling-direct-calling" + "source": "/ui-kit/react/2.0/:slug*", + "destination": "/ui-kit/react/v2/:slug*" }, { - "source": "/sdk/ionic/3.0/calling-recording", - "destination": "/sdk/ionic-legacy/3.0/calling-recording" + "source": "/ui-kit/ios/v5", + "destination": "/ui-kit/ios" }, { - "source": "/sdk/ionic/3.0/calling-v3", - "destination": "/sdk/ionic-legacy/3.0/calling-v3" + "source": "/ui-kit/ios/v5/:slug*", + "destination": "/ui-kit/ios/:slug*" }, { - "source": "/sdk/ionic/3.0/v3-setup", - "destination": "/sdk/ionic-legacy/3.0/v3-setup" + "source": "/ui-kit/ios/5.0", + "destination": "/ui-kit/ios" }, { - "source": "/sdk/ionic/3.0/v3-start-call-session", - "destination": "/sdk/ionic-legacy/3.0/v3-start-call-session" + "source": "/ui-kit/ios/5.0/:slug*", + "destination": "/ui-kit/ios/:slug*" }, { - "source": "/sdk/ionic/3.0/v3-video-view-customisation", - "destination": "/sdk/ionic-legacy/3.0/v3-video-view-customisation" + "source": "/ui-kit/ios/4.0", + "destination": "/ui-kit/ios/v4" }, { - "source": "/sdk/ionic/3.0/v3-calling-recording", - "destination": "/sdk/ionic-legacy/3.0/v3-calling-recording" + "source": "/ui-kit/ios/4.0/:slug*", + "destination": "/ui-kit/ios/v4/:slug*" }, { - "source": "/sdk/ionic/3.0/video-view-customisation", - "destination": "/sdk/ionic-legacy/3.0/video-view-customisation" + "source": "/ui-kit/ios/3.0", + "destination": "/ui-kit/ios/v3" }, { - "source": "/sdk/ionic/3.0/users", - "destination": "/sdk/ionic-legacy/3.0/users" + "source": "/ui-kit/ios/3.0/:slug*", + "destination": "/ui-kit/ios/v3/:slug*" }, { - "source": "/sdk/ionic/3.0/users-retrieve-users", - "destination": "/sdk/ionic-legacy/3.0/users-retrieve-users" + "source": "/ui-kit/ios/2.0", + "destination": "/ui-kit/ios/v2" }, { - "source": "/sdk/ionic/3.0/users-user-management", - "destination": "/sdk/ionic-legacy/3.0/users-user-management" + "source": "/ui-kit/ios/2.0/:slug*", + "destination": "/ui-kit/ios/v2/:slug*" }, { - "source": "/sdk/ionic/3.0/users-block-users", - "destination": "/sdk/ionic-legacy/3.0/users-block-users" + "source": "/ui-kit/android/v5", + "destination": "/ui-kit/android" }, { - "source": "/sdk/ionic/3.0/user-presence", - "destination": "/sdk/ionic-legacy/3.0/user-presence" + "source": "/ui-kit/android/v5/:slug*", + "destination": "/ui-kit/android/:slug*" }, { - "source": "/sdk/ionic/3.0/groups", - "destination": "/sdk/ionic-legacy/3.0/groups" + "source": "/ui-kit/android/5.0", + "destination": "/ui-kit/android" }, { - "source": "/sdk/ionic/3.0/groups-retrieve-groups", - "destination": "/sdk/ionic-legacy/3.0/groups-retrieve-groups" + "source": "/ui-kit/android/5.0/:slug*", + "destination": "/ui-kit/android/:slug*" }, { - "source": "/sdk/ionic/3.0/groups-create-group", - "destination": "/sdk/ionic-legacy/3.0/groups-create-group" + "source": "/ui-kit/android/4.0", + "destination": "/ui-kit/android/v4" }, { - "source": "/sdk/ionic/3.0/groups-update-group", - "destination": "/sdk/ionic-legacy/3.0/groups-update-group" + "source": "/ui-kit/android/4.0/:slug*", + "destination": "/ui-kit/android/v4/:slug*" }, { - "source": "/sdk/ionic/3.0/groups-join-group", - "destination": "/sdk/ionic-legacy/3.0/groups-join-group" + "source": "/ui-kit/android/3.0", + "destination": "/ui-kit/android/v3" }, { - "source": "/sdk/ionic/3.0/groups-leave-group", - "destination": "/sdk/ionic-legacy/3.0/groups-leave-group" + "source": "/ui-kit/android/3.0/:slug*", + "destination": "/ui-kit/android/v3/:slug*" }, { - "source": "/sdk/ionic/3.0/groups-delete-group", - "destination": "/sdk/ionic-legacy/3.0/groups-delete-group" + "source": "/ui-kit/android/2.0", + "destination": "/ui-kit/android/v2" }, { - "source": "/sdk/ionic/3.0/groups-retrieve-group-members", - "destination": "/sdk/ionic-legacy/3.0/groups-retrieve-group-members" + "source": "/ui-kit/android/2.0/:slug*", + "destination": "/ui-kit/android/v2/:slug*" }, { - "source": "/sdk/ionic/3.0/groups-add-members-to-group", - "destination": "/sdk/ionic-legacy/3.0/groups-add-members-to-group" + "source": "/ui-kit/flutter/v5", + "destination": "/ui-kit/flutter" }, { - "source": "/sdk/ionic/3.0/groups-kick-ban-members", - "destination": "/sdk/ionic-legacy/3.0/groups-kick-ban-members" + "source": "/ui-kit/flutter/v5/:slug*", + "destination": "/ui-kit/flutter/:slug*" }, { - "source": "/sdk/ionic/3.0/groups-change-member-scope", - "destination": "/sdk/ionic-legacy/3.0/groups-change-member-scope" + "source": "/ui-kit/flutter/5.0", + "destination": "/ui-kit/flutter" }, { - "source": "/sdk/ionic/3.0/groups-transfer-group-ownership", - "destination": "/sdk/ionic-legacy/3.0/groups-transfer-group-ownership" + "source": "/ui-kit/flutter/5.0/:slug*", + "destination": "/ui-kit/flutter/:slug*" }, { - "source": "/sdk/ionic/3.0/resources", - "destination": "/sdk/ionic-legacy/3.0/resources" + "source": "/ui-kit/flutter/4.0", + "destination": "/ui-kit/flutter/v4" }, { - "source": "/sdk/ionic/3.0/resources-all-real-time-listeners", - "destination": "/sdk/ionic-legacy/3.0/resources-all-real-time-listeners" + "source": "/ui-kit/flutter/4.0/:slug*", + "destination": "/ui-kit/flutter/v4/:slug*" }, { - "source": "/sdk/ionic/3.0/resources-upgrading-from-v2", - "destination": "/sdk/ionic-legacy/3.0/resources-upgrading-from-v2" + "source": "/ui-kit/react-native/5.0/:slug*", + "destination": "/ui-kit/react-native/:slug*" }, { - "source": "/sdk/ionic/3.0/advanced", - "destination": "/sdk/ionic-legacy/3.0/advanced" + "source": "/ui-kit/react-native/4.0/:slug*", + "destination": "/ui-kit/react-native/v4/:slug*" }, { - "source": "/sdk/ionic/3.0/advanced-connection-listener", - "destination": "/sdk/ionic-legacy/3.0/advanced-connection-listener" + "source": "/ai-chatbots/non-ai-bots", + "destination": "/ai-chatbots/custom-agents" }, { - "source": "/sdk/ionic/3.0/advanced-managing-web-socket-connections-manually", - "destination": "/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually" + "source": "/widget/wordpress-buddypress", + "destination": "/widget/legacy/wordpress-buddypress" }, { - "source": "/sdk/ionic/3.0/webhooks", - "destination": "/sdk/ionic-legacy/3.0/webhooks" + "source": "/widget/html-bootstrap-jquery", + "destination": "/widget/legacy/html-bootstrap-jquery" }, { - "source": "/sdk/ionic/3.0/bots", - "destination": "/sdk/ionic-legacy/3.0/bots" + "source": "/widget/custom-build", + "destination": "/widget/legacy/custom-build" } ], "integrations": { diff --git a/rest-api/banned-users.mdx b/rest-api/banned-users.mdx index 2f3fc9d52..181e7ec47 100644 --- a/rest-api/banned-users.mdx +++ b/rest-api/banned-users.mdx @@ -1,29 +1,25 @@ --- title: "Overview" -description: "Ban and unban users from groups to manage group membership and moderation." --- -The **Banned Users** API allows group admins and moderators to ban users from a group. Banned users are removed from the group and cannot rejoin until they are unbanned. +Certain actions can be performed on the group members: -### Key behaviors +1. Kick a member from the group +2. Ban a member from the group. +3. Unban a member from the group. +4. Update the scope of the member of the group. -- Only users with `admin` or `moderator` scope in a group can ban/unban members. -- Banning removes the user from the group immediately. -- Banned users cannot rejoin the group (even if it's public) until unbanned. -- A user can be banned during [group creation](/rest-api/groups/create) via the `usersToBan` array. +All the above actions can only be performed by the Admin or the Moderator of the group. -### Relationships +Banning a user API doesn't accept body parameters.\ +It simply bans the UID mentioned in the path parameter of the request. -- **Groups** — Bans are scoped to a specific [Group](/rest-api/groups), identified by its GUID. -- **Group Members** — Banning removes the user from [Group Members](/rest-api/group-members). -- **Users** — The banned entity is a [User](/rest-api/users). +The banned user will be no longer part of the group and can not perform any actions in the group. A banned user cannot rejoin the same group without being unbanned. -### Error handling +## Endpoints -| Error Code | Description | -| ---------- | ----------- | -| `ERR_GUID_NOT_FOUND` | The specified group does not exist | -| `ERR_UID_NOT_FOUND` | The specified user does not exist | -| `ERR_NOT_A_MEMBER` | The user is not a member of this group | - -For the complete list of error codes, see [Error Guide](/articles/error-guide). +| Method | Endpoint | Description | +| ------ | ------------------------------------- | ---------------------------------- | +| POST | `/groups/{guid}/banned_members` | Ban a user from a group | +| GET | `/groups/{guid}/banned_members` | List all banned members of a group | +| DELETE | `/groups/{guid}/banned_members/{uid}` | Unban a user from a group | diff --git a/rest-api/blocked-users.mdx b/rest-api/blocked-users.mdx index b3ae67a6a..d98d4ee4e 100644 --- a/rest-api/blocked-users.mdx +++ b/rest-api/blocked-users.mdx @@ -1,25 +1,23 @@ --- title: "Overview" -description: "Manage user blocking to control who can communicate with whom in your CometChat app." --- -The **Blocked Users** API lets a user block or unblock other users. When User A blocks User B, User A will no longer be able to send messages to User B. User B can still send messages, but those messages will be silently dropped and will not be delivered to User A. +A user can block another user if the user doesn't wish to receive any messages or notifications from the blocked user.\ +Once any user is blocked, all the communication to and from the respective user will be completely blocked.\ +Once the user is unblocked, the newly sent messages will start to receive. However the messages that was sent during the blocked period won't be visible. -### Key behaviors +## Endpoints -- When A blocks B, **A cannot send messages to B**, and **messages sent by B to A are silently dropped** — B is not notified that they have been blocked and can still send messages as usual from their perspective. -- Blocking is **unidirectional** — if A blocks B, B can still independently block A. Both users must unblock the other separately to restore communication between them. -- Blocking does not remove users from shared groups, but direct messages between the two users are affected as described above. +| Method | Endpoint | Description | +| ------ | --------------------------- | ------------------------- | +| POST | `/users/{uid}/blockedusers` | Block one or more users | +| GET | `/users/{uid}/blockedusers` | List all blocked users | +| DELETE | `/users/{uid}/blockedusers` | Unblock one or more users | -### Relationships +## Properties -- **Users** — Blocking operates between two [Users](/rest-api/users). The `onBehalfOf` header specifies which user is performing the block action. -- **Messages** — The blocker (A) cannot send messages to the blocked user (B). Messages sent by the blocked user (B) to the blocker (A) are silently dropped. B is not informed that their messages are not being delivered. +The following table lists the properties that the Blocked User API supports. -### Error handling - -| Error Code | Description | -| ---------- | ----------- | -| `ERR_UID_NOT_FOUND` | The specified user does not exist | - -For the complete list of error codes, see [Error Guide](/articles/error-guide). +| Parameters | Type | Description | +| ----------- | ---------------- | ----------------------------------------------------------------- | +| blockedUids | array of strings | (_optional_) Indicates the list of uids that needs to be blocked. | diff --git a/rest-api/conversations/delete-conversation.mdx b/rest-api/conversations/delete-conversation.mdx index 25aacfd67..da98aff83 100644 --- a/rest-api/conversations/delete-conversation.mdx +++ b/rest-api/conversations/delete-conversation.mdx @@ -1,4 +1,28 @@ --- openapi: delete /conversations/{conversationId} deprecated: true ---- \ No newline at end of file +--- + + +**This endpoint is deprecated** and will be removed in a future API version. + +Use the type-specific endpoints instead: + +| Old Endpoint | New Endpoint | +| ---------------------------------------- | -------------------------------------------------------------------------- | +| `DELETE /conversations/{conversationId}` | `DELETE /users/{uid}/conversation` or `DELETE /groups/{guid}/conversation` | + +**Migration example:** + +```bash +# Old (deprecated): +curl -X DELETE "https://appid.api-us.cometchat.io/v3/conversations/user_superhero1_user_superhero2" \ + -H "apikey: YOUR_API_KEY" + +# New (recommended) — for a user conversation: +curl -X DELETE "https://appid.api-us.cometchat.io/v3/users/superhero1/conversation" \ + -H "apikey: YOUR_API_KEY" \ + -H "onBehalfOf: superhero1" +``` + + diff --git a/rest-api/conversations/get-conversation.mdx b/rest-api/conversations/get-conversation.mdx index 4988e7699..a09d10228 100644 --- a/rest-api/conversations/get-conversation.mdx +++ b/rest-api/conversations/get-conversation.mdx @@ -1,4 +1,28 @@ --- openapi: get /conversations/{conversationId} deprecated: true ---- \ No newline at end of file +--- + + +**This endpoint is deprecated** and will be removed in a future API version. + +Use the type-specific endpoints instead: + +| Old Endpoint | New Endpoint | +| ------------------------------------- | -------------------------------------------------------------------- | +| `GET /conversations/{conversationId}` | `GET /users/{uid}/conversation` or `GET /groups/{guid}/conversation` | + +**Migration example:** + +```bash +# Old (deprecated): +curl -X GET "https://appid.api-us.cometchat.io/v3/conversations/user_superhero1_user_superhero2" \ + -H "apikey: YOUR_API_KEY" + +# New (recommended) — for a user conversation: +curl -X GET "https://appid.api-us.cometchat.io/v3/users/superhero1/conversation" \ + -H "apikey: YOUR_API_KEY" \ + -H "onBehalfOf: superhero1" +``` + + diff --git a/rest-api/friends.mdx b/rest-api/friends.mdx index 82dfe52fe..4b1e6e757 100644 --- a/rest-api/friends.mdx +++ b/rest-api/friends.mdx @@ -1,25 +1,22 @@ --- title: "Overview" -description: "Manage friend relationships between users in your CometChat app." --- -The **Friends** API manages bidirectional friend relationships between users. When User A adds User B as a friend, both users become friends with each other automatically. +If you want to associate friends with your users, you must handle friend management in your app.\ +Once two users are friends (i.e. they have accepted each other as friends), then you can associate them as friends in CometChat. -### Key behaviors +## Endpoints -- Friendships are **bidirectional** — adding a friend creates the relationship for both users and counts toward both users' friend limits. -- A user can have up to **1,000 friends**. -- Friends lists can be used to filter users in chat UIs or show online friends. +| Method | Endpoint | Description | +| ------ | ---------------------- | -------------------------- | +| POST | `/users/{uid}/friends` | Add friends for a user | +| GET | `/users/{uid}/friends` | List all friends of a user | +| DELETE | `/users/{uid}/friends` | Remove friends from a user | -### Relationships +## Properties -- **Users** — Friends are [Users](/rest-api/users). The `onBehalfOf` header or path UID specifies which user's friend list to manage. +The following table lists the properties that the Friends API supports -### Error handling - -| Error Code | Description | -| --------------------- | --------------------------------- | -| `ERR_UID_NOT_FOUND` | The specified user does not exist | -| `ERR_ALREADY_FRIENDS` | The users are already friends | - -For the complete list of error codes, see [Error Guide](/articles/error-guide). +| Parameters | Type | Description | +| ---------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| accepted | array of strings | (_optional_) Indicates an array of UIDs that are to be made friends. Maximum of 25 users can be passed in the accepted array. | diff --git a/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx b/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx new file mode 100644 index 000000000..cdec92381 --- /dev/null +++ b/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /messages/{id}/reactions/{reaction} +--- diff --git a/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx b/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx deleted file mode 100644 index 0b3a5d292..000000000 --- a/rest-api/messages/list-reactions-with-a-specific-emojiunicodes.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -openapi: get /messages/{id}/reactions/{reaction} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all reactions on a message. - - - Remove a specific reaction. - - diff --git a/rest-api/messages/mark-message-as-interacted.mdx b/rest-api/messages/mark-message-as-interacted.mdx deleted file mode 100644 index c36d78451..000000000 --- a/rest-api/messages/mark-message-as-interacted.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -openapi: patch /messages/{id}/interacted ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MSG_NOT_FOUND` | 404 | No message found with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View message details and interaction data. - - - Browse messages in a conversation. - - From c5c31f7871dcefe9969ac8e28d19ef1c01a51553 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Thu, 26 Mar 2026 16:18:31 +0530 Subject: [PATCH 24/56] corrected sample data in examples --- articles/error-guide.mdx | 2 +- articles/properties-and-constraints.mdx | 135 +- calls.json | 24 +- chat-apis.json | 762 +- data-import-apis.json | 7903 ++++++------ docs.json | 10120 +++++++++------- management-apis.json | 64 +- rest-api/chat-apis.mdx | 14 +- .../conversations/delete-conversation.mdx | 6 +- rest-api/conversations/get-conversation.mdx | 6 +- 10 files changed, 10307 insertions(+), 8729 deletions(-) diff --git a/articles/error-guide.mdx b/articles/error-guide.mdx index c8b4029d2..9b70f9596 100644 --- a/articles/error-guide.mdx +++ b/articles/error-guide.mdx @@ -1,6 +1,6 @@ --- title: "Error Guide" -sidebarTitle: "Help Center" +sidebarTitle: "Error Codes" --- | Error Code | Error Description | diff --git a/articles/properties-and-constraints.mdx b/articles/properties-and-constraints.mdx index 561216aa9..e9d939720 100644 --- a/articles/properties-and-constraints.mdx +++ b/articles/properties-and-constraints.mdx @@ -4,95 +4,86 @@ title: "Properties and Constraints" This page lists the properties and constraints applicable to various CometChat systems. -## Chat Widgets - -| **Property** | **Constraint** | **Notes** | -| ------------------------------------------------ | ---------------------------------------------- | ------------------------------ | -| Number of widgets that can be created for an app | Maximum 25 | | -| Widget name | 100 characters, UTF8mb4, no newline characters | | -| Widget version | v2 | Cannot be set programmatically | -| Docked layout icon | PNG, JPG, GIF, SVG | | - ## Webhooks -| **Property** | **Constraint** | **Notes** | -| ------------------------------------ | --------------------------------------------- | --------- | -| Maximum number of webhooks in an app | Maximum 25 | | -| Webhook URL | Valid URL, maximum 255 characters | | -| Webhook ID | 50 characters, alphanumeric (without spaces) | | -| Webhook authentication username | 50 characters, alphanumeric (without spaces) | | -| Webhook authentication password | 100 characters, alphanumeric (without spaces) | | +| **Property** | **Constraints** | +| ---------------------------------- | ------------------------------------------------ | +| Maximum number of webhooks per app | 25 | +| Webhook URL | Valid URL, max 255 characters | +| Webhook ID | Max 50 characters, alphanumeric only, no spaces | +| Webhook authentication username | Max 50 characters, alphanumeric only, no spaces | +| Webhook authentication password | Max 100 characters, alphanumeric only, no spaces | ## Management APIs -| **Property** | **Constraint** | **Notes** | -| ------------------------------------------------------------- | --------------------------- | --------------------------------- | -| App name length | 100 characters, UTF8mb4 set | | -| App version | v3 | This is the only option available | -| Number of collaborators that can be created (team management) | Maximum 25 | | +| **Property** | **Constraints** | +| ----------------------------------------------- | --------------------------------------------------------------- | +| App name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | +| App version | `v3` only | +| Maximum collaborators per app (team management) | 25 | ## REST APIs -| **Property** | **Constraint** | **Notes** | -| ------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------- | -| Number of bot users that can be created | Maximum 25 | | -| API keys | 100 characters (UTF8mb4 characters) | This covers all languages and even emojis. One emoji uses two characters. | -| Number of API keys that can be created for an app | Maximum 25 | | +| **Property** | **Constraints** | +| ------------------------- | ----------------------------------------------------------------------------------------- | +| Maximum bot users per app | 25 | +| API key name | Max 100 characters, UTF8mb4 (supports all languages and emojis; one emoji = 2 characters) | +| Maximum API keys per app | 25 | ## Users and Groups -| **Property** | **Constraint** | **Notes** | -| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| Maximum users in a group (all features enabled) | 300 | Groups with delivery/read receipts and typing indicators enabled | -| Maximum users in a group (without delivery/read receipts and typing indicators) | 100,000 | | -| Maximum groups a user can be a part of | 2,000 | | -| Maximum number of friends for a user | 1,000 | | -| Maximum tokens for a user | 100 active (rolling retention — oldest tokens are archived when limit is exceeded) | | -| Maximum number of groups | No limit | | -| Maximum number of unread messages per user | No limit | | -| Maximum number of users that can be created for an app | No limit | | -| User and Group ID | 100 characters, alpha-dash (a-z, 0-9 with - and \_) without spaces | CometChat forces the UID to all lowercase | -| User and Group name | 100 characters, UTF8mb4 set | This covers all languages and even emojis | -| User and Group avatar | Must be a URL, limit of 3,000 characters | CometChat doesn't save the image on its servers. There is no limit on the image resolution. It depends on the implementation. | -| User profile | Must be a URL, limit of 3,000 characters | Same as above | -| User and Group metadata | 5 KB max (within the 10 KB POST request limit). | | -| User and Group tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | -| Group password | String up to 100 characters | | -| Group description | 255 characters, UTF8mb4 set | | -| Maximum active presence subscriptions | The presence subscription will be active until 1,000 users are online for a single app. If more than 1,000 users go online, the presence notification starting from the 1,001st user will not be sent to other users. | This is the upper limit applicable across subscription for friends, users with certain roles, and all users | -| Typing indicators for groups | Typing indicators will be sent for a group of up to 1,000 online users. | | -| Unread message counts for groups | For a group with more than 300 members, the conversations and unread message counts are not updated. | | -| Delivery and read receipts for groups | Delivery and read receipts will be sent for a group of up to 300 online users. | | +| **Property** | **Constraints** | +| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Maximum members per group (all features enabled) | 300 (with delivery/read receipts and typing indicators) | +| Maximum members per group (without receipts and typing indicators) | 100,000 | +| Maximum groups per user | 2,000 | +| Maximum friends per user | 1,000 | +| Maximum auth tokens per user | 100 active (rolling retention — oldest tokens archived when limit exceeded) | +| Maximum groups per app | No limit | +| Maximum unread messages per user | No limit | +| Maximum users per app | No limit | +| User/Group ID (`uid`, `guid`) | Max 100 characters, alpha-dash (`a-z`, `0-9`, `-`, `_`), no spaces. Automatically lowercased. | +| User/Group name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | +| User/Group avatar | Must be a valid URL, max 3,000 characters. Image is not stored by CometChat — URL must remain accessible. | +| User profile link | Must be a valid URL, max 3,000 characters | +| User/Group metadata | Max 5 KB (within the 10 KB POST request body limit) | +| User/Group tags | Max 25 tags, each up to 100 characters, UTF8mb4 | +| Group password | Max 100 characters | +| Group description | Max 255 characters, UTF8mb4 | +| Presence subscriptions | Active for up to 1,000 concurrent online users per app. Beyond 1,000, presence notifications are not sent. Applies across friends, role-based, and all-user subscriptions. | +| Typing indicators (groups) | Sent for groups with up to 1,000 online members | +| Unread message counts (groups) | Not updated for groups with more than 300 members | +| Delivery/read receipts (groups) | Sent for groups with up to 300 online members | ## Roles -| **Property** | **Constraint** | **Notes** | -| ------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------- | -| Maximum number of roles that can be created | Maximum 25 | | -| Role ID | 100 characters, alpha-dash (a-z, 0-9 with - and \_) without spaces | CometChat forces the Role ID to lowercase | -| Role name | 100 characters, UTF8mb4 | This covers all languages and even emojis | -| Role description | 255 characters, UTF8mb4 set, any language | | -| Metadata | No limit | | +| **Property** | **Constraints** | +| --------------------- | --------------------------------------------------------------------------------------------- | +| Maximum roles per app | 25 | +| Role ID | Max 100 characters, alpha-dash (`a-z`, `0-9`, `-`, `_`), no spaces. Automatically lowercased. | +| Role name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | +| Role description | Max 255 characters, UTF8mb4 | +| Role metadata | No limit | ## Messages -| **Property** | **Constraint** | **Notes** | -| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| Maximum file upload size | 100 MB per message | Includes the file and the entire POST body (chat text, custom data, etc.) | -| Maximum message size (including metadata) | 65,536 characters (~65 KB) | Applies to the message JSON payload, not file uploads | -| Message data (applicable for API calls) | Data is an arbitrary JSON structure. It accepts UTF8mb4. It can have any user-defined properties, but the following properties have meaning for CometChat: text, attachments, custom_data, metadata. The attachment size is separate. Here, the attachment is only the attachment properties (such as URL, size, etc.). The size must not exceed 10 KB for the data object. | | -| Message tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | -| User and Group conversation tags | Up to 25 tags with 100 characters per tag. The tags can be in any language. The character set must be UTF8mb4. | | -| Does CometChat keep soft-deleted messages in its database? | Yes | | -| Does CometChat keep permanently deleted messages (by API) in its database? | No | | +| **Property** | **Constraints** | +| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Maximum file upload size | 100 MB per message (includes file + entire POST body) | +| Maximum message size (including metadata) | 65,536 characters (~65 KB). Applies to the message JSON payload, not file uploads. | +| Message `data` object | Arbitrary JSON, UTF8mb4. Reserved keys: `text`, `attachments`, `custom_data`, `metadata`. Max 10 KB for the `data` object. Attachment file size is counted separately. | +| Message tags | Max 25 tags, each up to 100 characters, UTF8mb4 | +| Conversation tags | Max 25 tags, each up to 100 characters, UTF8mb4 | +| Soft-deleted messages retained | Yes | +| Permanently deleted messages (via API) retained | No | ## Calling -| **Property** | **Constraint** | **Notes** | -| ---------------------------------- | -------------------------- | --------------------------------------------------------------------------------- | -| Maximum users in a call | 50 | | -| Default frame rate for video calls | 30 FPS | | -| Resolution for video calls | Maximum 720p, Minimum 180p | This depends on the layout selected and the bandwidth available at the user's end | -| Media encryption used | SRTP | | -| Audio codec used | OPUS | | -| Video codec used | H.264 | | +| **Property** | **Constraints** | +| ------------------------ | -------------------------------------------------------- | +| Maximum users per call | 50 | +| Default video frame rate | 30 FPS | +| Video resolution | Min 180p, max 720p (varies by layout and user bandwidth) | +| Media encryption | SRTP | +| Audio codec | OPUS | +| Video codec | H.264 | diff --git a/calls.json b/calls.json index 111e4dad2..be1050f4b 100644 --- a/calls.json +++ b/calls.json @@ -132,7 +132,7 @@ "application/json": { "examples": { "Result": { - "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368168,\n \"initiator\": \"superhero8\",\n \"mode\": \"call\",\n \"receiver\": \"sivamathewstestgroup\",\n \"receiverType\": \"group\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"startedAt\": 1692368180,\n \"endedAt\": 1692368199,\n \"participants\": [\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.31666666666666665,\n \"deviceId\": \"b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368199\n },\n {\n \"uid\": \"superhero8\",\n \"totalAudioMinutes\": 0.2833333333333333,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.2833333333333333,\n \"deviceId\": \"f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat-staging.com/K-s6dB3N\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368197\n },\n {\n \"uid\": \"superhero4\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"superhero7\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"superhero6\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n }\n ]\n },\n {\n \"sessionId\": \"v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368113,\n \"initiator\": \"superhero8\",\n \"mode\": \"call\",\n \"receiver\": \"superhero2\",\n \"receiverType\": \"user\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"startedAt\": 1692368127,\n \"endedAt\": 1692368146,\n \"participants\": [\n {\n \"uid\": \"superhero8\",\n \"totalAudioMinutes\": 0.26666666666666666,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.26666666666666666,\n \"deviceId\": \"70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul\",\n \"isJoined\": true,\n \"joinedAt\": 1692368128,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368144\n },\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0.23333333333333334,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.23333333333333334,\n \"deviceId\": \"c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4\",\n \"isJoined\": true,\n \"joinedAt\": 1692368132,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368146\n }\n ]\n }\n ],\n \"meta\": {\n \"pagination\": {\n \"total\": 2,\n \"count\": 2,\n \"total_pages\": 1,\n \"current_page\": 1\n }\n }\n}" + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368168,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"sivamathewstestgroup\",\n \"receiverType\": \"group\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"startedAt\": 1692368180,\n \"endedAt\": 1692368199,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.31666666666666665,\n \"deviceId\": \"b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368199\n },\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.2833333333333333,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.2833333333333333,\n \"deviceId\": \"f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat-staging.com/K-s6dB3N\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368197\n },\n {\n \"uid\": \"cometchat-uid-4\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-7\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-6\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n }\n ]\n },\n {\n \"sessionId\": \"v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368113,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"startedAt\": 1692368127,\n \"endedAt\": 1692368146,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.26666666666666666,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.26666666666666666,\n \"deviceId\": \"70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul\",\n \"isJoined\": true,\n \"joinedAt\": 1692368128,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368144\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.23333333333333334,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.23333333333333334,\n \"deviceId\": \"c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4\",\n \"isJoined\": true,\n \"joinedAt\": 1692368132,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368146\n }\n ]\n }\n ],\n \"meta\": {\n \"pagination\": {\n \"total\": 2,\n \"count\": 2,\n \"total_pages\": 1,\n \"current_page\": 1\n }\n }\n}" } }, "schema": { @@ -173,7 +173,7 @@ }, "initiator": { "type": "string", - "example": "superhero8" + "example": "cometchat-uid-8" }, "mode": { "type": "string", @@ -226,7 +226,7 @@ "properties": { "uid": { "type": "string", - "example": "superhero2" + "example": "cometchat-uid-2" }, "totalAudioMinutes": { "type": "number", @@ -362,7 +362,7 @@ "application/json": { "examples": { "Get Call": { - "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:00\",\n \"hasRecording\": false,\n \"initiatedAt\": 1715845999,\n \"initiator\": \"superhero1\",\n \"mode\": \"call\",\n \"receiver\": \"superhero2\",\n \"receiverType\": \"user\",\n \"status\": \"initiated\",\n \"totalDurationInMinutes\": 0,\n \"totalParticipants\": 0,\n \"type\": \"audio\",\n \"participants\": [\n {\n \"uid\": \"superhero1\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"totalDurationInMinutes\": 0,\n \"name\": \"Iron Man\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n },\n {\n \"uid\": \"superhero2\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDurationInMinutes\": 0,\n \"name\": \"Captain America\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n ],\n \"data\": {\n \"entities\": {\n \"initiator\": {\n \"entity\": {\n \"uid\": \"superhero1\",\n \"name\": \"Iron Man\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n }\n },\n \"receiver\": {\n \"entity\": {\n \"uid\": \"superhero2\",\n \"name\": \"Captain America\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n }\n }\n }\n }\n ]\n}" + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:00\",\n \"hasRecording\": false,\n \"initiatedAt\": 1715845999,\n \"initiator\": \"cometchat-uid-1\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"initiated\",\n \"totalDurationInMinutes\": 0,\n \"totalParticipants\": 0,\n \"type\": \"audio\",\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-1\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"totalDurationInMinutes\": 0,\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDurationInMinutes\": 0,\n \"name\": \"George Alan\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n ],\n \"data\": {\n \"entities\": {\n \"initiator\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-1\",\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n }\n },\n \"receiver\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-2\",\n \"name\": \"George Alan\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n }\n }\n }\n }\n ]\n}" } }, "schema": { @@ -403,7 +403,7 @@ }, "initiator": { "type": "string", - "example": "superhero1" + "example": "cometchat-uid-1" }, "mode": { "type": "string", @@ -411,7 +411,7 @@ }, "receiver": { "type": "string", - "example": "superhero2" + "example": "cometchat-uid-2" }, "receiverType": { "type": "string", @@ -442,7 +442,7 @@ "properties": { "uid": { "type": "string", - "example": "superhero1" + "example": "cometchat-uid-1" }, "totalAudioMinutes": { "type": "integer", @@ -466,7 +466,7 @@ }, "name": { "type": "string", - "example": "Iron Man" + "example": "Andrew Joseph" }, "avatar": { "type": "string", @@ -489,11 +489,11 @@ "properties": { "uid": { "type": "string", - "example": "superhero1" + "example": "cometchat-uid-1" }, "name": { "type": "string", - "example": "Iron Man" + "example": "Andrew Joseph" }, "avatar": { "type": "string", @@ -511,11 +511,11 @@ "properties": { "uid": { "type": "string", - "example": "superhero2" + "example": "cometchat-uid-2" }, "name": { "type": "string", - "example": "Captain America" + "example": "George Alan" }, "avatar": { "type": "string", diff --git a/chat-apis.json b/chat-apis.json index d14467749..3b7143570 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -39,7 +39,7 @@ "type": "string" }, "scope": { - "description": "Scope for the API key. Possible values: userauth, admin.", + "description": "Scope for the API key.", "type": "string", "default": "authOnly", "enum": ["authOnly", "fullAccess"] @@ -238,9 +238,9 @@ "type": "string" }, "scope": { - "description": "Scope for the API key. Possible values: userauth, admin.", + "description": "Scope for the API key.", "type": "string", - "enum": ["userauth", "admin"] + "enum": ["authOnly", "fullAccess"] } }, "type": "object" @@ -423,10 +423,10 @@ }, "example": { "data": { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "rawMetadata": "{'gender':'Male'}" }, @@ -434,7 +434,7 @@ "role": "manager", "createdAt": 1638354015, "tags": ["Engineer", "manager"], - "authToken": "superhero6_16383540156641d37a023c75d26f4c22a21ff126" + "authToken": "cometchat-uid-6_16383540156641d37a023c75d26f4c22a21ff126" } } } @@ -585,10 +585,10 @@ "example": { "data": [ { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -597,21 +597,21 @@ "role": "manager", "createdAt": 1638354015, "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" + "conversationId": "cometchat-uid-4_user_cometchat-uid-6" }, { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", "createdAt": 1629869270, "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" + "conversationId": "cometchat-uid-2_user_cometchat-uid-4" }, { - "uid": "superhero3", - "name": "Captain America", + "uid": "cometchat-uid-3", + "name": "George Alan", "link": "https://data-us.cometchat.io/assets", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "metadata": { @@ -624,7 +624,7 @@ "blockedAt": 1638346853, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" } ], "meta": { @@ -696,7 +696,7 @@ }, "example": { "data": { - "nonDeactivatedUids": ["superhero2", "superhero3"] + "nonDeactivatedUids": ["cometchat-uid-2", "cometchat-uid-3"] } } } @@ -753,7 +753,7 @@ }, "example": { "data": { - "deactivatedUids": ["superhero2", "superhero3"] + "deactivatedUids": ["cometchat-uid-2", "cometchat-uid-3"] } } } @@ -785,7 +785,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -808,10 +808,10 @@ }, "example": { "data": { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "status": "offline", "role": "manager", "createdAt": 1638354015 @@ -844,7 +844,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -935,10 +935,10 @@ }, "example": { "data": { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -947,7 +947,7 @@ "role": "manager", "createdAt": 1638354015, "updatedAt": 1638354799, - "tags": ["supergroup"] + "tags": ["cometchat-guid-1"] } } } @@ -977,7 +977,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -1014,7 +1014,7 @@ "example": { "data": { "success": true, - "message": "User with superhero6 has been deleted successfully." + "message": "User with cometchat-uid-6 has been deleted successfully." } } } @@ -1148,7 +1148,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "public", "scope": "admin", "membersCount": 1, @@ -1156,7 +1156,7 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1638440784, - "owner": "superhero4", + "owner": "cometchat-uid-4", "tags": ["friends", "project"] } } @@ -1337,7 +1337,7 @@ "guid": "project-group-2", "name": "Project Group 2", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "public", "scope": "admin", "membersCount": 1, @@ -1345,13 +1345,13 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1638440784, - "owner": "superhero4", + "owner": "cometchat-uid-4", "tags": ["friends", "project"] }, "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "public", "scope": "admin", "membersCount": 1, @@ -1359,7 +1359,7 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1638440784, - "owner": "superhero4", + "owner": "cometchat-uid-4", "tags": ["friends", "project"] }, "meta": { @@ -1420,7 +1420,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "public", "scope": "admin", "membersCount": 1, @@ -1428,7 +1428,7 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1638440784, - "owner": "superhero4", + "owner": "cometchat-uid-4", "tags": ["friends", "project"] } } @@ -1529,7 +1529,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "public", "scope": "admin", "membersCount": 1, @@ -1537,7 +1537,7 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1638440784, - "owner": "superhero4", + "owner": "cometchat-uid-4", "tags": ["friends", "project"] } } @@ -1769,14 +1769,14 @@ "data": { "text": "Thanks For filling the Form!" }, - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "receiverType": "user" }, "headers": { "appId": "10893f2ae68f59", "Content-Type": "application/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -1785,7 +1785,7 @@ }, "category": "interactive", "type": "form", - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "tags": ["tag1"] } }, @@ -1824,7 +1824,7 @@ "appId": "10893f2ae68f59", "Content-Type": "application\\/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -1861,7 +1861,7 @@ "appId": "10893f2ae68f59", "Content-Type": "application/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -1871,7 +1871,7 @@ }, "category": "interactive", "type": "card", - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "tags": ["tag1"] } }, @@ -1879,12 +1879,12 @@ "summary": "Interactive scheduler example", "value": { "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "interactive", "type": "scheduler", "data": { "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "muid": "16Jan3:41423PM", "interactionGoal": { "type": "anyAction", @@ -1992,10 +1992,10 @@ "example": { "data": { "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -2006,8 +2006,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", "role": "default", @@ -2017,13 +2017,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "role": "default", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -2329,10 +2329,10 @@ "data": [ { "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -2340,8 +2340,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", @@ -2351,13 +2351,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -2435,10 +2435,10 @@ "example": { "data": { "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -2449,8 +2449,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", "role": "default", @@ -2460,13 +2460,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "role": "default", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -2558,10 +2558,10 @@ "example": { "data": { "id": "402", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "action", "type": "message", "data": { @@ -2569,7 +2569,7 @@ "entities": { "by": { "entity": { - "uid": "superhero1", + "uid": "cometchat-uid-1", "name": "Updated Name", "status": "offline", "role": "default", @@ -2580,8 +2580,8 @@ }, "for": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", @@ -2592,10 +2592,10 @@ "on": { "entity": { "id": "69", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -2603,8 +2603,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", "status": "offline", @@ -2614,13 +2614,13 @@ }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1639448370, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -2706,10 +2706,10 @@ "example": { "data": { "id": "402", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "action", "type": "message", "data": { @@ -2717,7 +2717,7 @@ "entities": { "by": { "entity": { - "uid": "superhero1", + "uid": "cometchat-uid-1", "name": "Updated Name", "status": "offline", "role": "default", @@ -2727,8 +2727,8 @@ }, "for": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", @@ -2739,10 +2739,10 @@ "on": { "entity": { "id": "69", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -2750,8 +2750,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", "status": "offline", @@ -2761,13 +2761,13 @@ }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1639448370, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -2859,11 +2859,11 @@ "id": "1", "messageId": "2", "reaction": ":reaction", - "uid": "superhero1", + "uid": "cometchat-uid-1", "reactedAt": 1700210335, "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "status": "offline", "role": "default", "createdAt": 1698934972 @@ -2873,11 +2873,11 @@ "id": "2", "messageId": "2", "reaction": "😅", - "uid": "superhero1", + "uid": "cometchat-uid-1", "reactedAt": 1700210456, "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "status": "offline", "role": "default", "createdAt": 1698934972 @@ -2887,15 +2887,15 @@ "id": "5", "messageId": "2", "reaction": "😒", - "uid": "superhero2", + "uid": "cometchat-uid-2", "reactedAt": 1700230866, "reactedBy": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "status": "offline", "role": "default", "createdAt": 1698934987, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } } ], @@ -2997,11 +2997,11 @@ "id": "1", "messageId": "1", "reaction": "😅", - "uid": "superhero1", + "uid": "cometchat-uid-1", "reactedAt": 1702638595, "reactedBy": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", "status": "available", "role": "default", @@ -3092,10 +3092,10 @@ "example": { "data": { "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -3103,8 +3103,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "role": "default", "status": "offline" }, @@ -3112,11 +3112,11 @@ }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "status": "offline", - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -3217,10 +3217,10 @@ "example": { "data": { "id": "2", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "text", "data": { @@ -3228,8 +3228,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "role": "default", "status": "offline" }, @@ -3237,11 +3237,11 @@ }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "status": "offline", - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -3419,7 +3419,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -3429,8 +3429,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -3440,28 +3440,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -3480,7 +3480,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -3488,9 +3488,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ], @@ -3559,7 +3559,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -3569,8 +3569,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -3580,28 +3580,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -3620,7 +3620,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -3628,9 +3628,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ] @@ -3740,7 +3740,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -3750,8 +3750,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -3761,28 +3761,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -3798,7 +3798,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -3806,9 +3806,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ] @@ -3884,7 +3884,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -3894,8 +3894,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -3905,28 +3905,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -3945,7 +3945,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -3953,9 +3953,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ] @@ -4024,7 +4024,7 @@ "example": { "data": { "success": true, - "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." + "message": "The conversation cometchat-uid-1_user_cometchat-uid-2 has been deleted successfully for UID cometchat-uid-1." } } } @@ -4275,7 +4275,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -4285,8 +4285,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -4296,28 +4296,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -4333,7 +4333,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -4341,9 +4341,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ] @@ -4419,7 +4419,7 @@ "lastMessage": { "id": "50", "conversationId": "group_project-group", - "sender": "superhero4", + "sender": "cometchat-uid-4", "receiverType": "group", "receiver": "project-group", "category": "action", @@ -4429,8 +4429,8 @@ "entities": { "by": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -4440,28 +4440,28 @@ }, "on": { "entity": { - "uid": "superhero3", + "uid": "cometchat-uid-3", "link": "https://data-us.cometchat.io/assets", - "name": "Captain America", + "name": "George Alan", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, "entityType": "user" }, "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group1", "type": "private", - "owner": "superhero4", + "owner": "cometchat-uid-4", "createdAt": 1630071341, "updatedAt": 1630305525, - "updatedBy": "superhero4", + "updatedBy": "cometchat-uid-4", "description": "project related discussions between members", "membersCount": 4, "conversationId": "group_project-group" @@ -4480,7 +4480,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "type": "private", "scope": "participant", "membersCount": 4, @@ -4488,9 +4488,9 @@ "conversationId": "group_project-group", "hasJoined": true, "createdAt": 1630071341, - "owner": "superhero4", + "owner": "cometchat-uid-4", "updatedAt": 1630308875, - "updatedBy": "superhero4" + "updatedBy": "cometchat-uid-4" } } ] @@ -4540,7 +4540,7 @@ "example": { "data": { "success": true, - "message": "The conversation superhero1_user_superhero2 has been deleted successfully for UID superhero1." + "message": "The conversation cometchat-uid-1_user_cometchat-uid-2 has been deleted successfully for UID cometchat-uid-1." } } } @@ -4756,7 +4756,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -4786,8 +4786,8 @@ }, "example": { "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "uid": "cometchat-uid-1", + "authToken": "cometchat-uid-1_1630306819c3027ce530b2367f3c97b4106f0cb8", "createdAt": 1630306819 } } @@ -4818,7 +4818,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -4861,8 +4861,8 @@ "example": { "data": [ { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "uid": "cometchat-uid-1", + "authToken": "cometchat-uid-1_1630306819c3027ce530b2367f3c97b4106f0cb8", "createdAt": 1630306819 } ], @@ -4903,7 +4903,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -4924,7 +4924,7 @@ "example": { "data": { "success": true, - "message": "Cleared Auth Tokens successfully for uid superhero1." + "message": "Cleared Auth Tokens successfully for uid cometchat-uid-1." } } } @@ -4956,7 +4956,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -4979,8 +4979,8 @@ }, "example": { "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "uid": "cometchat-uid-1", + "authToken": "cometchat-uid-1_1630306819c3027ce530b2367f3c97b4106f0cb8", "createdAt": 1630306819 } } @@ -5011,7 +5011,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -5026,7 +5026,7 @@ "examples": { "string": { "summary": "Auth Token", - "value": "superhero1_1625206799abcdef" + "value": "cometchat-uid-1_1625206799abcdef" } } } @@ -5070,8 +5070,8 @@ }, "example": { "data": { - "uid": "superhero1", - "authToken": "superhero1_1630306819c3027ce530b2367f3c97b4106f0cb8", + "uid": "cometchat-uid-1", + "authToken": "cometchat-uid-1_1630306819c3027ce530b2367f3c97b4106f0cb8", "createdAt": 1630306819 } } @@ -5102,7 +5102,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -5117,7 +5117,7 @@ "examples": { "string": { "summary": "Auth Token", - "value": "superhero1_1625206799abcdef" + "value": "cometchat-uid-1_1625206799abcdef" } } } @@ -5138,7 +5138,7 @@ "example": { "data": { "success": true, - "message": "User with superhero6 has been deleted successfully." + "message": "User with cometchat-uid-6 has been deleted successfully." } } } @@ -5225,12 +5225,12 @@ "example": { "data": { "usersToBan": { - "superhero6": { + "cometchat-uid-6": { "success": true } }, "admins": { - "superhero1": { + "cometchat-uid-1": { "success": true, "data": { "id": "32", @@ -5255,8 +5255,8 @@ }, "on": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", "status": "offline", @@ -5267,11 +5267,11 @@ "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", "tags": ["friends", "project"], "type": "public", - "owner": "superhero2", + "owner": "cometchat-uid-2", "createdAt": 1625460947, "description": "project related discussions between members", "membersCount": 2, @@ -5287,7 +5287,7 @@ } }, "moderators": { - "superhero3": { + "cometchat-uid-3": { "success": true, "data": { "id": "33", @@ -5312,8 +5312,8 @@ }, "on": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", @@ -5325,11 +5325,11 @@ "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", "tags": ["friends", "project"], "type": "public", - "owner": "superhero2", + "owner": "cometchat-uid-2", "createdAt": 1625460947, "updatedAt": 1625460972, "description": "project related discussions between members", @@ -5346,7 +5346,7 @@ } }, "participants": { - "superhero4": { + "cometchat-uid-4": { "success": true, "data": { "id": "34", @@ -5371,8 +5371,8 @@ }, "on": { "entity": { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", @@ -5383,11 +5383,11 @@ "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", "tags": ["friends", "project"], "type": "public", - "owner": "superhero2", + "owner": "cometchat-uid-2", "createdAt": 1625460947, "updatedAt": 1625460973, "description": "project related discussions between members", @@ -5402,7 +5402,7 @@ "updatedAt": 1625460973 } }, - "superhero5": { + "cometchat-uid-5": { "success": true, "data": { "id": "35", @@ -5427,8 +5427,8 @@ }, "on": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", @@ -5439,11 +5439,11 @@ "for": { "entity": { "guid": "project-group", - "icon": "http://placehold.it/120x120&text=image1", + "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", "tags": ["friends", "project"], "type": "public", - "owner": "superhero2", + "owner": "cometchat-uid-2", "createdAt": 1625460947, "updatedAt": 1625460973, "description": "project related discussions between members", @@ -5535,8 +5535,8 @@ "example": { "data": [ { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", @@ -5544,11 +5544,11 @@ "joinedAt": 1638360106, "createdAt": 1629869270, "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" + "conversationId": "cometchat-uid-2_user_cometchat-uid-4" }, { - "uid": "superhero3", - "name": "Captain America", + "uid": "cometchat-uid-3", + "name": "George Alan", "link": "https://data-us.cometchat.io/assets", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "metadata": { @@ -5560,22 +5560,22 @@ "joinedAt": 1638360106, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "role": "default", "scope": "moderator", "joinedAt": 1638360106, "createdAt": 1629869270, - "conversationId": "superhero4_user_superhero5" + "conversationId": "cometchat-uid-4_user_cometchat-uid-5" }, { - "uid": "superhero4", - "name": "Wolverine", + "uid": "cometchat-uid-4", + "name": "Susan Marie", "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", "status": "offline", "role": "default", @@ -5671,8 +5671,8 @@ }, "example": { "data": { - "guid": "supergroup", - "uid": "superhero2", + "guid": "cometchat-guid-1", + "uid": "cometchat-uid-2", "scope": "participant", "joinedAt": 1631690303 } @@ -5719,7 +5719,7 @@ "example": { "data": { "success": true, - "message": "The member with superhero3 has been kicked from the Group with supergroup." + "message": "The member with cometchat-uid-3 has been kicked from the Group with cometchat-guid-1." } } } @@ -5766,7 +5766,7 @@ "example": { "data": { "success": true, - "message": "The user with uid superhero3 has been banned from the Group with supergroup." + "message": "The user with uid cometchat-uid-3 has been banned from the Group with cometchat-guid-1." } } } @@ -5811,7 +5811,7 @@ "example": { "data": { "success": true, - "message": "The user with uid superhero3 has been banned from the Group with supergroup." + "message": "The user with uid cometchat-uid-3 has been banned from the Group with cometchat-guid-1." } } } @@ -5884,10 +5884,10 @@ "example": { "data": [ { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -5896,21 +5896,21 @@ "role": "manager", "createdAt": 1638354015, "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" + "conversationId": "cometchat-uid-4_user_cometchat-uid-6" }, { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", "createdAt": 1629869270, "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" + "conversationId": "cometchat-uid-2_user_cometchat-uid-4" }, { - "uid": "superhero3", - "name": "Captain America", + "uid": "cometchat-uid-3", + "name": "George Alan", "link": "https://data-us.cometchat.io/assets", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "metadata": { @@ -5923,7 +5923,7 @@ "blockedAt": 1638346853, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" } ], "meta": { @@ -6000,11 +6000,11 @@ "example": { "data": { "accepted": { - "superhero2": { + "cometchat-uid-2": { "success": true, "message": "Created relationship with status accepted." }, - "superhero3": { + "cometchat-uid-3": { "success": true, "message": "Created relationship with status accepted." } @@ -6077,10 +6077,10 @@ "example": { "data": [ { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -6089,21 +6089,21 @@ "role": "manager", "createdAt": 1638354015, "updatedAt": 1638354799, - "conversationId": "superhero4_user_superhero6" + "conversationId": "cometchat-uid-4_user_cometchat-uid-6" }, { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", "createdAt": 1629869270, "updatedAt": 1630308676, - "conversationId": "superhero2_user_superhero4" + "conversationId": "cometchat-uid-2_user_cometchat-uid-4" }, { - "uid": "superhero3", - "name": "Captain America", + "uid": "cometchat-uid-3", + "name": "George Alan", "link": "https://data-us.cometchat.io/assets", "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", "metadata": { @@ -6116,7 +6116,7 @@ "blockedAt": 1638346853, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" } ], "meta": { @@ -6218,7 +6218,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -6262,9 +6262,9 @@ }, "example": { "data": { - "superhero4": { + "cometchat-uid-4": { "success": true, - "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." + "message": "The user with UID cometchat-uid-1 has blocked user with UID cometchat-uid-3 successfully." } } } @@ -6294,7 +6294,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } } @@ -6338,9 +6338,9 @@ }, "example": { "data": { - "superhero4": { + "cometchat-uid-4": { "success": true, - "message": "The user with UID superhero1 has blocked user with UID superhero3 successfully." + "message": "The user with UID cometchat-uid-1 has blocked user with UID cometchat-uid-3 successfully." } } } @@ -6370,7 +6370,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -6422,10 +6422,10 @@ "example": { "data": [ { - "uid": "superhero6", + "uid": "cometchat-uid-6", "name": "Barry Allen", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "rawMetadata": "{'gender':'Male'}" }, @@ -6436,13 +6436,13 @@ "blockedAt": 1638346853, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero3_user_superhero4" + "conversationId": "cometchat-uid-3_user_cometchat-uid-4" }, { - "uid": "superhero2", - "name": "Captain America", - "link": "http://placehold.it", - "avatar": "http://placehold.it/120x120&text=image1", + "uid": "cometchat-uid-2", + "name": "George Alan", + "link": "https://cometchat.com", + "avatar": "https://cometchat.com/120x120&text=image1", "metadata": { "rawMetadata": "{'gender':'Male'}" }, @@ -6453,7 +6453,7 @@ "blockedAt": 1638346853, "createdAt": 1629869270, "updatedAt": 1638351060, - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" } ], "meta": { @@ -7225,10 +7225,10 @@ "example": { "data": { "id": "2", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -7239,8 +7239,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", "role": "default", @@ -7250,13 +7250,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "role": "default", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -7355,10 +7355,10 @@ "data": [ { "id": "2", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -7366,8 +7366,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", @@ -7377,13 +7377,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -7684,10 +7684,10 @@ "data": [ { "id": "1776", - "conversationId": "superhero2_user_superhero3", - "sender": "superhero2", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": "cometchat-uid-2", "receiverType": "user", - "receiver": "superhero3", + "receiver": "cometchat-uid-3", "category": "call", "type": "audio", "data": { @@ -7695,8 +7695,8 @@ "entities": { "by": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline" @@ -7709,8 +7709,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline" @@ -7719,12 +7719,12 @@ }, "receiver": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "user" } @@ -7736,10 +7736,10 @@ } }, "type": "audio", - "sender": "superhero2", + "sender": "cometchat-uid-2", "status": "initiated", "joinedAt": 1646995097, - "receiver": "superhero3", + "receiver": "cometchat-uid-3", "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", "wsChannel": { "secret": "083c2a7f660150e42c2bf07a17231e90980b290d", @@ -7748,18 +7748,18 @@ }, "initiatedAt": 1646995097, "receiverType": "user", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "call" }, "for": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "user" } @@ -7770,10 +7770,10 @@ }, { "id": "1777", - "conversationId": "superhero2_user_superhero3", - "sender": "superhero3", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "call", "type": "video", "data": { @@ -7781,8 +7781,8 @@ "entities": { "by": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline" @@ -7795,8 +7795,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline" @@ -7805,12 +7805,12 @@ }, "receiver": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "user" } @@ -7822,10 +7822,10 @@ } }, "type": "video", - "sender": "superhero2", + "sender": "cometchat-uid-2", "status": "ongoing", "joinedAt": 1646995512, - "receiver": "superhero3", + "receiver": "cometchat-uid-3", "sessionid": "16469950973f7f6a1ea6d5166db11c929cdbde6a61902e10ba", "startedAt": 1646995512, "wsChannel": { @@ -7835,18 +7835,18 @@ }, "initiatedAt": 1646995097, "receiverType": "user", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "call" }, "for": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "role": "default", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", - "conversationId": "superhero2_user_superhero3" + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, "entityType": "user" } @@ -8144,10 +8144,10 @@ "data": [ { "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -8155,8 +8155,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", @@ -8166,13 +8166,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "role": "default", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -8378,14 +8378,14 @@ "data": { "text": "Thanks For filling the Form!" }, - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "receiverType": "user" }, "headers": { "appId": "10893f2ae68f59", "Content-Type": "application/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -8394,7 +8394,7 @@ }, "category": "interactive", "type": "form", - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "tags": ["tag1"] } }, @@ -8433,7 +8433,7 @@ "appId": "10893f2ae68f59", "Content-Type": "application\\/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -8470,7 +8470,7 @@ "appId": "10893f2ae68f59", "Content-Type": "application/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -8480,7 +8480,7 @@ }, "category": "interactive", "type": "card", - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "tags": ["tag1"] } }, @@ -8488,12 +8488,12 @@ "summary": "Interactive scheduler example", "value": { "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "interactive", "type": "scheduler", "data": { "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "muid": "16Jan3:41423PM", "interactionGoal": { "type": "anyAction", @@ -8601,10 +8601,10 @@ "example": { "data": { "id": "1", - "conversationId": "superhero3_user_superhero5", - "sender": "superhero3", + "conversationId": "cometchat-uid-3_user_cometchat-uid-5", + "sender": "cometchat-uid-3", "receiverType": "user", - "receiver": "superhero5", + "receiver": "cometchat-uid-5", "category": "message", "type": "text", "data": { @@ -8615,8 +8615,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero3", - "name": "Spiderman", + "uid": "cometchat-uid-3", + "name": "Nancy Grace", "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", "status": "offline", "role": "default", @@ -8626,13 +8626,13 @@ }, "receiver": { "entity": { - "uid": "superhero5", - "name": "Cyclops", + "uid": "cometchat-uid-5", + "name": "John Paul", "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", "status": "offline", "role": "default", "createdAt": 1638361550, - "conversationId": "superhero3_user_superhero5" + "conversationId": "cometchat-uid-3_user_cometchat-uid-5" }, "entityType": "user" } @@ -10026,13 +10026,13 @@ "data": { "pushTokens": [ { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "authToken": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d4efac8de", "pushTokenType": "chat", "createdAt": "2024-03-11T07:27:59.412Z", "platform": "fcm_android", "providerId": "fcm-provider-2", "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", + "uid": "cometchat-uid-3", "updatedAt": "2024-03-13T11:24:47.776Z" } ] @@ -10093,13 +10093,13 @@ "data": { "pushTokens": [ { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "authToken": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d4efac8de", "pushTokenType": "chat", "createdAt": "2024-03-11T07:27:59.412Z", "platform": "fcm_android", "providerId": "fcm-provider-2", "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", + "uid": "cometchat-uid-3", "updatedAt": "2024-03-13T11:24:47.776Z" } ] @@ -10157,13 +10157,13 @@ "data": { "pushTokens": [ { - "authToken": "superhero3_1710141033938cf7e3c67cc44465440d4efac8de", + "authToken": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d4efac8de", "pushTokenType": "chat", "createdAt": "2024-03-11T07:27:59.412Z", "platform": "fcm_android", "providerId": "fcm-provider-2", "pushToken": "{{uid3}}_fcm_android_asia_kolkata_4_new_mgmt", - "uid": "superhero3", + "uid": "cometchat-uid-3", "updatedAt": "2024-03-13T11:24:47.776Z" } ] @@ -12105,7 +12105,7 @@ "properties": { "authToken": { "type": "string", - "example": "superhero3_1710141033938cf7e3c67cc44465440d" + "example": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d" }, "timezone": { "type": "string", @@ -14046,14 +14046,14 @@ "data": { "text": "Thanks For filling the Form!" }, - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "receiverType": "user" }, "headers": { "appId": "10893f2ae68f59", "Content-Type": "application/json", "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" + "onBehalfOf": "cometchat-uid-1" }, "dataKey": "CometChatData" } @@ -14062,7 +14062,7 @@ }, "category": "interactive", "type": "form", - "receiver": "superhero1", + "receiver": "cometchat-uid-1", "tags": ["tag1"] } }, @@ -15373,7 +15373,7 @@ "examples": { "string": { "summary": "Auth Token", - "value": "superhero1_1625206799abcdef" + "value": "cometchat-uid-1_1625206799abcdef" } } }, @@ -15415,7 +15415,7 @@ "examples": { "string": { "summary": "UID", - "value": "superhero1" + "value": "cometchat-uid-1" } } }, @@ -15430,7 +15430,7 @@ "examples": { "string": { "summary": "GUID", - "value": "supergroup" + "value": "cometchat-guid-1" } } }, diff --git a/data-import-apis.json b/data-import-apis.json index 8b08b2837..bc9c072d0 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -1,4255 +1,4026 @@ { - "openapi": "3.0.0", - "info": { - "title": "Data Import APIs", - "description": "Manage messages, users, groups for a particular app using our Chat API.", - "version": "3.0" - }, - "servers": [ - { - "url": "https://{appid}.api-{region}.cometchat.io/v3", - "variables": { - "appid": { - "default": "appId", - "description": "(Required) App ID" - }, - "region": { - "enum": [ - "us", - "eu", - "in" - ], - "default": "us", - "description": "Select Region" - } - } - } - ], - "paths": { - "/data_import/messages": { - "post": { - "tags": [ - "Messages" - ], - "summary": "Import Messages", - "description": "The CometChat message import API allows customers to import their messages’ data into the CometChat systems.", - "operationId": "import-messages", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "messages": { - "description": "Wrapper for the messages.", - "required": [ - "muid" - ], - "properties": { - "": { - "description": "Wraps a single message object. The <muid> will be a primary key/unique Identifier of the message.", - "required": [ - "muid", - "sender", - "receiverType", - "receiver", - "sentAt" - ], - "properties": { - "muid": { - "description": "The value should be the same as value of the placeholder <muid> which wraps the message object.", - "type": "string" - }, - "sender": { - "description": "UID of the sender.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "receiver": { - "description": "If the receiverType == “user” the UID of a user receiving the message. else GUID of the group.", - "type": "string" - }, - "category": { - "description": "Category of the message. The available categories are message and custom.", - "type": "string", - "enum": [ - "message", - "custom" - ] - }, - "type": { - "description": "If category==”message” then the allowed values for the type are: text: for a plain text message. image: for an image message audio: for an audio message video: for a video message file: for any file if category==”custom” the customized type can be used. The developer can send the type as any random string and can use it in the implementation at the UI", - "type": "string", - "enum": [ - "text", - "image", - "file", - "audio", - "video" - ] - }, - "data": { - "description": "Can contain any additional properties except for the key properties.", - "properties": { - "text": { - "description": "The property has a fixed meaning for: 1. category==”message” && type ==”text” ⇒ it stores the text message 2. category==”message” && type !=”text” ⇒ it stores a caption for the attachment", - "type": "string" - }, - "customData": { - "description": "when category==”custom”, this property can have any JSON object.", - "type": "object" - }, - "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", - "type": "array", - "items": { - "required": [ - "name", - "mimeType", - "extension", - "url" - ], - "properties": { - "url": { - "description": "Contains the URL of the attachment. The developer has to make sure that the URL is accessible while calling the data_import API. The API will be downloading the attachment from its current location and upload it to CometChat’s attachment storage.", - "type": "string" - }, - "name": { - "description": "Name of the attachment.", - "type": "string" - }, - "mimeType": { - "description": "Mime Type of attachment.", - "type": "string" - }, - "extension": { - "description": "The extension of the attachment.", - "type": "string" - }, - "size": { - "description": "The size of the attachment(in bytes).", - "type": "string" - } - }, - "type": "object" - } - }, - "metadata": { - "type": "object" - } - }, - "type": "object" - }, - "tags": { - "description": "String array containing developer defined tags.", - "type": "array", - "items": { - "type": "string" - } - }, - "sentAt": { - "description": "10-digit UNIX timestamp for the time at which the message was sent.", - "type": "integer" - }, - "deliveredAt": { - "description": "A 10-digit UNIX timestamp at which the message was delivered to the receiver.", - "type": "integer" - }, - "readAt": { - "description": "A 10-digit UNIX timestamp at which the message was read by the receiver.", - "type": "integer" - }, - "senderUserDetails": { - "description": "If all the users are imported before importing the messages. The JSON object contains the user details of the sender.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the sender.", - "type": "string" - }, - "name": { - "description": "Name of the sender.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user sending the message.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the sender.", - "type": "string" - }, - "role": { - "description": "Role of the sender. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the sender was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the sender was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the sender.", - "type": "object" - }, - "tags": { - "description": "A string array containing sender tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the sender was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - }, - "receiverUserDetails": { - "description": "If all the users are imported before importing the messages or else required if receiverType==”user”. The JSON object contains the user details of the receiver.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the user receiving the message.", - "type": "string" - }, - "name": { - "description": "Name of the receiver.", - "type": "string" - }, - "avatar": { - "description": " URL to the profile picture of the receiver.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the receiver.", - "type": "string" - }, - "role": { - "description": "Role of the receiver. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the receiver was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the receiver was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the receiver.", - "type": "object" - }, - "tags": { - "description": "A string array containing receiver tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the receiver was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - }, - "receiverGroupDetails": { - "description": "The JSON object contains the group details of the receiver.", - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "guid": { - "description": "The primary-key/ unique identifier of the group.", - "type": "string" - }, - "name": { - "description": "Name of the group.", - "type": "string" - }, - "icon": { - "description": "An URL for a group icon.", - "type": "string" - }, - "type": { - "description": "Type of the group. Can be public, password or private.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "A password required to join the the group with type password", - "type": "string" - }, - "owner": { - "description": "Owner of the group.", - "type": "string" - }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the group was created.", - "type": "integer" - }, - "metadata": { - "description": "Additional data for the group.", - "type": "object" - }, - "tags": { - "description": "A string array containing grouptags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - "type": "object" - }, - "receiverGroupOwnerDetails": { - "description": "The JSON object contains the user details of the owner.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the owner.", - "type": "string" - }, - "name": { - "description": "Name of the owner.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the owner.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the owner.", - "type": "string" - }, - "role": { - "description": "Role of the owner. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the owner was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the owner was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the owner.", - "type": "object" - }, - "tags": { - "description": "A string array containing owner tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the owner was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "3118": { - "muid": "3118", - "sender": "s12", - "receiverType": "user", - "receiver": "r123", - "type": "text", - "category": "message", - "data": { - "text": "Hi there,", - "attachments": [ - { - "name": "hi.png", - "extension": "png", - "size": "350.2", - "mimeType": "image/png", - "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" - } - ], - "metadata": { - "key": "value" - }, - "custodata": { - "key": "value" - } - }, - "sentAt": "1674104348", - "deliveredAt": "1674224684", - "readAt": "1674224684", - "senderUserDetails": { - "uid": "s12", - "name": "user1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "createdAt": "1674228536", - "metadata": { - "key": "value" - } - }, - "receiverUserDetails": { - "uid": "r123", - "name": "superhero", - "type": "public", - "description": "Hello group", - "icon": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "owner": "superhero1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "createdAt": "1674228536", - "metadata": { - "key": "value" - } - }, - "tags": [ - "tag1" - ] - } - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Import Message(s)", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "type": "object", - "allOf": [ - { - "properties": { - "sentAt": {}, - "deliveredAt": {}, - "readAt": {} - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/messageSchema" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "3117": { - "success": true, - "data": { - "id": "1029", - "muid": "3117", - "conversationId": "r123_user_s12", - "sender": "s12", - "receiverType": "user", - "receiver": "r123", - "category": "message", - "type": "text", - "data": { - "text": "Hi there,", - "attachments": [ - { - "name": "hi.png", - "extension": "png", - "size": "350.2", - "mimeType": "image/png", - "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" - } - ], - "metad2ata": { - "key": "value" - }, - "custodata": { - "key": "value" - }, - "entities": { - "sender": { - "entity": { - "uid": "s12", - "name": "user1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "metadata": { - "key": "value" - }, - "status": "offline", - "role": "default", - "createdAt": 1674228536, - "updatedAt": 1674232131 - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "r123", - "name": "superhero", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "metadata": { - "key": "value" - }, - "status": "offline", - "role": "default", - "createdAt": 1674228536, - "updatedAt": 1674232131, - "conversationId": "r123_user_s12" - }, - "entityType": "user" - } - } - }, - "sentAt": 1674104348, - "deliveredAt": 1674224684, - "readAt": 1674224684, - "updatedAt": 1674104348, - "tags": [ - "tag1" - ] - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/data_import/users": { - "post": { - "tags": [ - "Users" - ], - "summary": "Import Users", - "description": "The CometChat user import API allows customers to import their users’ data into the CometChat systems.", - "operationId": "import-users", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "users": { - "description": "Wrapper for the users.", - "required": [ - "uid" - ], - "properties": { - "": { - "description": "Wraps a user object. The <uid> will be a primary key/unique Identifier of the user.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The value should be the same as value of the placeholder <uid> which wraps the user object.", - "type": "string" - }, - "name": { - "description": "name of the user.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the user.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the user.", - "type": "string" - }, - "role": { - "description": "Role of the user. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the user was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the user was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "JSON object containing Additional user information.", - "type": "object" - }, - "tags": { - "description": "A string array containing usertags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the user was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "uid1": { - "uid": "uid1", - "name": "uid1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "createdAt": "1673421419", - "metadata": { - "key": "value" - }, - "lastActiveAt": "1673421425" - } - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Import User(s)", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "type": "object", - "allOf": [ - { - "properties": { - "lastActiveAt": {}, - "deactivatedAt": {} - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/userSchema" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "uid1": { - "success": true, - "data": { - "uid": "uid1", - "name": "uid1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", - "metadata": { - "key": "value" - }, - "status": "offline", - "role": "default", - "lastActiveAt": 1673421425, - "createdAt": 1673421419 - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/data_import/groups": { - "post": { - "tags": [ - "Groups" - ], - "summary": "Import Groups", - "description": "The CometChat group import API allows customers to import their groups’ data into the CometChat systems.", - "operationId": "import-groups", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "groups": { - "description": "Wrapper for the groups.", - "required": [ - "guid" - ], - "properties": { - "": { - "description": "Wraps a group object. The <guid> will be a primary key/unique Identifier of the group.", - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "guid": { - "description": "The value should be the same as value of the placeholder <guid> which wraps the group object.", - "type": "string" - }, - "name": { - "description": "name of the group.", - "type": "string" - }, - "icon": { - "description": "An URL for a group icon.", - "type": "string" - }, - "type": { - "description": "Type of the group. Can be public, password or private.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "A password required to join the the group with type password", - "type": "string" - }, - "owner": { - "description": "Owner of the group.", - "type": "string" - }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the group was created.", - "type": "integer" - }, - "metadata": { - "description": "Additional data for the group.", - "type": "object" - }, - "tags": { - "description": "A string array containing grouptags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "groupOwnerDetails": { - "description": "The JSON object contains the user details of the owner.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the owner.", - "type": "string" - }, - "name": { - "description": "Name of the owner.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the owner.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the owner.", - "type": "string" - }, - "role": { - "description": "Role of the owner. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the owner was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the owner was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "Additional details about the owner.", - "type": "object" - }, - "tags": { - "description": "A string array containing owner tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the owner was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "guid1": { - "guid": "guid1", - "name": "guid1", - "createdAt": "1673421419", - "type": "public", - "owner": "superhero1", - "groupOwnerDetails": { - "uid": "superhero1", - "name": "superhero1" - } - } - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Import Group(s)", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/groupSchema" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid1": { - "success": true, - "data": { - "guid": "guid1", - "name": "guid1", - "type": "public", - "conversationId": "group_guid1", - "createdAt": 1673421419, - "owner": "superhero1" - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - }, - "/data_import/members": { - "post": { - "tags": [ - "Groups" - ], - "summary": "Import Group Members", - "description": "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems.", - "operationId": "import-members", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "members": { - "description": "Wrapper for the members.", - "required": [ - "memberId" - ], - "properties": { - "_member_": { - "description": "Wraps a single member object. The <guid>_member_<uid> will will be a primary key/unique Identifier of the member.", - "required": [ - "memberId", - "guid", - "uid" - ], - "properties": { - "memberId": { - "description": "The value should be the same as value of the placeholder <guid>_member_<uid> which wraps the member object.", - "type": "string" - }, - "guid": { - "description": "Id of the group.", - "type": "string" - }, - "uid": { - "description": "Id of user.", - "type": "string" - }, - "scope": { - "description": "Scope of the member in group.", - "type": "string" - }, - "isBanned": { - "description": "Specify if user is banned in group.", - "type": "boolean" - }, - "joinedAt": { - "description": " A 10-digit UNIX timestamp at which the member joined the group.", - "type": "integer" - }, - "groupDetails": { - "description": "The JSON object contains the group details of the member.", - "required": [ - "guid", - "name", - "type" - ], - "properties": { - "guid": { - "description": "The primary-key/ unique identifier of the group.", - "type": "string" - }, - "name": { - "description": "Name of the group.", - "type": "string" - }, - "icon": { - "description": "An URL for a group icon.", - "type": "string" - }, - "type": { - "description": "Type of the group. Can be public, password or private.", - "type": "string", - "enum": [ - "public", - "password", - "private" - ] - }, - "password": { - "description": "A password required to join the the group with type password", - "type": "string" - }, - "owner": { - "description": "Owner of the group.", - "type": "string" - }, - "createdAt": { - "description": " A 10-digit UNIX timestamp at which the group was created.", - "type": "integer" - }, - "metadata": { - "description": "Additional data for the group.", - "type": "object" - }, - "tags": { - "description": "A string array containing grouptags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - "type": "object" - }, - "userDetails": { - "description": "The JSON object contains the user details of the member.", - "required": [ - "uid", - "name" - ], - "properties": { - "uid": { - "description": "The primary-key/ unique identifier of the member.", - "type": "string" - }, - "name": { - "description": "Name of the member.", - "type": "string" - }, - "avatar": { - "description": "URL to the profile picture of the member.", - "type": "string" - }, - "link": { - "description": "Profile page URL of the user.", - "type": "string" - }, - "role": { - "description": "Role of the user. Should be created already via the Create role API.", - "type": "string" - }, - "createdAt": { - "description": "A 10-digit timestamp at which the member was created.", - "type": "integer" - }, - "lastActiveAt": { - "description": "A 10-digit UNIX timestamp at which the member was most recently online.", - "type": "integer" - }, - "metadata": { - "description": "JSON object containing Additional member information.", - "type": "object" - }, - "tags": { - "description": "A string array containing member tags.", - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "deactivatedAt": { - "description": "A 10-digit UNIX timestamp at which the member was deactivated/soft-deleted/blocked to use the chat services.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "guid1_member_uid2": { - "memberId": "guid1_member_uid2", - "uid": "uid2", - "guid": "guid1", - "joinedAt": "1673421419", - "scope": "admin", - "groupDetails": { - "guid": "guid1", - "name": "guid1", - "type": "public", - "owner": "uid1", - "createdAt": "1673421419" - }, - "userDetails": { - "uid": "uid2", - "name": "uid2" - } - } - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Import Group Member(s)", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/groupMemberSchema" - } - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "guid1_member_uid2": { - "success": true, - "data": { - "guid": "guid1", - "uid": "uid2", - "scope": "admin", - "joinedAt": 1673421419 - } - } - } - } - } - } - } - }, - "security": [ - { - "apiKey": [] - } - ] - } - } - }, - "components": { - "schemas": { - "APIKeySchema": { - "description": "Response data", - "properties": { - "apiKey": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "CommonFields": { - "properties": { - "authToken": { - "type": "string", - "example": "superhero3_1710141033938cf7e3c67cc44465440d" - }, - "timezone": { - "type": "string", - "example": "Asia/Kolkata" - } - }, - "type": "object" - }, - "Day": { - "properties": { - "from": { - "type": "integer", - "format": "int32", - "maximum": 2359, - "minimum": 0 - }, - "to": { - "type": "integer", - "format": "int32", - "maximum": 2359, - "minimum": 0 - }, - "dnd": { - "type": "boolean" - } - }, - "type": "object" - }, - "Group": { - "properties": { - "messagesSetting": { - "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "messagesOverride": { - "type": "boolean" - }, - "repliesSetting": { - "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "repliesOverride": { - "type": "boolean" - }, - "reactionsSetting": { - "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "reactionsOverride": { - "type": "boolean" - }, - "memberLeftSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberLeftOverride": { - "type": "boolean" - }, - "memberAddedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberAddedOverride": { - "type": "boolean" - }, - "memberJoinedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberJoinedOverride": { - "type": "boolean" - }, - "memberKickedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberKickedOverride": { - "type": "boolean" - }, - "memberBannedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberBannedOverride": { - "type": "boolean" - }, - "memberUnbannedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberUnbannedOverride": { - "type": "boolean" - }, - "memberScopeChangedSetting": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "memberScopeChangedOverride": { - "type": "boolean" - } - }, - "type": "object" - }, - "MediaMessageTemplate": { - "properties": { - "titleOneOnOne": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}}" - }, - "titleGroup": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" - }, - "body_image": { - "type": "string", - "example": "Has sent an {{message.type}}" - }, - "body_audio": { - "type": "string", - "example": "Has sent an {{message.type}}" - }, - "body_video": { - "type": "string", - "example": "Has sent a {{message.type}}" - }, - "body_file": { - "type": "string", - "example": "Has sent a {{message.type}}" - } - }, - "type": "object" - }, - "Mute": { - "properties": { - "dndPreferenceOverride": { - "type": "boolean" - }, - "mutedGroupsOverride": { - "type": "boolean" - }, - "mutedOneOnOnesOverride": { - "type": "boolean" - }, - "schedulePreferenceSetting": { - "properties": { - "monday": { - "$ref": "#/components/schemas/Day" - }, - "tuesday": { - "$ref": "#/components/schemas/Day" - }, - "wednesday": { - "$ref": "#/components/schemas/Day" - }, - "thursday": { - "$ref": "#/components/schemas/Day" - }, - "friday": { - "$ref": "#/components/schemas/Day" - }, - "saturday": { - "$ref": "#/components/schemas/Day" - }, - "sunday": { - "$ref": "#/components/schemas/Day" - } - }, - "type": "object" - }, - "schedulePreferenceOverride": { - "type": "boolean" - } - }, - "type": "object" - }, - "MutePreferences": { - "properties": { - "dnd": { - "description": "1: Disable DND\n2: Enable DND", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "schedule": { - "$ref": "#/components/schemas/Schedule" - } - }, - "type": "object" - }, - "PNSuccess": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - }, - "PlatformAPNS": { - "allOf": [ - { - "properties": { - "platform": { - "type": "string", - "enum": [ - "apns_ios_device", - "apns_flutter_device", - "apns_react_native_device", - "apns_ionic_cordova_device" - ] - }, - "providerId": { - "type": "string", - "example": "apns-provider-2" - }, - "deviceToken": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/CommonFields" - } - ] - }, - "PlatformFCM": { - "allOf": [ - { - "properties": { - "platform": { - "type": "string", - "enum": [ - "fcm_android", - "fcm_ios", - "fcm_web", - "fcm_flutter_android", - "fcm_flutter_ios", - "fcm_react_native_android", - "fcm_react_native_ios", - "fcm_ionic_cordova_android", - "fcm_ionic_cordova_ios" - ] - }, - "providerId": { - "type": "string", - "example": "fcm-provider-2" - }, - "fcmToken": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/CommonFields" - } - ] - }, - "PlatformVOIP": { - "allOf": [ - { - "properties": { - "platform": { - "type": "string", - "enum": [ - "apns_ios_voip", - "apns_flutter_voip", - "apns_ionic_cordova_voip", - "apns_react_native_voip" - ] - }, - "providerId": { - "type": "string", - "example": "apns-provider-2" - }, - "voipToken": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/CommonFields" - } - ] - }, - "Preferences": { - "properties": { - "group": { - "$ref": "#/components/schemas/Group" - }, - "oneOnOne": { - "$ref": "#/components/schemas/oneOnOne" - }, - "mute": { - "$ref": "#/components/schemas/Mute" - } - }, - "type": "object" - }, - "Schedule": { - "properties": { - "monday": { - "$ref": "#/components/schemas/Day" - }, - "tuesday": { - "$ref": "#/components/schemas/Day" - }, - "wednesday": { - "$ref": "#/components/schemas/Day" - }, - "thursday": { - "$ref": "#/components/schemas/Day" - }, - "friday": { - "$ref": "#/components/schemas/Day" - }, - "saturday": { - "$ref": "#/components/schemas/Day" - }, - "sunday": { - "$ref": "#/components/schemas/Day" - } - }, - "type": "object" - }, - "ServiceAccountCreds": { - "properties": { - "project_id": { - "type": "string" - }, - "client_email": { - "type": "string" - }, - "private_key": { - "type": "string" - }, - "private_key_id": { - "type": "string" - } - }, - "type": "object" - }, - "SilentNotification": { - "properties": { - "chat": { - "type": "boolean" - }, - "call": { - "type": "boolean" - } - }, - "type": "object" - }, - "Sound": { - "properties": { - "chat": { - "type": "string" - }, - "call": { - "type": "string" - } - }, - "type": "object" - }, - "Template": { - "properties": { - "titleOneOnOne": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}}" - }, - "titleGroup": { - "type": "string", - "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" - }, - "body": { - "type": "string", - "example": "New text message" - } - }, - "type": "object" - }, - "Templates": { - "properties": { - "usePrivacyTemplate": { - "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "textMessageTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "textMessageTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "mediaMessageTemplateDefault": { - "$ref": "#/components/schemas/MediaMessageTemplate" - }, - "mediaMessageTemplatePrivacy": { - "$ref": "#/components/schemas/MediaMessageTemplate" - }, - "customMessageTemplateDefault": { - "allOf": [ - { - "properties": { - "body_fallback": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/Template" - } - ] - }, - "customMessageTemplatePrivacy": { - "allOf": [ - { - "properties": { - "body_fallback": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/Template" - } - ] - }, - "interactiveFormTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveFormTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - } - }, - "type": "object" - }, - "authTokenSchema": { - "description": "Response data", - "properties": { - "uid": { - "type": "string" - }, - "authToken": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "bannedUserSchema": { - "description": "Response data", - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "isBanned": { - "type": "boolean" - }, - "joinedAt": { - "type": "integer" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "blockedUserSchema": { - "description": "Response data", - "properties": { - "blockedByMe": { - "type": "boolean" - }, - "blockedByMeAt": { - "type": "integer" - }, - "blockedAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "conversationSchema": { - "description": "Response data", - "properties": { - "conversationId": { - "type": "string" - }, - "conversationType": { - "type": "string" - }, - "unreadMessageCount": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "lastMessage": { - "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, - "data": { - "type": "object", - "allOf": [ - { - "properties": { - "action": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/objectEntitySchema" - } - ] - }, - "sentAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "receipts": { - "properties": { - "data": { - "type": "array", - "items": {} - } - }, - "type": "object" - } - }, - "type": "object" - }, - "conversationWith": { - "type": "object" - } - }, - "type": "object" - }, - "conversationWithSchema": { - "properties": { - "guid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "type": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "membersCount": { - "type": "integer" - }, - "joinedAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - }, - "hasJoined": { - "type": "boolean", - "default": "true" - }, - "createdAt": { - "type": "integer" - }, - "owner": { - "type": "string" - }, - "updatedAt": { - "type": "integer" - }, - "updatedBy": { - "type": "string" - } - }, - "type": "object" - }, - "createApnsProvider": { - "properties": { - "providerId": { - "type": "string" - }, - "keyId": { - "type": "string" - }, - "teamId": { - "type": "string" - }, - "bundleId": { - "type": "string" - }, - "p8KeyFilename": { - "type": "string" - }, - "p8Key": { - "type": "string" - }, - "includeContentAvailable": { - "type": "boolean" - }, - "includeMutableContent": { - "type": "boolean" - }, - "productionMode": { - "type": "boolean" - } - }, - "type": "object" - }, - "customCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories is custom.", - "type": "string", - "default": "custom", - "enum": [ - "custom" - ] - }, - "type": { - "description": "Type of the message.", - "type": "string" - }, - "data": { - "description": "JSON containing message attributes.", - "properties": { - "customData": { - "description": "when category==”custom”, this property can have any JSON object.", - "type": "object" - } - }, - "type": "object" - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "dataPointSchema": { - "description": "Response data", - "properties": { - "messagesSent": { - "type": "integer" - }, - "readReceipts": { - "type": "integer" - }, - "deliveryReceipts": { - "type": "integer" - }, - "startTime": { - "type": "integer" - }, - "endTime": { - "type": "integer" - } - }, - "type": "object" - }, - "deleteSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "fcmCreateProviderSchema": { - "properties": { - "providerId": { - "type": "string" - }, - "serviceAccountFilename": { - "type": "string" - }, - "serviceAccountCreds": { - "$ref": "#/components/schemas/ServiceAccountCreds" - }, - "notificationInPayload": { - "properties": { - "ios": { - "$ref": "#/components/schemas/SilentNotification" - }, - "android": { - "$ref": "#/components/schemas/SilentNotification" - }, - "web": { - "$ref": "#/components/schemas/SilentNotification" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "groupEntitySchema": { - "description": "Response data", - "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, - "data": { - "properties": { - "action": { - "type": "string" - }, - "entities": { - "properties": { - "by": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "on": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "for": { - "properties": { - "entity": { - "properties": { - "guid": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - }, - "owner": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "membersCount": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "avatar": { - "type": "string" - }, - "metadata": { - "properties": { - "email": { - "type": "string" - } - }, - "type": "object" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "groupMemberListSchema": { - "description": "Response data", - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "joinedAt": { - "type": "integer" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "groupMemberSchema": { - "description": "Response data", - "properties": { - "usersToBan": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "admins": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - }, - "data": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "moderators": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - }, - "data": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "participants": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - }, - "data": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "groupSchema": { - "description": "Response data", - "properties": { - "guid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "type": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "membersCount": { - "type": "integer" - }, - "joinedAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - }, - "hasJoined": { - "type": "boolean" - }, - "owner": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "interactiveCategorySchema": { + "openapi": "3.0.0", + "info": { + "title": "Data Import APIs", + "description": "Manage messages, users, groups for a particular app using our Chat API.", + "version": "3.0" + }, + "servers": [ + { + "url": "https://{appid}.api-{region}.cometchat.io/v3", + "variables": { + "appid": { + "default": "appId", + "description": "(Required) App ID" + }, + "region": { + "enum": ["us", "eu", "in"], + "default": "us", + "description": "Select Region" + } + } + } + ], + "paths": { + "/data_import/messages": { + "post": { + "tags": ["Messages"], + "summary": "Import Messages", + "description": "The CometChat message import API allows customers to import their messages’ data into the CometChat systems.", + "operationId": "import-messages", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["guid", "name", "type"], "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories is interactive.", - "type": "string", - "default": "interactive", - "enum": [ - "interactive" - ] - }, - "type": { - "description": "Type of the message. The available values are card, form and customInteractive.", - "type": "string", - "default": "card", - "enum": [ - "card", - "form", - "customInteractive", - "scheduler" - ] - }, - "data": { - "description": "JSON containing message attributes.", + "messages": { + "description": "Wrapper for the messages.", + "required": ["muid"], + "properties": { + "": { + "description": "Wraps a single message object. The <muid> will be a primary key/unique Identifier of the message.", + "required": [ + "muid", + "sender", + "receiverType", + "receiver", + "sentAt" + ], "properties": { - "text": { + "muid": { + "description": "The value should be the same as value of the placeholder <muid> which wraps the message object.", + "type": "string" + }, + "sender": { + "description": "UID of the sender.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "receiver": { + "description": "If the receiverType == “user” the UID of a user receiving the message. else GUID of the group.", + "type": "string" + }, + "category": { + "description": "Category of the message. The available categories are message and custom.", + "type": "string", + "enum": ["message", "custom"] + }, + "type": { + "description": "If category==”message” then the allowed values for the type are: text: for a plain text message. image: for an image message audio: for an audio message video: for a video message file: for any file if category==”custom” the customized type can be used. The developer can send the type as any random string and can use it in the implementation at the UI", + "type": "string", + "enum": ["text", "image", "file", "audio", "video"] + }, + "data": { + "description": "Can contain any additional properties except for the key properties.", + "properties": { + "text": { + "description": "The property has a fixed meaning for: 1. category==”message” && type ==”text” ⇒ it stores the text message 2. category==”message” && type !=”text” ⇒ it stores a caption for the attachment", "type": "string" - }, - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, + }, + "customData": { + "description": "when category==”custom”, this property can have any JSON object.", "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "title": { - "type": "string" + }, + "attachments": { + "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + "type": "array", + "items": { + "required": [ + "name", + "mimeType", + "extension", + "url" + ], + "properties": { + "url": { + "description": "Contains the URL of the attachment. The developer has to make sure that the URL is accessible while calling the data_import API. The API will be downloading the attachment from its current location and upload it to CometChat’s attachment storage.", + "type": "string" }, - "formFields": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } + "name": { + "description": "Name of the attachment.", + "type": "string" }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" + "mimeType": { + "description": "Mime Type of attachment.", + "type": "string" }, - "metadata": { - "type": "object" - } - }, - "type": "object" - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } + "extension": { + "description": "The extension of the attachment.", + "type": "string" }, - "guids": { - "type": "array", - "items": { - "type": "string" - } + "size": { + "description": "The size of the attachment(in bytes).", + "type": "string" } - }, + }, + "type": "object" + } + }, + "metadata": { "type": "object" + } }, - "tags": { - "description": "A list of tags to identify specific messages.", + "type": "object" + }, + "tags": { + "description": "String array containing developer defined tags.", + "type": "array", + "items": { + "type": "string" + } + }, + "sentAt": { + "description": "10-digit UNIX timestamp for the time at which the message was sent.", + "type": "integer" + }, + "deliveredAt": { + "description": "A 10-digit UNIX timestamp at which the message was delivered to the receiver.", + "type": "integer" + }, + "readAt": { + "description": "A 10-digit UNIX timestamp at which the message was read by the receiver.", + "type": "integer" + }, + "senderUserDetails": { + "description": "If all the users are imported before importing the messages. The JSON object contains the user details of the sender.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The primary-key/ unique identifier of the sender.", + "type": "string" + }, + "name": { + "description": "Name of the sender.", + "type": "string" + }, + "avatar": { + "description": "URL to the profile picture of the user sending the message.", + "type": "string" + }, + "link": { + "description": "Profile page URL of the sender.", + "type": "string" + }, + "role": { + "description": "Role of the sender. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": "A 10-digit timestamp at which the sender was created.", + "type": "integer" + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the sender was most recently online.", + "type": "integer" + }, + "metadata": { + "description": "Additional details about the sender.", + "type": "object" + }, + "tags": { + "description": "A string array containing sender tags.", "type": "array", "items": { - "type": "string" - } - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } + "type": "string" }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "superhero2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "superhero1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "superhero1", - "tags": [ - "tag1" - ] - } - }, - "interactiveMessageSchema": { - "properties": { - "current": { - "properties": { - "limit": { + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the sender was deactivated/soft-deleted/blocked to use the chat services.", "type": "integer" + } }, - "count": { - "type": "integer" - } - }, - "type": "object" - }, - "next": { - "properties": { - "affix": { + "type": "object" + }, + "receiverUserDetails": { + "description": "If all the users are imported before importing the messages or else required if receiverType==”user”. The JSON object contains the user details of the receiver.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The primary-key/ unique identifier of the user receiving the message.", "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { + }, + "name": { + "description": "Name of the receiver.", "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "messageCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories are message and custom.", - "type": "string", - "default": "message", - "enum": [ - "message" - ] - }, - "type": { - "description": "Type of the message. The available values are text, image, file, audio, video.", - "type": "string", - "default": "text", - "enum": [ - "text", - "image", - "file", - "audio", - "video" - ] - }, - "data": { - "description": "JSON containing message attributes.", - "properties": { - "text": { + }, + "avatar": { + "description": " URL to the profile picture of the receiver.", "type": "string" - }, - "metadata": { + }, + "link": { + "description": "Profile page URL of the receiver.", + "type": "string" + }, + "role": { + "description": "Role of the receiver. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": "A 10-digit timestamp at which the receiver was created.", + "type": "integer" + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the receiver was most recently online.", + "type": "integer" + }, + "metadata": { + "description": "Additional details about the receiver.", "type": "object" - }, - "attachments": { - "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + }, + "tags": { + "description": "A string array containing receiver tags.", "type": "array", "items": { - "properties": { - "url": { - "description": "Contains the URL of the attachment.", - "type": "string" - }, - "name": { - "description": "Name of the attachment.", - "type": "string" - }, - "mimeType": { - "description": "Mime Type of attachment.", - "type": "string" - }, - "extension": { - "description": "The extension of the attachment.", - "type": "string" - }, - "size": { - "description": "The size of the attachment(in bytes).", - "type": "string" - } - }, - "type": "object" - } - } - }, - "type": "object" - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { + "type": "string" + }, + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the receiver was deactivated/soft-deleted/blocked to use the chat services.", + "type": "integer" + } + }, + "type": "object" + }, + "receiverGroupDetails": { + "description": "The JSON object contains the group details of the receiver.", + "required": ["guid", "name", "type"], + "properties": { + "guid": { + "description": "The primary-key/ unique identifier of the group.", + "type": "string" + }, + "name": { + "description": "Name of the group.", + "type": "string" + }, + "icon": { + "description": "An URL for a group icon.", + "type": "string" + }, + "type": { + "description": "Type of the group. Can be public, password or private.", + "type": "string", + "enum": ["public", "password", "private"] + }, + "password": { + "description": "A password required to join the the group with type password", + "type": "string" + }, + "owner": { + "description": "Owner of the group.", + "type": "string" + }, + "createdAt": { + "description": " A 10-digit UNIX timestamp at which the group was created.", + "type": "integer" + }, + "metadata": { + "description": "Additional data for the group.", + "type": "object" + }, + "tags": { + "description": "A string array containing grouptags.", "type": "array", "items": { - "type": "string" - } + "type": "string" + }, + "default": [] + } }, - "guids": { + "type": "object" + }, + "receiverGroupOwnerDetails": { + "description": "The JSON object contains the user details of the owner.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The primary-key/ unique identifier of the owner.", + "type": "string" + }, + "name": { + "description": "Name of the owner.", + "type": "string" + }, + "avatar": { + "description": "URL to the profile picture of the owner.", + "type": "string" + }, + "link": { + "description": "Profile page URL of the owner.", + "type": "string" + }, + "role": { + "description": "Role of the owner. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": "A 10-digit timestamp at which the owner was created.", + "type": "integer" + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the owner was most recently online.", + "type": "integer" + }, + "metadata": { + "description": "Additional details about the owner.", + "type": "object" + }, + "tags": { + "description": "A string array containing owner tags.", "type": "array", "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "messageMetaSchema": { - "properties": { - "current": { - "properties": { - "limit": { + "type": "string" + }, + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the owner was deactivated/soft-deleted/blocked to use the chat services.", "type": "integer" + } }, - "count": { - "type": "integer" - } + "type": "object" + } }, "type": "object" - }, - "next": { - "properties": { - "affix": { - "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { - "type": "string" + } + }, + "type": "object", + "example": { + "3118": { + "muid": "3118", + "sender": "s12", + "receiverType": "user", + "receiver": "r123", + "type": "text", + "category": "message", + "data": { + "text": "Hi there,", + "attachments": [ + { + "name": "hi.png", + "extension": "png", + "size": "350.2", + "mimeType": "image/png", + "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" } + ], + "metadata": { + "key": "value" + }, + "custodata": { + "key": "value" + } }, - "type": "object" + "sentAt": "1674104348", + "deliveredAt": "1674224684", + "readAt": "1674224684", + "senderUserDetails": { + "uid": "s12", + "name": "user1", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "createdAt": "1674228536", + "metadata": { + "key": "value" + } + }, + "receiverUserDetails": { + "uid": "r123", + "name": "cometchat-uid-", + "type": "public", + "description": "Hello group", + "icon": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "owner": "cometchat-uid-1", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "createdAt": "1674228536", + "metadata": { + "key": "value" + } + }, + "tags": ["tag1"] + } } + } }, "type": "object" - }, - "messageReactionSchema": { - "description": "Response data", - "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, + } + } + } + }, + "responses": { + "200": { + "description": "Import Message(s)", + "content": { + "application/json": { + "schema": { + "properties": { "data": { - "properties": { - "text": { - "type": "string" + "properties": { + "": { + "type": "object", + "allOf": [ + { + "properties": { + "sentAt": {}, + "deliveredAt": {}, + "readAt": {} + }, + "type": "object" }, - "metadata": { - "type": "object" + { + "$ref": "#/components/schemas/messageSchema" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "3117": { + "success": true, + "data": { + "id": "1029", + "muid": "3117", + "conversationId": "r123_user_s12", + "sender": "s12", + "receiverType": "user", + "receiver": "r123", + "category": "message", + "type": "text", + "data": { + "text": "Hi there,", + "attachments": [ + { + "name": "hi.png", + "extension": "png", + "size": "350.2", + "mimeType": "image/png", + "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + } + ], + "metad2ata": { + "key": "value" + }, + "custodata": { + "key": "value" + }, + "entities": { + "sender": { + "entity": { + "uid": "s12", + "name": "user1", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "metadata": { + "key": "value" + }, + "status": "offline", + "role": "default", + "createdAt": 1674228536, + "updatedAt": 1674232131 + }, + "entityType": "user" }, - "entities": { - "properties": { - "sender": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - } + "receiver": { + "entity": { + "uid": "r123", + "name": "cometchat-uid-", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "metadata": { + "key": "value" }, - "type": "object" + "status": "offline", + "role": "default", + "createdAt": 1674228536, + "updatedAt": 1674232131, + "conversationId": "r123_user_s12" + }, + "entityType": "user" } + } + }, + "sentAt": 1674104348, + "deliveredAt": 1674224684, + "readAt": 1674224684, + "updatedAt": 1674104348, + "tags": ["tag1"] + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/data_import/users": { + "post": { + "tags": ["Users"], + "summary": "Import Users", + "description": "The CometChat user import API allows customers to import their users’ data into the CometChat systems.", + "operationId": "import-users", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "users": { + "description": "Wrapper for the users.", + "required": ["uid"], + "properties": { + "": { + "description": "Wraps a user object. The <uid> will be a primary key/unique Identifier of the user.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The value should be the same as value of the placeholder <uid> which wraps the user object.", + "type": "string" + }, + "name": { + "description": "name of the user.", + "type": "string" + }, + "avatar": { + "description": "URL to the profile picture of the user.", + "type": "string" + }, + "link": { + "description": "Profile page URL of the user.", + "type": "string" + }, + "role": { + "description": "Role of the user. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": " A 10-digit UNIX timestamp at which the user was created.", + "type": "integer" + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the user was most recently online.", + "type": "integer" + }, + "metadata": { + "description": "JSON object containing Additional user information.", + "type": "object" + }, + "tags": { + "description": "A string array containing usertags.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the user was deactivated/soft-deleted/blocked to use the chat services.", + "type": "integer" + } }, "type": "object" - }, - "reactions": { - "type": "array", - "items": { - "properties": { - "reaction": { - "type": "string" - }, - "count": { - "type": "integer" - }, - "reactedByMe": { - "type": "boolean" - } + } + }, + "type": "object", + "example": { + "uid1": { + "uid": "uid1", + "name": "uid1", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "createdAt": "1673421419", + "metadata": { + "key": "value" + }, + "lastActiveAt": "1673421425" + } + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Import User(s)", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object", + "allOf": [ + { + "properties": { + "lastActiveAt": {}, + "deactivatedAt": {} + }, + "type": "object" }, - "type": "object" + { + "$ref": "#/components/schemas/userSchema" + } + ] } - }, - "sentAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" + }, + "type": "object" } + }, + "type": "object" }, - "type": "object" - }, - "messageSchema": { - "description": "Response data", + "example": { + "data": { + "uid1": { + "success": true, + "data": { + "uid": "uid1", + "name": "uid1", + "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "metadata": { + "key": "value" + }, + "status": "offline", + "role": "default", + "lastActiveAt": 1673421425, + "createdAt": 1673421419 + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/data_import/groups": { + "post": { + "tags": ["Groups"], + "summary": "Import Groups", + "description": "The CometChat group import API allows customers to import their groups’ data into the CometChat systems.", + "operationId": "import-groups", + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, - "data": { + "groups": { + "description": "Wrapper for the groups.", + "required": ["guid"], + "properties": { + "": { + "description": "Wraps a group object. The <guid> will be a primary key/unique Identifier of the group.", + "required": ["guid", "name", "type"], "properties": { - "text": { + "guid": { + "description": "The value should be the same as value of the placeholder <guid> which wraps the group object.", + "type": "string" + }, + "name": { + "description": "name of the group.", + "type": "string" + }, + "icon": { + "description": "An URL for a group icon.", + "type": "string" + }, + "type": { + "description": "Type of the group. Can be public, password or private.", + "type": "string", + "enum": ["public", "password", "private"] + }, + "password": { + "description": "A password required to join the the group with type password", + "type": "string" + }, + "owner": { + "description": "Owner of the group.", + "type": "string" + }, + "createdAt": { + "description": " A 10-digit UNIX timestamp at which the group was created.", + "type": "integer" + }, + "metadata": { + "description": "Additional data for the group.", + "type": "object" + }, + "tags": { + "description": "A string array containing grouptags.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "groupOwnerDetails": { + "description": "The JSON object contains the user details of the owner.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The primary-key/ unique identifier of the owner.", "type": "string" - }, - "metadata": { + }, + "name": { + "description": "Name of the owner.", + "type": "string" + }, + "avatar": { + "description": "URL to the profile picture of the owner.", + "type": "string" + }, + "link": { + "description": "Profile page URL of the owner.", + "type": "string" + }, + "role": { + "description": "Role of the owner. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": "A 10-digit timestamp at which the owner was created.", + "type": "integer" + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the owner was most recently online.", + "type": "integer" + }, + "metadata": { + "description": "Additional details about the owner.", "type": "object" - }, - "entities": { - "properties": { - "sender": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - } + }, + "tags": { + "description": "A string array containing owner tags.", + "type": "array", + "items": { + "type": "string" }, - "type": "object" - } + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the owner was deactivated/soft-deleted/blocked to use the chat services.", + "type": "integer" + } + }, + "type": "object" + } }, "type": "object" - }, - "sentAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" + } + }, + "type": "object", + "example": { + "guid1": { + "guid": "guid1", + "name": "guid1", + "createdAt": "1673421419", + "type": "public", + "owner": "cometchat-uid-1", + "groupOwnerDetails": { + "uid": "cometchat-uid-1", + "name": "cometchat-uid-1" + } + } } + } }, "type": "object" - }, - "metaSchema": { + } + } + } + }, + "responses": { + "200": { + "description": "Import Group(s)", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/groupSchema" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid1": { + "success": true, + "data": { + "guid": "guid1", + "name": "guid1", + "type": "public", + "conversationId": "group_guid1", + "createdAt": 1673421419, + "owner": "cometchat-uid-1" + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/data_import/members": { + "post": { + "tags": ["Groups"], + "summary": "Import Group Members", + "description": "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems.", + "operationId": "import-members", + "requestBody": { + "content": { + "application/json": { + "schema": { "properties": { - "pagination": { + "members": { + "description": "Wrapper for the members.", + "required": ["memberId"], + "properties": { + "_member_": { + "description": "Wraps a single member object. The <guid>_member_<uid> will will be a primary key/unique Identifier of the member.", + "required": ["memberId", "guid", "uid"], "properties": { - "total": { + "memberId": { + "description": "The value should be the same as value of the placeholder <guid>_member_<uid> which wraps the member object.", + "type": "string" + }, + "guid": { + "description": "Id of the group.", + "type": "string" + }, + "uid": { + "description": "Id of user.", + "type": "string" + }, + "scope": { + "description": "Scope of the member in group.", + "type": "string" + }, + "isBanned": { + "description": "Specify if user is banned in group.", + "type": "boolean" + }, + "joinedAt": { + "description": " A 10-digit UNIX timestamp at which the member joined the group.", + "type": "integer" + }, + "groupDetails": { + "description": "The JSON object contains the group details of the member.", + "required": ["guid", "name", "type"], + "properties": { + "guid": { + "description": "The primary-key/ unique identifier of the group.", + "type": "string" + }, + "name": { + "description": "Name of the group.", + "type": "string" + }, + "icon": { + "description": "An URL for a group icon.", + "type": "string" + }, + "type": { + "description": "Type of the group. Can be public, password or private.", + "type": "string", + "enum": ["public", "password", "private"] + }, + "password": { + "description": "A password required to join the the group with type password", + "type": "string" + }, + "owner": { + "description": "Owner of the group.", + "type": "string" + }, + "createdAt": { + "description": " A 10-digit UNIX timestamp at which the group was created.", "type": "integer" + }, + "metadata": { + "description": "Additional data for the group.", + "type": "object" + }, + "tags": { + "description": "A string array containing grouptags.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } }, - "count": { + "type": "object" + }, + "userDetails": { + "description": "The JSON object contains the user details of the member.", + "required": ["uid", "name"], + "properties": { + "uid": { + "description": "The primary-key/ unique identifier of the member.", + "type": "string" + }, + "name": { + "description": "Name of the member.", + "type": "string" + }, + "avatar": { + "description": "URL to the profile picture of the member.", + "type": "string" + }, + "link": { + "description": "Profile page URL of the user.", + "type": "string" + }, + "role": { + "description": "Role of the user. Should be created already via the Create role API.", + "type": "string" + }, + "createdAt": { + "description": "A 10-digit timestamp at which the member was created.", "type": "integer" - }, - "per_page": { + }, + "lastActiveAt": { + "description": "A 10-digit UNIX timestamp at which the member was most recently online.", "type": "integer" - }, - "current_page": { + }, + "metadata": { + "description": "JSON object containing Additional member information.", + "type": "object" + }, + "tags": { + "description": "A string array containing member tags.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "deactivatedAt": { + "description": "A 10-digit UNIX timestamp at which the member was deactivated/soft-deleted/blocked to use the chat services.", "type": "integer" + } }, - "total_pages": { - "type": "integer" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object", + "example": { + "guid1_member_uid2": { + "memberId": "guid1_member_uid2", + "uid": "uid2", + "guid": "guid1", + "joinedAt": "1673421419", + "scope": "admin", + "groupDetails": { + "guid": "guid1", + "name": "guid1", + "type": "public", + "owner": "uid1", + "createdAt": "1673421419" + }, + "userDetails": { + "uid": "uid2", + "name": "uid2" + } + } } + } }, "type": "object" - }, - "muteConversation": { + } + } + } + }, + "responses": { + "200": { + "description": "Import Group Member(s)", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/groupMemberSchema" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "guid1_member_uid2": { + "success": true, + "data": { + "guid": "guid1", + "uid": "uid2", + "scope": "admin", + "joinedAt": 1673421419 + } + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + } + }, + "components": { + "schemas": { + "APIKeySchema": { + "description": "Response data", + "properties": { + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "CommonFields": { + "properties": { + "authToken": { + "type": "string", + "example": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d" + }, + "timezone": { + "type": "string", + "example": "Asia/Kolkata" + } + }, + "type": "object" + }, + "Day": { + "properties": { + "from": { + "type": "integer", + "format": "int32", + "maximum": 2359, + "minimum": 0 + }, + "to": { + "type": "integer", + "format": "int32", + "maximum": 2359, + "minimum": 0 + }, + "dnd": { + "type": "boolean" + } + }, + "type": "object" + }, + "Group": { + "properties": { + "messagesSetting": { + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "messagesOverride": { + "type": "boolean" + }, + "repliesSetting": { + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "repliesOverride": { + "type": "boolean" + }, + "reactionsSetting": { + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "reactionsOverride": { + "type": "boolean" + }, + "memberLeftSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberLeftOverride": { + "type": "boolean" + }, + "memberAddedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberAddedOverride": { + "type": "boolean" + }, + "memberJoinedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberJoinedOverride": { + "type": "boolean" + }, + "memberKickedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberKickedOverride": { + "type": "boolean" + }, + "memberBannedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberBannedOverride": { + "type": "boolean" + }, + "memberUnbannedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberUnbannedOverride": { + "type": "boolean" + }, + "memberScopeChangedSetting": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "memberScopeChangedOverride": { + "type": "boolean" + } + }, + "type": "object" + }, + "MediaMessageTemplate": { + "properties": { + "titleOneOnOne": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}}" + }, + "titleGroup": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" + }, + "body_image": { + "type": "string", + "example": "Has sent an {{message.type}}" + }, + "body_audio": { + "type": "string", + "example": "Has sent an {{message.type}}" + }, + "body_video": { + "type": "string", + "example": "Has sent a {{message.type}}" + }, + "body_file": { + "type": "string", + "example": "Has sent a {{message.type}}" + } + }, + "type": "object" + }, + "Mute": { + "properties": { + "dndPreferenceOverride": { + "type": "boolean" + }, + "mutedGroupsOverride": { + "type": "boolean" + }, + "mutedOneOnOnesOverride": { + "type": "boolean" + }, + "schedulePreferenceSetting": { + "properties": { + "monday": { + "$ref": "#/components/schemas/Day" + }, + "tuesday": { + "$ref": "#/components/schemas/Day" + }, + "wednesday": { + "$ref": "#/components/schemas/Day" + }, + "thursday": { + "$ref": "#/components/schemas/Day" + }, + "friday": { + "$ref": "#/components/schemas/Day" + }, + "saturday": { + "$ref": "#/components/schemas/Day" + }, + "sunday": { + "$ref": "#/components/schemas/Day" + } + }, + "type": "object" + }, + "schedulePreferenceOverride": { + "type": "boolean" + } + }, + "type": "object" + }, + "MutePreferences": { + "properties": { + "dnd": { + "description": "1: Disable DND\n2: Enable DND", + "type": "integer", + "enum": [1, 2] + }, + "schedule": { + "$ref": "#/components/schemas/Schedule" + } + }, + "type": "object" + }, + "PNSuccess": { + "properties": { + "success": { + "type": "boolean" + } + }, + "type": "object" + }, + "PlatformAPNS": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "apns_ios_device", + "apns_flutter_device", + "apns_react_native_device", + "apns_ionic_cordova_device" + ] + }, + "providerId": { + "type": "string", + "example": "apns-provider-2" + }, + "deviceToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "PlatformFCM": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "fcm_android", + "fcm_ios", + "fcm_web", + "fcm_flutter_android", + "fcm_flutter_ios", + "fcm_react_native_android", + "fcm_react_native_ios", + "fcm_ionic_cordova_android", + "fcm_ionic_cordova_ios" + ] + }, + "providerId": { + "type": "string", + "example": "fcm-provider-2" + }, + "fcmToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "PlatformVOIP": { + "allOf": [ + { + "properties": { + "platform": { + "type": "string", + "enum": [ + "apns_ios_voip", + "apns_flutter_voip", + "apns_ionic_cordova_voip", + "apns_react_native_voip" + ] + }, + "providerId": { + "type": "string", + "example": "apns-provider-2" + }, + "voipToken": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/CommonFields" + } + ] + }, + "Preferences": { + "properties": { + "group": { + "$ref": "#/components/schemas/Group" + }, + "oneOnOne": { + "$ref": "#/components/schemas/oneOnOne" + }, + "mute": { + "$ref": "#/components/schemas/Mute" + } + }, + "type": "object" + }, + "Schedule": { + "properties": { + "monday": { + "$ref": "#/components/schemas/Day" + }, + "tuesday": { + "$ref": "#/components/schemas/Day" + }, + "wednesday": { + "$ref": "#/components/schemas/Day" + }, + "thursday": { + "$ref": "#/components/schemas/Day" + }, + "friday": { + "$ref": "#/components/schemas/Day" + }, + "saturday": { + "$ref": "#/components/schemas/Day" + }, + "sunday": { + "$ref": "#/components/schemas/Day" + } + }, + "type": "object" + }, + "ServiceAccountCreds": { + "properties": { + "project_id": { + "type": "string" + }, + "client_email": { + "type": "string" + }, + "private_key": { + "type": "string" + }, + "private_key_id": { + "type": "string" + } + }, + "type": "object" + }, + "SilentNotification": { + "properties": { + "chat": { + "type": "boolean" + }, + "call": { + "type": "boolean" + } + }, + "type": "object" + }, + "Sound": { + "properties": { + "chat": { + "type": "string" + }, + "call": { + "type": "string" + } + }, + "type": "object" + }, + "Template": { + "properties": { + "titleOneOnOne": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}}" + }, + "titleGroup": { + "type": "string", + "example": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}" + }, + "body": { + "type": "string", + "example": "New text message" + } + }, + "type": "object" + }, + "Templates": { + "properties": { + "usePrivacyTemplate": { + "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", + "type": "integer", + "enum": [1, 2, 3] + }, + "textMessageTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "textMessageTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "mediaMessageTemplateDefault": { + "$ref": "#/components/schemas/MediaMessageTemplate" + }, + "mediaMessageTemplatePrivacy": { + "$ref": "#/components/schemas/MediaMessageTemplate" + }, + "customMessageTemplateDefault": { + "allOf": [ + { + "properties": { + "body_fallback": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/Template" + } + ] + }, + "customMessageTemplatePrivacy": { + "allOf": [ + { "properties": { - "id": { - "description": "uid or guid", + "body_fallback": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/Template" + } + ] + }, + "interactiveFormTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveFormTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCardTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCardTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveSchedulerTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveSchedulerTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCustomTemplateDefault": { + "$ref": "#/components/schemas/Template" + }, + "interactiveCustomTemplatePrivacy": { + "$ref": "#/components/schemas/Template" + } + }, + "type": "object" + }, + "authTokenSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "authToken": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "bannedUserSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "isBanned": { + "type": "boolean" + }, + "joinedAt": { + "type": "integer" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "blockedUserSchema": { + "description": "Response data", + "properties": { + "blockedByMe": { + "type": "boolean" + }, + "blockedByMeAt": { + "type": "integer" + }, + "blockedAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "conversationSchema": { + "description": "Response data", + "properties": { + "conversationId": { + "type": "string" + }, + "conversationType": { + "type": "string" + }, + "unreadMessageCount": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "lastMessage": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object", + "allOf": [ + { + "properties": { + "action": { "type": "string" + } }, - "type": { - "description": "oneOnOne or group", - "type": "string", - "enum": [ - "oneOnOne", - "group" - ] - }, - "until": { - "description": "This is a valid timestamp from the future, E.g: 1710696964705", - "type": "integer", - "format": "int64" - } + "type": "object" + }, + { + "$ref": "#/components/schemas/objectEntitySchema" + } + ] + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "receipts": { + "properties": { + "data": { + "type": "array", + "items": {} + } }, "type": "object" + } }, - "objectEntitySchema": { + "type": "object" + }, + "conversationWith": { + "type": "object" + } + }, + "type": "object" + }, + "conversationWithSchema": { + "properties": { + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean", + "default": "true" + }, + "createdAt": { + "type": "integer" + }, + "owner": { + "type": "string" + }, + "updatedAt": { + "type": "integer" + }, + "updatedBy": { + "type": "string" + } + }, + "type": "object" + }, + "createApnsProvider": { + "properties": { + "providerId": { + "type": "string" + }, + "keyId": { + "type": "string" + }, + "teamId": { + "type": "string" + }, + "bundleId": { + "type": "string" + }, + "p8KeyFilename": { + "type": "string" + }, + "p8Key": { + "type": "string" + }, + "includeContentAvailable": { + "type": "boolean" + }, + "includeMutableContent": { + "type": "boolean" + }, + "productionMode": { + "type": "boolean" + } + }, + "type": "object" + }, + "customCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories is custom.", + "type": "string", + "default": "custom", + "enum": ["custom"] + }, + "type": { + "description": "Type of the message.", + "type": "string" + }, + "data": { + "description": "JSON containing message attributes.", + "properties": { + "customData": { + "description": "when category==”custom”, this property can have any JSON object.", + "type": "object" + } + }, + "type": "object" + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "dataPointSchema": { + "description": "Response data", + "properties": { + "messagesSent": { + "type": "integer" + }, + "readReceipts": { + "type": "integer" + }, + "deliveryReceipts": { + "type": "integer" + }, + "startTime": { + "type": "integer" + }, + "endTime": { + "type": "integer" + } + }, + "type": "object" + }, + "deleteSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "fcmCreateProviderSchema": { + "properties": { + "providerId": { + "type": "string" + }, + "serviceAccountFilename": { + "type": "string" + }, + "serviceAccountCreds": { + "$ref": "#/components/schemas/ServiceAccountCreds" + }, + "notificationInPayload": { + "properties": { + "ios": { + "$ref": "#/components/schemas/SilentNotification" + }, + "android": { + "$ref": "#/components/schemas/SilentNotification" + }, + "web": { + "$ref": "#/components/schemas/SilentNotification" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "groupEntitySchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "action": { + "type": "string" + }, + "entities": { "properties": { - "entities": { + "by": { + "properties": { + "entity": { "properties": { - "by": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "for": { - "properties": { - "entity": { - "properties": { - "guid": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "owner": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "updatedBy": { - "type": "integer" - }, - "description": { - "type": "integer" - }, - "membersCount": { - "type": "integer" - }, - "conversationId": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "on": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "link": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "on": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "for": { + "properties": { + "entity": { + "properties": { + "guid": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" } + }, + "type": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } }, "type": "object" - } + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" - }, - "oneOnOne": { + } + }, + "type": "object" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "groupMemberListSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "joinedAt": { + "type": "integer" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "groupMemberSchema": { + "description": "Response data", + "properties": { + "usersToBan": { + "properties": { + "": { "properties": { - "messagesSetting": { - "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "messagesOverride": { - "type": "boolean" - }, - "repliesSetting": { - "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "repliesOverride": { - "type": "boolean" - }, - "reactionsSetting": { - "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "reactionsOverride": { - "type": "boolean" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "pnSettingSchema": { - "description": "Response data", + "type": "object" + }, + "admins": { + "properties": { + "": { "properties": { - "preferences": { - "$ref": "#/components/schemas/Preferences" - }, - "sound": { - "$ref": "#/components/schemas/Sound" - }, - "templates": { - "$ref": "#/components/schemas/Templates" - } + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } }, "type": "object" + } }, - "pnTokenSchema": { - "description": "Response data", - "oneOf": [ - { - "$ref": "#/components/schemas/PlatformFCM" - }, - { - "$ref": "#/components/schemas/PlatformAPNS" - }, - { - "$ref": "#/components/schemas/PlatformVOIP" - } - ] - }, - "pnUpdatePreferences": { - "description": "Response data", + "type": "object" + }, + "moderators": { + "properties": { + "": { "properties": { - "groupPreferences": { - "properties": { - "groupMessages": { - "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupReplies": { - "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupReactions": { - "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "groupMemberLeft": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberAdded": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberJoined": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberKicked": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberBanned": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberUnbanned": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - }, - "groupMemberScopeChanged": { - "description": "1: Don't subscribe\n2: Subscribe", - "type": "integer", - "enum": [ - 1, - 2 - ] - } - }, - "type": "object" - }, - "oneOnOnePreferences": { - "properties": { - "oneOnOneMessages": { - "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "oneOnOneReplies": { - "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - }, - "oneOnOneReactions": { - "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", - "type": "integer", - "enum": [ - 1, - 2, - 3 - ] - } - }, - "type": "object" - }, - "mutePreferences": { - "$ref": "#/components/schemas/MutePreferences" - }, - "usePrivacyTemplate": { - "type": "boolean" - } + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } }, "type": "object" + } }, - "pushNotificationSchema": { + "type": "object" + }, + "participants": { + "properties": { + "": { "properties": { - "success": { - "type": "boolean" - } + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + } }, "type": "object" + } }, - "pushProviders": { - "description": "Response data", - "type": "array", - "items": {} - }, - "reactionSchema": { - "description": "Response data", + "type": "object" + } + }, + "type": "object" + }, + "groupSchema": { + "description": "Response data", + "properties": { + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean" + }, + "owner": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "interactiveCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories is interactive.", + "type": "string", + "default": "interactive", + "enum": ["interactive"] + }, + "type": { + "description": "Type of the message. The available values are card, form and customInteractive.", + "type": "string", + "default": "card", + "enum": ["card", "form", "customInteractive", "scheduler"] + }, + "data": { + "description": "JSON containing message attributes.", + "properties": { + "text": { + "type": "string" + }, + "interactionGoal": { "properties": { - "id": { - "type": "string" - }, - "messageId": { - "type": "string" - }, - "reaction": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "reactedAt": { - "type": "integer" - }, - "reactedBy": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" + "type": { + "type": "string", + "enum": ["anyOf", "allOf", "oneOf", "none"] + }, + "elementIds": { + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" - }, - "roleSchema": { - "description": "Response data", + }, + "allowSenderInteraction": { + "type": "boolean" + }, + "interactiveData": { "properties": { - "role": { - "type": "string" - }, - "name": { + "title": { + "type": "string" + }, + "formFields": { + "type": "array", + "items": { + "properties": { + "elementType": { + "type": "string" + }, + "elementId": { + "type": "string" + }, + "defaultValue": { + "type": "string" + }, + "label": { + "type": "string" + }, + "optional": { + "type": "boolean" + }, + "maxLines": { + "type": "integer" + }, + "placeholder": { + "type": "object" + } + }, + "type": "object" + } + }, + "submitElement": { + "properties": { + "elementType": { "type": "string" - }, - "description": { + }, + "elementId": { "type": "string" - }, - "metadata": { - "type": "object" - }, - "email": { + }, + "buttonText": { "type": "string" - }, - "settings": { + }, + "disableAfterInteracted": { + "type": "boolean" + }, + "optional": { + "type": "boolean" + }, + "action": { "properties": { - "listUsers": { - "type": "string" - }, - "sendMessagesTo": { - "type": "string" - } + "url": { + "type": "string" + }, + "method": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "dataKey": { + "type": "string" + }, + "actionType": { + "type": "string" + } }, "type": "object" + } }, - "createdAt": { - "type": "integer" - } + "type": "object" + }, + "metadata": { + "type": "object" + } }, "type": "object" - }, - "triggerSchema": { - "description": "Response data", + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", "properties": { - "id": { - "type": "string" - }, - "category": { - "type": "string" - }, - "description": { - "type": "string" + "uids": { + "type": "array", + "items": { + "type": "string" } - }, - "type": "object" - }, - "unmuteConversation": { - "properties": { - "id": { - "description": "uid or guid", - "type": "string" - }, - "type": { - "description": "oneOnOne or group", - "type": "string", - "enum": [ - "oneOnOne", - "group" - ] + }, + "guids": { + "type": "array", + "items": { + "type": "string" } + } }, "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } }, - "unregisterpnToken": { - "required": [ - "authToken" - ], - "properties": { - "authToken": { - "type": "string" + "type": "object" + } + }, + "type": "object", + "example": { + "receiverType": "user", + "data": { + "interactionGoal": { + "type": "allOf", + "elementIds": ["element8"] + }, + "allowSenderInteraction": true, + "interactiveData": { + "title": "Form Title", + "formFields": [ + { + "elementType": "textInput", + "elementId": "element1", + "defaultValue": "vivek", + "label": "Name", + "optional": false, + "maxLines": 1, + "placeholder": { + "text": "write your name here" + } + }, + { + "elementType": "textInput", + "elementId": "element2", + "label": "Last Name", + "optional": false, + "maxLines": 1 + }, + { + "elementType": "textInput", + "elementId": "element3", + "label": "Address", + "optional": false, + "maxLines": 5 + }, + { + "elementType": "dropdown", + "elementId": "element4", + "label": "Country", + "optional": false, + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "INDIA" + }, + { + "value": "option2", + "label": "AUSTRALIA" } + ] }, - "type": "object" - }, - "updatemessageSchema": { - "description": "Response data", - "properties": { - "id": { - "type": "string" + { + "elementType": "checkbox", + "elementId": "element5", + "optional": true, + "label": "Services", + "options": [ + { + "value": "option1", + "label": "Garbage" }, - "conversationId": { - "type": "string" + { + "value": "option2", + "label": "Electricity Bill" }, - "sender": { - "type": "string" + { + "value": "option3", + "label": "Lift" + } + ], + "defaultValue": ["option1", "option2"] + }, + { + "elementType": "singleSelect", + "elementId": "element6", + "optional": false, + "label": "Wing", + "defaultValue": "option1", + "options": [ + { + "value": "option1", + "label": "A Wing" }, - "receiverType": { - "type": "string" + { + "value": "option2", + "label": "B Wing" + } + ] + }, + { + "elementType": "button", + "elementId": "element9", + "buttonText": "About us", + "disableAfterInteracted": true, + "action": { + "actionType": "urlNavigation", + "url": "https://www.cometchat.com" + } + } + ], + "submitElement": { + "elementType": "button", + "elementId": "element8", + "buttonText": "Submit", + "disableAfterInteracted": true, + "action": { + "actionType": "apiAction", + "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3/messages", + "method": "POST", + "payload": { + "category": "message", + "type": "text", + "data": { + "text": "Thanks For filling the Form!" + }, + "receiver": "cometchat-uid-2", + "receiverType": "user" + }, + "headers": { + "appId": "10893f2ae68f59", + "Content-Type": "application/json", + "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", + "onBehalfOf": "cometchat-uid-1" + }, + "dataKey": "CometChatData" + } + } + } + }, + "category": "interactive", + "type": "form", + "receiver": "cometchat-uid-1", + "tags": ["tag1"] + } + }, + "interactiveMessageSchema": { + "properties": { + "current": { + "properties": { + "limit": { + "type": "integer" + }, + "count": { + "type": "integer" + } + }, + "type": "object" + }, + "next": { + "properties": { + "affix": { + "type": "string" + }, + "sentAt": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "messageCategorySchema": { + "properties": { + "receiver": { + "description": "The receiver of the message.", + "type": "string" + }, + "muid": { + "description": "The muid will be a unique Identifier of the message.", + "type": "string" + }, + "receiverType": { + "description": "The receiverType of the message. either user or group", + "type": "string", + "enum": ["user", "group"] + }, + "category": { + "description": "Category of the message. The available categories are message and custom.", + "type": "string", + "default": "message", + "enum": ["message"] + }, + "type": { + "description": "Type of the message. The available values are text, image, file, audio, video.", + "type": "string", + "default": "text", + "enum": ["text", "image", "file", "audio", "video"] + }, + "data": { + "description": "JSON containing message attributes.", + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "attachments": { + "description": "For the messages with image, video, audio or file type (i.e. category==\"message\" && type !=\"text\"), the property contains an array of attachment objects.", + "type": "array", + "items": { + "properties": { + "url": { + "description": "Contains the URL of the attachment.", + "type": "string" }, - "receiver": { - "type": "string" + "name": { + "description": "Name of the attachment.", + "type": "string" }, - "category": { - "type": "string" + "mimeType": { + "description": "Mime Type of attachment.", + "type": "string" }, - "type": { - "type": "string" + "extension": { + "description": "The extension of the attachment.", + "type": "string" }, - "data": { + "size": { + "description": "The size of the attachment(in bytes).", + "type": "string" + } + }, + "type": "object" + } + } + }, + "type": "object" + }, + "multipleReceivers": { + "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", + "properties": { + "uids": { + "type": "array", + "items": { + "type": "string" + } + }, + "guids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "tags": { + "description": "A list of tags to identify specific messages.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "messageMetaSchema": { + "properties": { + "current": { + "properties": { + "limit": { + "type": "integer" + }, + "count": { + "type": "integer" + } + }, + "type": "object" + }, + "next": { + "properties": { + "affix": { + "type": "string" + }, + "sentAt": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "messageReactionSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "entities": { + "properties": { + "sender": { + "properties": { + "entity": { "properties": { - "action": { - "type": "string" - }, - "entities": { - "properties": { - "by": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "for": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "role": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "on": { - "properties": { - "entity": { - "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, - "data": { - "properties": { - "text": { - "type": "string" - }, - "entities": { - "properties": { - "sender": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - }, - "receiver": { - "properties": { - "entity": { - "properties": { - "uid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "status": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "conversationId": { - "type": "string" - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "sentAt": { - "type": "integer" - }, - "editedAt": { - "type": "integer" - }, - "editedBy": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - }, - "tags": { - "type": "array", - "items": {} - } - }, - "type": "object" - }, - "entityType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } }, "type": "object" + }, + "entityType": { + "type": "string" + } }, - "sentAt": { - "type": "integer" + "type": "object" + }, + "receiver": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } }, - "updatedAt": { - "type": "integer" - } + "type": "object" + } }, "type": "object" - }, - "usageMetricsSchema": { - "description": "Response data", + } + }, + "type": "object" + }, + "reactions": { + "type": "array", + "items": { + "properties": { + "reaction": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "reactedByMe": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "messageSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "entities": { "properties": { - "metrics": { + "sender": { + "properties": { + "entity": { "properties": { - "audio_minutes": { - "type": "integer" - }, - "video_minutes": { - "type": "integer" - }, - "recorded_minutes": { - "type": "integer" - }, - "active_users": { - "type": "integer" - }, - "concurrent_users": { - "type": "integer" - } + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "receiver": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } }, "type": "object" + }, + "entityType": { + "type": "string" + } }, - "time_range": { - "properties": { - "fromDate": { - "type": "integer" - }, - "toDate": { - "type": "integer" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" - }, - "userConversationSchema": { - "description": "Response data", + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "metaSchema": { + "properties": { + "pagination": { + "properties": { + "total": { + "type": "integer" + }, + "count": { + "type": "integer" + }, + "per_page": { + "type": "integer" + }, + "current_page": { + "type": "integer" + }, + "total_pages": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "muteConversation": { + "properties": { + "id": { + "description": "uid or guid", + "type": "string" + }, + "type": { + "description": "oneOnOne or group", + "type": "string", + "enum": ["oneOnOne", "group"] + }, + "until": { + "description": "This is a valid timestamp from the future, E.g: 1710696964705", + "type": "integer", + "format": "int64" + } + }, + "type": "object" + }, + "objectEntitySchema": { + "properties": { + "entities": { + "properties": { + "by": { "properties": { - "conversationId": { + "entity": { + "properties": { + "uid": { "type": "string" - }, - "conversationType": { + }, + "name": { "type": "string" - }, - "unreadMessageCount": { + }, + "status": { "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "updatedAt": { + }, + "role": { + "type": "string" + }, + "createdAt": { "type": "integer" + } }, - "lastMessage": { - "properties": { - "id": { - "type": "string" - }, - "conversationId": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "receiverType": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "category": { - "type": "string" - }, - "type": { - "type": "string" - }, - "data": { - "type": "object", - "allOf": [ - { - "properties": { - "action": { - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/objectEntitySchema" - } - ] - }, - "sentAt": { - "type": "integer" - }, - "updatedAt": { - "type": "integer" - } - }, - "type": "object" - }, - "conversationWith": { - "type": "object" - } + "type": "object" + }, + "entityType": { + "type": "string" + } }, "type": "object" - }, - "userSchema": { - "description": "Response data", + }, + "for": { "properties": { - "uid": { + "entity": { + "properties": { + "guid": { "type": "string" - }, - "name": { + }, + "icon": { "type": "string" - }, - "avatar": { + }, + "name": { "type": "string" - }, - "metadata": { - "properties": { - "email": { - "type": "string" - } - }, - "type": "object" - }, - "status": { + }, + "type": { "type": "string" - }, - "role": { + }, + "owner": { "type": "string" - }, - "createdAt": { + }, + "createdAt": { "type": "integer" - } + }, + "updatedAt": { + "type": "integer" + }, + "updatedBy": { + "type": "integer" + }, + "description": { + "type": "integer" + }, + "membersCount": { + "type": "integer" + }, + "conversationId": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } }, "type": "object" - }, - "webhookSchema": { - "description": "Response data", + }, + "on": { "properties": { - "id": { + "entity": { + "properties": { + "uid": { "type": "string" - }, - "name": { + }, + "link": { "type": "string" - }, - "webhookURL": { + }, + "name": { "type": "string" - }, - "useBasicAuth": { - "type": "boolean" - }, - "username": { + }, + "role": { "type": "string" - }, - "password": { + }, + "avatar": { "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "createdAt": { + }, + "status": { + "type": "string" + }, + "createdAt": { "type": "integer" - }, - "updatedAt": { + }, + "updatedAt": { "type": "integer" - } - }, - "type": "object" - } - }, - "parameters": { - "authToken": { - "name": "authToken", - "in": "path", - "description": "An auth token of a user.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "Auth Token", - "value": "" - } - } - }, - "conversationId": { - "name": "conversationId", - "in": "path", - "description": "(Required) conversation id", - "required": true, - "schema": { - "type": "string" - } - }, - "uid--conversation": { - "name": "uid", - "in": "path", - "description": "UID of the user whose conversation needs to be fetched.", - "required": true, - "schema": { - "type": "string" - } - }, - "guid--conversation": { - "name": "guid", - "in": "path", - "description": "GUID of the group whose conversation needs to be fetched.", - "required": true, - "schema": { - "type": "string" - } - }, - "uid": { - "name": "uid", - "in": "path", - "description": "An UID of a user.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "UID", - "value": "" - } - } - }, - "guid": { - "name": "guid", - "in": "path", - "description": "A GUID of a group.", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "string": { - "summary": "GUID", - "value": "" - } - } - }, - "requiredonBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "required": true, - "schema": { - "type": "string" - } - }, - "requiredAppId": { - "name": "appId", - "in": "header", - "description": "(Required) App ID", - "required": true, - "schema": { - "type": "string" - } - }, - "onBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "schema": { - "type": "string" - } - }, - "pushToken": { - "name": "pushToken", - "in": "path", - "description": "(Required) Push Token", - "required": true, - "schema": { - "type": "string" - } - }, - "providerId": { - "name": "providerId", - "in": "path", - "description": "Provider ID.", - "required": true, - "schema": { + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { "type": "string" + } }, - "examples": { - "string": { - "summary": "Provider ID", - "value": "" - } - } + "type": "object" + } }, - "requiredUID": { - "name": "uid", - "in": "query", - "description": "(Required) UID", - "required": true, - "schema": { - "type": "string" - } - } + "type": "object" + } }, - "securitySchemes": { - "apiKey": { - "type": "apiKey", - "description": "API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).", - "name": "apikey", - "in": "header" - } - } - }, - "tags": [ - { - "name": "API Keys", - "description": "The API keys are used to authorise the APIs" + "type": "object" + }, + "oneOnOne": { + "properties": { + "messagesSetting": { + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "messagesOverride": { + "type": "boolean" + }, + "repliesSetting": { + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "repliesOverride": { + "type": "boolean" + }, + "reactionsSetting": { + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "reactionsOverride": { + "type": "boolean" + } + }, + "type": "object" + }, + "pnSettingSchema": { + "description": "Response data", + "properties": { + "preferences": { + "$ref": "#/components/schemas/Preferences" + }, + "sound": { + "$ref": "#/components/schemas/Sound" + }, + "templates": { + "$ref": "#/components/schemas/Templates" + } }, - { - "name": "Roles", - "description": "The roles are used to give user access rights" + "type": "object" + }, + "pnTokenSchema": { + "description": "Response data", + "oneOf": [ + { + "$ref": "#/components/schemas/PlatformFCM" + }, + { + "$ref": "#/components/schemas/PlatformAPNS" + }, + { + "$ref": "#/components/schemas/PlatformVOIP" + } + ] + }, + "pnUpdatePreferences": { + "description": "Response data", + "properties": { + "groupPreferences": { + "properties": { + "groupMessages": { + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupReplies": { + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupReactions": { + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", + "type": "integer", + "enum": [1, 2, 3] + }, + "groupMemberLeft": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberAdded": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberJoined": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberKicked": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberBanned": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberUnbanned": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + }, + "groupMemberScopeChanged": { + "description": "1: Don't subscribe\n2: Subscribe", + "type": "integer", + "enum": [1, 2] + } + }, + "type": "object" + }, + "oneOnOnePreferences": { + "properties": { + "oneOnOneMessages": { + "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "oneOnOneReplies": { + "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", + "type": "integer", + "enum": [1, 2, 3] + }, + "oneOnOneReactions": { + "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", + "type": "integer", + "enum": [1, 2, 3] + } + }, + "type": "object" + }, + "mutePreferences": { + "$ref": "#/components/schemas/MutePreferences" + }, + "usePrivacyTemplate": { + "type": "boolean" + } }, - { - "name": "Users", - "description": "The REST collection for users." + "type": "object" + }, + "pushNotificationSchema": { + "properties": { + "success": { + "type": "boolean" + } }, - { - "name": "Auth Tokens", - "description": "The auth tokens are used to login end users using client SDKs." + "type": "object" + }, + "pushProviders": { + "description": "Response data", + "type": "array", + "items": {} + }, + "reactionSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "messageId": { + "type": "string" + }, + "reaction": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "reactedAt": { + "type": "integer" + }, + "reactedBy": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + } }, - { - "name": "Blocked Users", - "description": "The REST collections for blocked users." + "type": "object" + }, + "roleSchema": { + "description": "Response data", + "properties": { + "role": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "email": { + "type": "string" + }, + "settings": { + "properties": { + "listUsers": { + "type": "string" + }, + "sendMessagesTo": { + "type": "string" + } + }, + "type": "object" + }, + "createdAt": { + "type": "integer" + } }, - { - "name": "Friends", - "description": "List,add and remove friends by passing UID in path variables" + "type": "object" + }, + "triggerSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "category": { + "type": "string" + }, + "description": { + "type": "string" + } }, - { - "name": "Groups", - "description": "The REST collections for groups." + "type": "object" + }, + "unmuteConversation": { + "properties": { + "id": { + "description": "uid or guid", + "type": "string" + }, + "type": { + "description": "oneOnOne or group", + "type": "string", + "enum": ["oneOnOne", "group"] + } + }, + "type": "object" + }, + "unregisterpnToken": { + "required": ["authToken"], + "properties": { + "authToken": { + "type": "string" + } + }, + "type": "object" + }, + "updatemessageSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "action": { + "type": "string" + }, + "entities": { + "properties": { + "by": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "for": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "on": { + "properties": { + "entity": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "properties": { + "text": { + "type": "string" + }, + "entities": { + "properties": { + "sender": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + }, + "receiver": { + "properties": { + "entity": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "conversationId": { + "type": "string" + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "editedAt": { + "type": "integer" + }, + "editedBy": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": {} + } + }, + "type": "object" + }, + "entityType": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } }, - { - "name": "Banned Users", - "description": "Ban and Unban user by passing other UID in path variables." + "type": "object" + }, + "usageMetricsSchema": { + "description": "Response data", + "properties": { + "metrics": { + "properties": { + "audio_minutes": { + "type": "integer" + }, + "video_minutes": { + "type": "integer" + }, + "recorded_minutes": { + "type": "integer" + }, + "active_users": { + "type": "integer" + }, + "concurrent_users": { + "type": "integer" + } + }, + "type": "object" + }, + "time_range": { + "properties": { + "fromDate": { + "type": "integer" + }, + "toDate": { + "type": "integer" + } + }, + "type": "object" + } }, - { - "name": "Group Members", - "description": "The REST collections for group members." + "type": "object" + }, + "userConversationSchema": { + "description": "Response data", + "properties": { + "conversationId": { + "type": "string" + }, + "conversationType": { + "type": "string" + }, + "unreadMessageCount": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "lastMessage": { + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object", + "allOf": [ + { + "properties": { + "action": { + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/objectEntitySchema" + } + ] + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + }, + "type": "object" + }, + "conversationWith": { + "type": "object" + } }, - { - "name": "Messages", - "description": "The REST collections for messages." + "type": "object" + }, + "userSchema": { + "description": "Response data", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } }, - { - "name": "Conversations", - "description": "The REST collections for conversations." + "type": "object" + }, + "webhookSchema": { + "description": "Response data", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "webhookURL": { + "type": "string" + }, + "useBasicAuth": { + "type": "boolean" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } }, - { - "name": "Restrict Features", - "description": "Allows Restricting Features" + "type": "object" + } + }, + "parameters": { + "authToken": { + "name": "authToken", + "in": "path", + "description": "An auth token of a user.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Metrics", - "description": "Allows accessing Data Metrics" + "examples": { + "string": { + "summary": "Auth Token", + "value": "" + } + } + }, + "conversationId": { + "name": "conversationId", + "in": "path", + "description": "(Required) conversation id", + "required": true, + "schema": { + "type": "string" + } + }, + "uid--conversation": { + "name": "uid", + "in": "path", + "description": "UID of the user whose conversation needs to be fetched.", + "required": true, + "schema": { + "type": "string" + } + }, + "guid--conversation": { + "name": "guid", + "in": "path", + "description": "GUID of the group whose conversation needs to be fetched.", + "required": true, + "schema": { + "type": "string" + } + }, + "uid": { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Triggers", - "description": "Allows adding triggers to a webhook." + "examples": { + "string": { + "summary": "UID", + "value": "" + } + } + }, + "guid": { + "name": "guid", + "in": "path", + "description": "A GUID of a group.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Webhooks", - "description": "Allows accessing Webhooks." + "examples": { + "string": { + "summary": "GUID", + "value": "" + } + } + }, + "requiredonBehalfOf": { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "required": true, + "schema": { + "type": "string" + } + }, + "requiredAppId": { + "name": "appId", + "in": "header", + "description": "(Required) App ID", + "required": true, + "schema": { + "type": "string" + } + }, + "onBehalfOf": { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + }, + "pushToken": { + "name": "pushToken", + "in": "path", + "description": "(Required) Push Token", + "required": true, + "schema": { + "type": "string" + } + }, + "providerId": { + "name": "providerId", + "in": "path", + "description": "Provider ID.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Push Notifications", - "description": "Allows configuring Push Notifications." + "examples": { + "string": { + "summary": "Provider ID", + "value": "" + } } - ], - "x-readme": { - "explorer-enabled": true, - "proxy-enabled": true + }, + "requiredUID": { + "name": "uid", + "in": "query", + "description": "(Required) UID", + "required": true, + "schema": { + "type": "string" + } + } + }, + "securitySchemes": { + "apiKey": { + "type": "apiKey", + "description": "API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).", + "name": "apikey", + "in": "header" + } + } + }, + "tags": [ + { + "name": "API Keys", + "description": "The API keys are used to authorise the APIs" + }, + { + "name": "Roles", + "description": "The roles are used to give user access rights" + }, + { + "name": "Users", + "description": "The REST collection for users." + }, + { + "name": "Auth Tokens", + "description": "The auth tokens are used to login end users using client SDKs." + }, + { + "name": "Blocked Users", + "description": "The REST collections for blocked users." + }, + { + "name": "Friends", + "description": "List,add and remove friends by passing UID in path variables" + }, + { + "name": "Groups", + "description": "The REST collections for groups." + }, + { + "name": "Banned Users", + "description": "Ban and Unban user by passing other UID in path variables." + }, + { + "name": "Group Members", + "description": "The REST collections for group members." + }, + { + "name": "Messages", + "description": "The REST collections for messages." + }, + { + "name": "Conversations", + "description": "The REST collections for conversations." + }, + { + "name": "Restrict Features", + "description": "Allows Restricting Features" + }, + { + "name": "Metrics", + "description": "Allows accessing Data Metrics" + }, + { + "name": "Triggers", + "description": "Allows adding triggers to a webhook." + }, + { + "name": "Webhooks", + "description": "Allows accessing Webhooks." + }, + { + "name": "Push Notifications", + "description": "Allows configuring Push Notifications." } -} \ No newline at end of file + ], + "x-readme": { + "explorer-enabled": true, + "proxy-enabled": true + } +} diff --git a/docs.json b/docs.json index 9e5b195d6..73e29b8a5 100644 --- a/docs.json +++ b/docs.json @@ -28,24 +28,82 @@ ] }, "favicon": "/favicon.png", - "openapi": [ - "chat-apis.json", - "management-apis.json", - "data-import-apis.json", - "calls.json", - "ai-agent-service.json" - ], "navigation": { - "tabs": [ + "products": [ + { + "product": "Home", + "pages": [ + "index", + { + "group": "Docs MCP", + "hidden": true, + "pages": ["mcp-server"] + } + ] + }, { - "tab": "Home", - "pages": ["index"] + "product": "Home", + "hidden": true, + "tabs": [ + { + "tab": "On-Premise Deployment", + "hidden": true, + "dropdowns": [ + { + "dropdown": "Docker", + "icon": "/images/icons/docker.svg", + "pages": [ + { + "group": "Getting Started", + "pages": [ + "on-premise-deployment/docker/overview", + "on-premise-deployment/docker/prerequisites", + "on-premise-deployment/docker/configuration-reference" + ] + }, + { + "group": "Deployment", + "pages": [ + "on-premise-deployment/docker/production-deployment", + "on-premise-deployment/docker/air-gapped-deployment" + ] + }, + { + "group": "Operations", + "pages": [ + "on-premise-deployment/docker/monitoring", + "on-premise-deployment/docker/security", + "on-premise-deployment/docker/persistence-and-backup" + ] + }, + { + "group": "Scaling & Maintenance", + "pages": [ + "on-premise-deployment/docker/scaling", + "on-premise-deployment/docker/upgrades", + "on-premise-deployment/docker/troubleshooting" + ] + } + ] + }, + { + "dropdown": "Kubernetes", + "icon": "/images/icons/kubernetes.svg", + "pages": ["on-premise-deployment/kubernetes/overview"] + } + ] + } + ] }, { - "tab": "Platform", - "groups": [ + "product": "Chat & Messaging", + "tabs": [ + { + "tab": "Chat & Calling", + "pages": ["chat-call"] + }, { - "group": "Chat & Calling", + "tab": "Platform", "pages": [ "fundamentals/overview", "fundamentals/implementation-checklist", @@ -125,197 +183,254 @@ "fundamentals/ai-user-copilot/smart-replies", "fundamentals/ai-user-copilot/conversation-summary" ] - } + }, + "fundamentals/multi-tenancy", + "fundamentals/data-import-and-migration", + "fundamentals/webhooks" ] }, { - "group": "Multi tenancy", - "pages": [ - "fundamentals/multi-tenancy-overview", - "fundamentals/multi-tenancy-best-practices" - ] + "group": "User-Roles", + "pages": ["fundamentals/user-roles-and-permissions"] }, - "fundamentals/limits", { - "group": "Data import and migration", + "group": "Guides", + "pages": ["fundamentals/user-auth"] + } + ] + }, + { + "tab": "Widget Builder", + "dropdowns": [ + { + "dropdown": "HTML", + "icon": "/images/icons/html5.svg", "pages": [ - "fundamentals/data-import-and-migration-overview", - "fundamentals/import-historical-data", - "fundamentals/live-data-migration" + "/widget/html/overview", + "/widget/html/integration", + "/widget/html/advanced", + { + "group": " ", + "pages": [ + "/widget/html/legacy" + ] + } ] }, { - "group": "Webhooks", + "dropdown": "WordPress", + "icon": "/images/icons/wordpress.svg", "pages": [ - "fundamentals/webhooks-overview", - "fundamentals/webhooks-management", - "fundamentals/webhooks-events", + "/widget/wordpress/overview", + "/widget/wordpress/integration", { - "group": "Legacy Webhooks", + "group": " ", "pages": [ - "fundamentals/webhooks-legacy-overview", - "fundamentals/webhooks-legacy-management", - "fundamentals/webhooks-legacy-events" + "/widget/wordpress/legacy" ] } ] }, { - "group": "User-Roles", - "pages": ["fundamentals/user-roles-and-permissions"] + "dropdown": "Shopify", + "icon": "/images/icons/shopify.svg", + "pages": [ + "/widget/shopify/overview", + "/widget/shopify/integration" + ] + }, + { + "dropdown": "Squarespace", + "icon": "/images/icons/squarespace.svg", + "pages": [ + "/widget/squarespace/overview", + "/widget/squarespace/integration" + ] + }, + { + "dropdown": "Wix", + "icon": "/images/icons/wix.svg", + "pages": ["/widget/wix/overview", "/widget/wix/integration"] + }, + { + "dropdown": "Webflow", + "icon": "/images/icons/webflow.svg", + "pages": [ + "/widget/webflow/overview", + "/widget/webflow/integration" + ] } ] }, { - "group": "Notifications", - "pages": [ - "notifications/overview", + "tab": "UI Kit Builder", + "tab-id": "chat-builder", + "dropdowns": [ { - "group": "Push Notifications", - "pages": [ - "notifications/push-overview", - "notifications/push-integration", - "notifications/push-customization" + "dropdown": "React", + "icon": "/images/icons/react.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/react/overview", + "chat-builder/react/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/react/builder-settings", + "chat-builder/react/builder-dir-structure", + "chat-builder/react/builder-customisations" + ] + } ] }, { - "group": "Email Notifications", - "pages": [ - "notifications/email-overview", - "notifications/email-integration", - "notifications/email-customization" + "dropdown": "Next.js", + "icon": "/images/icons/nextjs.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/nextjs/overview", + "chat-builder/nextjs/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/nextjs/builder-settings", + "chat-builder/nextjs/builder-dir-structure", + "chat-builder/nextjs/builder-customisations" + ] + } ] }, { - "group": "SMS Notifications", - "pages": [ - "notifications/sms-overview", - "notifications/sms-integration", - "notifications/sms-customization" + "dropdown": "React Router", + "icon": "/images/icons/react-router.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/react-router/overview", + "chat-builder/react-router/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/react-router/builder-settings", + "chat-builder/react-router/builder-dir-structure", + "chat-builder/react-router/builder-customisations" + ] + } ] }, - "notifications/preferences-templates-sounds", - "notifications/logs", - "notifications/constraints-and-limits", { - "group": "Legacy Notifications (Extension)", - "pages": [ + "dropdown": "Android", + "icon": "/images/icons/android.svg", + "groups": [ { - "group": "Push Notification Extension (Legacy)", + "group": " ", "pages": [ - "notifications/push-notification-extension-overview", - "notifications/web-push-notifications", - "notifications/android-push-notifications", - "notifications/android-connection-service", - "notifications/ios-fcm-push-notifications", - "notifications/ios-apns-push-notifications", - "notifications/flutter-push-notifications", - "notifications/react-native-push-notifications", - "notifications/capacitor-cordova-ionic-push-notifications", - "notifications/migration-guide-push-notifications", - "notifications/mute-functionality", - "notifications/token-management", - "notifications/legacy-push-notifications" + "chat-builder/android/overview", + "chat-builder/android/integration" ] }, - "notifications/email-notification-extension", - "notifications/sms-notification-extension" + { + "group": "Reference", + "pages": [ + "chat-builder/android/builder-settings", + "chat-builder/android/builder-dir-structure", + "chat-builder/android/builder-customisations" + ] + } ] - } - ] - }, - { - "group": "Moderation", - "pages": [ - "moderation/overview", - "moderation/getting-started", - "moderation/rules-management", - "moderation/lists-management", - "moderation/blocked-messages", - "moderation/constraints-and-limits", + }, { - "group": "Legacy Moderation (Extensions)", - "pages": [ - "moderation/legacy/slow-mode", - "moderation/legacy/report-user", - "moderation/legacy/report-message", - "moderation/legacy/data-masking-filter", - "moderation/legacy/profanity-filter", - "moderation/legacy/image-moderation", - "moderation/legacy/sentiment-analysis", - "moderation/legacy/in-flight-message-moderation", - "moderation/legacy/virus-malware-scanner", - "moderation/legacy/xss-filter" + "dropdown": "iOS", + "icon": "/images/icons/swift.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/ios/overview", + "chat-builder/ios/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/ios/builder-settings", + "chat-builder/ios/builder-dir-structure", + "chat-builder/ios/builder-customisations" + ] + } ] }, { - "group": "OpenAI", - "pages": [ - "moderation/open-ai/openai-overview", - "moderation/open-ai/openai-custom" + "dropdown": "Flutter", + "icon": "/images/icons/flutter.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/flutter/overview", + "chat-builder/flutter/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/flutter/builder-settings", + "chat-builder/flutter/builder-dir-structure", + "chat-builder/flutter/builder-customisations" + ] + } ] }, { - "group": "Custom API", - "pages": [ - "moderation/custom/custom-api-overview", - "moderation/custom/custom-api" + "dropdown": "React Native", + "icon": "/images/icons/react.svg", + "groups": [ + { + "group": " ", + "pages": [ + "chat-builder/react-native/overview", + "chat-builder/react-native/integration" + ] + }, + { + "group": "Reference", + "pages": [ + "chat-builder/react-native/builder-settings", + "chat-builder/react-native/builder-dir-structure", + "chat-builder/react-native/builder-customisations" + ] + } ] - }, - "moderation/webhooks-overview", - "moderation/api-explorer" - ] - }, - { - "group": "AI Chatbots", - "pages": [ - "ai-chatbots/overview", - "ai-chatbots/bots", - "ai-chatbots/instructions", - "ai-chatbots/custom-agents" + } ] }, { - "group": "Insights", - "pages": ["insights"] - } - ] - }, - { - "tab": "UI Kits", - "dropdowns": [ - { - "dropdown": "React", - "icon": "react", - "versions": [ + "tab": "UI Kits", + "dropdowns": [ { - "version": "v6", - "groups": [ + "dropdown": "React", + "icon": "/images/icons/react.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/react/overview", + "version": "v6", + "groups": [ { - "group": "Getting Started", + "group": " ", "pages": [ + "ui-kit/react/overview", { - "group": "Chat Builder (Pre-Assembled UI)", - "pages": [ - "ui-kit/react/builder-integration", - "ui-kit/react/builder-integration-nextjs", - "ui-kit/react/builder-integration-react-router", - { - "group": "Additional Customizations", - "pages": [ - "ui-kit/react/builder-customisations", - "ui-kit/react/builder-dir-structure", - "ui-kit/react/builder-settings" - ] - } - ] - }, - { - "group": "UI Components (Assemble It Yourself)", + "group": "Getting Started", "pages": [ { "group": "React.js", @@ -343,2177 +458,2410 @@ "ui-kit/react/react-router-one-to-one-chat", "ui-kit/react/react-router-tab-based-chat" ] - } + }, + { + "group": "Astro", + "pages": [ + "ui-kit/react/astro-integration", + "ui-kit/react/astro-conversation", + "ui-kit/react/astro-one-to-one-chat", + "ui-kit/react/astro-tab-based-chat" + ] + }, + "ui-kit/react/calling-integration" ] - } - ] - }, - { - "group": "Features", - "pages": [ + }, { - "group": "Chat", + "group": "Features", "pages": [ - "ui-kit/react/core-features", - "ui-kit/react/extensions", - "ui-kit/react/ai-features" + { + "group": "Chat", + "pages": [ + "ui-kit/react/core-features", + "ui-kit/react/extensions", + "ui-kit/react/ai-features" + ] + }, + "ui-kit/react/call-features" ] }, - "ui-kit/react/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react/theme", - "ui-kit/react/theme/color-resources", - "ui-kit/react/theme/message-bubble-styling", - "ui-kit/react/localize", - "ui-kit/react/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/react/components-overview", - "ui-kit/react/conversations", - "ui-kit/react/users", - "ui-kit/react/groups", - "ui-kit/react/group-members", - "ui-kit/react/message-header", - "ui-kit/react/message-list", - "ui-kit/react/message-composer", - "ui-kit/react/message-template", - "ui-kit/react/thread-header", - "ui-kit/react/incoming-call", - "ui-kit/react/outgoing-call", - "ui-kit/react/call-buttons", - "ui-kit/react/call-logs", - "ui-kit/react/search" - ] - }, - { - "group": "Reference", - "pages": ["ui-kit/react/methods", "ui-kit/react/events"] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react/custom-text-formatter-guide", - "ui-kit/react/mentions-formatter-guide", - "ui-kit/react/url-formatter-guide", - "ui-kit/react/shortcut-formatter-guide" - ] - }, - { - "group": "Migration Guide", - "pages": [ - "ui-kit/react/upgrading-from-v5", - "ui-kit/react/property-changes" + { + "group": "Theming", + "pages": [ + "ui-kit/react/theme", + "ui-kit/react/theme/color-resources", + "ui-kit/react/theme/message-bubble-styling", + "ui-kit/react/localize", + "ui-kit/react/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react/components-overview", + "ui-kit/react/conversations", + "ui-kit/react/users", + "ui-kit/react/groups", + "ui-kit/react/group-members", + "ui-kit/react/message-header", + "ui-kit/react/message-list", + "ui-kit/react/message-composer", + "ui-kit/react/message-template", + "ui-kit/react/thread-header", + "ui-kit/react/incoming-call", + "ui-kit/react/outgoing-call", + "ui-kit/react/call-buttons", + "ui-kit/react/call-logs", + "ui-kit/react/search", + "ui-kit/react/ai-assistant-chat" + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/react/methods", + "ui-kit/react/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react/guide-overview", + "ui-kit/react/guide-threaded-messages", + "ui-kit/react/guide-block-unblock-user", + "ui-kit/react/guide-new-chat", + "ui-kit/react/guide-message-privately", + "ui-kit/react/guide-search-messages", + "ui-kit/react/guide-call-log-details", + "ui-kit/react/guide-group-chat", + "ui-kit/react/custom-text-formatter-guide", + "ui-kit/react/mentions-formatter-guide", + "ui-kit/react/url-formatter-guide", + "ui-kit/react/shortcut-formatter-guide" + ] + }, + { + "group": "Migration Guide", + "pages": [ + "ui-kit/react/upgrading-from-v5" + ] + }, + "ui-kit/react/troubleshooting", + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" ] - }, - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" + } ] - } - ] - }, - { - "version": "v5", - "groups": [ + }, { - "group": " ", - "pages": [ - "ui-kit/react/v5/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/react/v5/integration", - "ui-kit/react/v5/integration/next-js" - ] - }, + "version": "v5", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ + "ui-kit/react/v5/overview", { - "group": "Chat", + "group": "Getting Started", "pages": [ - "ui-kit/react/v5/core-features", - "ui-kit/react/v5/extensions", - "ui-kit/react/v5/ai-features" + "ui-kit/react/v5/integration", + "ui-kit/react/v5/integration/next-js" ] }, - "ui-kit/react/v5/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react/v5/theme", - "ui-kit/react/v5/theme/color-resources", - "ui-kit/react/v5/theme/message-bubble-styling", - "ui-kit/react/v5/localize", - "ui-kit/react/v5/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/react/v5/components-overview", - "ui-kit/react/v5/conversations", - "ui-kit/react/v5/users", - "ui-kit/react/v5/groups", - "ui-kit/react/v5/group-members", - "ui-kit/react/v5/message-header", - "ui-kit/react/v5/message-list", - "ui-kit/react/v5/message-composer", - "ui-kit/react/v5/message-template", - "ui-kit/react/v5/threaded-message-preview", - "ui-kit/react/v5/incoming-call", - "ui-kit/react/v5/outgoing-call", - "ui-kit/react/v5/call-buttons", - "ui-kit/react/v5/call-logs" - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/react/v5/methods", - "ui-kit/react/v5/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react/v5/custom-text-formatter-guide", - "ui-kit/react/v5/mentions-formatter-guide", - "ui-kit/react/v5/url-formatter-guide", - "ui-kit/react/v5/shortcut-formatter-guide" - ] - }, - { - "group": "Migration Guide", - "pages": [ - "ui-kit/react/v5/upgrading-from-v4", - "ui-kit/react/v5/property-changes" - ] - }, - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" - ] - } - ] - }, - { - "version": "v4", - "groups": [ - { - "group": " ", - "pages": [ - "ui-kit/react/v4/overview", - "ui-kit/react/v4/getting-started", - { - "group": "Features", - "pages": [ { - "group": "Chat", + "group": "Features", "pages": [ - "ui-kit/react/v4/core-features", - "ui-kit/react/v4/extensions" + { + "group": "Chat", + "pages": [ + "ui-kit/react/v5/core-features", + "ui-kit/react/v5/extensions", + "ui-kit/react/v5/ai-features" + ] + }, + "ui-kit/react/v5/call-features" ] }, - "ui-kit/react/v4/call-features", - "ui-kit/react/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react/v4/theme", - "ui-kit/react/v4/localize", - "ui-kit/react/v4/sound-manager" + { + "group": "Theming", + "pages": [ + "ui-kit/react/v5/theme", + "ui-kit/react/v5/theme/color-resources", + "ui-kit/react/v5/theme/message-bubble-styling", + "ui-kit/react/v5/localize", + "ui-kit/react/v5/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react/v5/components-overview", + "ui-kit/react/v5/conversations", + "ui-kit/react/v5/users", + "ui-kit/react/v5/groups", + "ui-kit/react/v5/group-members", + "ui-kit/react/v5/message-header", + "ui-kit/react/v5/message-list", + "ui-kit/react/v5/message-composer", + "ui-kit/react/v5/message-template", + "ui-kit/react/v5/threaded-message-preview", + "ui-kit/react/v5/incoming-call", + "ui-kit/react/v5/outgoing-call", + "ui-kit/react/v5/call-buttons", + "ui-kit/react/v5/call-logs" + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/react/v5/methods", + "ui-kit/react/v5/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/react/v5/custom-text-formatter-guide", + "ui-kit/react/v5/mentions-formatter-guide", + "ui-kit/react/v5/url-formatter-guide", + "ui-kit/react/v5/shortcut-formatter-guide" + ] + }, + { + "group": "Migration Guide", + "pages": [ + "ui-kit/react/v5/upgrading-from-v4", + "ui-kit/react/v5/property-changes" + ] + }, + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" ] - }, + } + ] + }, + { + "version": "v4", + "groups": [ { - "group": "Components", + "group": " ", "pages": [ - "ui-kit/react/v4/components-overview", + "ui-kit/react/v4/overview", + "ui-kit/react/v4/getting-started", { - "group": "Conversations", + "group": "Features", "pages": [ - "ui-kit/react/v4/conversations", - "ui-kit/react/v4/conversations-with-messages", - "ui-kit/react/v4/contacts" + { + "group": "Chat", + "pages": [ + "ui-kit/react/v4/core-features", + "ui-kit/react/v4/extensions" + ] + }, + "ui-kit/react/v4/call-features", + "ui-kit/react/v4/ai-features" ] }, { - "group": "Users", + "group": "Theming", "pages": [ - "ui-kit/react/v4/users", - "ui-kit/react/v4/users-with-messages", - "ui-kit/react/v4/users-details" + "ui-kit/react/v4/theme", + "ui-kit/react/v4/localize", + "ui-kit/react/v4/sound-manager" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/react/v4/groups", - "ui-kit/react/v4/groups-with-messages", - "ui-kit/react/v4/create-group", - "ui-kit/react/v4/join-protected-group", - "ui-kit/react/v4/group-members", - "ui-kit/react/v4/group-add-members", - "ui-kit/react/v4/group-banned-members", - "ui-kit/react/v4/group-transfer-ownership", - "ui-kit/react/v4/group-details" + "ui-kit/react/v4/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/react/v4/conversations", + "ui-kit/react/v4/conversations-with-messages", + "ui-kit/react/v4/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/react/v4/users", + "ui-kit/react/v4/users-with-messages", + "ui-kit/react/v4/users-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/react/v4/groups", + "ui-kit/react/v4/groups-with-messages", + "ui-kit/react/v4/create-group", + "ui-kit/react/v4/join-protected-group", + "ui-kit/react/v4/group-members", + "ui-kit/react/v4/group-add-members", + "ui-kit/react/v4/group-banned-members", + "ui-kit/react/v4/group-transfer-ownership", + "ui-kit/react/v4/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/react/v4/messages", + "ui-kit/react/v4/message-header", + "ui-kit/react/v4/message-list", + "ui-kit/react/v4/message-template", + "ui-kit/react/v4/message-composer", + "ui-kit/react/v4/message-information", + "ui-kit/react/v4/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/react/v4/interactive-form-message", + "ui-kit/react/v4/interactive-form-bubble", + "ui-kit/react/v4/interactive-card-message", + "ui-kit/react/v4/interactive-card-bubble", + "ui-kit/react/v4/interactive-element-type", + "ui-kit/react/v4/interactive-action-entity", + "ui-kit/react/v4/interactive-custom-interactive-message", + "ui-kit/react/v4/interactive-button-element", + "ui-kit/react/v4/interactive-text-input-element", + "ui-kit/react/v4/interactive-label-element", + "ui-kit/react/v4/interactive-single-select-element", + "ui-kit/react/v4/interactive-radio-button-element", + "ui-kit/react/v4/interactive-checkbox-element", + "ui-kit/react/v4/interactive-dropdown-element", + "ui-kit/react/v4/interactive-scheduler-message", + "ui-kit/react/v4/interactive-scheduler-bubble", + "ui-kit/react/v4/interactive-date-time-picker-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/react/v4/call-overview", + "ui-kit/react/v4/incoming-call", + "ui-kit/react/v4/ongoing-call", + "ui-kit/react/v4/outgoing-call", + "ui-kit/react/v4/call-buttons", + "ui-kit/react/v4/call-logs", + "ui-kit/react/v4/call-log-details", + "ui-kit/react/v4/call-log-history", + "ui-kit/react/v4/call-log-recording", + "ui-kit/react/v4/call-log-participants", + "ui-kit/react/v4/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/react/v4/reaction", + "ui-kit/react/v4/reaction-list", + "ui-kit/react/v4/reaction-info", + "ui-kit/react/v4/user-member-wrapper" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/react/v4/avatar", + "ui-kit/react/v4/status-indicator", + "ui-kit/react/v4/badge", + "ui-kit/react/v4/receipt", + "ui-kit/react/v4/date", + "ui-kit/react/v4/text-bubble", + "ui-kit/react/v4/image-bubble", + "ui-kit/react/v4/file-bubble", + "ui-kit/react/v4/audio-bubble", + "ui-kit/react/v4/video-bubble", + "ui-kit/react/v4/message-bubble", + "ui-kit/react/v4/document-bubble", + "ui-kit/react/v4/message-input", + "ui-kit/react/v4/action-sheet", + "ui-kit/react/v4/media-recorder", + "ui-kit/react/v4/list-item", + "ui-kit/react/v4/confirm-dialog", + "ui-kit/react/v4/backdrop", + "ui-kit/react/v4/emoji-keyboard", + "ui-kit/react/v4/modal", + "ui-kit/react/v4/pop-over", + "ui-kit/react/v4/icon", + "ui-kit/react/v4/loader", + "ui-kit/react/v4/icon-button", + "ui-kit/react/v4/button-group", + "ui-kit/react/v4/label", + "ui-kit/react/v4/input", + "ui-kit/react/v4/search-input", + "ui-kit/react/v4/checkbox", + "ui-kit/react/v4/radio-button", + "ui-kit/react/v4/dropdown", + "ui-kit/react/v4/cometchat-quick-view", + "ui-kit/react/v4/singleselect", + "ui-kit/react/v4/list" + ] + } ] }, { - "group": "Messages", + "group": "Reference", "pages": [ - "ui-kit/react/v4/messages", - "ui-kit/react/v4/message-header", - "ui-kit/react/v4/message-list", - "ui-kit/react/v4/message-template", - "ui-kit/react/v4/message-composer", - "ui-kit/react/v4/message-information", - "ui-kit/react/v4/threaded-messages" + "ui-kit/react/v4/methods", + "ui-kit/react/v4/events" ] }, { - "group": "Interactive Messages", + "group": "Guides", "pages": [ - "ui-kit/react/v4/interactive-form-message", - "ui-kit/react/v4/interactive-form-bubble", - "ui-kit/react/v4/interactive-card-message", - "ui-kit/react/v4/interactive-card-bubble", - "ui-kit/react/v4/interactive-element-type", - "ui-kit/react/v4/interactive-action-entity", - "ui-kit/react/v4/interactive-custom-interactive-message", - "ui-kit/react/v4/interactive-button-element", - "ui-kit/react/v4/interactive-text-input-element", - "ui-kit/react/v4/interactive-label-element", - "ui-kit/react/v4/interactive-single-select-element", - "ui-kit/react/v4/interactive-radio-button-element", - "ui-kit/react/v4/interactive-checkbox-element", - "ui-kit/react/v4/interactive-dropdown-element", - "ui-kit/react/v4/interactive-scheduler-message", - "ui-kit/react/v4/interactive-scheduler-bubble", - "ui-kit/react/v4/interactive-date-time-picker-element" + "ui-kit/react/v4/multi-tab-chat-ui-guide", + "ui-kit/react/v4/next-js-integration-guide", + "ui-kit/react/v4/custom-text-formatter-guide", + "ui-kit/react/v4/mentions-formatter-guide", + "ui-kit/react/v4/url-formatter-guide", + "ui-kit/react/v4/shortcut-formatter-guide" ] }, { - "group": "Calls", + "group": "Migration Guide", "pages": [ - "ui-kit/react/v4/call-overview", - "ui-kit/react/v4/incoming-call", - "ui-kit/react/v4/ongoing-call", - "ui-kit/react/v4/outgoing-call", - "ui-kit/react/v4/call-buttons", - "ui-kit/react/v4/call-logs", - "ui-kit/react/v4/call-log-details", - "ui-kit/react/v4/call-log-history", - "ui-kit/react/v4/call-log-recording", - "ui-kit/react/v4/call-log-participants", - "ui-kit/react/v4/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/react/v4/reaction", - "ui-kit/react/v4/reaction-list", - "ui-kit/react/v4/reaction-info", - "ui-kit/react/v4/user-member-wrapper" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/react/v4/avatar", - "ui-kit/react/v4/status-indicator", - "ui-kit/react/v4/badge", - "ui-kit/react/v4/receipt", - "ui-kit/react/v4/date", - "ui-kit/react/v4/text-bubble", - "ui-kit/react/v4/image-bubble", - "ui-kit/react/v4/file-bubble", - "ui-kit/react/v4/audio-bubble", - "ui-kit/react/v4/video-bubble", - "ui-kit/react/v4/message-bubble", - "ui-kit/react/v4/document-bubble", - "ui-kit/react/v4/message-input", - "ui-kit/react/v4/action-sheet", - "ui-kit/react/v4/media-recorder", - "ui-kit/react/v4/list-item", - "ui-kit/react/v4/confirm-dialog", - "ui-kit/react/v4/backdrop", - "ui-kit/react/v4/emoji-keyboard", - "ui-kit/react/v4/modal", - "ui-kit/react/v4/pop-over", - "ui-kit/react/v4/icon", - "ui-kit/react/v4/loader", - "ui-kit/react/v4/icon-button", - "ui-kit/react/v4/button-group", - "ui-kit/react/v4/label", - "ui-kit/react/v4/input", - "ui-kit/react/v4/search-input", - "ui-kit/react/v4/checkbox", - "ui-kit/react/v4/radio-button", - "ui-kit/react/v4/dropdown", - "ui-kit/react/v4/cometchat-quick-view", - "ui-kit/react/v4/singleselect", - "ui-kit/react/v4/list" + "ui-kit/react/v4/upgrade-to-v5", + "ui-kit/react/v4/property-changes" ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/react/v4/methods", - "ui-kit/react/v4/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react/v4/multi-tab-chat-ui-guide", - "ui-kit/react/v4/next-js-integration-guide", - "ui-kit/react/v4/custom-text-formatter-guide", - "ui-kit/react/v4/mentions-formatter-guide", - "ui-kit/react/v4/url-formatter-guide", - "ui-kit/react/v4/shortcut-formatter-guide" - ] - }, - { - "group": "Migration Guide", - "pages": [ - "ui-kit/react/v4/upgrade-to-v5", - "ui-kit/react/v4/property-changes" - ] - }, - "ui-kit/react/link/sample", - "ui-kit/react/link/changelog", - "ui-kit/react/link/figma" - ] - } - ] - }, - { - "version": "v3", - "groups": [ - { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react/v3/overview", - "ui-kit/react/v3/key-concepts" + }, + "ui-kit/react/link/sample", + "ui-kit/react/link/changelog", + "ui-kit/react/link/figma" ] - }, - "ui-kit/react/v3/ui-components", - "ui-kit/react/v3/customize", - "ui-kit/react/v3/nextjs", - "ui-kit/react/v3/javascript-3-0-overview", - "ui-kit/react/v3/extensions-overview" + } ] - } - ] - }, - { - "version": "v2", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v3", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/react/v2/overview", - "ui-kit/react/v2/key-concepts", - "ui-kit/react/v2/message-structure-and-hierarchy" + { + "group": "Overview", + "pages": [ + "ui-kit/react/v3/overview", + "ui-kit/react/v3/key-concepts" + ] + }, + "ui-kit/react/v3/ui-components", + "ui-kit/react/v3/customize", + "ui-kit/react/v3/nextjs", + "ui-kit/react/v3/javascript-3-0-overview", + "ui-kit/react/v3/extensions-overview" ] - }, - "ui-kit/react/v2/ui-components", - "ui-kit/react/v2/customize-ui-kit", - "ui-kit/react/v2/integration-with-nextjs", - "ui-kit/react/v2/javascript-2-0-overview", - "ui-kit/react/v3/extensions-overview" + } ] - } - ] - } - ] - }, - { - "dropdown": "React Native", - "icon": "react", - "versions": [ - { - "version": "v5‎", - "groups": [ + }, { - "group": " ", - "pages": [ - "ui-kit/react-native/overview", - "ui-kit/react-native/getting-started", + "version": "v2", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ { - "group": "Chat", + "group": "Overview", "pages": [ - "ui-kit/react-native/core-features", - "ui-kit/react-native/extensions" + "ui-kit/react/v2/overview", + "ui-kit/react/v2/key-concepts", + "ui-kit/react/v2/message-structure-and-hierarchy" ] }, - "ui-kit/react-native/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react-native/theme", - "ui-kit/react-native/colors", - "ui-kit/react-native/component-styling", - "ui-kit/react-native/message-bubble-styling", - "ui-kit/react-native/localize", - "ui-kit/react-native/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/react-native/components-overview", - "ui-kit/react-native/conversations", - "ui-kit/react-native/users", - "ui-kit/react-native/groups", - "ui-kit/react-native/group-members", - "ui-kit/react-native/message-header", - "ui-kit/react-native/message-list", - "ui-kit/react-native/message-composer", - "ui-kit/react-native/threaded-messages-header", - "ui-kit/react-native/incoming-call", - "ui-kit/react-native/outgoing-call", - "ui-kit/react-native/call-buttons", - "ui-kit/react-native/call-logs" - ] - }, - { - "group": "References", - "pages": [ - "ui-kit/react-native/methods", - "ui-kit/react-native/events" - ] - }, - { - "group": "Advanced", - "pages": [ - "ui-kit/react-native/multi-tab-chat-ui-guide", - "ui-kit/react-native/expo-integration-guide", - "ui-kit/react-native/apple-privacy-manifest-guide", - "ui-kit/react-native/mentions-formatter-guide", - "ui-kit/react-native/shortcut-formatter-guide" + "ui-kit/react/v2/ui-components", + "ui-kit/react/v2/customize-ui-kit", + "ui-kit/react/v2/integration-with-nextjs", + "ui-kit/react/v2/javascript-2-0-overview", + "ui-kit/react/v3/extensions-overview" ] - }, - "ui-kit/react-native/link/sample", - "ui-kit/react-native/link/changelog" + } ] } ] }, { - "version": "v4‎", - "groups": [ + "dropdown": "React Native", + "icon": "/images/icons/react.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/react-native/v4/overview", - "ui-kit/react-native/v4/getting-started", + "version": "v5\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ + "ui-kit/react-native/overview", { - "group": "Chat", + "group": "Getting Started", "pages": [ - "ui-kit/react-native/v4/core-features", - "ui-kit/react-native/v4/extensions" + { + "group": "React Native CLI", + "pages": [ + "ui-kit/react-native/react-native-cli-integration", + "ui-kit/react-native/react-native-conversation", + "ui-kit/react-native/react-native-one-to-one-chat", + "ui-kit/react-native/react-native-tab-based-chat" + ] + }, + { + "group": "Expo", + "pages": [ + "ui-kit/react-native/expo-integration", + "ui-kit/react-native/expo-conversation", + "ui-kit/react-native/expo-one-to-one-chat", + "ui-kit/react-native/expo-tab-based-chat" + ] + } ] }, - "ui-kit/react-native/v4/call-features", - "ui-kit/react-native/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/react-native/v4/theme", - "ui-kit/react-native/v4/localize", - "ui-kit/react-native/v4/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/react-native/v4/components-overview", { - "group": "Conversations", + "group": "Features", "pages": [ - "ui-kit/react-native/v4/conversations", - "ui-kit/react-native/v4/conversations-with-messages", - "ui-kit/react-native/v4/contacts" + { + "group": "Chat", + "pages": [ + "ui-kit/react-native/core-features", + "ui-kit/react-native/extensions" + ] + }, + "ui-kit/react-native/call-features" ] }, { - "group": "Users", + "group": "Theming", "pages": [ - "ui-kit/react-native/v4/users", - "ui-kit/react-native/v4/users-with-messages", - "ui-kit/react-native/v4/user-details" + "ui-kit/react-native/theme", + "ui-kit/react-native/colors", + "ui-kit/react-native/component-styling", + "ui-kit/react-native/message-bubble-styling", + "ui-kit/react-native/localize", + "ui-kit/react-native/sound-manager" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/react-native/v4/groups", - "ui-kit/react-native/v4/groups-with-messages", - "ui-kit/react-native/v4/create-group", - "ui-kit/react-native/v4/join-protected-group", - "ui-kit/react-native/v4/group-members", - "ui-kit/react-native/v4/group-add-members", - "ui-kit/react-native/v4/group-banned-members", - "ui-kit/react-native/v4/group-transfer-ownership", - "ui-kit/react-native/v4/group-details" + "ui-kit/react-native/components-overview", + "ui-kit/react-native/conversations", + "ui-kit/react-native/users", + "ui-kit/react-native/groups", + "ui-kit/react-native/group-members", + "ui-kit/react-native/message-header", + "ui-kit/react-native/message-list", + "ui-kit/react-native/message-composer", + "ui-kit/react-native/threaded-messages-header", + "ui-kit/react-native/incoming-call", + "ui-kit/react-native/outgoing-call", + "ui-kit/react-native/call-buttons", + "ui-kit/react-native/call-logs", + "ui-kit/react-native/ai-assistant-chat-history" ] }, { - "group": "Messages", + "group": "Reference", "pages": [ - "ui-kit/react-native/v4/messages", - "ui-kit/react-native/v4/message-header", - "ui-kit/react-native/v4/message-list", - "ui-kit/react-native/v4/message-template", - "ui-kit/react-native/v4/message-composer", - "ui-kit/react-native/v4/message-information", - "ui-kit/react-native/v4/threaded-messages" + "ui-kit/react-native/methods", + "ui-kit/react-native/events" ] }, { - "group": "Interactive Messages", + "group": "Guides", "pages": [ - "ui-kit/react-native/v4/interactive-form-bubble", - "ui-kit/react-native/v4/interactive-form-message", - "ui-kit/react-native/v4/interactive-card-bubble", - "ui-kit/react-native/v4/interactive-card-message", - "ui-kit/react-native/v4/interactive-element-entity", - "ui-kit/react-native/v4/interactive-action-entity", - "ui-kit/react-native/v4/interactive-custom-interactive-message", - "ui-kit/react-native/v4/interactive-button-element", - "ui-kit/react-native/v4/interactive-textinput-element", - "ui-kit/react-native/v4/interactive-label-element", - "ui-kit/react-native/v4/interactive-single-select-element", - "ui-kit/react-native/v4/interactive-radio-button-element", - "ui-kit/react-native/v4/interactive-checkbox-element", - "ui-kit/react-native/v4/interactive-dropdown-element" + "ui-kit/react-native/guide-overview", + "ui-kit/react-native/guide-ai-agent", + "ui-kit/react-native/guide-new-chat", + "ui-kit/react-native/guide-group-chat", + "ui-kit/react-native/guide-threaded-messages", + "ui-kit/react-native/guide-search-messages", + "ui-kit/react-native/guide-block-unblock-user", + "ui-kit/react-native/custom-text-formatter-guide", + "ui-kit/react-native/mentions-formatter-guide", + "ui-kit/react-native/url-formatter-guide", + "ui-kit/react-native/shortcut-formatter-guide", + "ui-kit/react-native/apple-privacy-manifest-guide" ] }, { - "group": "Calls", + "group": "Migration Guide", + "pages": [ + "ui-kit/react-native/upgrading-from-v4" + ] + }, + "ui-kit/react-native/troubleshooting", + "ui-kit/react-native/link/sample", + "ui-kit/react-native/link/changelog" + ] + } + ] + }, + { + "version": "v4\u200e", + "groups": [ + { + "group": " ", + "pages": [ + "ui-kit/react-native/v4/overview", + "ui-kit/react-native/v4/getting-started", + { + "group": "Features", + "pages": [ + { + "group": "Chat", + "pages": [ + "ui-kit/react-native/v4/core-features", + "ui-kit/react-native/v4/extensions" + ] + }, + "ui-kit/react-native/v4/call-features", + "ui-kit/react-native/v4/ai-features" + ] + }, + { + "group": "Theming", "pages": [ - "ui-kit/react-native/v4/call-overview", - "ui-kit/react-native/v4/incoming-call", - "ui-kit/react-native/v4/outgoing-call", - "ui-kit/react-native/v4/ongoing-call", - "ui-kit/react-native/v4/call-buttons", - "ui-kit/react-native/v4/call-logs", - "ui-kit/react-native/v4/call-log-history", - "ui-kit/react-native/v4/call-log-recording", - "ui-kit/react-native/v4/call-log-participants", - "ui-kit/react-native/v4/call-log-details", - "ui-kit/react-native/v4/call-log-with-details" + "ui-kit/react-native/v4/theme", + "ui-kit/react-native/v4/localize", + "ui-kit/react-native/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/react-native/v4/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/react-native/v4/conversations", + "ui-kit/react-native/v4/conversations-with-messages", + "ui-kit/react-native/v4/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/react-native/v4/users", + "ui-kit/react-native/v4/users-with-messages", + "ui-kit/react-native/v4/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/react-native/v4/groups", + "ui-kit/react-native/v4/groups-with-messages", + "ui-kit/react-native/v4/create-group", + "ui-kit/react-native/v4/join-protected-group", + "ui-kit/react-native/v4/group-members", + "ui-kit/react-native/v4/group-add-members", + "ui-kit/react-native/v4/group-banned-members", + "ui-kit/react-native/v4/group-transfer-ownership", + "ui-kit/react-native/v4/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/react-native/v4/messages", + "ui-kit/react-native/v4/message-header", + "ui-kit/react-native/v4/message-list", + "ui-kit/react-native/v4/message-template", + "ui-kit/react-native/v4/message-composer", + "ui-kit/react-native/v4/message-information", + "ui-kit/react-native/v4/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/react-native/v4/interactive-form-bubble", + "ui-kit/react-native/v4/interactive-form-message", + "ui-kit/react-native/v4/interactive-card-bubble", + "ui-kit/react-native/v4/interactive-card-message", + "ui-kit/react-native/v4/interactive-element-entity", + "ui-kit/react-native/v4/interactive-action-entity", + "ui-kit/react-native/v4/interactive-custom-interactive-message", + "ui-kit/react-native/v4/interactive-button-element", + "ui-kit/react-native/v4/interactive-textinput-element", + "ui-kit/react-native/v4/interactive-label-element", + "ui-kit/react-native/v4/interactive-single-select-element", + "ui-kit/react-native/v4/interactive-radio-button-element", + "ui-kit/react-native/v4/interactive-checkbox-element", + "ui-kit/react-native/v4/interactive-dropdown-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/react-native/v4/call-overview", + "ui-kit/react-native/v4/incoming-call", + "ui-kit/react-native/v4/outgoing-call", + "ui-kit/react-native/v4/ongoing-call", + "ui-kit/react-native/v4/call-buttons", + "ui-kit/react-native/v4/call-logs", + "ui-kit/react-native/v4/call-log-history", + "ui-kit/react-native/v4/call-log-recording", + "ui-kit/react-native/v4/call-log-participants", + "ui-kit/react-native/v4/call-log-details", + "ui-kit/react-native/v4/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/react-native/v4/reaction", + "ui-kit/react-native/v4/reaction-list", + "ui-kit/react-native/v4/quick-reactions" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/react-native/v4/avatar", + "ui-kit/react-native/v4/status-indicator", + "ui-kit/react-native/v4/badge", + "ui-kit/react-native/v4/receipt", + "ui-kit/react-native/v4/date", + "ui-kit/react-native/v4/text-bubble", + "ui-kit/react-native/v4/image-bubble", + "ui-kit/react-native/v4/file-bubble", + "ui-kit/react-native/v4/audio-bubble", + "ui-kit/react-native/v4/video-bubble", + "ui-kit/react-native/v4/message-bubble", + "ui-kit/react-native/v4/media-recorder", + "ui-kit/react-native/v4/list-item", + "ui-kit/react-native/v4/label-alignment" + ] + } ] }, { - "group": "Extras", + "group": "References", "pages": [ - "ui-kit/react-native/v4/reaction", - "ui-kit/react-native/v4/reaction-list", - "ui-kit/react-native/v4/quick-reactions" + "ui-kit/react-native/v4/methods", + "ui-kit/react-native/v4/events" ] }, { - "group": "Base Components", + "group": "Guides", "pages": [ - "ui-kit/react-native/v4/avatar", - "ui-kit/react-native/v4/status-indicator", - "ui-kit/react-native/v4/badge", - "ui-kit/react-native/v4/receipt", - "ui-kit/react-native/v4/date", - "ui-kit/react-native/v4/text-bubble", - "ui-kit/react-native/v4/image-bubble", - "ui-kit/react-native/v4/file-bubble", - "ui-kit/react-native/v4/audio-bubble", - "ui-kit/react-native/v4/video-bubble", - "ui-kit/react-native/v4/message-bubble", - "ui-kit/react-native/v4/media-recorder", - "ui-kit/react-native/v4/list-item", - "ui-kit/react-native/v4/label-alignment" + "ui-kit/react-native/v4/multi-tab-chat-ui-guide", + "ui-kit/react-native/v4/expo-integration-guide", + "ui-kit/react-native/v4/apple-privacy-manifest-guide", + "ui-kit/react-native/v4/mentions-formatter-guide", + "ui-kit/react-native/v4/shortcut-formatter-guide" ] - } + }, + "ui-kit/react-native/v4/link/sample", + "ui-kit/react-native/link/changelog" ] - }, + } + ] + }, + { + "version": "v3\u200e", + "groups": [ { - "group": "References", + "group": " ", "pages": [ - "ui-kit/react-native/v4/methods", - "ui-kit/react-native/v4/events" + { + "group": "Overview", + "pages": [ + "ui-kit/react-native/v3/overview", + "ui-kit/react-native/v3/key-concepts" + ] + }, + "ui-kit/react-native/v3/ui-components", + "ui-kit/react-native/v3/customize-ui-kit", + "ui-kit/react-native/v3/link/sdk", + "ui-kit/react-native/v3/link/extension", + "ui-kit/react-native/v3/link/version" ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/react-native/v4/multi-tab-chat-ui-guide", - "ui-kit/react-native/v4/expo-integration-guide", - "ui-kit/react-native/v4/apple-privacy-manifest-guide", - "ui-kit/react-native/v4/mentions-formatter-guide", - "ui-kit/react-native/v4/shortcut-formatter-guide" - ] - }, - "ui-kit/react-native/v4/link/sample", - "ui-kit/react-native/link/changelog" - ] - } - ] - }, - { - "version": "v3‎", - "groups": [ - { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react-native/v3/overview", - "ui-kit/react-native/v3/key-concepts" - ] - }, - "ui-kit/react-native/v3/ui-components", - "ui-kit/react-native/v3/customize-ui-kit", - "ui-kit/react-native/v3/link/sdk", - "ui-kit/react-native/v3/link/extension", - "ui-kit/react-native/v3/link/version" - ] - } - ] - }, - { - "version": "v2‎", - "groups": [ - { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/react-native/v2/overview", - "ui-kit/react-native/v2/key-concepts", - "ui-kit/react-native/v2/message-structure-and-hierarchy" - ] - }, - "ui-kit/react-native/v2/ui-components", - "ui-kit/react-native/v2/customize-ui-kit", - "ui-kit/react-native/v3/link/sdk", - "ui-kit/react-native/v3/link/extension" + } ] - } - ] - } - ] - }, - { - "dropdown": "iOS", - "icon": "swift", - "versions": [ - { - "version": "v5‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - "ui-kit/ios/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/ios/getting-started", - "ui-kit/ios/ios-conversation", - "ui-kit/ios/ios-one-to-one-chat", - "ui-kit/ios/ios-tab-based-chat" - ] - }, + "version": "v2\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ { - "group": "Chat", + "group": "Overview", "pages": [ - "ui-kit/ios/core-features", - "ui-kit/ios/extensions" + "ui-kit/react-native/v2/overview", + "ui-kit/react-native/v2/key-concepts", + "ui-kit/react-native/v2/message-structure-and-hierarchy" ] }, - "ui-kit/ios/call-features", - "ui-kit/ios/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/ios/theme-introduction", - "ui-kit/ios/color-resources", - "ui-kit/ios/component-styling", - "ui-kit/ios/message-bubble-styling", - "ui-kit/ios/localize", - "ui-kit/ios/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/ios/components-overview", - "ui-kit/ios/conversations", - "ui-kit/ios/users", - "ui-kit/ios/groups", - "ui-kit/ios/group-members", - "ui-kit/ios/message-header", - "ui-kit/ios/message-list", - "ui-kit/ios/message-composer", - "ui-kit/ios/threaded-messages-header", - "ui-kit/ios/incoming-call", - "ui-kit/ios/outgoing-call", - "ui-kit/ios/ongoing-call", - "ui-kit/ios/call-buttons", - "ui-kit/ios/call-logs" - ] - }, - { - "group": "Reference", - "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] - }, - { - "group": "Advanced", - "pages": [ - "ui-kit/ios/shortcut-formatter-guide", - "ui-kit/ios/mentions-formatter-guide", - "ui-kit/ios/message-template" + "ui-kit/react-native/v2/ui-components", + "ui-kit/react-native/v2/customize-ui-kit", + "ui-kit/react-native/v3/link/sdk", + "ui-kit/react-native/v3/link/extension" ] - }, - "ui-kit/ios/link/sample", - "ui-kit/ios/link/figma", - "ui-kit/ios/link/changelog" + } ] } ] }, { - "version": "v4‎‎", - "groups": [ + "dropdown": "iOS", + "icon": "/images/icons/swift.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/ios/v4/overview", - "ui-kit/ios/v4/getting-started", + "version": "v5\u200e\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ + "ui-kit/ios/overview", { - "group": "Chat", + "group": "Getting Started", "pages": [ - "ui-kit/ios/v4/core-features", - "ui-kit/ios/v4/extensions" + "ui-kit/ios/getting-started", + "ui-kit/ios/ios-conversation", + "ui-kit/ios/ios-one-to-one-chat", + "ui-kit/ios/ios-tab-based-chat", + "ui-kit/ios/calling-integration" ] }, - "ui-kit/ios/v4/call-features", - "ui-kit/ios/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/ios/v4/theme", - "ui-kit/ios/v4/localize", - "ui-kit/ios/v4/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/ios/v4/components-overview", { - "group": "Conversations", + "group": "Features", "pages": [ - "ui-kit/ios/v4/conversations", - "ui-kit/ios/v4/conversations-with-messages", - "ui-kit/ios/v4/contacts" + { + "group": "Chat", + "pages": [ + "ui-kit/ios/core-features", + "ui-kit/ios/extensions", + "ui-kit/ios/ai-features" + ] + }, + "ui-kit/ios/call-features" ] }, { - "group": "Users", + "group": "Theming", "pages": [ - "ui-kit/ios/v4/users", - "ui-kit/ios/v4/users-with-messages", - "ui-kit/ios/v4/user-details" + "ui-kit/ios/theme-introduction", + "ui-kit/ios/color-resources", + "ui-kit/ios/component-styling", + "ui-kit/ios/message-bubble-styling", + "ui-kit/ios/localize", + "ui-kit/ios/sound-manager" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/ios/v4/groups", - "ui-kit/ios/v4/groups-with-messages", - "ui-kit/ios/v4/create-group", - "ui-kit/ios/v4/join-protected-group", - "ui-kit/ios/v4/group-members", - "ui-kit/ios/v4/group-add-members", - "ui-kit/ios/v4/group-banned-members", - "ui-kit/ios/v4/group-transfer-ownership", - "ui-kit/ios/v4/group-details" + "ui-kit/ios/components-overview", + "ui-kit/ios/conversations", + "ui-kit/ios/users", + "ui-kit/ios/groups", + "ui-kit/ios/group-members", + "ui-kit/ios/message-header", + "ui-kit/ios/message-list", + "ui-kit/ios/message-composer", + "ui-kit/ios/threaded-messages-header", + "ui-kit/ios/incoming-call", + "ui-kit/ios/outgoing-call", + "ui-kit/ios/ongoing-call", + "ui-kit/ios/call-buttons", + "ui-kit/ios/call-logs", + "ui-kit/ios/ai-assistant-chat-history", + "ui-kit/ios/search" ] }, { - "group": "Messages", - "pages": [ - "ui-kit/ios/v4/messages", - "ui-kit/ios/v4/message-header", - "ui-kit/ios/v4/message-list", - "ui-kit/ios/v4/message-template", - "ui-kit/ios/v4/message-composer", - "ui-kit/ios/v4/message-information", - "ui-kit/ios/v4/threaded-messages" - ] + "group": "Reference", + "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] }, { - "group": "Interactive Messages", + "group": "Advanced", "pages": [ - "ui-kit/ios/v4/interactive-form-bubble", - "ui-kit/ios/v4/interactive-form-message", - "ui-kit/ios/v4/interactive-card-bubble", - "ui-kit/ios/v4/interactive-card-message", - "ui-kit/ios/v4/interactive-element-entity", - "ui-kit/ios/v4/interactive-action-entity", - "ui-kit/ios/v4/interactive-button-element", - "ui-kit/ios/v4/interactive-label-element", - "ui-kit/ios/v4/interactive-radio-button-element", - "ui-kit/ios/v4/interactive-check-box-element", - "ui-kit/ios/v4/interactive-textinput-element", - "ui-kit/ios/v4/interactive-scheduler-message", - "ui-kit/ios/v4/interactive-scheduler-bubble", - "ui-kit/ios/v4/interactive-date-time-picker-element", - "ui-kit/ios/v4/interactive-dropdown-element" + "ui-kit/ios/shortcut-formatter-guide", + "ui-kit/ios/mentions-formatter-guide", + "ui-kit/ios/message-template" ] }, { - "group": "Calls", + "group": "Guides", "pages": [ - "ui-kit/ios/v4/call-overview", - "ui-kit/ios/v4/incoming-call", - "ui-kit/ios/v4/ongoing-call", - "ui-kit/ios/v4/outgoing-call", - "ui-kit/ios/v4/call-buttons", - "ui-kit/ios/v4/call-logs", - "ui-kit/ios/v4/call-log-details", - "ui-kit/ios/v4/call-log-history", - "ui-kit/ios/v4/call-log-recording", - "ui-kit/ios/v4/call-log-participants", - "ui-kit/ios/v4/call-log-with-details" + "ui-kit/ios/guide-overview", + "ui-kit/ios/guide-threaded-messages", + "ui-kit/ios/guide-block-unblock-user", + "ui-kit/ios/guide-new-chat", + "ui-kit/ios/guide-message-privately", + "ui-kit/ios/guide-call-log-details", + "ui-kit/ios/guide-group-chat", + "ui-kit/ios/guide-group-ownership", + "ui-kit/ios/guide-ai-agent" ] }, { - "group": "Extras", + "group": "Migration Guide", "pages": [ - "ui-kit/ios/v4/reactions", - "ui-kit/ios/v4/quick-reactions", - "ui-kit/ios/v4/reactions-list" + "ui-kit/ios/upgrading-from-v4" ] }, - { - "group": "Base-Components", - "pages": [ - "ui-kit/ios/v4/avatar", - "ui-kit/ios/v4/status-indicator", - "ui-kit/ios/v4/badge", - "ui-kit/ios/v4/receipt", - "ui-kit/ios/v4/date", - "ui-kit/ios/v4/text-bubble", - "ui-kit/ios/v4/image-bubble", - "ui-kit/ios/v4/file-bubble", - "ui-kit/ios/v4/audio-bubble", - "ui-kit/ios/v4/video-bubble", - "ui-kit/ios/v4/message-bubble", - "ui-kit/ios/v4/message-input", - "ui-kit/ios/v4/action-sheet", - "ui-kit/ios/v4/media-recorder", - "ui-kit/ios/v4/list-item", - "ui-kit/ios/v4/list-base" - ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/ios/v4/methods", - "ui-kit/ios/v4/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/ios/v4/multi-tab-chat-ui-guide", - "ui-kit/ios/v4/mentions-formatter-guide", - "ui-kit/ios/v4/shortcut-formatter-guide" + "ui-kit/ios/troubleshooting", + "ui-kit/ios/link/sample", + "ui-kit/ios/link/figma", + "ui-kit/ios/link/changelog" ] - }, - "ui-kit/ios/v4/link/sample", - "ui-kit/ios/link/changelog" + } ] - } - ] - }, - { - "version": "v3‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v4\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/ios/v3/overview", - "ui-kit/ios/v3/key-concepts" + "ui-kit/ios/v4/overview", + "ui-kit/ios/v4/getting-started", + { + "group": "Features", + "pages": [ + { + "group": "Chat", + "pages": [ + "ui-kit/ios/v4/core-features", + "ui-kit/ios/v4/extensions" + ] + }, + "ui-kit/ios/v4/call-features", + "ui-kit/ios/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/ios/v4/theme", + "ui-kit/ios/v4/localize", + "ui-kit/ios/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/ios/v4/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/ios/v4/conversations", + "ui-kit/ios/v4/conversations-with-messages", + "ui-kit/ios/v4/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/ios/v4/users", + "ui-kit/ios/v4/users-with-messages", + "ui-kit/ios/v4/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/ios/v4/groups", + "ui-kit/ios/v4/groups-with-messages", + "ui-kit/ios/v4/create-group", + "ui-kit/ios/v4/join-protected-group", + "ui-kit/ios/v4/group-members", + "ui-kit/ios/v4/group-add-members", + "ui-kit/ios/v4/group-banned-members", + "ui-kit/ios/v4/group-transfer-ownership", + "ui-kit/ios/v4/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/ios/v4/messages", + "ui-kit/ios/v4/message-header", + "ui-kit/ios/v4/message-list", + "ui-kit/ios/v4/message-template", + "ui-kit/ios/v4/message-composer", + "ui-kit/ios/v4/message-information", + "ui-kit/ios/v4/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/ios/v4/interactive-form-bubble", + "ui-kit/ios/v4/interactive-form-message", + "ui-kit/ios/v4/interactive-card-bubble", + "ui-kit/ios/v4/interactive-card-message", + "ui-kit/ios/v4/interactive-element-entity", + "ui-kit/ios/v4/interactive-action-entity", + "ui-kit/ios/v4/interactive-button-element", + "ui-kit/ios/v4/interactive-label-element", + "ui-kit/ios/v4/interactive-radio-button-element", + "ui-kit/ios/v4/interactive-check-box-element", + "ui-kit/ios/v4/interactive-textinput-element", + "ui-kit/ios/v4/interactive-scheduler-message", + "ui-kit/ios/v4/interactive-scheduler-bubble", + "ui-kit/ios/v4/interactive-date-time-picker-element", + "ui-kit/ios/v4/interactive-dropdown-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/ios/v4/call-overview", + "ui-kit/ios/v4/incoming-call", + "ui-kit/ios/v4/ongoing-call", + "ui-kit/ios/v4/outgoing-call", + "ui-kit/ios/v4/call-buttons", + "ui-kit/ios/v4/call-logs", + "ui-kit/ios/v4/call-log-details", + "ui-kit/ios/v4/call-log-history", + "ui-kit/ios/v4/call-log-recording", + "ui-kit/ios/v4/call-log-participants", + "ui-kit/ios/v4/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/ios/v4/reactions", + "ui-kit/ios/v4/quick-reactions", + "ui-kit/ios/v4/reactions-list" + ] + }, + { + "group": "Base-Components", + "pages": [ + "ui-kit/ios/v4/avatar", + "ui-kit/ios/v4/status-indicator", + "ui-kit/ios/v4/badge", + "ui-kit/ios/v4/receipt", + "ui-kit/ios/v4/date", + "ui-kit/ios/v4/text-bubble", + "ui-kit/ios/v4/image-bubble", + "ui-kit/ios/v4/file-bubble", + "ui-kit/ios/v4/audio-bubble", + "ui-kit/ios/v4/video-bubble", + "ui-kit/ios/v4/message-bubble", + "ui-kit/ios/v4/message-input", + "ui-kit/ios/v4/action-sheet", + "ui-kit/ios/v4/media-recorder", + "ui-kit/ios/v4/list-item", + "ui-kit/ios/v4/list-base" + ] + } + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/ios/v4/methods", + "ui-kit/ios/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/ios/v4/multi-tab-chat-ui-guide", + "ui-kit/ios/v4/mentions-formatter-guide", + "ui-kit/ios/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/ios/v4/link/sample", + "ui-kit/ios/link/changelog" ] - }, - "ui-kit/ios/v3/ios-ui-components", - "ui-kit/ios/v3/customize-ui-kit", - "ui-kit/ios/v3/ios-3-0-overview", - "ui-kit/ios/v3/link/extension", - "ui-kit/ios/v3/link/version" + } ] - } - ] - }, - { - "version": "v2‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v3\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/ios/v2/overview", - "ui-kit/ios/v2/key-concepts", - "ui-kit/ios/v2/message-structure-and-hierarchy" + { + "group": "Overview", + "pages": [ + "ui-kit/ios/v3/overview", + "ui-kit/ios/v3/key-concepts" + ] + }, + "ui-kit/ios/v3/ios-ui-components", + "ui-kit/ios/v3/customize-ui-kit", + "ui-kit/ios/v3/ios-3-0-overview", + "ui-kit/ios/v3/link/extension", + "ui-kit/ios/v3/link/version" ] - }, - "ui-kit/ios/v2/ui-components", - "ui-kit/ios/v2/ios-customize-ui-kit", - "ui-kit/ios/v2/ios-2-0-overview", - "ui-kit/ios/v3/link/extension" + } ] - } - ] - } - ] - }, - { - "dropdown": "Android", - "icon": "android", - "versions": [ - { - "version": "v5‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - "ui-kit/android/overview", - { - "group": "Getting Started", - "pages": [ - "ui-kit/android/getting-started", - "ui-kit/android/android-conversation", - "ui-kit/android/android-one-to-one-chat", - "ui-kit/android/android-tab-based-chat" - ] - }, + "version": "v2\u200e\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ { - "group": "Chat", + "group": "Overview", "pages": [ - "ui-kit/android/core-features", - "ui-kit/android/extensions", - "ui-kit/android/ai-features" + "ui-kit/ios/v2/overview", + "ui-kit/ios/v2/key-concepts", + "ui-kit/ios/v2/message-structure-and-hierarchy" ] }, - "ui-kit/android/call-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/android/theme-introduction", - "ui-kit/android/color-resources", - "ui-kit/android/component-styling", - "ui-kit/android/message-bubble-styling", - "ui-kit/android/localize", - "ui-kit/android/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/android/components-overview", - "ui-kit/android/conversations", - "ui-kit/android/users", - "ui-kit/android/groups", - "ui-kit/android/group-members", - "ui-kit/android/message-header", - "ui-kit/android/message-list", - "ui-kit/android/message-composer", - "ui-kit/android/threaded-messages-header", - "ui-kit/android/incoming-call", - "ui-kit/android/outgoing-call", - "ui-kit/android/call-buttons", - "ui-kit/android/call-logs" - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/android/methods", - "ui-kit/android/events" - ] - }, - { - "group": "Advanced", - "pages": [ - "ui-kit/android/message-template", - "ui-kit/android/mentions-formatter-guide", - "ui-kit/android/shortcut-formatter-guide" + "ui-kit/ios/v2/ui-components", + "ui-kit/ios/v2/ios-customize-ui-kit", + "ui-kit/ios/v2/ios-2-0-overview", + "ui-kit/ios/v3/link/extension" ] - }, - "ui-kit/android/link/sample", - "ui-kit/android/link/figma", - "ui-kit/android/link/changelog" + } ] } ] }, { - "version": "v4‎‎‎", - "groups": [ + "dropdown": "Android", + "icon": "/images/icons/android.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/android/v4/overview", - "ui-kit/android/v4/getting-started", + "version": "v5\u200e\u200e\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ + "ui-kit/android/overview", { - "group": "Chat", + "group": "Getting Started", "pages": [ - "ui-kit/android/v4/core-features", - "ui-kit/android/v4/extensions" + "ui-kit/android/getting-started", + "ui-kit/android/android-conversation", + "ui-kit/android/android-one-to-one-chat", + "ui-kit/android/android-tab-based-chat", + "ui-kit/android/calling-integration" ] }, - "ui-kit/android/v4/call-features", - "ui-kit/android/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/android/v4/theme", - "ui-kit/android/v4/localize", - "ui-kit/android/v4/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/android/v4/components-overview", { - "group": "Conversations", + "group": "Features", + "pages": [ + { + "group": "Chat", + "pages": [ + "ui-kit/android/core-features", + "ui-kit/android/extensions", + "ui-kit/android/ai-features" + ] + }, + "ui-kit/android/call-features" + ] + }, + { + "group": "Theming", "pages": [ - "ui-kit/android/v4/conversations", - "ui-kit/android/v4/conversations-with-messages", - "ui-kit/android/v4/contacts" + "ui-kit/android/theme-introduction", + "ui-kit/android/color-resources", + "ui-kit/android/component-styling", + "ui-kit/android/message-bubble-styling", + "ui-kit/android/localize", + "ui-kit/android/sound-manager" ] }, { - "group": "Users", + "group": "Customization", "pages": [ - "ui-kit/android/v4/users", - "ui-kit/android/v4/users-with-messages" + "ui-kit/android/customization-overview", + "ui-kit/android/customization-view-slots", + "ui-kit/android/customization-styles", + "ui-kit/android/customization-viewmodel-data", + "ui-kit/android/customization-adapters", + "ui-kit/android/customization-events", + "ui-kit/android/customization-state-views", + "ui-kit/android/customization-text-formatters", + "ui-kit/android/customization-menu-options", + "ui-kit/android/customization-datasource" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/android/v4/groups", - "ui-kit/android/v4/groups-with-messages", - "ui-kit/android/v4/create-group", - "ui-kit/android/v4/join-protected-group", - "ui-kit/android/v4/group-members", - "ui-kit/android/v4/group-add-members", - "ui-kit/android/v4/banned-members", - "ui-kit/android/v4/transfer-ownership", - "ui-kit/android/v4/group-details" + "ui-kit/android/components-overview", + "ui-kit/android/conversations", + "ui-kit/android/users", + "ui-kit/android/groups", + "ui-kit/android/group-members", + "ui-kit/android/message-header", + "ui-kit/android/message-list", + "ui-kit/android/message-composer", + "ui-kit/android/message-template", + "ui-kit/android/threaded-messages-header", + "ui-kit/android/incoming-call", + "ui-kit/android/outgoing-call", + "ui-kit/android/call-buttons", + "ui-kit/android/call-logs", + "ui-kit/android/ai-assistant-chat-history", + "ui-kit/android/search" ] }, { - "group": "Messages", + "group": "Reference", "pages": [ - "ui-kit/android/v4/messages", - "ui-kit/android/v4/message-header", - "ui-kit/android/v4/message-list", - "ui-kit/android/v4/message-template", - "ui-kit/android/v4/message-composer", - "ui-kit/android/v4/message-information", - "ui-kit/android/v4/threaded-messages" + "ui-kit/android/methods", + "ui-kit/android/events" ] }, { - "group": "Interactive Messages", + "group": "Guides", "pages": [ - "ui-kit/android/v4/interactive-form-bubble", - "ui-kit/android/v4/interactive-form-message", - "ui-kit/android/v4/interactive-card-bubble", - "ui-kit/android/v4/interactive-card-message", - "ui-kit/android/v4/interactive-element-entity", - "ui-kit/android/v4/interactive-action-entity", - "ui-kit/android/v4/interactive-custom-message", - "ui-kit/android/v4/interactive-button-element", - "ui-kit/android/v4/interactive-textinput-element", - "ui-kit/android/v4/interactive-label-element", - "ui-kit/android/v4/interactive-single-select-element", - "ui-kit/android/v4/interactive-radio-button-element", - "ui-kit/android/v4/interactive-checkbox-element", - "ui-kit/android/v4/interactive-spinner-element", - "ui-kit/android/v4/interactive-scheduler-message", - "ui-kit/android/v4/interactive-date-time-element" + "ui-kit/android/guide-overview", + "ui-kit/android/guide-threaded-messages", + "ui-kit/android/guide-block-unblock-user", + "ui-kit/android/guide-new-chat", + "ui-kit/android/guide-message-privately", + "ui-kit/android/guide-search-messages", + "ui-kit/android/guide-call-log-details", + "ui-kit/android/guide-group-chat", + "ui-kit/android/guide-ai-agent", + "ui-kit/android/custom-text-formatter-guide", + "ui-kit/android/mentions-formatter-guide", + "ui-kit/android/shortcut-formatter-guide" ] }, { - "group": "Calls", + "group": "Migration Guide", "pages": [ - "ui-kit/android/v4/call-overview", - "ui-kit/android/v4/incoming-call", - "ui-kit/android/v4/ongoing-call", - "ui-kit/android/v4/outgoing-call", - "ui-kit/android/v4/call-buttons", - "ui-kit/android/v4/call-logs", - "ui-kit/android/v4/call-log-details", - "ui-kit/android/v4/call-log-history", - "ui-kit/android/v4/call-log-recording", - "ui-kit/android/v4/call-log-participants", - "ui-kit/android/v4/call-log-with-details" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/android/v4/avatar", - "ui-kit/android/v4/status-indicator", - "ui-kit/android/v4/badge", - "ui-kit/android/v4/receipt", - "ui-kit/android/v4/date", - "ui-kit/android/v4/text-bubble", - "ui-kit/android/v4/image-bubble", - "ui-kit/android/v4/file-bubble", - "ui-kit/android/v4/audio-bubble", - "ui-kit/android/v4/video-bubble", - "ui-kit/android/v4/message-bubble", - "ui-kit/android/v4/message-input", - "ui-kit/android/v4/action-sheet", - "ui-kit/android/v4/media-recorder", - "ui-kit/android/v4/list-item", - "ui-kit/android/v4/list-base" + "ui-kit/android/upgrading-from-v4" ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/android/v4/methods", - "ui-kit/android/v4/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/android/v4/multi-tab-chat-ui-guide", - "ui-kit/android/v4/mentions-formatter-guide", - "ui-kit/android/v4/shortcut-formatter-guide" + }, + "ui-kit/android/troubleshooting", + "ui-kit/android/link/sample", + "ui-kit/android/link/figma", + "ui-kit/android/link/changelog" ] - }, - "ui-kit/android/v4/link/java", - "ui-kit/android/v4/link/kotlin", - "ui-kit/android/v4/link/changelog" + } ] - } - ] - }, - { - "version": "v3‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v4\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/android/v3/overview", - "ui-kit/android/v3/conversationlist", - "ui-kit/android/v3/key-concepts", - "ui-kit/android/v3/how-to-add-uikit-module" - ] - }, - "ui-kit/android/v3/android-java-ui-components", - "ui-kit/android/v3/android-customize-ui-kit", - "ui-kit/android/v3/folder-structure-android-uikit", - "ui-kit/android/v3/link/sdk", - "ui-kit/android/v3/link/extension", - "ui-kit/android/v3/link/version" + "ui-kit/android/v4/overview", + "ui-kit/android/v4/getting-started", + { + "group": "Features", + "pages": [ + { + "group": "Chat", + "pages": [ + "ui-kit/android/v4/core-features", + "ui-kit/android/v4/extensions" + ] + }, + "ui-kit/android/v4/call-features", + "ui-kit/android/v4/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/android/v4/theme", + "ui-kit/android/v4/localize", + "ui-kit/android/v4/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/android/v4/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/android/v4/conversations", + "ui-kit/android/v4/conversations-with-messages", + "ui-kit/android/v4/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/android/v4/users", + "ui-kit/android/v4/users-with-messages" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/android/v4/groups", + "ui-kit/android/v4/groups-with-messages", + "ui-kit/android/v4/create-group", + "ui-kit/android/v4/join-protected-group", + "ui-kit/android/v4/group-members", + "ui-kit/android/v4/group-add-members", + "ui-kit/android/v4/banned-members", + "ui-kit/android/v4/transfer-ownership", + "ui-kit/android/v4/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/android/v4/messages", + "ui-kit/android/v4/message-header", + "ui-kit/android/v4/message-list", + "ui-kit/android/v4/message-template", + "ui-kit/android/v4/message-composer", + "ui-kit/android/v4/message-information", + "ui-kit/android/v4/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/android/v4/interactive-form-bubble", + "ui-kit/android/v4/interactive-form-message", + "ui-kit/android/v4/interactive-card-bubble", + "ui-kit/android/v4/interactive-card-message", + "ui-kit/android/v4/interactive-element-entity", + "ui-kit/android/v4/interactive-action-entity", + "ui-kit/android/v4/interactive-custom-message", + "ui-kit/android/v4/interactive-button-element", + "ui-kit/android/v4/interactive-textinput-element", + "ui-kit/android/v4/interactive-label-element", + "ui-kit/android/v4/interactive-single-select-element", + "ui-kit/android/v4/interactive-radio-button-element", + "ui-kit/android/v4/interactive-checkbox-element", + "ui-kit/android/v4/interactive-spinner-element", + "ui-kit/android/v4/interactive-scheduler-message", + "ui-kit/android/v4/interactive-date-time-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/android/v4/call-overview", + "ui-kit/android/v4/incoming-call", + "ui-kit/android/v4/ongoing-call", + "ui-kit/android/v4/outgoing-call", + "ui-kit/android/v4/call-buttons", + "ui-kit/android/v4/call-logs", + "ui-kit/android/v4/call-log-details", + "ui-kit/android/v4/call-log-history", + "ui-kit/android/v4/call-log-recording", + "ui-kit/android/v4/call-log-participants", + "ui-kit/android/v4/call-log-with-details" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/android/v4/avatar", + "ui-kit/android/v4/status-indicator", + "ui-kit/android/v4/badge", + "ui-kit/android/v4/receipt", + "ui-kit/android/v4/date", + "ui-kit/android/v4/text-bubble", + "ui-kit/android/v4/image-bubble", + "ui-kit/android/v4/file-bubble", + "ui-kit/android/v4/audio-bubble", + "ui-kit/android/v4/video-bubble", + "ui-kit/android/v4/message-bubble", + "ui-kit/android/v4/message-input", + "ui-kit/android/v4/action-sheet", + "ui-kit/android/v4/media-recorder", + "ui-kit/android/v4/list-item", + "ui-kit/android/v4/list-base" + ] + } + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/android/v4/methods", + "ui-kit/android/v4/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/android/v4/multi-tab-chat-ui-guide", + "ui-kit/android/v4/mentions-formatter-guide", + "ui-kit/android/v4/shortcut-formatter-guide" + ] + }, + "ui-kit/android/v4/link/java", + "ui-kit/android/v4/link/kotlin", + "ui-kit/android/v4/link/changelog" + ] + } ] - } - ] - }, - { - "version": "v2‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v3\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/android/v2/overview", - "ui-kit/android/v2/key-concepts", - "ui-kit/android/v2/message-structure-and-hierarchy" + { + "group": "Overview", + "pages": [ + "ui-kit/android/v3/overview", + "ui-kit/android/v3/conversationlist", + "ui-kit/android/v3/key-concepts", + "ui-kit/android/v3/how-to-add-uikit-module" + ] + }, + "ui-kit/android/v3/android-java-ui-components", + "ui-kit/android/v3/android-customize-ui-kit", + "ui-kit/android/v3/folder-structure-android-uikit", + "ui-kit/android/v3/link/sdk", + "ui-kit/android/v3/link/extension", + "ui-kit/android/v3/link/version" ] - }, - "ui-kit/android/v2/ui-components", - "ui-kit/android/v2/customize-ui-kit", - "ui-kit/android/v2/folder-structure-android-uikit", - "ui-kit/android/v2/link/sdk", - "ui-kit/android/v3/link/extension" + } ] - } - ] - } - ] - }, - { - "dropdown": "Flutter", - "icon": "flutter", - "versions": [ - { - "version": "v5‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v2\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", - "pages": ["ui-kit/flutter/overview"] - }, - { - "group": "Getting Started", - "pages": [ - "ui-kit/flutter/getting-started", - "ui-kit/flutter/flutter-conversation", - "ui-kit/flutter/flutter-one-to-one-chat", - "ui-kit/flutter/flutter-tab-based-chat" - ] - }, - { - "group": "Features", + "group": " ", "pages": [ { - "group": "Chat", + "group": "Overview", "pages": [ - "ui-kit/flutter/core-features", - "ui-kit/flutter/extensions" + "ui-kit/android/v2/overview", + "ui-kit/android/v2/key-concepts", + "ui-kit/android/v2/message-structure-and-hierarchy" ] }, - "ui-kit/flutter/call-features", - "ui-kit/flutter/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/flutter/theme-introduction", - "ui-kit/flutter/color-resources", - "ui-kit/flutter/component-styling", - "ui-kit/flutter/message-bubble-styling", - "ui-kit/flutter/localize", - "ui-kit/flutter/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/flutter/components-overview", - "ui-kit/flutter/conversations", - "ui-kit/flutter/users", - "ui-kit/flutter/groups", - "ui-kit/flutter/group-members", - "ui-kit/flutter/message-header", - "ui-kit/flutter/message-list", - "ui-kit/flutter/message-composer", - "ui-kit/flutter/threaded-messages-header", - "ui-kit/flutter/incoming-call", - "ui-kit/flutter/outgoing-call", - "ui-kit/flutter/call-buttons", - "ui-kit/flutter/call-logs" - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/flutter/methods", - "ui-kit/flutter/events" - ] - }, - { - "group": "Advanced", - "pages": [ - "ui-kit/flutter/message-template", - "ui-kit/flutter/mentions-formatter-guide", - "ui-kit/flutter/shortcut-formatter-guide" + "ui-kit/android/v2/ui-components", + "ui-kit/android/v2/customize-ui-kit", + "ui-kit/android/v2/folder-structure-android-uikit", + "ui-kit/android/v2/link/sdk", + "ui-kit/android/v3/link/extension" ] - }, - { - "group": "Guides", - "pages": ["ui-kit/flutter/multi-tab-chat-ui-guide"] - }, - "ui-kit/flutter/link/sample", - "ui-kit/flutter/link/changelog" + } ] } ] }, { - "version": "v4‎‎‎‎", - "groups": [ + "dropdown": "Flutter", + "icon": "/images/icons/flutter.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/flutter/v4/overview", - "ui-kit/flutter/v4/getting-started", + "version": "v5\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Features", + "group": " ", "pages": [ + "ui-kit/flutter/overview", { - "group": "Chat", + "group": "Getting Started", "pages": [ - "ui-kit/flutter/v4/core-features", - "ui-kit/flutter/v4/extensions" + "ui-kit/flutter/getting-started", + "ui-kit/flutter/flutter-conversation", + "ui-kit/flutter/flutter-one-to-one-chat", + "ui-kit/flutter/flutter-tab-based-chat", + "ui-kit/flutter/calling-integration" ] }, - "ui-kit/flutter/v4/call-features", - "ui-kit/flutter/v4/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/flutter/v4/theme", - "ui-kit/flutter/v4/localize", - "ui-kit/flutter/v4/sound-manager" - ] - }, - { - "group": "Components", - "pages": [ - "ui-kit/flutter/v4/components-overview", { - "group": "Conversations", + "group": "Features", "pages": [ - "ui-kit/flutter/v4/conversations", - "ui-kit/flutter/v4/conversations-with-messages", - "ui-kit/flutter/v4/contacts" + { + "group": "Chat", + "pages": [ + "ui-kit/flutter/core-features", + "ui-kit/flutter/extensions", + "ui-kit/flutter/ai-features" + ] + }, + "ui-kit/flutter/call-features" ] }, { - "group": "Users", + "group": "Theming", "pages": [ - "ui-kit/flutter/v4/users", - "ui-kit/flutter/v4/users-with-messages", - "ui-kit/flutter/v4/user-details" + "ui-kit/flutter/theme-introduction", + "ui-kit/flutter/color-resources", + "ui-kit/flutter/component-styling", + "ui-kit/flutter/message-bubble-styling", + "ui-kit/flutter/localize", + "ui-kit/flutter/sound-manager" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/flutter/v4/groups", - "ui-kit/flutter/v4/groups-with-messages", - "ui-kit/flutter/v4/create-group", - "ui-kit/flutter/v4/join-protected-group", - "ui-kit/flutter/v4/group-members", - "ui-kit/flutter/v4/group-add-members", - "ui-kit/flutter/v4/group-banned-members", - "ui-kit/flutter/v4/group-transfer-ownership", - "ui-kit/flutter/v4/group-details" + "ui-kit/flutter/components-overview", + "ui-kit/flutter/conversations", + "ui-kit/flutter/users", + "ui-kit/flutter/groups", + "ui-kit/flutter/group-members", + "ui-kit/flutter/message-header", + "ui-kit/flutter/message-list", + "ui-kit/flutter/message-composer", + "ui-kit/flutter/message-template", + "ui-kit/flutter/threaded-messages-header", + "ui-kit/flutter/incoming-call", + "ui-kit/flutter/outgoing-call", + "ui-kit/flutter/call-buttons", + "ui-kit/flutter/call-logs", + "ui-kit/flutter/search", + "ui-kit/flutter/ai-assistant-chat-history" ] }, { - "group": "Messages", + "group": "Reference", "pages": [ - "ui-kit/flutter/v4/messages", - "ui-kit/flutter/v4/message-header", - "ui-kit/flutter/v4/message-list", - "ui-kit/flutter/v4/message-template", - "ui-kit/flutter/v4/message-composer", - "ui-kit/flutter/v4/message-information", - "ui-kit/flutter/v4/threaded-messages" + "ui-kit/flutter/methods", + "ui-kit/flutter/events" ] }, { - "group": "Interactive Messages", + "group": "Guides", "pages": [ - "ui-kit/flutter/v4/interactive-form-bubble", - "ui-kit/flutter/v4/interactive-form-message", - "ui-kit/flutter/v4/interactive-card-bubble", - "ui-kit/flutter/v4/interactive-card-message", - "ui-kit/flutter/v4/interactive-element-entity", - "ui-kit/flutter/v4/interactive-action-entity", - "ui-kit/flutter/v4/interactive-button-element", - "ui-kit/flutter/v4/interactive-label-element", - "ui-kit/flutter/v4/interactive-radio-button-element", - "ui-kit/flutter/v4/interactive-check-box-element", - "ui-kit/flutter/v4/interactive-textinput-element", - "ui-kit/flutter/v4/interactive-scheduler-message", - "ui-kit/flutter/v4/interactive-scheduler-bubble", - "ui-kit/flutter/v4/interactive-date-time-picker-element", - "ui-kit/flutter/v4/interactive-dropdown-element" + "ui-kit/flutter/guide-overview", + "ui-kit/flutter/guide-threaded-messages", + "ui-kit/flutter/guide-block-unblock-user", + "ui-kit/flutter/guide-new-chat", + "ui-kit/flutter/guide-message-privately", + "ui-kit/flutter/guide-search-messages", + "ui-kit/flutter/guide-call-log-details", + "ui-kit/flutter/guide-group-chat", + "ui-kit/flutter/guide-message-agentic-flow", + "ui-kit/flutter/custom-text-formatter-guide", + "ui-kit/flutter/mentions-formatter-guide", + "ui-kit/flutter/url-formatter-guide", + "ui-kit/flutter/shortcut-formatter-guide" ] }, { - "group": "Calls", + "group": "Migration Guide", "pages": [ - "ui-kit/flutter/v4/call-overview", - "ui-kit/flutter/v4/incoming-call", - "ui-kit/flutter/v4/ongoing-call", - "ui-kit/flutter/v4/outgoing-call", - "ui-kit/flutter/v4/call-buttons", - "ui-kit/flutter/v4/call-logs", - "ui-kit/flutter/v4/call-log-details", - "ui-kit/flutter/v4/call-log-history", - "ui-kit/flutter/v4/call-log-recording", - "ui-kit/flutter/v4/call-log-participants", - "ui-kit/flutter/v4/call-log-with-details" - ] - }, - { - "group": "Base-Components", - "pages": [ - "ui-kit/flutter/v4/status-indicator", - "ui-kit/flutter/v4/badge", - "ui-kit/flutter/v4/receipt", - "ui-kit/flutter/v4/date", - "ui-kit/flutter/v4/text-bubble", - "ui-kit/flutter/v4/image-bubble", - "ui-kit/flutter/v4/file-bubble", - "ui-kit/flutter/v4/audio-bubble", - "ui-kit/flutter/v4/video-bubble", - "ui-kit/flutter/v4/message-bubble", - "ui-kit/flutter/v4/message-input", - "ui-kit/flutter/v4/action-sheet", - "ui-kit/flutter/v4/emoji-keyboard", - "ui-kit/flutter/v4/list-item", - "ui-kit/flutter/v4/list-base", - "ui-kit/flutter/v4/confirm-dialog", - "ui-kit/flutter/v4/card", - "ui-kit/flutter/v4/button", - "ui-kit/flutter/v4/media-recorder", - "ui-kit/flutter/v4/call-bubble", - "ui-kit/flutter/v4/quick-view", - "ui-kit/flutter/v4/single-select", - "ui-kit/flutter/v4/avatar" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/flutter/v4/reactions", - "ui-kit/flutter/v4/reactions-list" + "ui-kit/flutter/upgrading-from-v4" ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/flutter/v4/methods", - "ui-kit/flutter/v4/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/flutter/v4/multi-tab-chat-ui-guide", - "ui-kit/flutter/v4/mentions-formatter-guide", - "ui-kit/flutter/v4/shortcut-formatter-guide" + }, + "ui-kit/flutter/link/sample", + "ui-kit/flutter/link/changelog", + "ui-kit/flutter/troubleshooting" ] - }, - "ui-kit/flutter/link/sample", - "ui-kit/flutter/link/changelog" + } ] - } - ] - } - ] - }, - { - "dropdown": "Angular", - "icon": "angular", - "versions": [ - { - "version": "v4‎‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - "ui-kit/angular/overview", - "ui-kit/angular/getting-started", - { - "group": "Features", - "pages": [ - { - "group": "Chat", - "pages": [ - "ui-kit/angular/core-features", - "ui-kit/angular/extensions" - ] - }, - "ui-kit/angular/call-features", - "ui-kit/angular/ai-features" - ] - }, - { - "group": "Theming", - "pages": [ - "ui-kit/angular/theme", - "ui-kit/angular/localize", - "ui-kit/angular/sound-manager" - ] - }, + "version": "v4\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Components", + "group": " ", "pages": [ - "ui-kit/angular/components-overview", + "ui-kit/flutter/v4/overview", + "ui-kit/flutter/v4/getting-started", { - "group": "Conversations", + "group": "Features", "pages": [ - "ui-kit/angular/conversations", - "ui-kit/angular/conversations-with-messages", - "ui-kit/angular/contacts" + { + "group": "Chat", + "pages": [ + "ui-kit/flutter/v4/core-features", + "ui-kit/flutter/v4/extensions" + ] + }, + "ui-kit/flutter/v4/call-features", + "ui-kit/flutter/v4/ai-features" ] }, { - "group": "Users", + "group": "Theming", "pages": [ - "ui-kit/angular/users", - "ui-kit/angular/users-with-messages", - "ui-kit/angular/user-details" + "ui-kit/flutter/v4/theme", + "ui-kit/flutter/v4/localize", + "ui-kit/flutter/v4/sound-manager" ] }, { - "group": "Groups", + "group": "Components", "pages": [ - "ui-kit/angular/groups", - "ui-kit/angular/groups-with-messages", - "ui-kit/angular/create-group", - "ui-kit/angular/join-protected-group", - "ui-kit/angular/group-members", - "ui-kit/angular/group-add-members", - "ui-kit/angular/group-banned-members", - "ui-kit/angular/group-transfer-ownership", - "ui-kit/angular/group-details" + "ui-kit/flutter/v4/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/flutter/v4/conversations", + "ui-kit/flutter/v4/conversations-with-messages", + "ui-kit/flutter/v4/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/flutter/v4/users", + "ui-kit/flutter/v4/users-with-messages", + "ui-kit/flutter/v4/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/flutter/v4/groups", + "ui-kit/flutter/v4/groups-with-messages", + "ui-kit/flutter/v4/create-group", + "ui-kit/flutter/v4/join-protected-group", + "ui-kit/flutter/v4/group-members", + "ui-kit/flutter/v4/group-add-members", + "ui-kit/flutter/v4/group-banned-members", + "ui-kit/flutter/v4/group-transfer-ownership", + "ui-kit/flutter/v4/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/flutter/v4/messages", + "ui-kit/flutter/v4/message-header", + "ui-kit/flutter/v4/message-list", + "ui-kit/flutter/v4/message-template", + "ui-kit/flutter/v4/message-composer", + "ui-kit/flutter/v4/message-information", + "ui-kit/flutter/v4/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/flutter/v4/interactive-form-bubble", + "ui-kit/flutter/v4/interactive-form-message", + "ui-kit/flutter/v4/interactive-card-bubble", + "ui-kit/flutter/v4/interactive-card-message", + "ui-kit/flutter/v4/interactive-element-entity", + "ui-kit/flutter/v4/interactive-action-entity", + "ui-kit/flutter/v4/interactive-button-element", + "ui-kit/flutter/v4/interactive-label-element", + "ui-kit/flutter/v4/interactive-radio-button-element", + "ui-kit/flutter/v4/interactive-check-box-element", + "ui-kit/flutter/v4/interactive-textinput-element", + "ui-kit/flutter/v4/interactive-scheduler-message", + "ui-kit/flutter/v4/interactive-scheduler-bubble", + "ui-kit/flutter/v4/interactive-date-time-picker-element", + "ui-kit/flutter/v4/interactive-dropdown-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/flutter/v4/call-overview", + "ui-kit/flutter/v4/incoming-call", + "ui-kit/flutter/v4/ongoing-call", + "ui-kit/flutter/v4/outgoing-call", + "ui-kit/flutter/v4/call-buttons", + "ui-kit/flutter/v4/call-logs", + "ui-kit/flutter/v4/call-log-details", + "ui-kit/flutter/v4/call-log-history", + "ui-kit/flutter/v4/call-log-recording", + "ui-kit/flutter/v4/call-log-participants", + "ui-kit/flutter/v4/call-log-with-details" + ] + }, + { + "group": "Base-Components", + "pages": [ + "ui-kit/flutter/v4/status-indicator", + "ui-kit/flutter/v4/badge", + "ui-kit/flutter/v4/receipt", + "ui-kit/flutter/v4/date", + "ui-kit/flutter/v4/text-bubble", + "ui-kit/flutter/v4/image-bubble", + "ui-kit/flutter/v4/file-bubble", + "ui-kit/flutter/v4/audio-bubble", + "ui-kit/flutter/v4/video-bubble", + "ui-kit/flutter/v4/message-bubble", + "ui-kit/flutter/v4/message-input", + "ui-kit/flutter/v4/action-sheet", + "ui-kit/flutter/v4/emoji-keyboard", + "ui-kit/flutter/v4/list-item", + "ui-kit/flutter/v4/list-base", + "ui-kit/flutter/v4/confirm-dialog", + "ui-kit/flutter/v4/card", + "ui-kit/flutter/v4/button", + "ui-kit/flutter/v4/media-recorder", + "ui-kit/flutter/v4/call-bubble", + "ui-kit/flutter/v4/quick-view", + "ui-kit/flutter/v4/single-select", + "ui-kit/flutter/v4/avatar" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/flutter/v4/reactions", + "ui-kit/flutter/v4/reactions-list" + ] + } ] }, { - "group": "Messages", + "group": "Reference", "pages": [ - "ui-kit/angular/messages", - "ui-kit/angular/message-header", - "ui-kit/angular/message-list", - "ui-kit/angular/message-template", - "ui-kit/angular/message-composer", - "ui-kit/angular/message-information", - "ui-kit/angular/threaded-messages" + "ui-kit/flutter/v4/methods", + "ui-kit/flutter/v4/events" ] }, { - "group": "Interactive Messages", + "group": "Guides", "pages": [ - "ui-kit/angular/interactive-form-message", - "ui-kit/angular/interactive-form-bubble", - "ui-kit/angular/interactive-card-message", - "ui-kit/angular/interactive-card-bubble", - "ui-kit/angular/interactive-element-type", - "ui-kit/angular/interactive-action-entity", - "ui-kit/angular/interactive-custom-interactive-message", - "ui-kit/angular/interactive-button-element", - "ui-kit/angular/interactive-text-input-element", - "ui-kit/angular/interactive-label-element", - "ui-kit/angular/interactive-single-select-element", - "ui-kit/angular/interactive-radio-button-element", - "ui-kit/angular/interactive-checkbox-element", - "ui-kit/angular/interactive-dropdown-element", - "ui-kit/angular/interactive-scheduler-message", - "ui-kit/angular/interactive-scheduler-bubble", - "ui-kit/angular/interactive-date-time-picker-element" + "ui-kit/flutter/v4/multi-tab-chat-ui-guide", + "ui-kit/flutter/v4/mentions-formatter-guide", + "ui-kit/flutter/v4/shortcut-formatter-guide" ] }, - { - "group": "Calls", - "pages": [ - "ui-kit/angular/call-overview", - "ui-kit/angular/incoming-call", - "ui-kit/angular/ongoing-call", - "ui-kit/angular/outgoing-call", - "ui-kit/angular/call-buttons", - "ui-kit/angular/call-logs", - "ui-kit/angular/call-log-details", - "ui-kit/angular/call-log-history", - "ui-kit/angular/call-log-recording", - "ui-kit/angular/call-log-participants", - "ui-kit/angular/call-log-with-details" - ] - }, - { - "group": "Extras", - "pages": [ - "ui-kit/angular/reaction", - "ui-kit/angular/reaction-list", - "ui-kit/angular/reaction-info", - "ui-kit/angular/user-member-wrapper" - ] - }, - { - "group": "Base Components", - "pages": [ - "ui-kit/angular/avatar", - "ui-kit/angular/status-indicator", - "ui-kit/angular/badge", - "ui-kit/angular/receipt", - "ui-kit/angular/date", - "ui-kit/angular/text-bubble", - "ui-kit/angular/image-bubble", - "ui-kit/angular/file-bubble", - "ui-kit/angular/audio-bubble", - "ui-kit/angular/video-bubble", - "ui-kit/angular/message-bubble", - "ui-kit/angular/document-bubble", - "ui-kit/angular/message-input", - "ui-kit/angular/action-sheet", - "ui-kit/angular/media-recorder", - "ui-kit/angular/list-item", - "ui-kit/angular/confirm-dialog", - "ui-kit/angular/backdrop", - "ui-kit/angular/emoji-keyboard", - "ui-kit/angular/modal", - "ui-kit/angular/pop-over", - "ui-kit/angular/icon", - "ui-kit/angular/loader", - "ui-kit/angular/icon-button", - "ui-kit/angular/button-group", - "ui-kit/angular/label", - "ui-kit/angular/input", - "ui-kit/angular/search-input", - "ui-kit/angular/checkbox", - "ui-kit/angular/radio-button", - "ui-kit/angular/dropdown", - "ui-kit/angular/cometchat-quick-view", - "ui-kit/angular/singleselect", - "ui-kit/angular/list" - ] - } - ] - }, - { - "group": "Reference", - "pages": [ - "ui-kit/angular/methods", - "ui-kit/angular/events" - ] - }, - { - "group": "Guides", - "pages": [ - "ui-kit/angular/multi-tab-chat-ui-guide", - "ui-kit/angular/new-attachment-option-guide", - "ui-kit/angular/custom-text-formatter-guide", - "ui-kit/angular/mentions-formatter-guide", - "ui-kit/angular/url-formatter-guide", - "ui-kit/angular/shortcut-formatter-guide", - "ui-kit/angular/new-message-option-guide", - "ui-kit/angular/custom-message-guide" - ] - }, - "ui-kit/angular/link/sample", - "ui-kit/angular/link/changelog" - ] - } - ] - }, - { - "version": "v3‎‎‎‎‎", - "groups": [ - { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/angular/3.0/overview", - "ui-kit/angular/3.0/key-concepts" + "ui-kit/flutter/link/sample", + "ui-kit/flutter/link/changelog" ] - }, - "ui-kit/angular/3.0/ui-components", - "ui-kit/angular/3.0/javascript-3-0-overview", - "ui-kit/angular/3.0/link/extension", - "ui-kit/angular/3.0/link/version" + } ] } ] }, { - "version": "v2‎‎‎‎‎", - "groups": [ - { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "ui-kit/angular/2.0/overview", - "ui-kit/angular/2.0/key-concepts", - "ui-kit/angular/2.0/message-structure-and-hierarchy" - ] - }, - "ui-kit/angular/2.0/ui-components", - "ui-kit/angular/2.0/link/sdk", - "ui-kit/angular/3.0/link/extension" - ] - } - ] - } - ] - }, - { - "dropdown": "Vue", - "icon": "vuejs", - "versions": [ - { - "version": "v4‎‎‎‎‎‎", - "groups": [ + "dropdown": "Angular", + "icon": "/images/icons/angular.svg", + "versions": [ { - "group": " ", - "pages": [ - "ui-kit/vue/overview", - "ui-kit/vue/key-concepts", + "version": "v4\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Integration", + "group": " ", "pages": [ - "ui-kit/vue/integration", - "ui-kit/vue/ui-kit-methods", - "ui-kit/vue/theme" - ] - }, - "ui-kit/vue/nuxtjs-integration", - "ui-kit/vue/ui-components-overview", - { - "group": "Conversations", - "pages": [ - "ui-kit/vue/conversations-with-messages", - "ui-kit/vue/conversations", - "ui-kit/vue/contacts" - ] - }, - { - "group": "Users", - "pages": [ - "ui-kit/vue/users-with-messages", - "ui-kit/vue/users", - "ui-kit/vue/user-details" - ] - }, - { - "group": "Groups", - "pages": [ - "ui-kit/vue/groups-with-messages", - "ui-kit/vue/groups", - "ui-kit/vue/group-members", - "ui-kit/vue/group-add-members", - "ui-kit/vue/group-banned-members", - "ui-kit/vue/group-transfer-ownership", - "ui-kit/vue/group-details" - ] - }, - { - "group": "Messages", - "pages": [ - "ui-kit/vue/messages", - "ui-kit/vue/message-header", - "ui-kit/vue/message-list", - "ui-kit/vue/message-composer", - "ui-kit/vue/message-information", - "ui-kit/vue/threaded-messages" - ] - }, - { - "group": "Calls", - "pages": [ - "ui-kit/vue/calls-integration", - "ui-kit/vue/incoming-call", - "ui-kit/vue/ongoing-call", - "ui-kit/vue/outgoing-call", - "ui-kit/vue/call-buttons" - ] - }, - { - "group": "AI", - "pages": [ - "ui-kit/vue/ai-integration", - "ui-kit/vue/ai-conversation-starter", - "ui-kit/vue/ai-smart-replies", - "ui-kit/vue/ai-conversation-summary", - "ui-kit/vue/ai-assist-bot" + "ui-kit/angular/overview", + "ui-kit/angular/getting-started", + { + "group": "Features", + "pages": [ + { + "group": "Chat", + "pages": [ + "ui-kit/angular/core-features", + "ui-kit/angular/extensions" + ] + }, + "ui-kit/angular/call-features", + "ui-kit/angular/ai-features" + ] + }, + { + "group": "Theming", + "pages": [ + "ui-kit/angular/theme", + "ui-kit/angular/localize", + "ui-kit/angular/sound-manager" + ] + }, + { + "group": "Components", + "pages": [ + "ui-kit/angular/components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/angular/conversations", + "ui-kit/angular/conversations-with-messages", + "ui-kit/angular/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/angular/users", + "ui-kit/angular/users-with-messages", + "ui-kit/angular/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/angular/groups", + "ui-kit/angular/groups-with-messages", + "ui-kit/angular/create-group", + "ui-kit/angular/join-protected-group", + "ui-kit/angular/group-members", + "ui-kit/angular/group-add-members", + "ui-kit/angular/group-banned-members", + "ui-kit/angular/group-transfer-ownership", + "ui-kit/angular/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/angular/messages", + "ui-kit/angular/message-header", + "ui-kit/angular/message-list", + "ui-kit/angular/message-template", + "ui-kit/angular/message-composer", + "ui-kit/angular/message-information", + "ui-kit/angular/threaded-messages" + ] + }, + { + "group": "Interactive Messages", + "pages": [ + "ui-kit/angular/interactive-form-message", + "ui-kit/angular/interactive-form-bubble", + "ui-kit/angular/interactive-card-message", + "ui-kit/angular/interactive-card-bubble", + "ui-kit/angular/interactive-element-type", + "ui-kit/angular/interactive-action-entity", + "ui-kit/angular/interactive-custom-interactive-message", + "ui-kit/angular/interactive-button-element", + "ui-kit/angular/interactive-text-input-element", + "ui-kit/angular/interactive-label-element", + "ui-kit/angular/interactive-single-select-element", + "ui-kit/angular/interactive-radio-button-element", + "ui-kit/angular/interactive-checkbox-element", + "ui-kit/angular/interactive-dropdown-element", + "ui-kit/angular/interactive-scheduler-message", + "ui-kit/angular/interactive-scheduler-bubble", + "ui-kit/angular/interactive-date-time-picker-element" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/angular/call-overview", + "ui-kit/angular/incoming-call", + "ui-kit/angular/ongoing-call", + "ui-kit/angular/outgoing-call", + "ui-kit/angular/call-buttons", + "ui-kit/angular/call-logs", + "ui-kit/angular/call-log-details", + "ui-kit/angular/call-log-history", + "ui-kit/angular/call-log-recording", + "ui-kit/angular/call-log-participants", + "ui-kit/angular/call-log-with-details" + ] + }, + { + "group": "Extras", + "pages": [ + "ui-kit/angular/reaction", + "ui-kit/angular/reaction-list", + "ui-kit/angular/reaction-info", + "ui-kit/angular/user-member-wrapper" + ] + }, + { + "group": "Base Components", + "pages": [ + "ui-kit/angular/avatar", + "ui-kit/angular/status-indicator", + "ui-kit/angular/badge", + "ui-kit/angular/receipt", + "ui-kit/angular/date", + "ui-kit/angular/text-bubble", + "ui-kit/angular/image-bubble", + "ui-kit/angular/file-bubble", + "ui-kit/angular/audio-bubble", + "ui-kit/angular/video-bubble", + "ui-kit/angular/message-bubble", + "ui-kit/angular/document-bubble", + "ui-kit/angular/message-input", + "ui-kit/angular/action-sheet", + "ui-kit/angular/media-recorder", + "ui-kit/angular/list-item", + "ui-kit/angular/confirm-dialog", + "ui-kit/angular/backdrop", + "ui-kit/angular/emoji-keyboard", + "ui-kit/angular/modal", + "ui-kit/angular/pop-over", + "ui-kit/angular/icon", + "ui-kit/angular/loader", + "ui-kit/angular/icon-button", + "ui-kit/angular/button-group", + "ui-kit/angular/label", + "ui-kit/angular/input", + "ui-kit/angular/search-input", + "ui-kit/angular/checkbox", + "ui-kit/angular/radio-button", + "ui-kit/angular/dropdown", + "ui-kit/angular/cometchat-quick-view", + "ui-kit/angular/singleselect", + "ui-kit/angular/list" + ] + } + ] + }, + { + "group": "Reference", + "pages": [ + "ui-kit/angular/methods", + "ui-kit/angular/events" + ] + }, + { + "group": "Guides", + "pages": [ + "ui-kit/angular/multi-tab-chat-ui-guide", + "ui-kit/angular/new-attachment-option-guide", + "ui-kit/angular/custom-text-formatter-guide", + "ui-kit/angular/mentions-formatter-guide", + "ui-kit/angular/url-formatter-guide", + "ui-kit/angular/shortcut-formatter-guide", + "ui-kit/angular/new-message-option-guide", + "ui-kit/angular/custom-message-guide" + ] + }, + "ui-kit/angular/link/sample", + "ui-kit/angular/link/changelog" ] - }, + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Views", + "group": " ", "pages": [ - "ui-kit/vue/message-bubble", - "ui-kit/vue/user-member-wrapper", - "ui-kit/vue/tabs" + { + "group": "Overview", + "pages": [ + "ui-kit/angular/3.0/overview", + "ui-kit/angular/3.0/key-concepts" + ] + }, + "ui-kit/angular/3.0/ui-components", + "ui-kit/angular/3.0/javascript-3-0-overview", + "ui-kit/angular/3.0/link/extension", + "ui-kit/angular/3.0/link/version" ] - }, - "ui-kit/vue/web-elements", - "ui-kit/vue/shared-elements", - "ui-kit/vue/link/sample", - "ui-kit/vue/link/changelog" + } ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ + "version": "v2\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/vue/3.0/overview", - "ui-kit/vue/3.0/key-concepts" + { + "group": "Overview", + "pages": [ + "ui-kit/angular/2.0/overview", + "ui-kit/angular/2.0/key-concepts", + "ui-kit/angular/2.0/message-structure-and-hierarchy" + ] + }, + "ui-kit/angular/2.0/ui-components", + "ui-kit/angular/2.0/link/sdk", + "ui-kit/angular/3.0/link/extension" ] - }, - "ui-kit/vue/3.0/ui-components", - "ui-kit/vue/3.0/integration-with-nuxtjs", - "ui-kit/vue/3.0/javascript-3-0-overview", - "ui-kit/vue/3.0/link/extension", - "ui-kit/vue/3.0/link/version" + } ] } ] }, { - "version": "v2‎‎‎‎‎‎", - "groups": [ + "dropdown": "Vue", + "icon": "/images/icons/vuejs.svg", + "versions": [ { - "group": " ", - "pages": [ + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "ui-kit/vue/2.0/overview", - "ui-kit/vue/2.0/key-concepts", - "ui-kit/vue/2.0/message-structure-and-hierarchy" + "ui-kit/vue/overview", + "ui-kit/vue/key-concepts", + { + "group": "Integration", + "pages": [ + "ui-kit/vue/integration", + "ui-kit/vue/ui-kit-methods", + "ui-kit/vue/theme" + ] + }, + "ui-kit/vue/nuxtjs-integration", + "ui-kit/vue/ui-components-overview", + { + "group": "Conversations", + "pages": [ + "ui-kit/vue/conversations-with-messages", + "ui-kit/vue/conversations", + "ui-kit/vue/contacts" + ] + }, + { + "group": "Users", + "pages": [ + "ui-kit/vue/users-with-messages", + "ui-kit/vue/users", + "ui-kit/vue/user-details" + ] + }, + { + "group": "Groups", + "pages": [ + "ui-kit/vue/groups-with-messages", + "ui-kit/vue/groups", + "ui-kit/vue/group-members", + "ui-kit/vue/group-add-members", + "ui-kit/vue/group-banned-members", + "ui-kit/vue/group-transfer-ownership", + "ui-kit/vue/group-details" + ] + }, + { + "group": "Messages", + "pages": [ + "ui-kit/vue/messages", + "ui-kit/vue/message-header", + "ui-kit/vue/message-list", + "ui-kit/vue/message-composer", + "ui-kit/vue/message-information", + "ui-kit/vue/threaded-messages" + ] + }, + { + "group": "Calls", + "pages": [ + "ui-kit/vue/calls-integration", + "ui-kit/vue/incoming-call", + "ui-kit/vue/ongoing-call", + "ui-kit/vue/outgoing-call", + "ui-kit/vue/call-buttons" + ] + }, + { + "group": "AI", + "pages": [ + "ui-kit/vue/ai-integration", + "ui-kit/vue/ai-conversation-starter", + "ui-kit/vue/ai-smart-replies", + "ui-kit/vue/ai-conversation-summary", + "ui-kit/vue/ai-assist-bot" + ] + }, + { + "group": "Views", + "pages": [ + "ui-kit/vue/message-bubble", + "ui-kit/vue/user-member-wrapper", + "ui-kit/vue/tabs" + ] + }, + "ui-kit/vue/web-elements", + "ui-kit/vue/shared-elements", + "ui-kit/vue/link/sample", + "ui-kit/vue/link/changelog" ] - }, - "ui-kit/vue/2.0/ui-components", - "ui-kit/vue/2.0/javascript-2-0-overview", - "ui-kit/vue/3.0/link/extension" + } ] - } - ] - } - ] - } - ] - }, - { - "tab": "SDKs", - "dropdowns": [ - { - "dropdown": "JavaScript", - "icon": "js", - "versions": [ - { - "version": "v4‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/javascript/overview", - "sdk/javascript/key-concepts", - "sdk/javascript/message-structure-and-hierarchy", - "sdk/javascript/rate-limits" - ] - }, - { - "group": "Setup", - "pages": ["sdk/javascript/setup-sdk"] - }, - { - "group": "Authentication", - "pages": [ - "sdk/javascript/authentication-overview", - "sdk/javascript/login-listener" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/messaging-overview", - "sdk/javascript/send-message", - "sdk/javascript/receive-message", - "sdk/javascript/additional-message-filtering", - "sdk/javascript/retrieve-conversations", - "sdk/javascript/threaded-messages", - "sdk/javascript/edit-message", - "sdk/javascript/delete-message", - "sdk/javascript/delete-conversation", - "sdk/javascript/typing-indicators", - "sdk/javascript/interactive-messages", - "sdk/javascript/transient-messages", - "sdk/javascript/delivery-read-receipts", - "sdk/javascript/mentions", - "sdk/javascript/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/calling-overview", - "sdk/javascript/calling-setup", - "sdk/javascript/default-call", - "sdk/javascript/direct-call", - "sdk/javascript/recording", - "sdk/javascript/virtual-background", - "sdk/javascript/video-view-customisation", - "sdk/javascript/custom-css", - "sdk/javascript/presenter-mode", - "sdk/javascript/call-logs", - "sdk/javascript/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/users-overview", - "sdk/javascript/retrieve-users", - "sdk/javascript/user-management", - "sdk/javascript/block-users" - ] - }, - { - "group": "User Presence", - "pages": ["sdk/javascript/user-presence"] - }, - { - "group": "Groups", - "pages": [ - "sdk/javascript/groups-overview", - "sdk/javascript/retrieve-groups", - "sdk/javascript/create-group", - "sdk/javascript/update-group", - "sdk/javascript/join-group", - "sdk/javascript/leave-group", - "sdk/javascript/delete-group", - "sdk/javascript/retrieve-group-members", - "sdk/javascript/group-add-members", - "sdk/javascript/group-kick-ban-members", - "sdk/javascript/group-change-member-scope", - "sdk/javascript/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/javascript/resources-overview", - "sdk/javascript/all-real-time-listeners", - "sdk/javascript/upgrading-from-v3" - ] - }, + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/javascript/advanced-overview", - "sdk/javascript/connection-status", - "sdk/javascript/managing-web-sockets-connections-manually" + { + "group": "Overview", + "pages": [ + "ui-kit/vue/3.0/overview", + "ui-kit/vue/3.0/key-concepts" + ] + }, + "ui-kit/vue/3.0/ui-components", + "ui-kit/vue/3.0/integration-with-nuxtjs", + "ui-kit/vue/3.0/javascript-3-0-overview", + "ui-kit/vue/3.0/link/extension", + "ui-kit/vue/3.0/link/version" ] - }, + } + ] + }, + { + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "UI Kits", + "group": " ", "pages": [ - "sdk/javascript/react-overview", - "sdk/javascript/vue-overview", - "sdk/javascript/angular-overview" + { + "group": "Overview", + "pages": [ + "ui-kit/vue/2.0/overview", + "ui-kit/vue/2.0/key-concepts", + "ui-kit/vue/2.0/message-structure-and-hierarchy" + ] + }, + "ui-kit/vue/2.0/ui-components", + "ui-kit/vue/2.0/javascript-2-0-overview", + "ui-kit/vue/3.0/link/extension" ] - }, - "sdk/javascript/extensions-overview", - "sdk/javascript/ai-user-copilot-overview", - "sdk/javascript/ai-chatbots-overview", - "sdk/javascript/webhooks-overview", - "sdk/javascript/changelog" + } ] } ] - }, + } + ] + }, + { + "tab": "SDKs", + "dropdowns": [ { - "version": "v3‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "JavaScript", + "icon": "/images/icons/js.svg", + "versions": [ { - "group": " ", - "pages": [ + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "sdk/javascript/3.0/overview", - "sdk/javascript/3.0/key-concepts", - "sdk/javascript/3.0/message-structure-and-hierarchy", - "sdk/javascript/3.0/rate-limits" + { + "group": "Overview", + "pages": [ + "sdk/javascript/overview", + "sdk/javascript/key-concepts", + "sdk/javascript/message-structure-and-hierarchy", + "sdk/javascript/rate-limits" + ] + }, + { + "group": "Setup", + "pages": ["sdk/javascript/setup-sdk"] + }, + { + "group": "Authentication", + "pages": [ + "sdk/javascript/authentication-overview", + "sdk/javascript/login-listener" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/javascript/messaging-overview", + "sdk/javascript/send-message", + "sdk/javascript/receive-message", + "sdk/javascript/additional-message-filtering", + "sdk/javascript/retrieve-conversations", + "sdk/javascript/threaded-messages", + "sdk/javascript/edit-message", + "sdk/javascript/delete-message", + "sdk/javascript/flag-message", + "sdk/javascript/delete-conversation", + "sdk/javascript/typing-indicators", + "sdk/javascript/interactive-messages", + "sdk/javascript/transient-messages", + "sdk/javascript/delivery-read-receipts", + "sdk/javascript/mentions", + "sdk/javascript/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/calling-overview", + "sdk/javascript/calling-setup", + "sdk/javascript/default-call", + "sdk/javascript/direct-call", + "sdk/javascript/standalone-calling", + "sdk/javascript/recording", + "sdk/javascript/virtual-background", + "sdk/javascript/video-view-customisation", + "sdk/javascript/custom-css", + "sdk/javascript/presenter-mode", + "sdk/javascript/call-logs", + "sdk/javascript/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/users-overview", + "sdk/javascript/retrieve-users", + "sdk/javascript/user-management", + "sdk/javascript/block-users" + ] + }, + { + "group": "User Presence", + "pages": ["sdk/javascript/user-presence"] + }, + { + "group": "Groups", + "pages": [ + "sdk/javascript/groups-overview", + "sdk/javascript/retrieve-groups", + "sdk/javascript/create-group", + "sdk/javascript/update-group", + "sdk/javascript/join-group", + "sdk/javascript/leave-group", + "sdk/javascript/delete-group", + "sdk/javascript/retrieve-group-members", + "sdk/javascript/group-add-members", + "sdk/javascript/group-kick-ban-members", + "sdk/javascript/group-change-member-scope", + "sdk/javascript/transfer-group-ownership" + ] + }, + "sdk/javascript/ai-moderation", + "sdk/javascript/ai-agents", + { + "group": "Resources", + "pages": [ + "sdk/javascript/resources-overview", + "sdk/javascript/all-real-time-listeners", + "sdk/javascript/upgrading-from-v3" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/advanced-overview", + "sdk/javascript/connection-status", + "sdk/javascript/managing-web-sockets-connections-manually" + ] + }, + { + "group": "UI Kits", + "pages": [ + "sdk/javascript/react-overview", + "sdk/javascript/vue-overview", + "sdk/javascript/angular-overview" + ] + }, + "sdk/javascript/extensions-overview", + "sdk/javascript/ai-user-copilot-overview", + "sdk/javascript/ai-chatbots-overview", + "sdk/javascript/webhooks-overview", + "sdk/javascript/changelog" ] - }, - "sdk/javascript/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/javascript/3.0/authentication", - "sdk/javascript/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/3.0/messaging", - "sdk/javascript/3.0/messaging-send-message", - "sdk/javascript/3.0/messaging-receive-message", - "sdk/javascript/3.0/messaging-additional-message-filtering", - "sdk/javascript/3.0/messaging-retrieve-conversations", - "sdk/javascript/3.0/threaded-messages", - "sdk/javascript/3.0/messaging-edit-message", - "sdk/javascript/3.0/messaging-delete-message", - "sdk/javascript/3.0/messaging-delete-conversation", - "sdk/javascript/3.0/messaging-typing-indicators", - "sdk/javascript/3.0/messaging-transient-messages", - "sdk/javascript/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/javascript/3.0/calling-v3", - "sdk/javascript/3.0/v3-setup", - "sdk/javascript/3.0/v3-default-call", - "sdk/javascript/3.0/v3-direct-calling", - "sdk/javascript/3.0/calling-recording-v3", - "sdk/javascript/3.0/virtual-background-v3", - "sdk/javascript/3.0/video-view-customisation-v3", - "sdk/javascript/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/3.0/calling", - "sdk/javascript/3.0/calling-direct-calling", - "sdk/javascript/3.0/calling-default-calling", - "sdk/javascript/3.0/calling-custom-css", - "sdk/javascript/3.0/calling-recording", - "sdk/javascript/3.0/virtual-background", - "sdk/javascript/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/3.0/users", - "sdk/javascript/3.0/users-retrieve-users", - "sdk/javascript/3.0/users-user-management", - "sdk/javascript/3.0/users-block-users" - ] - }, - "sdk/javascript/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/javascript/3.0/groups", - "sdk/javascript/3.0/groups-retrieve-groups", - "sdk/javascript/3.0/groups-create-group", - "sdk/javascript/3.0/groups-update-group", - "sdk/javascript/3.0/groups-join-group", - "sdk/javascript/3.0/groups-leave-group", - "sdk/javascript/3.0/groups-delete-group", - "sdk/javascript/3.0/groups-retrieve-group-members", - "sdk/javascript/3.0/groups-add-members-to-group", - "sdk/javascript/3.0/groups-kick-ban-members", - "sdk/javascript/3.0/groups-change-member-scope", - "sdk/javascript/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/javascript/3.0/bots", - "sdk/javascript/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/javascript/3.0/resources", - "sdk/javascript/3.0/resources-all-real-time-listeners", - "sdk/javascript/3.0/resources-upgrading-from-v2" - ] - }, + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/javascript/3.0/advanced", - "sdk/javascript/3.0/advanced-connection-listeners", - "sdk/javascript/3.0/advanced-managing-web-socket-connections-manually" + { + "group": "Overview", + "pages": [ + "sdk/javascript/3.0/overview", + "sdk/javascript/3.0/key-concepts", + "sdk/javascript/3.0/message-structure-and-hierarchy", + "sdk/javascript/3.0/rate-limits" + ] + }, + "sdk/javascript/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/javascript/3.0/authentication", + "sdk/javascript/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/javascript/3.0/messaging", + "sdk/javascript/3.0/messaging-send-message", + "sdk/javascript/3.0/messaging-receive-message", + "sdk/javascript/3.0/messaging-additional-message-filtering", + "sdk/javascript/3.0/messaging-retrieve-conversations", + "sdk/javascript/3.0/threaded-messages", + "sdk/javascript/3.0/messaging-edit-message", + "sdk/javascript/3.0/messaging-delete-message", + "sdk/javascript/3.0/messaging-delete-conversation", + "sdk/javascript/3.0/messaging-typing-indicators", + "sdk/javascript/3.0/messaging-transient-messages", + "sdk/javascript/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/javascript/3.0/calling-v3", + "sdk/javascript/3.0/v3-setup", + "sdk/javascript/3.0/v3-default-call", + "sdk/javascript/3.0/v3-direct-calling", + "sdk/javascript/3.0/calling-recording-v3", + "sdk/javascript/3.0/virtual-background-v3", + "sdk/javascript/3.0/video-view-customisation-v3", + "sdk/javascript/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/3.0/calling", + "sdk/javascript/3.0/calling-direct-calling", + "sdk/javascript/3.0/calling-default-calling", + "sdk/javascript/3.0/calling-custom-css", + "sdk/javascript/3.0/calling-recording", + "sdk/javascript/3.0/virtual-background", + "sdk/javascript/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/3.0/users", + "sdk/javascript/3.0/users-retrieve-users", + "sdk/javascript/3.0/users-user-management", + "sdk/javascript/3.0/users-block-users" + ] + }, + "sdk/javascript/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/javascript/3.0/groups", + "sdk/javascript/3.0/groups-retrieve-groups", + "sdk/javascript/3.0/groups-create-group", + "sdk/javascript/3.0/groups-update-group", + "sdk/javascript/3.0/groups-join-group", + "sdk/javascript/3.0/groups-leave-group", + "sdk/javascript/3.0/groups-delete-group", + "sdk/javascript/3.0/groups-retrieve-group-members", + "sdk/javascript/3.0/groups-add-members-to-group", + "sdk/javascript/3.0/groups-kick-ban-members", + "sdk/javascript/3.0/groups-change-member-scope", + "sdk/javascript/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/javascript/3.0/bots", + "sdk/javascript/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/javascript/3.0/resources", + "sdk/javascript/3.0/resources-all-real-time-listeners", + "sdk/javascript/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/3.0/advanced", + "sdk/javascript/3.0/advanced-connection-listeners", + "sdk/javascript/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/javascript/3.0/extensions-overview", + { + "group": "V3 UI Kits", + "pages": [ + "sdk/javascript/3.0/react-v3-overview", + "sdk/javascript/3.0/vue-3-0-overview", + "sdk/javascript/3.0/angular-3-0-overview" + ] + } ] - }, - "sdk/javascript/3.0/extensions-overview", + } + ] + }, + { + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "V3 UI Kits", + "group": " ", "pages": [ - "sdk/javascript/3.0/react-v3-overview", - "sdk/javascript/3.0/vue-3-0-overview", - "sdk/javascript/3.0/angular-3-0-overview" + { + "group": "Overview", + "pages": [ + "sdk/javascript/2.0/overview", + "sdk/javascript/2.0/key-concepts", + "sdk/javascript/2.0/message-structure-and-hierarchy", + "sdk/javascript/2.0/rate-limits" + ] + }, + "sdk/javascript/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/javascript/2.0/authentication", + "sdk/javascript/2.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/javascript/2.0/messaging", + "sdk/javascript/2.0/messaging-send-message", + "sdk/javascript/2.0/messaging-receive-message", + "sdk/javascript/2.0/messaging-additional-message-filtering", + "sdk/javascript/2.0/messaging-retrieve-conversations", + "sdk/javascript/2.0/threaded-messages", + "sdk/javascript/2.0/messaging-edit-message", + "sdk/javascript/2.0/messaging-delete-message", + "sdk/javascript/2.0/messaging-delete-conversation", + "sdk/javascript/2.0/messaging-typing-indicators", + "sdk/javascript/2.0/messaging-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/javascript/2.0/calling", + "sdk/javascript/2.0/calling-direct-calling", + "sdk/javascript/2.0/calling-default-calling", + "sdk/javascript/2.0/calling-custom-css", + "sdk/javascript/2.0/calling-recording" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/javascript/2.0/users", + "sdk/javascript/2.0/users-retrieve-users", + "sdk/javascript/2.0/users-user-management", + "sdk/javascript/2.0/users-block-users" + ] + }, + "sdk/javascript/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/javascript/2.0/groups", + "sdk/javascript/2.0/groups-retrieve-groups", + "sdk/javascript/2.0/groups-create-group", + "sdk/javascript/2.0/groups-update-group", + "sdk/javascript/2.0/groups-join-group", + "sdk/javascript/2.0/groups-leave-group", + "sdk/javascript/2.0/groups-delete-group", + "sdk/javascript/2.0/groups-retrieve-group-members", + "sdk/javascript/2.0/groups-add-members-to-group", + "sdk/javascript/2.0/groups-kick-ban-members", + "sdk/javascript/2.0/groups-change-member-scope", + "sdk/javascript/2.0/groups-transfer-group-ownership" + ] + }, + "sdk/javascript/2.0/bots", + "sdk/javascript/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/javascript/2.0/resources", + "sdk/javascript/2.0/resources-all-real-time-listeners", + "sdk/javascript/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/javascript/2.0/advanced", + "sdk/javascript/2.0/advanced-connection-listeners" + ] + } ] } ] @@ -2521,768 +2869,1562 @@ ] }, { - "version": "v2‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "React Native", + "icon": "/images/icons/react.svg", + "versions": [ { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/javascript/2.0/overview", - "sdk/javascript/2.0/key-concepts", - "sdk/javascript/2.0/message-structure-and-hierarchy", - "sdk/javascript/2.0/rate-limits" - ] - }, - "sdk/javascript/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/javascript/2.0/authentication", - "sdk/javascript/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/javascript/2.0/messaging", - "sdk/javascript/2.0/messaging-send-message", - "sdk/javascript/2.0/messaging-receive-message", - "sdk/javascript/2.0/messaging-additional-message-filtering", - "sdk/javascript/2.0/messaging-retrieve-conversations", - "sdk/javascript/2.0/threaded-messages", - "sdk/javascript/2.0/messaging-edit-message", - "sdk/javascript/2.0/messaging-delete-message", - "sdk/javascript/2.0/messaging-delete-conversation", - "sdk/javascript/2.0/messaging-typing-indicators", - "sdk/javascript/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/javascript/2.0/calling", - "sdk/javascript/2.0/calling-direct-calling", - "sdk/javascript/2.0/calling-default-calling", - "sdk/javascript/2.0/calling-custom-css", - "sdk/javascript/2.0/calling-recording" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/javascript/2.0/users", - "sdk/javascript/2.0/users-retrieve-users", - "sdk/javascript/2.0/users-user-management", - "sdk/javascript/2.0/users-block-users" - ] - }, - "sdk/javascript/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/javascript/2.0/groups", - "sdk/javascript/2.0/groups-retrieve-groups", - "sdk/javascript/2.0/groups-create-group", - "sdk/javascript/2.0/groups-update-group", - "sdk/javascript/2.0/groups-join-group", - "sdk/javascript/2.0/groups-leave-group", - "sdk/javascript/2.0/groups-delete-group", - "sdk/javascript/2.0/groups-retrieve-group-members", - "sdk/javascript/2.0/groups-add-members-to-group", - "sdk/javascript/2.0/groups-kick-ban-members", - "sdk/javascript/2.0/groups-change-member-scope", - "sdk/javascript/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/javascript/2.0/bots", - "sdk/javascript/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/javascript/2.0/resources", - "sdk/javascript/2.0/resources-all-real-time-listeners", - "sdk/javascript/2.0/resources-upgrading-from-v1" - ] - }, + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/javascript/2.0/advanced", - "sdk/javascript/2.0/advanced-connection-listeners" + { + "group": "Overview", + "pages": [ + "sdk/react-native/overview", + "sdk/react-native/key-concepts", + "sdk/react-native/message-structure-and-hierarchy", + "sdk/react-native/rate-limits" + ] + }, + "sdk/react-native/setup-sdk", + { + "group": "Authentication", + "pages": [ + "sdk/react-native/authentication-overview", + "sdk/react-native/login-listener" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/react-native/messaging-overview", + "sdk/react-native/send-message", + "sdk/react-native/receive-messages", + "sdk/react-native/additional-message-filtering", + "sdk/react-native/retrieve-conversations", + "sdk/react-native/threaded-messages", + "sdk/react-native/edit-message", + "sdk/react-native/flag-message", + "sdk/react-native/delete-message", + "sdk/react-native/delete-conversation", + "sdk/react-native/typing-indicators", + "sdk/react-native/interactive-messages", + "sdk/react-native/transient-messages", + "sdk/react-native/delivery-read-receipts", + "sdk/react-native/mentions", + "sdk/react-native/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/react-native/calling-overview", + "sdk/react-native/calling-setup", + "sdk/react-native/default-call", + "sdk/react-native/direct-call", + "sdk/react-native/standalone-calling", + "sdk/react-native/recording", + "sdk/react-native/video-view-customisation", + "sdk/react-native/presenter-mode", + "sdk/react-native/call-logs", + "sdk/react-native/expo-integration-guide", + "sdk/react-native/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/react-native/users-overview", + "sdk/react-native/retrieve-users", + "sdk/react-native/user-management", + "sdk/react-native/block-users" + ] + }, + "sdk/react-native/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/react-native/groups-overview", + "sdk/react-native/retrieve-groups", + "sdk/react-native/create-group", + "sdk/react-native/update-group", + "sdk/react-native/join-group", + "sdk/react-native/leave-group", + "sdk/react-native/delete-group", + "sdk/react-native/retrieve-group-members", + "sdk/react-native/group-add-members", + "sdk/react-native/group-kick-ban-members", + "sdk/react-native/group-change-member-scope", + "sdk/react-native/transfer-group-ownership" + ] + }, + "sdk/react-native/ai-moderation", + "sdk/react-native/ai-agents", + { + "group": "Resources", + "pages": [ + "sdk/react-native/resources-overview", + "sdk/react-native/real-time-listeners", + { + "group": "Push Notifications", + "pages": [ + "notifications/react-native-push-notifications-android", + "notifications/react-native-push-notifications-ios" + ] + }, + "sdk/react-native/push-notification-html-stripping", + "sdk/react-native/upgrading-from-v3" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/react-native/advanced-overview", + "sdk/react-native/connection-status", + "sdk/react-native/managing-web-sockets-connections-manually" + ] + }, + "sdk/react-native/extensions-overview", + "sdk/react-native/ai-user-copilot-overview", + "sdk/react-native/ai-chatbots-overview", + "sdk/react-native/webhooks-overview", + "sdk/react-native/react-native-overview", + "sdk/react-native/changelog" ] } ] - } - ] - } - ] - }, - { - "dropdown": "React Native", - "icon": "react", - "versions": [ - { - "version": "v4‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/overview", - "sdk/react-native/key-concepts", - "sdk/react-native/message-structure-and-hierarchy", - "sdk/react-native/rate-limits" - ] - }, - "sdk/react-native/setup-sdk", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/authentication-overview", - "sdk/react-native/login-listener" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/messaging-overview", - "sdk/react-native/send-message", - "sdk/react-native/receive-messages", - "sdk/react-native/additional-message-filtering", - "sdk/react-native/retrieve-conversations", - "sdk/react-native/threaded-messages", - "sdk/react-native/edit-message", - "sdk/react-native/delete-message", - "sdk/react-native/delete-conversation", - "sdk/react-native/typing-indicators", - "sdk/react-native/interactive-messages", - "sdk/react-native/transient-messages", - "sdk/react-native/delivery-read-receipts", - "sdk/react-native/mentions", - "sdk/react-native/reactions" - ] - }, + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Calling", + "group": " ", "pages": [ - "sdk/react-native/calling-overview", - "sdk/react-native/calling-setup", - "sdk/react-native/default-call", - "sdk/react-native/direct-call", - "sdk/react-native/recording", - "sdk/react-native/video-view-customisation", - "sdk/react-native/presenter-mode", - "sdk/react-native/call-logs", - "sdk/react-native/expo-integration-guide", - "sdk/react-native/session-timeout" + { + "group": "Overview", + "pages": [ + "sdk/react-native/3.0/overview", + "sdk/react-native/3.0/key-concepts", + "sdk/react-native/3.0/message-structure-and-hierarchy", + "sdk/react-native/3.0/rate-limits" + ] + }, + "sdk/react-native/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/react-native/3.0/authentication", + "sdk/react-native/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/react-native/3.0/messaging", + "sdk/react-native/3.0/messaging-send-message", + "sdk/react-native/3.0/messaging-receive-messages", + "sdk/react-native/3.0/messaging-additional-message-filtering", + "sdk/react-native/3.0/messaging-retrieve-conversations", + "sdk/react-native/3.0/threaded-messages", + "sdk/react-native/3.0/messaging-edit-message", + "sdk/react-native/3.0/messaging-delete-message", + "sdk/react-native/3.0/messaging-delete-conversation", + "sdk/react-native/3.0/messaging-typing-indicators", + "sdk/react-native/3.0/transient-messages", + "sdk/react-native/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/react-native/3.0/calling-v3", + "sdk/react-native/3.0/v3-setup", + "sdk/react-native/3.0/v3-default-calling", + "sdk/react-native/3.0/v3-direct-calling", + "sdk/react-native/3.0/v3-video-view-customisation", + "sdk/react-native/3.0/recording-beta-v3", + "sdk/react-native/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/react-native/3.0/calling", + "sdk/react-native/3.0/calling-direct-calling", + "sdk/react-native/3.0/calling-default-calling", + "sdk/react-native/3.0/calling-recording", + "sdk/react-native/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/react-native/3.0/users", + "sdk/react-native/3.0/users-retrieve-users", + "sdk/react-native/3.0/users-user-management", + "sdk/react-native/3.0/users-block-users" + ] + }, + "sdk/react-native/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/react-native/3.0/groups", + "sdk/react-native/3.0/groups-retrieve-groups", + "sdk/react-native/3.0/groups-create-group", + "sdk/react-native/3.0/groups-update-group", + "sdk/react-native/3.0/groups-join-group", + "sdk/react-native/3.0/groups-leave-group", + "sdk/react-native/3.0/groups-delete-group", + "sdk/react-native/3.0/groups-retrieve-group-members", + "sdk/react-native/3.0/groups-add-members-to-group", + "sdk/react-native/3.0/groups-kick-ban-members", + "sdk/react-native/3.0/groups-change-member-scope", + "sdk/react-native/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/react-native/3.0/bots", + "sdk/react-native/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/react-native/3.0/resources", + "sdk/react-native/3.0/resources-all-real-time-listeners", + "sdk/react-native/3.0/resources-upgrading-from-v2", + "sdk/react-native/3.0/resources-push-notification-setup" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/react-native/3.0/advanced", + "sdk/react-native/3.0/advanced-connection-listener", + "sdk/react-native/3.0/managing-web-socket-connections-manually" + ] + }, + "sdk/react-native/3.0/extensions-overview", + "sdk/react-native/3.0/react-native-3-0-overview" ] - }, + } + ] + }, + { + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Users", + "group": " ", "pages": [ - "sdk/react-native/users-overview", - "sdk/react-native/retrieve-users", - "sdk/react-native/user-management", - "sdk/react-native/block-users" - ] - }, - "sdk/react-native/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/react-native/groups-overview", - "sdk/react-native/retrieve-groups", - "sdk/react-native/create-group", - "sdk/react-native/update-group", - "sdk/react-native/join-group", - "sdk/react-native/leave-group", - "sdk/react-native/delete-group", - "sdk/react-native/retrieve-group-members", - "sdk/react-native/group-add-members", - "sdk/react-native/group-kick-ban-members", - "sdk/react-native/group-change-member-scope", - "sdk/react-native/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/react-native/resources-overview", - "sdk/react-native/real-time-listeners", - "sdk/react-native/push-notification-setup", - "sdk/react-native/upgrading-from-v3" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/react-native/advanced-overview", - "sdk/react-native/connection-status", - "sdk/react-native/managing-web-sockets-connections-manually" + { + "group": "Overview", + "pages": [ + "sdk/react-native/2.0/overview", + "sdk/react-native/2.0/key-concepts", + "sdk/react-native/2.0/message-structure-and-hierarchy", + "sdk/react-native/2.0/rate-limits" + ] + }, + "sdk/react-native/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/react-native/2.0/authentication", + "sdk/react-native/2.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/react-native/2.0/messaging", + "sdk/react-native/2.0/messaging-send-message", + "sdk/react-native/2.0/messaging-receive-messages", + "sdk/react-native/2.0/messaging-additional-message-filtering", + "sdk/react-native/2.0/messaging-retrieve-conversations", + "sdk/react-native/2.0/threaded-messages", + "sdk/react-native/2.0/messaging-edit-message", + "sdk/react-native/2.0/messaging-delete-message", + "sdk/react-native/2.0/messaging-delete-conversation", + "sdk/react-native/2.0/messaging-typing-indicators", + "sdk/react-native/2.0/messaging-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/react-native/2.0/calling", + "sdk/react-native/2.0/calling-direct-calling", + "sdk/react-native/2.0/calling-default-calling" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/react-native/2.0/users", + "sdk/react-native/2.0/users-retrieve-users", + "sdk/react-native/2.0/users-user-management", + "sdk/react-native/2.0/users-block-users" + ] + }, + "sdk/react-native/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/react-native/2.0/groups", + "sdk/react-native/2.0/groups-retrieve-groups", + "sdk/react-native/2.0/groups-create-group", + "sdk/react-native/2.0/groups-update-group", + "sdk/react-native/2.0/groups-join-group", + "sdk/react-native/2.0/groups-leave-group", + "sdk/react-native/2.0/groups-delete-group", + "sdk/react-native/2.0/groups-retrieve-group-members", + "sdk/react-native/2.0/groups-add-members-to-group", + "sdk/react-native/2.0/groups-kick-ban-members", + "sdk/react-native/2.0/groups-change-member-scope", + "sdk/react-native/2.0/groups-transfer-group-ownership" + ] + }, + "sdk/react-native/2.0/bots", + "sdk/react-native/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/react-native/2.0/resources", + "sdk/react-native/2.0/resources-all-real-time-listeners", + "sdk/react-native/2.0/resources-upgrading-from-v1", + "sdk/react-native/2.0/resources-push-notification-setup" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/react-native/2.0/advanced", + "sdk/react-native/2.0/advanced-connection-listener" + ] + } ] - }, - "sdk/react-native/extensions-overview", - "sdk/react-native/ai-user-copilot-overview", - "sdk/react-native/ai-chatbots-overview", - "sdk/react-native/webhooks-overview", - "sdk/react-native/react-native-overview", - "sdk/react-native/changelog" + } ] } ] }, { - "version": "v3‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "iOS", + "icon": "/images/icons/swift.svg", + "versions": [ { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/3.0/overview", - "sdk/react-native/3.0/key-concepts", - "sdk/react-native/3.0/message-structure-and-hierarchy", - "sdk/react-native/3.0/rate-limits" - ] - }, - "sdk/react-native/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/3.0/authentication", - "sdk/react-native/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/3.0/messaging", - "sdk/react-native/3.0/messaging-send-message", - "sdk/react-native/3.0/messaging-receive-messages", - "sdk/react-native/3.0/messaging-additional-message-filtering", - "sdk/react-native/3.0/messaging-retrieve-conversations", - "sdk/react-native/3.0/threaded-messages", - "sdk/react-native/3.0/messaging-edit-message", - "sdk/react-native/3.0/messaging-delete-message", - "sdk/react-native/3.0/messaging-delete-conversation", - "sdk/react-native/3.0/messaging-typing-indicators", - "sdk/react-native/3.0/transient-messages", - "sdk/react-native/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/react-native/3.0/calling-v3", - "sdk/react-native/3.0/v3-setup", - "sdk/react-native/3.0/v3-default-calling", - "sdk/react-native/3.0/v3-direct-calling", - "sdk/react-native/3.0/v3-video-view-customisation", - "sdk/react-native/3.0/recording-beta-v3", - "sdk/react-native/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/react-native/3.0/calling", - "sdk/react-native/3.0/calling-direct-calling", - "sdk/react-native/3.0/calling-default-calling", - "sdk/react-native/3.0/calling-recording", - "sdk/react-native/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/react-native/3.0/users", - "sdk/react-native/3.0/users-retrieve-users", - "sdk/react-native/3.0/users-user-management", - "sdk/react-native/3.0/users-block-users" - ] - }, - "sdk/react-native/3.0/user-presence", + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Groups", + "group": " ", "pages": [ - "sdk/react-native/3.0/groups", - "sdk/react-native/3.0/groups-retrieve-groups", - "sdk/react-native/3.0/groups-create-group", - "sdk/react-native/3.0/groups-update-group", - "sdk/react-native/3.0/groups-join-group", - "sdk/react-native/3.0/groups-leave-group", - "sdk/react-native/3.0/groups-delete-group", - "sdk/react-native/3.0/groups-retrieve-group-members", - "sdk/react-native/3.0/groups-add-members-to-group", - "sdk/react-native/3.0/groups-kick-ban-members", - "sdk/react-native/3.0/groups-change-member-scope", - "sdk/react-native/3.0/groups-transfer-group-ownership" + { + "group": "Overview", + "pages": [ + "sdk/ios/overview", + "sdk/ios/key-concepts", + "sdk/ios/message-structure-and-hierarchy", + "sdk/ios/rate-limits" + ] + }, + "sdk/ios/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ios/authentication-overview", + "sdk/ios/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ios/messaging-overview", + "sdk/ios/send-message", + "sdk/ios/receive-message", + "sdk/ios/additional-message-filtering", + "sdk/ios/retrieve-conversations", + "sdk/ios/threaded-messages", + "sdk/ios/edit-message", + "sdk/ios/delete-message", + "sdk/ios/delete-conversation", + "sdk/ios/flag-message", + "sdk/ios/typing-indicators", + "sdk/ios/delivery-read-receipts", + "sdk/ios/interactive-messages", + "sdk/ios/transient-messages", + "sdk/ios/mentions", + "sdk/ios/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ios/calling-overview", + "sdk/ios/calling-setup", + "sdk/ios/default-calling", + "sdk/ios/direct-calling", + "sdk/ios/standalone-calling", + "sdk/ios/recording", + "sdk/ios/video-view-customisation", + "sdk/ios/presenter-mode", + "sdk/ios/call-logs", + "sdk/ios/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ios/users-overview", + "sdk/ios/retrieve-users", + "sdk/ios/user-management", + "sdk/ios/block-users" + ] + }, + "sdk/ios/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ios/groups-overview", + "sdk/ios/retrieve-groups", + "sdk/ios/create-group", + "sdk/ios/update-group", + "sdk/ios/join-group", + "sdk/ios/leave-group", + "sdk/ios/delete-group", + "sdk/ios/group-add-members", + "sdk/ios/retrieve-group-members", + "sdk/ios/group-kick-member", + "sdk/ios/group-change-member-scope", + "sdk/ios/transfer-group-ownership" + ] + }, + "sdk/ios/ai-moderation", + "sdk/ios/ai-agents", + { + "group": "Advanced", + "pages": [ + "sdk/ios/advanced", + "sdk/ios/connection-status", + "sdk/ios/web-socket-connection-behaviour", + "sdk/ios/managing-web-socket-connections-manually", + "sdk/ios/marking-delivered-with-push-notification", + "sdk/ios/publishing-app-on-appstore" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/ios/resources-overview", + "sdk/ios/all-real-time-delegates-listeners", + "sdk/ios/increment-app-icon-badge-count", + "sdk/ios/remove-delivered-notifications", + "sdk/ios/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/launch-chat-window-on-tap-of-push-notification", + "sdk/ios/prepare-your-app-for-background-updates", + "sdk/ios/upgrading-from-v3-to-v4", + "sdk/ios/upgrading-from-v2" + ] + }, + "sdk/ios/extensions-overview", + "sdk/ios/ai-user-copilot-overview", + "sdk/ios/ai-chatbots-overview", + "sdk/ios/webhooks-overview", + "sdk/ios/ios-overview", + "sdk/ios/changelog" ] - }, - "sdk/react-native/3.0/bots", - "sdk/react-native/3.0/webhooks", + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Resources", + "group": " ", "pages": [ - "sdk/react-native/3.0/resources", - "sdk/react-native/3.0/resources-all-real-time-listeners", - "sdk/react-native/3.0/resources-upgrading-from-v2", - "sdk/react-native/3.0/resources-push-notification-setup" + { + "group": "Overview", + "pages": [ + "sdk/ios/3.0/overview", + "sdk/ios/3.0/key-concepts", + "sdk/ios/3.0/message-structure-and-hierarchy", + "sdk/ios/3.0/rate-limits" + ] + }, + "sdk/ios/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ios/3.0/authentication", + "sdk/ios/3.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ios/3.0/messaging", + "sdk/ios/3.0/send-a-message", + "sdk/ios/3.0/receive-a-message", + "sdk/ios/3.0/additional-message-filtering", + "sdk/ios/3.0/retrieve-conversations", + "sdk/ios/3.0/threaded-messages", + "sdk/ios/3.0/edit-a-message", + "sdk/ios/3.0/delete-a-message", + "sdk/ios/3.0/delete-a-conversation", + "sdk/ios/3.0/typing-indicators", + "sdk/ios/3.0/delivery-read-receipts", + "sdk/ios/3.0/transient-messages" + ] + }, + { + "group": "Calling V3", + "pages": [ + "sdk/ios/3.0/calling-v3", + "sdk/ios/3.0/integration", + "sdk/ios/3.0/default-calling", + "sdk/ios/3.0/direct-calling", + "sdk/ios/3.0/recording", + "sdk/ios/3.0/video-view-customisation", + "sdk/ios/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ios/3.0/calling", + "sdk/ios/3.0/direct-calling1", + "sdk/ios/3.0/default-calling1", + "sdk/ios/3.0/recording1", + "sdk/ios/3.0/video-view-customisation1" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ios/3.0/users", + "sdk/ios/3.0/retrieve-users", + "sdk/ios/3.0/user-management", + "sdk/ios/3.0/block-users" + ] + }, + "sdk/ios/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ios/3.0/groups", + "sdk/ios/3.0/retrieve-groups", + "sdk/ios/3.0/create-a-group", + "sdk/ios/3.0/update-a-group", + "sdk/ios/3.0/join-a-group", + "sdk/ios/3.0/leave-a-group", + "sdk/ios/3.0/delete-a-group", + "sdk/ios/3.0/add-members-to-a-group", + "sdk/ios/3.0/retrieve-group-members", + "sdk/ios/3.0/kick-member-from-a-group", + "sdk/ios/3.0/change-member-scope", + "sdk/ios/3.0/transfer-group-ownership" + ] + }, + "sdk/ios/3.0/bots", + "sdk/ios/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ios/3.0/resources", + "sdk/ios/3.0/all-real-time-delegates-listeners", + "sdk/ios/3.0/increment-app-icon-badge-count", + "sdk/ios/3.0/upgrading-from-v2", + "sdk/ios/3.0/remove-delivered-notifications", + "sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/3.0/launch-chat-window-push-notification", + "sdk/ios/3.0/prepare-your-app-for-background-updates" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ios/3.0/advanced", + "sdk/ios/3.0/connection-status", + "sdk/ios/3.0/publishing-app-on-appstore", + "sdk/ios/3.0/managing-web-socket-connections-manually" + ] + }, + "sdk/ios/3.0/extensions-overview" ] - }, + } + ] + }, + { + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/react-native/3.0/advanced", - "sdk/react-native/3.0/advanced-connection-listener", - "sdk/react-native/3.0/managing-web-socket-connections-manually" + { + "group": "Overview", + "pages": [ + "sdk/ios/2.0/overview", + "sdk/ios/2.0/key-concepts", + "sdk/ios/2.0/message-structure-and-hierarchy", + "sdk/ios/2.0/rate-limits" + ] + }, + "sdk/ios/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ios/2.0/authentication", + "sdk/ios/2.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ios/2.0/messaging", + "sdk/ios/2.0/send-a-message", + "sdk/ios/2.0/receive-a-message", + "sdk/ios/2.0/additional-message-filtering", + "sdk/ios/2.0/retrieve-conversations", + "sdk/ios/2.0/threaded-messages", + "sdk/ios/2.0/edit-a-message", + "sdk/ios/2.0/delete-a-message", + "sdk/ios/2.0/delete-a-conversation", + "sdk/ios/2.0/typing-indicators", + "sdk/ios/2.0/delivery-read-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ios/2.0/calling", + "sdk/ios/2.0/direct-calling1", + "sdk/ios/2.0/default-calling1" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ios/2.0/users", + "sdk/ios/2.0/retrieve-users", + "sdk/ios/2.0/user-management", + "sdk/ios/2.0/block-users" + ] + }, + "sdk/ios/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ios/2.0/groups", + "sdk/ios/2.0/retrieve-groups", + "sdk/ios/2.0/create-a-group", + "sdk/ios/2.0/update-a-group", + "sdk/ios/2.0/join-a-group", + "sdk/ios/2.0/leave-a-group", + "sdk/ios/2.0/delete-a-group", + "sdk/ios/2.0/add-members-to-a-group", + "sdk/ios/2.0/retrieve-group-members", + "sdk/ios/2.0/kick-member-from-a-group", + "sdk/ios/2.0/change-member-scope", + "sdk/ios/2.0/transfer-group-ownership" + ] + }, + "sdk/ios/2.0/extensions", + { + "group": "Advanced", + "pages": [ + "sdk/ios/2.0/advanced", + "sdk/ios/2.0/connection-status", + "sdk/ios/2.0/publishing-app-on-appstore" + ] + }, + "sdk/ios/2.0/bots", + "sdk/ios/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ios/2.0/resources", + "sdk/ios/2.0/all-real-time-delegates-listeners", + "sdk/ios/2.0/increment-app-icon-badge-count", + "sdk/ios/2.0/upgrading-from-v1", + "sdk/ios/2.0/remove-delivered-notifications", + "sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification", + "sdk/ios/2.0/launch-chat-window-push-notification" + ] + } ] - }, - "sdk/react-native/3.0/extensions-overview", - "sdk/react-native/3.0/react-native-3-0-overview" + } ] } ] }, { - "version": "v2‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "Android", + "icon": "/images/icons/android.svg", + "versions": [ { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/react-native/2.0/overview", - "sdk/react-native/2.0/key-concepts", - "sdk/react-native/2.0/message-structure-and-hierarchy", - "sdk/react-native/2.0/rate-limits" - ] - }, - "sdk/react-native/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/react-native/2.0/authentication", - "sdk/react-native/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/react-native/2.0/messaging", - "sdk/react-native/2.0/messaging-send-message", - "sdk/react-native/2.0/messaging-receive-messages", - "sdk/react-native/2.0/messaging-additional-message-filtering", - "sdk/react-native/2.0/messaging-retrieve-conversations", - "sdk/react-native/2.0/threaded-messages", - "sdk/react-native/2.0/messaging-edit-message", - "sdk/react-native/2.0/messaging-delete-message", - "sdk/react-native/2.0/messaging-delete-conversation", - "sdk/react-native/2.0/messaging-typing-indicators", - "sdk/react-native/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/react-native/2.0/calling", - "sdk/react-native/2.0/calling-direct-calling", - "sdk/react-native/2.0/calling-default-calling" - ] - }, + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Users", + "group": " ", "pages": [ - "sdk/react-native/2.0/users", - "sdk/react-native/2.0/users-retrieve-users", - "sdk/react-native/2.0/users-user-management", - "sdk/react-native/2.0/users-block-users" + { + "group": "Overview", + "pages": [ + "sdk/android/overview", + "sdk/android/key-concepts", + "sdk/android/message-structure-and-hierarchy", + "sdk/android/rate-limits" + ] + }, + "sdk/android/setup", + { + "group": "Authentication", + "pages": [ + "sdk/android/authentication-overview", + "sdk/android/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/messaging-overview", + "sdk/android/send-message", + "sdk/android/receive-messages", + "sdk/android/additional-message-filtering", + "sdk/android/retrieve-conversations", + "sdk/android/threaded-messages", + "sdk/android/edit-message", + "sdk/android/delete-message", + "sdk/android/flag-message", + "sdk/android/delete-conversation", + "sdk/android/typing-indicators", + "sdk/android/delivery-read-receipts", + "sdk/android/transient-messages", + "sdk/android/interactive-messages", + "sdk/android/mentions", + "sdk/android/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/calling-overview", + "sdk/android/calling-setup", + "sdk/android/default-calling", + "sdk/android/direct-calling", + "sdk/android/standalone-calling", + "sdk/android/recording", + "sdk/android/video-view-customisation", + "sdk/android/presenter-mode", + "sdk/android/call-logs", + "sdk/android/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/users-overview", + "sdk/android/retrieve-users", + "sdk/android/user-management", + "sdk/android/block-users" + ] + }, + "sdk/android/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/groups-overview", + "sdk/android/retrieve-groups", + "sdk/android/create-group", + "sdk/android/update-group", + "sdk/android/join-group", + "sdk/android/leave-group", + "sdk/android/delete-group", + "sdk/android/retrieve-group-members", + "sdk/android/group-add-members", + "sdk/android/group-kick-member", + "sdk/android/group-change-member-scope", + "sdk/android/transfer-group-ownership" + ] + }, + "sdk/android/ai-moderation", + "sdk/android/ai-agents", + { + "group": "Resources", + "pages": [ + "sdk/android/resources-overview", + "sdk/android/real-time-listeners", + "sdk/android/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/advanced-overview", + "sdk/android/connection-status", + "sdk/android/publishing-app-on-playstore", + "sdk/android/connection-behaviour" + ] + }, + "sdk/android/extensions-overview", + "sdk/android/ai-user-copilot-overview", + "sdk/android/ai-chatbots-overview", + "sdk/android/webhooks-overview", + "sdk/android/android-overview", + "sdk/android/changelog" ] - }, - "sdk/react-native/2.0/user-presence", + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Groups", + "group": " ", "pages": [ - "sdk/react-native/2.0/groups", - "sdk/react-native/2.0/groups-retrieve-groups", - "sdk/react-native/2.0/groups-create-group", - "sdk/react-native/2.0/groups-update-group", - "sdk/react-native/2.0/groups-join-group", - "sdk/react-native/2.0/groups-leave-group", - "sdk/react-native/2.0/groups-delete-group", - "sdk/react-native/2.0/groups-retrieve-group-members", - "sdk/react-native/2.0/groups-add-members-to-group", - "sdk/react-native/2.0/groups-kick-ban-members", - "sdk/react-native/2.0/groups-change-member-scope", - "sdk/react-native/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/react-native/2.0/bots", - "sdk/react-native/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/react-native/2.0/resources", - "sdk/react-native/2.0/resources-all-real-time-listeners", - "sdk/react-native/2.0/resources-upgrading-from-v1", - "sdk/react-native/2.0/resources-push-notification-setup" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/react-native/2.0/advanced", - "sdk/react-native/2.0/advanced-connection-listener" + { + "group": "Overview", + "pages": [ + "sdk/android/3.0/overview", + "sdk/android/3.0/key-concepts", + "sdk/android/3.0/message-structure-and-hierarchy", + "sdk/android/3.0/rate-limits" + ] + }, + { + "group": "Authentication", + "pages": [ + "sdk/android/3.0/authentication", + "sdk/android/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/3.0/messaging", + "sdk/android/3.0/messaging-send-message", + "sdk/android/3.0/messaging-receive-messages", + "sdk/android/3.0/messaging-additional-message-filtering", + "sdk/android/3.0/messaging-retrieve-conversations", + "sdk/android/3.0/threaded-messages", + "sdk/android/3.0/messaging-edit-message", + "sdk/android/3.0/messaging-delete-message", + "sdk/android/3.0/messaging-delete-conversation", + "sdk/android/3.0/messaging-typing-indicators", + "sdk/android/3.0/messaging-transient-messages", + "sdk/android/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/android/3.0/calling-v3", + "sdk/android/3.0/setup-v3", + "sdk/android/3.0/default-calling-v3", + "sdk/android/3.0/direct-calling-v3", + "sdk/android/3.0/video-view-customisation-v3", + "sdk/android/3.0/calling-recording-v3", + "sdk/android/3.0/presenter-mode" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/3.0/calling", + "sdk/android/3.0/calling-direct-calling", + "sdk/android/3.0/calling-default-calling", + "sdk/android/3.0/calling-recording", + "sdk/android/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/3.0/users", + "sdk/android/3.0/users-retrieve-users", + "sdk/android/3.0/users-user-management", + "sdk/android/3.0/users-block-users" + ] + }, + "sdk/android/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/3.0/groups", + "sdk/android/3.0/groups-retrieve-groups", + "sdk/android/3.0/groups-create-group", + "sdk/android/3.0/groups-update-group", + "sdk/android/3.0/groups-join-group", + "sdk/android/3.0/groups-leave-group", + "sdk/android/3.0/groups-delete-group", + "sdk/android/3.0/groups-retrieve-group-members", + "sdk/android/3.0/groups-add-members-to-group", + "sdk/android/3.0/groups-kick-ban-members", + "sdk/android/3.0/groups-change-member-scope", + "sdk/android/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/android/3.0/bots", + "sdk/android/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/android/3.0/android-resources", + "sdk/android/3.0/resources-all-real-time-listeners", + "sdk/android/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/3.0/android-advanced", + "sdk/android/3.0/advanced-connection-status", + "sdk/android/3.0/advanced-publishing-app-on-playstore", + "sdk/android/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/android/3.0/setup", + "sdk/android/3.0/extensions-overview", + { + "group": "V3 UI Kits", + "pages": [ + "sdk/android/3.0/android-3-0-overview", + "sdk/android/3.0/kotlin-overview" + ] + } ] } ] - } - ] - } - ] - }, - { - "dropdown": "iOS", - "icon": "swift", - "versions": [ - { - "version": "v4‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ios/overview", - "sdk/ios/key-concepts", - "sdk/ios/message-structure-and-hierarchy", - "sdk/ios/rate-limits" - ] - }, - "sdk/ios/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ios/authentication-overview", - "sdk/ios/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/messaging-overview", - "sdk/ios/send-message", - "sdk/ios/receive-message", - "sdk/ios/additional-message-filtering", - "sdk/ios/retrieve-conversations", - "sdk/ios/threaded-messages", - "sdk/ios/edit-message", - "sdk/ios/delete-message", - "sdk/ios/delete-conversation", - "sdk/ios/typing-indicators", - "sdk/ios/delivery-read-receipts", - "sdk/ios/interactive-messages", - "sdk/ios/transient-messages", - "sdk/ios/mentions", - "sdk/ios/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/calling-overview", - "sdk/ios/calling-integration", - "sdk/ios/default-calling", - "sdk/ios/direct-calling", - "sdk/ios/recording", - "sdk/ios/video-view-customisation", - "sdk/ios/presenter-mode", - "sdk/ios/call-logs", - "sdk/ios/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/users-overview", - "sdk/ios/retrieve-users", - "sdk/ios/user-management", - "sdk/ios/block-users" - ] - }, - "sdk/ios/user-presence", + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Groups", - "pages": [ - "sdk/ios/groups-overview", - "sdk/ios/retrieve-groups", - "sdk/ios/create-group", - "sdk/ios/update-group", - "sdk/ios/join-group", - "sdk/ios/leave-group", - "sdk/ios/delete-group", - "sdk/ios/group-add-members", - "sdk/ios/retrieve-group-members", - "sdk/ios/group-kick-member", - "sdk/ios/group-change-member-scope", - "sdk/ios/transfer-group-ownership" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ios/advanced", - "sdk/ios/connection-status", - "sdk/ios/web-socket-connection-behaviour", - "sdk/ios/managing-web-socket-connections-manually", - "sdk/ios/marking-delivered-with-push-notification", - "sdk/ios/publishing-app-on-appstore" - ] - }, - { - "group": "Resources", + "group": " ", "pages": [ - "sdk/ios/resources-overview", - "sdk/ios/all-real-time-delegates-listeners", - "sdk/ios/increment-app-icon-badge-count", - "sdk/ios/remove-delivered-notifications", - "sdk/ios/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/launch-chat-window-on-tap-of-push-notification", - "sdk/ios/prepare-your-app-for-background-updates", - "sdk/ios/upgrading-from-v3-to-v4", - "sdk/ios/upgrading-from-v2" + { + "group": "Overview", + "pages": [ + "sdk/android/2.0/overview", + "sdk/android/2.0/key-concepts", + "sdk/android/2.0/message-structure-and-hierarchy", + "sdk/android/2.0/rate-limits" + ] + }, + "sdk/android/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/android/2.0/authentication", + "sdk/android/2.0/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/android/2.0/messaging", + "sdk/android/2.0/send-message", + "sdk/android/2.0/receive-messages", + "sdk/android/2.0/additional-message-filtering", + "sdk/android/2.0/retrieve-conversations", + "sdk/android/2.0/threaded-messages", + "sdk/android/2.0/edit-message", + "sdk/android/2.0/delete-message", + "sdk/android/2.0/delete-conversation", + "sdk/android/2.0/typing-indicators", + "sdk/android/2.0/delivery-read-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/android/2.0/calling", + "sdk/android/2.0/direct-calling", + "sdk/android/2.0/default-calling" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/android/2.0/users", + "sdk/android/2.0/retrieve-users", + "sdk/android/2.0/user-management", + "sdk/android/2.0/block-users" + ] + }, + "sdk/android/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/android/2.0/groups", + "sdk/android/2.0/retrieve-groups", + "sdk/android/2.0/create-a-group", + "sdk/android/2.0/update-a-group", + "sdk/android/2.0/join-a-group", + "sdk/android/2.0/leave-a-group", + "sdk/android/2.0/delete-a-group", + "sdk/android/2.0/retrieve-group-members", + "sdk/android/2.0/add-members-to-a-group", + "sdk/android/2.0/kick-member-from-a-group", + "sdk/android/2.0/change-member-scope", + "sdk/android/2.0/transfer-group-ownership" + ] + }, + "sdk/android/2.0/extensions", + "sdk/android/2.0/bots", + "sdk/android/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/android/2.0/resources", + "sdk/android/2.0/resources-all-real-time-listeners", + "sdk/android/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/android/2.0/advanced", + "sdk/android/2.0/connection-status", + "sdk/android/2.0/publishing-app-on-playstore" + ] + } ] - }, - "sdk/ios/extensions-overview", - "sdk/ios/ai-user-copilot-overview", - "sdk/ios/ai-chatbots-overview", - "sdk/ios/webhooks-overview", - "sdk/ios/ios-overview", - "sdk/ios/changelog" + } ] } ] }, { - "version": "v3‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "Flutter", + "icon": "/images/icons/flutter.svg", + "versions": [ { - "group": " ", - "pages": [ + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Overview", + "group": " ", "pages": [ - "sdk/ios/3.0/overview", - "sdk/ios/3.0/key-concepts", - "sdk/ios/3.0/message-structure-and-hierarchy", - "sdk/ios/3.0/rate-limits" - ] - }, - "sdk/ios/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ios/3.0/authentication", - "sdk/ios/3.0/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/3.0/messaging", - "sdk/ios/3.0/send-a-message", - "sdk/ios/3.0/receive-a-message", - "sdk/ios/3.0/additional-message-filtering", - "sdk/ios/3.0/retrieve-conversations", - "sdk/ios/3.0/threaded-messages", - "sdk/ios/3.0/edit-a-message", - "sdk/ios/3.0/delete-a-message", - "sdk/ios/3.0/delete-a-conversation", - "sdk/ios/3.0/typing-indicators", - "sdk/ios/3.0/delivery-read-receipts", - "sdk/ios/3.0/transient-messages" - ] - }, - { - "group": "Calling V3", - "pages": [ - "sdk/ios/3.0/calling-v3", - "sdk/ios/3.0/integration", - "sdk/ios/3.0/default-calling", - "sdk/ios/3.0/direct-calling", - "sdk/ios/3.0/recording", - "sdk/ios/3.0/video-view-customisation", - "sdk/ios/3.0/presenter-mode" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/3.0/calling", - "sdk/ios/3.0/direct-calling1", - "sdk/ios/3.0/default-calling1", - "sdk/ios/3.0/recording1", - "sdk/ios/3.0/video-view-customisation1" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/3.0/users", - "sdk/ios/3.0/retrieve-users", - "sdk/ios/3.0/user-management", - "sdk/ios/3.0/block-users" - ] - }, - "sdk/ios/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ios/3.0/groups", - "sdk/ios/3.0/retrieve-groups", - "sdk/ios/3.0/create-a-group", - "sdk/ios/3.0/update-a-group", - "sdk/ios/3.0/join-a-group", - "sdk/ios/3.0/leave-a-group", - "sdk/ios/3.0/delete-a-group", - "sdk/ios/3.0/add-members-to-a-group", - "sdk/ios/3.0/retrieve-group-members", - "sdk/ios/3.0/kick-member-from-a-group", - "sdk/ios/3.0/change-member-scope", - "sdk/ios/3.0/transfer-group-ownership" - ] - }, - "sdk/ios/3.0/bots", - "sdk/ios/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ios/3.0/resources", - "sdk/ios/3.0/all-real-time-delegates-listeners", - "sdk/ios/3.0/increment-app-icon-badge-count", - "sdk/ios/3.0/upgrading-from-v2", - "sdk/ios/3.0/remove-delivered-notifications", - "sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/3.0/launch-chat-window-push-notification", - "sdk/ios/3.0/prepare-your-app-for-background-updates" + { + "group": "Overview", + "pages": [ + "sdk/flutter/overview", + "sdk/flutter/key-concepts", + "sdk/flutter/message-structure-and-hierarchy", + "sdk/flutter/rate-limits" + ] + }, + "sdk/flutter/setup", + { + "group": "Authentication", + "pages": [ + "sdk/flutter/authentication-overview", + "sdk/flutter/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/flutter/messaging-overview", + "sdk/flutter/send-message", + "sdk/flutter/receive-messages", + "sdk/flutter/additional-message-filtering", + "sdk/flutter/retrieve-conversations", + "sdk/flutter/edit-message", + "sdk/flutter/flag-message", + "sdk/flutter/delete-message", + "sdk/flutter/delete-conversation", + "sdk/flutter/typing-indicators", + "sdk/flutter/interactive-messages", + "sdk/flutter/transient-messages", + "sdk/flutter/delivery-read-receipts", + "sdk/flutter/threaded-messages", + "sdk/flutter/mentions", + "sdk/flutter/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/flutter/calling-overview", + "sdk/flutter/calling-setup", + "sdk/flutter/default-call", + "sdk/flutter/direct-call", + "sdk/flutter/standalone-calling", + "sdk/flutter/video-view-customisation", + "sdk/flutter/recording", + "sdk/flutter/presenter-mode", + "sdk/flutter/call-logs", + "sdk/flutter/session-timeout" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/flutter/users-overview", + "sdk/flutter/retrieve-users", + "sdk/flutter/user-management", + "sdk/flutter/block-users" + ] + }, + "sdk/flutter/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/flutter/groups-overview", + "sdk/flutter/retrieve-groups", + "sdk/flutter/create-group", + "sdk/flutter/update-group", + "sdk/flutter/join-group", + "sdk/flutter/leave-group", + "sdk/flutter/delete-group", + "sdk/flutter/retrieve-group-members", + "sdk/flutter/group-add-members", + "sdk/flutter/group-kick-member", + "sdk/flutter/group-change-member-scope", + "sdk/flutter/transfer-group-ownership" + ] + }, + "sdk/flutter/ai-moderation", + "sdk/flutter/ai-agents", + { + "group": "Resources", + "pages": [ + "sdk/flutter/resources-overview", + "sdk/flutter/real-time-listeners", + "sdk/flutter/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/flutter/advanced-overview", + "sdk/flutter/connection-status", + "sdk/flutter/connection-behaviour" + ] + }, + "sdk/flutter/extensions-overview", + "sdk/flutter/ai-user-copilot-overview", + "sdk/flutter/ai-chatbots-overview", + "sdk/flutter/webhooks-overview", + "sdk/flutter/flutter-overview", + "sdk/flutter/changelog" ] - }, + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/ios/3.0/advanced", - "sdk/ios/3.0/connection-status", - "sdk/ios/3.0/publishing-app-on-appstore", - "sdk/ios/3.0/managing-web-socket-connections-manually" + { + "group": "Overview", + "pages": [ + "sdk/flutter/3.0/overview", + "sdk/flutter/3.0/key-concepts", + "sdk/flutter/3.0/message-structure-and-hierarchy", + "sdk/flutter/3.0/rate-limits" + ] + }, + "sdk/flutter/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/flutter/3.0/authentication", + "sdk/flutter/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/flutter/3.0/messaging", + "sdk/flutter/3.0/messaging-send-message", + "sdk/flutter/3.0/messaging-receive-messages", + "sdk/flutter/3.0/messaging-additional-message-filtering", + "sdk/flutter/3.0/messaging-retrieve-conversations", + "sdk/flutter/3.0/messaging-edit-message", + "sdk/flutter/3.0/messaging-delete-message", + "sdk/flutter/3.0/messaging-delete-conversation", + "sdk/flutter/3.0/messaging-typing-indicators", + "sdk/flutter/3.0/messaging-transient-messages", + "sdk/flutter/3.0/messaging-receipts", + "sdk/flutter/3.0/threaded-messages" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/flutter/3.0/calling-v3", + "sdk/flutter/3.0/calling-setup", + "sdk/flutter/3.0/default-calling", + "sdk/flutter/3.0/direct-calling", + "sdk/flutter/3.0/video-view-customisation", + "sdk/flutter/3.0/recording", + "sdk/flutter/3.0/presenter" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/flutter/3.0/users", + "sdk/flutter/3.0/users-retrieve-users", + "sdk/flutter/3.0/users-user-management", + "sdk/flutter/3.0/users-block-users" + ] + }, + "sdk/flutter/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/flutter/3.0/groups", + "sdk/flutter/3.0/groups-retrieve-groups", + "sdk/flutter/3.0/groups-create-group", + "sdk/flutter/3.0/groups-update-group", + "sdk/flutter/3.0/groups-join-group", + "sdk/flutter/3.0/groups-leave-group", + "sdk/flutter/3.0/groups-delete-group", + "sdk/flutter/3.0/groups-retrieve-group-members", + "sdk/flutter/3.0/groups-add-members-to-group", + "sdk/flutter/3.0/groups-kick-ban-members", + "sdk/flutter/3.0/groups-change-member-scope", + "sdk/flutter/3.0/groups-transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/flutter/3.0/flutter-resources", + "sdk/flutter/3.0/resources-all-real-time-listeners" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/flutter/3.0/advanced", + "sdk/flutter/3.0/advanced-connection-status", + "sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually" + ] + }, + "sdk/flutter/extensions-overview" ] - }, - "sdk/ios/3.0/extensions-overview" + } ] } ] }, { - "version": "v2‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "Ionic (Deprecated)", + "icon": "/images/icons/ionic.svg", + "versions": [ { - "group": " ", - "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ios/2.0/overview", - "sdk/ios/2.0/key-concepts", - "sdk/ios/2.0/message-structure-and-hierarchy", - "sdk/ios/2.0/rate-limits" - ] - }, - "sdk/ios/2.0/setup", + "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Authentication", + "group": " ", "pages": [ - "sdk/ios/2.0/authentication", - "sdk/ios/2.0/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ios/2.0/messaging", - "sdk/ios/2.0/send-a-message", - "sdk/ios/2.0/receive-a-message", - "sdk/ios/2.0/additional-message-filtering", - "sdk/ios/2.0/retrieve-conversations", - "sdk/ios/2.0/threaded-messages", - "sdk/ios/2.0/edit-a-message", - "sdk/ios/2.0/delete-a-message", - "sdk/ios/2.0/delete-a-conversation", - "sdk/ios/2.0/typing-indicators", - "sdk/ios/2.0/delivery-read-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ios/2.0/calling", - "sdk/ios/2.0/direct-calling1", - "sdk/ios/2.0/default-calling1" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ios/2.0/users", - "sdk/ios/2.0/retrieve-users", - "sdk/ios/2.0/user-management", - "sdk/ios/2.0/block-users" - ] - }, - "sdk/ios/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ios/2.0/groups", - "sdk/ios/2.0/retrieve-groups", - "sdk/ios/2.0/create-a-group", - "sdk/ios/2.0/update-a-group", - "sdk/ios/2.0/join-a-group", - "sdk/ios/2.0/leave-a-group", - "sdk/ios/2.0/delete-a-group", - "sdk/ios/2.0/add-members-to-a-group", - "sdk/ios/2.0/retrieve-group-members", - "sdk/ios/2.0/kick-member-from-a-group", - "sdk/ios/2.0/change-member-scope", - "sdk/ios/2.0/transfer-group-ownership" + { + "group": "Overview", + "pages": [ + "sdk/ionic-legacy/overview", + "sdk/ionic-legacy/key-concepts", + "sdk/ionic-legacy/message-structure-and-hierarchy", + "sdk/ionic-legacy/rate-limits" + ] + }, + "sdk/ionic-legacy/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic-legacy/authentication", + "sdk/ionic-legacy/login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic-legacy/messaging-overview", + "sdk/ionic-legacy/send-message", + "sdk/ionic-legacy/receive-messages", + "sdk/ionic-legacy/additional-message-filtering", + "sdk/ionic-legacy/retrieve-conversations", + "sdk/ionic-legacy/threaded-messages", + "sdk/ionic-legacy/edit-message", + "sdk/ionic-legacy/delete-message", + "sdk/ionic-legacy/delete-conversation", + "sdk/ionic-legacy/typing-indicators", + "sdk/ionic-legacy/interactive-messages", + "sdk/ionic-legacy/transient-messages", + "sdk/ionic-legacy/delivery-read-receipts", + "sdk/ionic-legacy/mentions", + "sdk/ionic-legacy/reactions" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic-legacy/calling-overview", + "sdk/ionic-legacy/calling-setup", + "sdk/ionic-legacy/default-call", + "sdk/ionic-legacy/direct-call", + "sdk/ionic-legacy/video-view-customisation", + "sdk/ionic-legacy/recording", + "sdk/ionic-legacy/presenter-mode" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic-legacy/users-overview", + "sdk/ionic-legacy/retrieve-users", + "sdk/ionic-legacy/user-management", + "sdk/ionic-legacy/block-users" + ] + }, + "sdk/ionic-legacy/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic-legacy/groups-overview", + "sdk/ionic-legacy/retrieve-groups", + "sdk/ionic-legacy/create-group", + "sdk/ionic-legacy/update-group", + "sdk/ionic-legacy/join-group", + "sdk/ionic-legacy/leave-group", + "sdk/ionic-legacy/delete-group", + "sdk/ionic-legacy/retrieve-group-members", + "sdk/ionic-legacy/group-add-members", + "sdk/ionic-legacy/group-kick-member", + "sdk/ionic-legacy/group-change-member-scope", + "sdk/ionic-legacy/transfer-group-ownership" + ] + }, + { + "group": "Resources", + "pages": [ + "sdk/ionic-legacy/resources-overview", + "sdk/ionic-legacy/real-time-listeners", + "sdk/ionic-legacy/upgrading-from-v3-guide" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic-legacy/advanced", + "sdk/ionic-legacy/connection-status", + "sdk/ionic-legacy/connection-behaviour", + "sdk/ionic-legacy/managing-connections-manually" + ] + }, + "sdk/ionic-legacy/extensions-overview", + "sdk/ionic-legacy/ai-user-copilot-overview", + "sdk/ionic-legacy/ai-chatbots-overview", + "sdk/ionic-legacy/webhooks-overview", + "sdk/ionic-legacy/changelog" ] - }, - "sdk/ios/2.0/extensions", + } + ] + }, + { + "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Advanced", + "group": " ", "pages": [ - "sdk/ios/2.0/advanced", - "sdk/ios/2.0/connection-status", - "sdk/ios/2.0/publishing-app-on-appstore" + { + "group": "Overview", + "pages": [ + "sdk/ionic-legacy/3.0/overview", + "sdk/ionic-legacy/3.0/key-concepts", + "sdk/ionic-legacy/3.0/message-structure-and-hierarchy", + "sdk/ionic-legacy/3.0/rate-limits" + ] + }, + "sdk/ionic-legacy/3.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic-legacy/3.0/authentication", + "sdk/ionic-legacy/3.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic-legacy/3.0/messaging", + "sdk/ionic-legacy/3.0/messaging-send-message", + "sdk/ionic-legacy/3.0/messaging-receive-messages", + "sdk/ionic-legacy/3.0/messaging-additional-message-filtering", + "sdk/ionic-legacy/3.0/messaging-retrieve-conversations", + "sdk/ionic-legacy/3.0/threaded-messages", + "sdk/ionic-legacy/3.0/messaging-edit-message", + "sdk/ionic-legacy/3.0/messaging-delete-message", + "sdk/ionic-legacy/3.0/messaging-delete-conversation", + "sdk/ionic-legacy/3.0/messaging-typing-indicators", + "sdk/ionic-legacy/3.0/transient-messages", + "sdk/ionic-legacy/3.0/messaging-receipts" + ] + }, + { + "group": "Calling v3", + "pages": [ + "sdk/ionic-legacy/3.0/calling-v3", + "sdk/ionic-legacy/3.0/v3-setup", + "sdk/ionic-legacy/3.0/v3-start-call-session", + "sdk/ionic-legacy/3.0/v3-video-view-customisation", + "sdk/ionic-legacy/3.0/v3-calling-recording" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic-legacy/3.0/calling", + "sdk/ionic-legacy/3.0/calling-direct-calling", + "sdk/ionic-legacy/3.0/calling-default-calling", + "sdk/ionic-legacy/3.0/calling-recording", + "sdk/ionic-legacy/3.0/video-view-customisation" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic-legacy/3.0/users", + "sdk/ionic-legacy/3.0/users-retrieve-users", + "sdk/ionic-legacy/3.0/users-user-management", + "sdk/ionic-legacy/3.0/users-block-users" + ] + }, + "sdk/ionic-legacy/3.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic-legacy/3.0/groups", + "sdk/ionic-legacy/3.0/groups-retrieve-groups", + "sdk/ionic-legacy/3.0/groups-create-group", + "sdk/ionic-legacy/3.0/groups-update-group", + "sdk/ionic-legacy/3.0/groups-join-group", + "sdk/ionic-legacy/3.0/groups-leave-group", + "sdk/ionic-legacy/3.0/groups-delete-group", + "sdk/ionic-legacy/3.0/groups-retrieve-group-members", + "sdk/ionic-legacy/3.0/groups-add-members-to-group", + "sdk/ionic-legacy/3.0/groups-kick-ban-members", + "sdk/ionic-legacy/3.0/groups-change-member-scope", + "sdk/ionic-legacy/3.0/groups-transfer-group-ownership" + ] + }, + "sdk/ionic-legacy/3.0/bots", + "sdk/ionic-legacy/3.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ionic-legacy/3.0/resources", + "sdk/ionic-legacy/3.0/resources-all-real-time-listeners", + "sdk/ionic-legacy/3.0/resources-upgrading-from-v2" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic-legacy/3.0/advanced", + "sdk/ionic-legacy/3.0/advanced-connection-listener", + "sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually" + ] + }, + "sdk/ionic-legacy/extensions-overview" ] - }, - "sdk/ios/2.0/bots", - "sdk/ios/2.0/webhooks", + } + ] + }, + { + "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "groups": [ { - "group": "Resources", + "group": " ", "pages": [ - "sdk/ios/2.0/resources", - "sdk/ios/2.0/all-real-time-delegates-listeners", - "sdk/ios/2.0/increment-app-icon-badge-count", - "sdk/ios/2.0/upgrading-from-v1", - "sdk/ios/2.0/remove-delivered-notifications", - "sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification", - "sdk/ios/2.0/launch-chat-window-push-notification" + { + "group": "Overview", + "pages": [ + "sdk/ionic-legacy/2.0/overview", + "sdk/ionic-legacy/2.0/key-concepts", + "sdk/ionic-legacy/2.0/message-structure-and-hierarchy", + "sdk/ionic-legacy/2.0/rate-limits" + ] + }, + "sdk/ionic-legacy/2.0/setup", + { + "group": "Authentication", + "pages": [ + "sdk/ionic-legacy/2.0/authentication", + "sdk/ionic-legacy/2.0/authentication-login-listeners" + ] + }, + { + "group": "Messaging", + "pages": [ + "sdk/ionic-legacy/2.0/messaging", + "sdk/ionic-legacy/2.0/messaging-send-message", + "sdk/ionic-legacy/2.0/messaging-receive-messages", + "sdk/ionic-legacy/2.0/messaging-additional-message-filtering", + "sdk/ionic-legacy/2.0/messaging-retrieve-conversations", + "sdk/ionic-legacy/2.0/threaded-messages", + "sdk/ionic-legacy/2.0/messaging-edit-message", + "sdk/ionic-legacy/2.0/messaging-delete-message", + "sdk/ionic-legacy/2.0/messaging-delete-conversation", + "sdk/ionic-legacy/2.0/messaging-typing-indicators", + "sdk/ionic-legacy/2.0/messaging-receipts" + ] + }, + { + "group": "Calling", + "pages": [ + "sdk/ionic-legacy/2.0/calling", + "sdk/ionic-legacy/2.0/calling-direct-calling", + "sdk/ionic-legacy/2.0/calling-default-calling" + ] + }, + { + "group": "Users", + "pages": [ + "sdk/ionic-legacy/2.0/users", + "sdk/ionic-legacy/2.0/users-retrieve-users", + "sdk/ionic-legacy/2.0/users-user-management", + "sdk/ionic-legacy/2.0/users-block-users" + ] + }, + "sdk/ionic-legacy/2.0/user-presence", + { + "group": "Groups", + "pages": [ + "sdk/ionic-legacy/2.0/groups", + "sdk/ionic-legacy/2.0/groups-retrieve-groups", + "sdk/ionic-legacy/2.0/groups-create-group", + "sdk/ionic-legacy/2.0/groups-update-group", + "sdk/ionic-legacy/2.0/groups-join-group", + "sdk/ionic-legacy/2.0/groups-leave-group", + "sdk/ionic-legacy/2.0/groups-delete-group", + "sdk/ionic-legacy/2.0/groups-retrieve-group-members", + "sdk/ionic-legacy/2.0/groups-add-members-to-group", + "sdk/ionic-legacy/2.0/groups-kick-ban-members", + "sdk/ionic-legacy/2.0/groups-change-member-scope", + "sdk/ionic-legacy/2.0/groups-transfer-group-ownership" + ] + }, + "sdk/ionic-legacy/2.0/bots", + "sdk/ionic-legacy/2.0/webhooks", + { + "group": "Resources", + "pages": [ + "sdk/ionic-legacy/2.0/resources", + "sdk/ionic-legacy/2.0/resources-all-real-time-listeners", + "sdk/ionic-legacy/2.0/resources-upgrading-from-v1" + ] + }, + { + "group": "Advanced", + "pages": [ + "sdk/ionic-legacy/2.0/advanced", + "sdk/ionic-legacy/2.0/advanced-connection-listener" + ] + } ] } ] @@ -3292,1466 +4434,1256 @@ ] }, { - "dropdown": "Android", - "icon": "android", - "versions": [ + "tab": "APIs", + "groups": [ { - "version": "v4‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "group": "Chat APIs", + "pages": [ + "rest-api/chat-apis", { - "group": " ", + "group": "Setup & Authentication", + "expanded": false, + "icon": "key", "pages": [ { - "group": "Overview", - "pages": [ - "sdk/android/overview", - "sdk/android/key-concepts", - "sdk/android/message-structure-and-hierarchy", - "sdk/android/rate-limits" - ] - }, - "sdk/android/setup", - { - "group": "Authentication", + "group": "API Keys", "pages": [ - "sdk/android/authentication-overview", - "sdk/android/login-listeners" + "rest-api/api-keys", + "rest-api/api-keys/list", + "rest-api/api-keys/create", + "rest-api/api-keys/get", + "rest-api/api-keys/update", + "rest-api/api-keys/delete" ] }, { - "group": "Messaging", + "group": "Auth Tokens", "pages": [ - "sdk/android/messaging-overview", - "sdk/android/send-message", - "sdk/android/receive-messages", - "sdk/android/additional-message-filtering", - "sdk/android/retrieve-conversations", - "sdk/android/threaded-messages", - "sdk/android/edit-message", - "sdk/android/delete-message", - "sdk/android/delete-conversation", - "sdk/android/typing-indicators", - "sdk/android/delivery-read-receipts", - "sdk/android/transient-messages", - "sdk/android/interactive-messages", - "sdk/android/mentions", - "sdk/android/reactions" + "rest-api/auth-tokens", + "rest-api/auth-tokens/list", + "rest-api/auth-tokens/create", + "rest-api/auth-tokens/flush", + "rest-api/auth-tokens/get", + "rest-api/auth-tokens/update", + "rest-api/auth-tokens/delete" ] - }, - { - "group": "Calling", - "pages": [ - "sdk/android/calling-overview", - "sdk/android/setup-calling", - "sdk/android/direct-calling", - "sdk/android/default-calling", - "sdk/android/recording", - "sdk/android/video-view-customisation", - "sdk/android/presenter-mode", - "sdk/android/call-logs", - "sdk/android/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/android/users-overview", - "sdk/android/retrieve-users", - "sdk/android/user-management", - "sdk/android/block-users" - ] - }, - "sdk/android/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/android/groups-overview", - "sdk/android/retrieve-groups", - "sdk/android/create-group", - "sdk/android/update-group", - "sdk/android/join-group", - "sdk/android/leave-group", - "sdk/android/delete-group", - "sdk/android/retrieve-group-members", - "sdk/android/group-add-members", - "sdk/android/group-kick-member", - "sdk/android/group-change-member-scope", - "sdk/android/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/android/resources-overview", - "sdk/android/real-time-listeners", - "sdk/android/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/android/advanced-overview", - "sdk/android/connection-status", - "sdk/android/publishing-app-on-playstore", - "sdk/android/connection-behaviour" - ] - }, - "sdk/android/extensions-overview", - "sdk/android/ai-user-copilot-overview", - "sdk/android/ai-chatbots-overview", - "sdk/android/webhooks-overview", - "sdk/android/android-overview", - "sdk/android/changelog" + } ] - } - ] - }, - { - "version": "v3‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Users & Groups", + "expanded": false, + "icon": "users", "pages": [ { - "group": "Overview", + "group": "User Roles", "pages": [ - "sdk/android/3.0/overview", - "sdk/android/3.0/key-concepts", - "sdk/android/3.0/message-structure-and-hierarchy", - "sdk/android/3.0/rate-limits" - ] - }, - { - "group": "Authentication", - "pages": [ - "sdk/android/3.0/authentication", - "sdk/android/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/android/3.0/messaging", - "sdk/android/3.0/messaging-send-message", - "sdk/android/3.0/messaging-receive-messages", - "sdk/android/3.0/messaging-additional-message-filtering", - "sdk/android/3.0/messaging-retrieve-conversations", - "sdk/android/3.0/threaded-messages", - "sdk/android/3.0/messaging-edit-message", - "sdk/android/3.0/messaging-delete-message", - "sdk/android/3.0/messaging-delete-conversation", - "sdk/android/3.0/messaging-typing-indicators", - "sdk/android/3.0/messaging-transient-messages", - "sdk/android/3.0/messaging-receipts" + "rest-api/roles", + "rest-api/roles/list", + "rest-api/roles/create", + "rest-api/roles/get", + "rest-api/roles/update", + "rest-api/roles/delete", + { + "group": "Restrict Features", + "pages": [ + "rest-api/restrict-features", + "rest-api/restrict-features/list-restricted-features", + "rest-api/restrict-features/restrict-features", + "rest-api/restrict-features/allow-features" + ] + } ] }, { - "group": "Calling v3", + "group": "Users", "pages": [ - "sdk/android/3.0/calling-v3", - "sdk/android/3.0/setup-v3", - "sdk/android/3.0/default-calling-v3", - "sdk/android/3.0/direct-calling-v3", - "sdk/android/3.0/video-view-customisation-v3", - "sdk/android/3.0/calling-recording-v3", - "sdk/android/3.0/presenter-mode" + "rest-api/users", + "rest-api/users/list", + "rest-api/users/reactivate", + "rest-api/users/create", + "rest-api/users/deactivate", + "rest-api/users/get", + "rest-api/users/update", + "rest-api/users/delete" ] }, { - "group": "Calling", + "group": "Blocked Users", "pages": [ - "sdk/android/3.0/calling", - "sdk/android/3.0/calling-direct-calling", - "sdk/android/3.0/calling-default-calling", - "sdk/android/3.0/calling-recording", - "sdk/android/3.0/video-view-customisation" + "rest-api/blocked-users", + "rest-api/blocked-users/list-blocked-users", + "rest-api/blocked-users/block-user", + "rest-api/blocked-users/unblock-user" ] }, { - "group": "Users", + "group": "Friends", "pages": [ - "sdk/android/3.0/users", - "sdk/android/3.0/users-retrieve-users", - "sdk/android/3.0/users-user-management", - "sdk/android/3.0/users-block-users" + "rest-api/friends", + "rest-api/friends/list-friends", + "rest-api/friends/add-friends", + "rest-api/friends/remove-friends" ] }, - "sdk/android/3.0/user-presence", { "group": "Groups", "pages": [ - "sdk/android/3.0/groups", - "sdk/android/3.0/groups-retrieve-groups", - "sdk/android/3.0/groups-create-group", - "sdk/android/3.0/groups-update-group", - "sdk/android/3.0/groups-join-group", - "sdk/android/3.0/groups-leave-group", - "sdk/android/3.0/groups-delete-group", - "sdk/android/3.0/groups-retrieve-group-members", - "sdk/android/3.0/groups-add-members-to-group", - "sdk/android/3.0/groups-kick-ban-members", - "sdk/android/3.0/groups-change-member-scope", - "sdk/android/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/android/3.0/bots", - "sdk/android/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/android/3.0/android-resources", - "sdk/android/3.0/resources-all-real-time-listeners", - "sdk/android/3.0/resources-upgrading-from-v2" + "rest-api/groups", + "rest-api/groups/list", + "rest-api/groups/create", + "rest-api/groups/get", + "rest-api/groups/update", + "rest-api/groups/delete" ] }, { - "group": "Advanced", + "group": "Group Members", "pages": [ - "sdk/android/3.0/android-advanced", - "sdk/android/3.0/advanced-connection-status", - "sdk/android/3.0/advanced-publishing-app-on-playstore", - "sdk/android/3.0/advanced-managing-web-socket-connections-manually" + "rest-api/group-members", + "rest-api/group-members/list", + "rest-api/group-members/add-members", + "rest-api/group-members/change-scope", + "rest-api/group-members/kick" ] }, - "sdk/android/3.0/setup", - "sdk/android/3.0/extensions-overview", { - "group": "V3 UI Kits", + "group": "Banned Users", "pages": [ - "sdk/android/3.0/android-3-0-overview", - "sdk/android/3.0/kotlin-overview" + "rest-api/banned-users", + "rest-api/banned-users/ban", + "rest-api/banned-users/unban", + "rest-api/banned-users/list" ] } ] - } - ] - }, - { - "version": "v2‎‎‎‎‎‎‎‎‎‎", - "groups": [ + }, { - "group": " ", + "group": "Chat & Messaging", + "expanded": false, + "icon": "comments", "pages": [ { - "group": "Overview", + "group": "Messages", "pages": [ - "sdk/android/2.0/overview", - "sdk/android/2.0/key-concepts", - "sdk/android/2.0/message-structure-and-hierarchy", - "sdk/android/2.0/rate-limits" + "rest-api/messages", + "rest-api/messages/list-messages", + "rest-api/messages/send-message", + "rest-api/messages/get-message", + "rest-api/messages/update-message", + "rest-api/messages/delete-message", + "rest-api/messages/list-all-reactions", + "rest-api/messages/list-reactions-with-a-specific-emoji-unicode", + "rest-api/messages/add-reaction", + "rest-api/messages/remove-reaction", + "rest-api/messages/list-threaded-messages", + "rest-api/messages/send-threaded-message", + "rest-api/messages/list-user-messages", + "rest-api/messages/list-group-messages", + "rest-api/messages/send-bot-message" ] }, - "sdk/android/2.0/setup", { - "group": "Authentication", + "group": "Conversations", "pages": [ - "sdk/android/2.0/authentication", - "sdk/android/2.0/login-listeners" + "rest-api/conversations", + "rest-api/conversations/list-conversations", + "rest-api/conversations/get-conversation", + "rest-api/conversations/delete-conversation", + "rest-api/conversations/get-user-conversation", + "rest-api/conversations/update-user-conversation", + "rest-api/conversations/reset-user-conversation", + "rest-api/conversations/mark-user-conversation-as-delivered", + "rest-api/conversations/mark-user-conversation-as-read", + "rest-api/conversations/mark-conversation-messages-as-unread", + "rest-api/conversations/get-group-conversation", + "rest-api/conversations/update-group-conversation", + "rest-api/conversations/reset-group-conversation", + "rest-api/conversations/mark-group-conversation-as-delivered", + "rest-api/conversations/mark-group-conversation-as-read", + "rest-api/conversations/mark-group-conversation-as-unread" ] - }, + } + ] + }, + { + "group": "Voice & Video Calls", + "expanded": false, + "icon": "phone-volume", + "pages": [ + "rest-api/calls", + "rest-api/list-calls", + "rest-api/get-call" + ] + }, + { + "group": "Platform Features", + "expanded": false, + "icon": "sliders", + "pages": [ { - "group": "Messaging", - "pages": [ - "sdk/android/2.0/messaging", - "sdk/android/2.0/send-message", - "sdk/android/2.0/receive-messages", - "sdk/android/2.0/additional-message-filtering", - "sdk/android/2.0/retrieve-conversations", - "sdk/android/2.0/threaded-messages", - "sdk/android/2.0/edit-message", - "sdk/android/2.0/delete-message", - "sdk/android/2.0/delete-conversation", - "sdk/android/2.0/typing-indicators", - "sdk/android/2.0/delivery-read-receipts" + "group": "Metrics", + "pages": [ + "rest-api/metrics/usage-metrics", + "rest-api/metrics/message-metrics" + ] + }, + { + "group": "Moderation", + "pages": [ + "rest-api/moderation", + "rest-api/moderation/list-rules", + "rest-api/moderation/add-rule", + "rest-api/moderation/get-rule", + "rest-api/moderation/update-rule", + "rest-api/moderation/remove-rule", + "rest-api/moderation/list-keywords", + "rest-api/moderation/add-keywords", + "rest-api/moderation/get-keyword", + "rest-api/moderation/update-keyword", + "rest-api/moderation/remove-keyword", + "rest-api/moderation/get-rule-revisions", + "rest-api/moderation/list-blocked-messages", + "rest-api/moderation/approve-blocked-messages", + "rest-api/moderation/create-reasons", + "rest-api/moderation/list-reasons", + "rest-api/moderation/get-reason-details", + "rest-api/moderation/update-reason-details", + "rest-api/moderation/delete-reasons", + "rest-api/moderation/flag-a-message", + "rest-api/moderation/review-blocked-message", + "rest-api/moderation/approve-blocked-messages", + "rest-api/moderation/blockreview-flagged-message", + "rest-api/moderation/list-flagged-messages", + "rest-api/moderation/list-reviewed-messages" + ] + }, + { + "group": "Notification Engine", + "pages": [ + "rest-api/notifications/list-settings", + "rest-api/notifications/reset-settings", + "rest-api/notifications/update-settings", + "rest-api/notifications/list-fcm-providers", + "rest-api/notifications/update-fcm-provider", + "rest-api/notifications/add-fcm-provider", + "rest-api/notifications/delete-fcm-provider", + "rest-api/notifications/change-default-fcm-provider", + "rest-api/notifications/list-apns-providers", + "rest-api/notifications/update-apns-providers", + "rest-api/notifications/add-apns-provider", + "rest-api/notifications/delete-apns-providers", + "rest-api/notifications/change-default-apns-provider", + "rest-api/notifications/list-preferences", + "rest-api/notifications/reset-preferences", + "rest-api/notifications/update-preferences", + "rest-api/notifications/list-push-tokens", + "rest-api/notifications/register-push-token", + "rest-api/notifications/unregister-push-tokens-for-authtoken", + "rest-api/notifications/delete-the-given-push-token", + "rest-api/notifications/list-muted-conversations", + "rest-api/notifications/mute-notifications-for-conversations", + "rest-api/notifications/unmute-notifications-for-conversations", + "rest-api/notifications/get-timezone", + "rest-api/notifications/update-timezone", + "rest-api/notifications/get-contact-details", + "rest-api/notifications/delete-contact-details", + "rest-api/notifications/update-contact-details", + "rest-api/notifications/get-twilio-credentials", + "rest-api/notifications/update-twilio-credentials", + "rest-api/notifications/save-twilio-credentials", + "rest-api/notifications/delete-twilio-credentials", + "rest-api/notifications/get-sendgrid-credentials", + "rest-api/notifications/update-sendgrid-credentials", + "rest-api/notifications/save-sendgrid-credentials", + "rest-api/notifications/delete-sendgrid-credentials", + "rest-api/notifications/get-custom-provider-for-push-notifications", + "rest-api/notifications/update-custom-provider-for-push-notifications", + "rest-api/notifications/save-custom-provider-for-push-notifications", + "rest-api/notifications/delete-the-custom-provider-for-push-notifications", + "rest-api/notifications/get-custom-provider-for-sms-notifications", + "rest-api/notifications/update-custom-provider-for-sms-notifications", + "rest-api/notifications/save-custom-provider-for-sms-notifications", + "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", + "rest-api/notifications/get-custom-provider-for-email-notifications", + "rest-api/notifications/update-custom-provider-for-email-notifications", + "rest-api/notifications/save-custom-provider-for-email-notifications", + "rest-api/notifications/delete-the-custom-provider-for-email-notifications", + "rest-api/notifications/notifications-logs" ] - }, + } + ] + }, + { + "group": "Data Import", + "expanded": false, + "icon": "file-import", + "pages": [ + "rest-api/data-import", { - "group": "Calling", + "group": "Messages", "pages": [ - "sdk/android/2.0/calling", - "sdk/android/2.0/direct-calling", - "sdk/android/2.0/default-calling" + "rest-api/data-import-apis/messages/import-messages" ] }, { "group": "Users", "pages": [ - "sdk/android/2.0/users", - "sdk/android/2.0/retrieve-users", - "sdk/android/2.0/user-management", - "sdk/android/2.0/block-users" + "rest-api/data-import-apis/users/import-users" ] }, - "sdk/android/2.0/user-presence", { "group": "Groups", "pages": [ - "sdk/android/2.0/groups", - "sdk/android/2.0/retrieve-groups", - "sdk/android/2.0/create-a-group", - "sdk/android/2.0/update-a-group", - "sdk/android/2.0/join-a-group", - "sdk/android/2.0/leave-a-group", - "sdk/android/2.0/delete-a-group", - "sdk/android/2.0/retrieve-group-members", - "sdk/android/2.0/add-members-to-a-group", - "sdk/android/2.0/kick-member-from-a-group", - "sdk/android/2.0/change-member-scope", - "sdk/android/2.0/transfer-group-ownership" + "rest-api/data-import-apis/groups/import-groups", + "rest-api/data-import-apis/groups/import-group-members" ] - }, - "sdk/android/2.0/extensions", - "sdk/android/2.0/bots", - "sdk/android/2.0/webhooks", + } + ] + }, + "articles/error-guide", + "articles/properties-and-constraints", + "rest-api/rate-limits" + ] + }, + { + "group": "Management APIs (Multi-Tenancy)", + "pages": [ + "rest-api/management-apis", + { + "group": "App Management", + "expanded": false, + "icon": "grid-2", + "pages": [ { - "group": "Resources", - "pages": [ - "sdk/android/2.0/resources", - "sdk/android/2.0/resources-all-real-time-listeners", - "sdk/android/2.0/resources-upgrading-from-v1" + "group": "App", + "pages": [ + "rest-api/management-apis/app/list", + "rest-api/management-apis/app/create", + "rest-api/management-apis/app/delete", + "rest-api/management-apis/app/fetch-usage" + ] + }, + { + "group": "Extensions", + "pages": [ + "rest-api/extensions-overview", + "rest-api/management-apis/extensions/list-extensions", + "rest-api/management-apis/extensions/enabledisable", + "rest-api/management-apis/extensions/chat-widgets-list", + "rest-api/management-apis/extensions/chat-widgets-update", + "rest-api/management-apis/extensions/chat-widgets-create", + "rest-api/management-apis/extensions/giphy-get-settings", + "rest-api/management-apis/extensions/giphy-update-settings", + "rest-api/management-apis/extensions/giphy-store-settings", + "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", + "rest-api/management-apis/extensions/xss-filter-get-settings", + "rest-api/management-apis/extensions/xss-filter-update-settings", + "rest-api/management-apis/extensions/xss-filter-store-settings", + "rest-api/management-apis/extensions/xss-filter-delete-settings", + "rest-api/management-apis/extensions/image-moderation-get-settings", + "rest-api/management-apis/extensions/image-moderation-update-settings", + "rest-api/management-apis/extensions/image-moderation-store-settings", + "rest-api/management-apis/extensions/image-moderation-delete-settings", + "rest-api/management-apis/extensions/report-user-get-settings", + "rest-api/management-apis/extensions/report-user-update-settings", + "rest-api/management-apis/extensions/report-user-store-settings", + "rest-api/management-apis/extensions/report-user-delete-settings", + "rest-api/management-apis/extensions/report-message-get-settings", + "rest-api/management-apis/extensions/report-message-update-settings", + "rest-api/management-apis/extensions/report-message-store-settings", + "rest-api/management-apis/extensions/report-message-delete-settings", + "rest-api/management-apis/extensions/voice-transcription-get-settings", + "rest-api/management-apis/extensions/voice-transcription-update-settings", + "rest-api/management-apis/extensions/voice-transcription-store-settings", + "rest-api/management-apis/extensions/voice-transcription-delete-settings", + "rest-api/management-apis/extensions/stipop-get-settings", + "rest-api/management-apis/extensions/stipop-update-settings", + "rest-api/management-apis/extensions/stipop-store-settings", + "rest-api/management-apis/extensions/stipop-delete-settings", + "rest-api/management-apis/extensions/sentiment-analysis-get-settings", + "rest-api/management-apis/extensions/sentiment-analysis-update-settings", + "rest-api/management-apis/extensions/sentiment-analysis-store-settings", + "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", + "rest-api/management-apis/extensions/tinyurl-get-settings", + "rest-api/management-apis/extensions/tinyurl-update-settings", + "rest-api/management-apis/extensions/tinyurl-store-settings", + "rest-api/management-apis/extensions/tinyurl-delete-settings", + "rest-api/management-apis/extensions/intercom-get-settings", + "rest-api/management-apis/extensions/intercom-update-settings", + "rest-api/management-apis/extensions/intercom-store-settings", + "rest-api/management-apis/extensions/intercom-delete-settings", + "rest-api/management-apis/extensions/bitly-get-settings", + "rest-api/management-apis/extensions/bitly-update-settings", + "rest-api/management-apis/extensions/bitly-store-settings", + "rest-api/management-apis/extensions/bitly-delete-settings", + "rest-api/management-apis/extensions/rich-media-preview-get-settings", + "rest-api/management-apis/extensions/rich-media-preview-update-settings", + "rest-api/management-apis/extensions/rich-media-preview-store-settings", + "rest-api/management-apis/extensions/rich-media-preview-delete-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", + "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", + "rest-api/management-apis/extensions/video-broadcasting-get-settings", + "rest-api/management-apis/extensions/video-broadcasting-update-settings", + "rest-api/management-apis/extensions/video-broadcasting-store-settings", + "rest-api/management-apis/extensions/video-broadcasting-delete-settings", + "rest-api/management-apis/extensions/tenor-gifs-get-settings", + "rest-api/management-apis/extensions/tenor-gifs-update-settings", + "rest-api/management-apis/extensions/tenor-gifs-store-settings", + "rest-api/management-apis/extensions/tenor-gifs-delete-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", + "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", + "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", + "rest-api/management-apis/extensions/stickers-extension-get-settings", + "rest-api/management-apis/extensions/stickers-extension-update-settings", + "rest-api/management-apis/extensions/stickers-extension-delete-settings", + "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", + "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", + "rest-api/management-apis/extensions/push-notification-get-certificate", + "rest-api/management-apis/extensions/email-replies-get-settings", + "rest-api/management-apis/extensions/email-replies-update-settings", + "rest-api/management-apis/extensions/email-replies-store-settings", + "rest-api/management-apis/extensions/email-replies-delete-settings", + "rest-api/management-apis/extensions/sms-notification-get-settings", + "rest-api/management-apis/extensions/sms-notification-update-settings", + "rest-api/management-apis/extensions/sms-notification-store-settings", + "rest-api/management-apis/extensions/sms-notification-delete-settings", + "rest-api/management-apis/extensions/push-notification-get-settings", + "rest-api/management-apis/extensions/push-notification-update-settings", + "rest-api/management-apis/extensions/push-notification-store-settings", + "rest-api/management-apis/extensions/push-notification-delete-settings", + "rest-api/management-apis/extensions/chatwoot-get-settings", + "rest-api/management-apis/extensions/chatwoot-update-settings", + "rest-api/management-apis/extensions/chatwoot-store-settings", + "rest-api/management-apis/extensions/chatwoot-delete-settings", + "rest-api/management-apis/extensions/message-shortcuts-get-settings", + "rest-api/management-apis/extensions/message-shortcuts-update-settings", + "rest-api/management-apis/extensions/message-shortcuts-store-settings", + "rest-api/management-apis/extensions/message-shortcuts-delete-settings", + "rest-api/management-apis/extensions/email-notification-get-settings", + "rest-api/management-apis/extensions/email-notification-update-settings", + "rest-api/management-apis/extensions/email-notification-store-settings", + "rest-api/management-apis/extensions/email-notification-delete-settings", + "rest-api/management-apis/extensions/data-masking-get-settings", + "rest-api/management-apis/extensions/data-masking-store-or-update-settings", + "rest-api/management-apis/extensions/data-masking-delete-settings", + "rest-api/management-apis/extensions/profanity-filter-get-settings", + "rest-api/management-apis/extensions/profanity-filter-update-settings", + "rest-api/management-apis/extensions/profanity-filter-adds-settings", + "rest-api/management-apis/extensions/profanity-filter-delete-settings" + ] + }, + { + "group": "Settings", + "pages": [ + "rest-api/settings", + "rest-api/management-apis/settings/list-settings", + "rest-api/management-apis/settings/maps-settings", + "rest-api/management-apis/settings/unmaps-settings" ] - }, + } + ] + }, + { + "group": "Access Control", + "expanded": false, + "icon": "lock", + "pages": [ { - "group": "Advanced", + "group": "Team Management", "pages": [ - "sdk/android/2.0/advanced", - "sdk/android/2.0/connection-status", - "sdk/android/2.0/publishing-app-on-playstore" + "rest-api/management-apis/team-management/list-collaborators", + "rest-api/management-apis/team-management/addsremove-collaborators" ] } ] + }, + { + "group": "Webhooks", + "pages": [ + "rest-api/management-apis/webhooks/overview", + "rest-api/management-apis/webhooks/list-webhooks", + "rest-api/management-apis/webhooks/create-webhook", + "rest-api/management-apis/webhooks/get-webhook", + "rest-api/management-apis/webhooks/update-webhook", + "rest-api/management-apis/webhooks/delete-webhook", + "rest-api/management-apis/webhooks/list-triggers", + "rest-api/management-apis/webhooks/add-triggers", + "rest-api/management-apis/webhooks/remove-triggers" + ] } ] } ] + } + ] + }, + { + "product": "Voice & Video Calling", + "tabs": [ + { + "tab": "Calling", + "pages": [ + "calls" + ] + }, + { + "tab": "Platform", + "pages": [ + "calls/platform/overview", + "calls/platform/features", + "calls/platform/compatibility", + "calls/platform/user-sync" + ] }, { - "dropdown": "Flutter", - "icon": "flutter", - "versions": [ + "tab": "SDK", + "tab-id": "calls-sdk", + "dropdowns": [ { - "version": "v4‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "JavaScript", + "icon": "/images/icons/js.svg", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/flutter/overview", - "sdk/flutter/key-concepts", - "sdk/flutter/message-structure-and-hierarchy", - "sdk/flutter/rate-limits" - ] - }, - "sdk/flutter/setup", - { - "group": "Authentication", - "pages": [ - "sdk/flutter/authentication-overview", - "sdk/flutter/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/flutter/messaging-overview", - "sdk/flutter/send-message", - "sdk/flutter/receive-messages", - "sdk/flutter/additional-message-filtering", - "sdk/flutter/retrieve-conversations", - "sdk/flutter/edit-message", - "sdk/flutter/delete-message", - "sdk/flutter/delete-conversation", - "sdk/flutter/typing-indicators", - "sdk/flutter/interactive-messages", - "sdk/flutter/transient-messages", - "sdk/flutter/delivery-read-receipts", - "sdk/flutter/threaded-messages", - "sdk/flutter/mentions", - "sdk/flutter/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/flutter/calling-overview", - "sdk/flutter/calling-setup", - "sdk/flutter/default-call", - "sdk/flutter/direct-call", - "sdk/flutter/video-view-customisation", - "sdk/flutter/recording", - "sdk/flutter/presenter-mode", - "sdk/flutter/call-logs", - "sdk/flutter/session-timeout" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/flutter/users-overview", - "sdk/flutter/retrieve-users", - "sdk/flutter/user-management", - "sdk/flutter/block-users" - ] - }, - "sdk/flutter/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/flutter/groups-overview", - "sdk/flutter/retrieve-groups", - "sdk/flutter/create-group", - "sdk/flutter/update-group", - "sdk/flutter/join-group", - "sdk/flutter/leave-group", - "sdk/flutter/delete-group", - "sdk/flutter/retrieve-group-members", - "sdk/flutter/group-add-members", - "sdk/flutter/group-kick-member", - "sdk/flutter/group-change-member-scope", - "sdk/flutter/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/flutter/resources-overview", - "sdk/flutter/real-time-listeners", - "sdk/flutter/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/flutter/advanced-overview", - "sdk/flutter/connection-status", - "sdk/flutter/connection-behaviour" - ] - }, - "sdk/flutter/extensions-overview", - "sdk/flutter/ai-user-copilot-overview", - "sdk/flutter/ai-chatbots-overview", - "sdk/flutter/webhooks-overview", - "sdk/flutter/flutter-overview", - "sdk/flutter/changelog" + "calls/javascript/overview" + ] + }, + { + "group": "Integrations", + "pages": [ + "calls/javascript/react-integration", + "calls/javascript/vue-integration", + "calls/javascript/angular-integration", + "calls/javascript/nextjs-integration", + "calls/javascript/ionic-integration" + ] + }, + { + "group": "Getting Started", + "pages": [ + "calls/javascript/setup", + "calls/javascript/authentication" + ] + }, + { + "group": "Call Session", + "pages": [ + "calls/javascript/session-settings", + "calls/javascript/join-session", + "calls/javascript/actions", + "calls/javascript/events" + ] + }, + { + "group": "Features", + "pages": [ + "calls/javascript/ringing", + "calls/javascript/call-layouts", + "calls/javascript/recording", + "calls/javascript/call-logs", + "calls/javascript/participant-management", + "calls/javascript/screen-sharing", + "calls/javascript/virtual-background", + "calls/javascript/picture-in-picture", + "calls/javascript/raise-hand", + "calls/javascript/idle-timeout" + ] + }, + { + "group": "Advanced", + "pages": [ + "calls/javascript/custom-control-panel", + "calls/javascript/device-management", + "calls/javascript/permissions-handling", + "calls/javascript/in-call-chat", + "calls/javascript/share-invite" ] } ] }, { - "version": "v3‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "React Native", + "icon": "/images/icons/react.svg", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/flutter/3.0/overview", - "sdk/flutter/3.0/key-concepts", - "sdk/flutter/3.0/message-structure-and-hierarchy", - "sdk/flutter/3.0/rate-limits" - ] - }, - "sdk/flutter/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/flutter/3.0/authentication", - "sdk/flutter/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/flutter/3.0/messaging", - "sdk/flutter/3.0/messaging-send-message", - "sdk/flutter/3.0/messaging-receive-messages", - "sdk/flutter/3.0/messaging-additional-message-filtering", - "sdk/flutter/3.0/messaging-retrieve-conversations", - "sdk/flutter/3.0/messaging-edit-message", - "sdk/flutter/3.0/messaging-delete-message", - "sdk/flutter/3.0/messaging-delete-conversation", - "sdk/flutter/3.0/messaging-typing-indicators", - "sdk/flutter/3.0/messaging-transient-messages", - "sdk/flutter/3.0/messaging-receipts", - "sdk/flutter/3.0/threaded-messages" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/flutter/3.0/calling-v3", - "sdk/flutter/3.0/calling-setup", - "sdk/flutter/3.0/default-calling", - "sdk/flutter/3.0/direct-calling", - "sdk/flutter/3.0/video-view-customisation", - "sdk/flutter/3.0/recording", - "sdk/flutter/3.0/presenter" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/flutter/3.0/users", - "sdk/flutter/3.0/users-retrieve-users", - "sdk/flutter/3.0/users-user-management", - "sdk/flutter/3.0/users-block-users" - ] - }, - "sdk/flutter/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/flutter/3.0/groups", - "sdk/flutter/3.0/groups-retrieve-groups", - "sdk/flutter/3.0/groups-create-group", - "sdk/flutter/3.0/groups-update-group", - "sdk/flutter/3.0/groups-join-group", - "sdk/flutter/3.0/groups-leave-group", - "sdk/flutter/3.0/groups-delete-group", - "sdk/flutter/3.0/groups-retrieve-group-members", - "sdk/flutter/3.0/groups-add-members-to-group", - "sdk/flutter/3.0/groups-kick-ban-members", - "sdk/flutter/3.0/groups-change-member-scope", - "sdk/flutter/3.0/groups-transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/flutter/3.0/flutter-resources", - "sdk/flutter/3.0/resources-all-real-time-listeners" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/flutter/3.0/advanced", - "sdk/flutter/3.0/advanced-connection-status", - "sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually" - ] - }, - "sdk/flutter/extensions-overview" + "calls/react-native/overview" + ] + }, + { + "group": "Getting Started", + "pages": [ + "calls/react-native/setup", + "calls/react-native/authentication", + "calls/react-native/session-settings" + ] + }, + { + "group": "Call Session", + "pages": [ + "calls/react-native/join-session", + "calls/react-native/actions", + "calls/react-native/events" + ] + }, + { + "group": "Features", + "pages": [ + "calls/react-native/call-layouts", + "calls/react-native/call-logs", + "calls/react-native/recording", + "calls/react-native/participant-management", + "calls/react-native/screen-sharing", + "calls/react-native/audio-modes", + "calls/react-native/raise-hand", + "calls/react-native/idle-timeout", + "calls/react-native/ringing" + ] + }, + { + "group": "Advanced", + "pages": [ + "calls/react-native/picture-in-picture", + "calls/react-native/voip-calling", + "calls/react-native/background-handling", + "calls/react-native/custom-control-panel", + "calls/react-native/custom-participant-list", + "calls/react-native/in-call-chat", + "calls/react-native/share-invite" ] } ] - } - ] - }, - { - "dropdown": "Ionic", - "icon": "square-ring", - "versions": [ + }, { - "version": "v4‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "iOS", + "icon": "/images/icons/swift.svg", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic/overview", - "sdk/ionic/key-concepts", - "sdk/ionic/message-structure-and-hierarchy", - "sdk/ionic/rate-limits" - ] - }, - "sdk/ionic/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic/authentication", - "sdk/ionic/login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic/messaging-overview", - "sdk/ionic/send-message", - "sdk/ionic/receive-messages", - "sdk/ionic/additional-message-filtering", - "sdk/ionic/retrieve-conversations", - "sdk/ionic/threaded-messages", - "sdk/ionic/edit-message", - "sdk/ionic/delete-message", - "sdk/ionic/delete-conversation", - "sdk/ionic/typing-indicators", - "sdk/ionic/interactive-messages", - "sdk/ionic/transient-messages", - "sdk/ionic/delivery-read-receipts", - "sdk/ionic/mentions", - "sdk/ionic/reactions" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic/calling-overview", - "sdk/ionic/calling-setup", - "sdk/ionic/default-call", - "sdk/ionic/direct-call", - "sdk/ionic/video-view-customisation", - "sdk/ionic/recording", - "sdk/ionic/presenter-mode" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic/users-overview", - "sdk/ionic/retrieve-users", - "sdk/ionic/user-management", - "sdk/ionic/block-users" - ] - }, - "sdk/ionic/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic/groups-overview", - "sdk/ionic/retrieve-groups", - "sdk/ionic/create-group", - "sdk/ionic/update-group", - "sdk/ionic/join-group", - "sdk/ionic/leave-group", - "sdk/ionic/delete-group", - "sdk/ionic/retrieve-group-members", - "sdk/ionic/group-add-members", - "sdk/ionic/group-kick-member", - "sdk/ionic/group-change-member-scope", - "sdk/ionic/transfer-group-ownership" - ] - }, - { - "group": "Resources", - "pages": [ - "sdk/ionic/resources-overview", - "sdk/ionic/real-time-listeners", - "sdk/ionic/upgrading-from-v3-guide" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic/advanced", - "sdk/ionic/connection-status", - "sdk/ionic/connection-behaviour", - "sdk/ionic/managing-connections-manually" - ] - }, - "sdk/ionic/extensions-overview", - "sdk/ionic/ai-user-copilot-overview", - "sdk/ionic/ai-chatbots-overview", - "sdk/ionic/webhooks-overview", - "sdk/ionic/changelog" + "calls/ios/overview" + ] + }, + { + "group": "Getting Started", + "pages": [ + "calls/ios/setup", + "calls/ios/authentication" + ] + }, + { + "group": "Call Session", + "pages": [ + "calls/ios/session-settings", + "calls/ios/join-session", + "calls/ios/actions", + "calls/ios/events" + ] + }, + { + "group": "Features", + "pages": [ + "calls/ios/ringing", + "calls/ios/call-layouts", + "calls/ios/audio-modes", + "calls/ios/recording", + "calls/ios/call-logs", + "calls/ios/participant-management", + "calls/ios/screen-sharing", + "calls/ios/picture-in-picture", + "calls/ios/raise-hand", + "calls/ios/idle-timeout" + ] + }, + { + "group": "Advanced", + "pages": [ + "calls/ios/custom-control-panel", + "calls/ios/custom-participant-list", + "calls/ios/voip-calling", + "calls/ios/background-handling", + "calls/ios/in-call-chat", + "calls/ios/share-invite" ] } ] }, { - "version": "v3‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "Android", + "icon": "/images/icons/android.svg", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic/3.0/overview", - "sdk/ionic/3.0/key-concepts", - "sdk/ionic/3.0/message-structure-and-hierarchy", - "sdk/ionic/3.0/rate-limits" - ] - }, - "sdk/ionic/3.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic/3.0/authentication", - "sdk/ionic/3.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic/3.0/messaging", - "sdk/ionic/3.0/messaging-send-message", - "sdk/ionic/3.0/messaging-receive-messages", - "sdk/ionic/3.0/messaging-additional-message-filtering", - "sdk/ionic/3.0/messaging-retrieve-conversations", - "sdk/ionic/3.0/threaded-messages", - "sdk/ionic/3.0/messaging-edit-message", - "sdk/ionic/3.0/messaging-delete-message", - "sdk/ionic/3.0/messaging-delete-conversation", - "sdk/ionic/3.0/messaging-typing-indicators", - "sdk/ionic/3.0/transient-messages", - "sdk/ionic/3.0/messaging-receipts" - ] - }, - { - "group": "Calling v3", - "pages": [ - "sdk/ionic/3.0/calling-v3", - "sdk/ionic/3.0/v3-setup", - "sdk/ionic/3.0/v3-start-call-session", - "sdk/ionic/3.0/v3-video-view-customisation", - "sdk/ionic/3.0/v3-calling-recording" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic/3.0/calling", - "sdk/ionic/3.0/calling-direct-calling", - "sdk/ionic/3.0/calling-default-calling", - "sdk/ionic/3.0/calling-recording", - "sdk/ionic/3.0/video-view-customisation" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic/3.0/users", - "sdk/ionic/3.0/users-retrieve-users", - "sdk/ionic/3.0/users-user-management", - "sdk/ionic/3.0/users-block-users" - ] - }, - "sdk/ionic/3.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic/3.0/groups", - "sdk/ionic/3.0/groups-retrieve-groups", - "sdk/ionic/3.0/groups-create-group", - "sdk/ionic/3.0/groups-update-group", - "sdk/ionic/3.0/groups-join-group", - "sdk/ionic/3.0/groups-leave-group", - "sdk/ionic/3.0/groups-delete-group", - "sdk/ionic/3.0/groups-retrieve-group-members", - "sdk/ionic/3.0/groups-add-members-to-group", - "sdk/ionic/3.0/groups-kick-ban-members", - "sdk/ionic/3.0/groups-change-member-scope", - "sdk/ionic/3.0/groups-transfer-group-ownership" - ] - }, - "sdk/ionic/3.0/bots", - "sdk/ionic/3.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ionic/3.0/resources", - "sdk/ionic/3.0/resources-all-real-time-listeners", - "sdk/ionic/3.0/resources-upgrading-from-v2" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic/3.0/advanced", - "sdk/ionic/3.0/advanced-connection-listener", - "sdk/ionic/3.0/advanced-managing-web-socket-connections-manually" - ] - }, - "sdk/ionic/extensions-overview" + "calls/android/overview" + ] + }, + { + "group": "Getting Started", + "pages": [ + "calls/android/setup", + "calls/android/authentication" + ] + }, + { + "group": "Call Session", + "pages": [ + "calls/android/session-settings", + "calls/android/join-session", + "calls/android/actions", + "calls/android/events" + ] + }, + { + "group": "Features", + "pages": [ + "calls/android/ringing", + "calls/android/call-layouts", + "calls/android/audio-modes", + "calls/android/recording", + "calls/android/call-logs", + "calls/android/participant-management", + "calls/android/screen-sharing", + "calls/android/picture-in-picture", + "calls/android/raise-hand", + "calls/android/idle-timeout" + ] + }, + { + "group": "Advanced", + "pages": [ + "calls/android/custom-control-panel", + "calls/android/custom-participant-list", + "calls/android/voip-calling", + "calls/android/background-handling", + "calls/android/in-call-chat", + "calls/android/share-invite" ] } ] }, { - "version": "v2‎‎‎‎‎‎‎‎‎‎‎‎", - "groups": [ + "dropdown": "Flutter", + "icon": "/images/icons/flutter.svg", + "pages": [ { - "group": " ", + "group": "Overview", "pages": [ - { - "group": "Overview", - "pages": [ - "sdk/ionic/2.0/overview", - "sdk/ionic/2.0/key-concepts", - "sdk/ionic/2.0/message-structure-and-hierarchy", - "sdk/ionic/2.0/rate-limits" - ] - }, - "sdk/ionic/2.0/setup", - { - "group": "Authentication", - "pages": [ - "sdk/ionic/2.0/authentication", - "sdk/ionic/2.0/authentication-login-listeners" - ] - }, - { - "group": "Messaging", - "pages": [ - "sdk/ionic/2.0/messaging", - "sdk/ionic/2.0/messaging-send-message", - "sdk/ionic/2.0/messaging-receive-messages", - "sdk/ionic/2.0/messaging-additional-message-filtering", - "sdk/ionic/2.0/messaging-retrieve-conversations", - "sdk/ionic/2.0/threaded-messages", - "sdk/ionic/2.0/messaging-edit-message", - "sdk/ionic/2.0/messaging-delete-message", - "sdk/ionic/2.0/messaging-delete-conversation", - "sdk/ionic/2.0/messaging-typing-indicators", - "sdk/ionic/2.0/messaging-receipts" - ] - }, - { - "group": "Calling", - "pages": [ - "sdk/ionic/2.0/calling", - "sdk/ionic/2.0/calling-direct-calling", - "sdk/ionic/2.0/calling-default-calling" - ] - }, - { - "group": "Users", - "pages": [ - "sdk/ionic/2.0/users", - "sdk/ionic/2.0/users-retrieve-users", - "sdk/ionic/2.0/users-user-management", - "sdk/ionic/2.0/users-block-users" - ] - }, - "sdk/ionic/2.0/user-presence", - { - "group": "Groups", - "pages": [ - "sdk/ionic/2.0/groups", - "sdk/ionic/2.0/groups-retrieve-groups", - "sdk/ionic/2.0/groups-create-group", - "sdk/ionic/2.0/groups-update-group", - "sdk/ionic/2.0/groups-join-group", - "sdk/ionic/2.0/groups-leave-group", - "sdk/ionic/2.0/groups-delete-group", - "sdk/ionic/2.0/groups-retrieve-group-members", - "sdk/ionic/2.0/groups-add-members-to-group", - "sdk/ionic/2.0/groups-kick-ban-members", - "sdk/ionic/2.0/groups-change-member-scope", - "sdk/ionic/2.0/groups-transfer-group-ownership" - ] - }, - "sdk/ionic/2.0/bots", - "sdk/ionic/2.0/webhooks", - { - "group": "Resources", - "pages": [ - "sdk/ionic/2.0/resources", - "sdk/ionic/2.0/resources-all-real-time-listeners", - "sdk/ionic/2.0/resources-upgrading-from-v1" - ] - }, - { - "group": "Advanced", - "pages": [ - "sdk/ionic/2.0/advanced", - "sdk/ionic/2.0/advanced-connection-listener" - ] - } + "calls/flutter/overview" ] - } - ] - } - ] - } - ] - }, - { - "tab": "Widgets", - "pages": [ - "widget/overview", - "widget/builder-guide-html", - "widget/builder-guide-wordpress", - "widget/builder-guide-squarespace", - "widget/builder-guide-wix", - "widget/builder-guide-webflow", - { - "group": "Legacy", - "pages": [ - "widget/legacy/overview", - "widget/legacy/wordpress-buddypress", - "widget/legacy/html-bootstrap-jquery" + }, + { + "group": "Getting Started", + "pages": [ + "calls/flutter/setup", + "calls/flutter/authentication" + ] + }, + { + "group": "Call Session", + "pages": [ + "calls/flutter/session-settings", + "calls/flutter/join-session", + "calls/flutter/actions", + "calls/flutter/events" + ] + }, + { + "group": "Features", + "pages": [ + "calls/flutter/ringing", + "calls/flutter/call-layouts", + "calls/flutter/audio-modes", + "calls/flutter/recording", + "calls/flutter/call-logs", + "calls/flutter/participant-management", + "calls/flutter/screen-sharing", + "calls/flutter/picture-in-picture", + "calls/flutter/raise-hand", + "calls/flutter/idle-timeout" + ] + }, + { + "group": "Advanced", + "pages": [ + "calls/flutter/custom-control-panel", + "calls/flutter/custom-participant-list", + "calls/flutter/voip-calling", + "calls/flutter/background-handling", + "calls/flutter/in-call-chat", + "calls/flutter/share-invite" + ] + } + ] + } ] }, { - "group": "Advanced", - "pages": ["widget/legacy/custom-build"] + "tab": "API", + "tab-id": "calls-api", + "pages": [ + { + "group": "Calls", + "pages": [ + "calls/api/overview", + "calls/api/list-calls", + "calls/api/get-call" + ] + } + ] } ] }, { - "tab": "APIs", - "groups": [ + "product": "AI Agents", + "tabs": [ + { + "tab": "AI Agents", + "pages": ["ai-agents"] + }, { - "group": "Chat APIs", + "tab": "Agent Builder", "pages": [ - "rest-api/chat-apis", + "/ai-agents/agent-builder/overview", { - "group": "API Keys", + "group": "Advanced", "pages": [ - "rest-api/api-keys", - "rest-api/api-keys/list", - "rest-api/api-keys/create", - "rest-api/api-keys/get", - "rest-api/api-keys/update", - "rest-api/api-keys/delete" + "/ai-agents/agent-builder/instructions", + "/ai-agents/agent-builder/knowledge-base/overview", + "/ai-agents/agent-builder/tools/overview", + "/ai-agents/agent-builder/mcp/overview", + "/ai-agents/agent-builder/frontend-actions/overview", + "/ai-agents/agent-builder/variables/overview" ] }, { - "group": "Roles", + "group": "Guides", "pages": [ - "rest-api/roles", - "rest-api/roles/list", - "rest-api/roles/create", - "rest-api/roles/get", - "rest-api/roles/update", - "rest-api/roles/delete" + "/ai-agents/agent-builder/guides/implementing-authorization" ] - }, - { - "group": "Users", - "pages": [ - "rest-api/users", - "rest-api/users/list", - "rest-api/users/reactivate", - "rest-api/users/create", - "rest-api/users/deactivate", - "rest-api/users/get", - "rest-api/users/update", - "rest-api/users/delete" - ] - }, - { - "group": "Auth Tokens", - "pages": [ - "rest-api/auth-tokens", - "rest-api/auth-tokens/list", - "rest-api/auth-tokens/create", - "rest-api/auth-tokens/flush", - "rest-api/auth-tokens/get", - "rest-api/auth-tokens/update", - "rest-api/auth-tokens/delete" - ] - }, + } + ] + }, + { + "tab": "Bring Your Own Agent", + "dropdowns": [ { - "group": "Blocked Users", + "dropdown": "Mastra", + "icon": "/images/icons/mastra.svg", "pages": [ - "rest-api/blocked-users", - "rest-api/blocked-users/list-blocked-users", - "rest-api/blocked-users/block-user", - "rest-api/blocked-users/unblock-user" + "/ai-agents/mastra", + "/ai-agents/mastra-actions", + "/ai-agents/mastra-tools", + "/ai-agents/mastra-runtime-context", + { + "group": "Guides", + "pages": [ + "/ai-agents/mastra-knowledge-agent", + "/ai-agents/mastra-frontend-actions-agent", + "/ai-agents/mastra-backend-tools-agent", + "/ai-agents/mastra-orchestrator-agent" + ] + }, + { + "group": "Tutorials", + "pages": [ + "/ai-agents/mastra-product-hunt-agent", + "/ai-agents/mastra-knowlege-agent-pdf" + ] + } ] }, { - "group": "Calls", + "dropdown": "CrewAI", + "icon": "/images/icons/crew-ai.svg", "pages": [ - "rest-api/calls", - "rest-api/list-calls", - "rest-api/get-call" + "/ai-agents/crew-ai", + "/ai-agents/crew-ai-actions", + "/ai-agents/crew-ai-tools", + { + "group": "Guides", + "pages": ["/ai-agents/crew-ai-knowledge-agent"] + }, + { + "group": "Tutorials", + "pages": ["/ai-agents/crew-ai-product-hunt-agent"] + } ] }, { - "group": "Friends", + "dropdown": "Agno", + "icon": "/images/icons/agno.svg", "pages": [ - "rest-api/friends", - "rest-api/friends/list-friends", - "rest-api/friends/add-friends", - "rest-api/friends/remove-friends" + "/ai-agents/agno", + "/ai-agents/agno-actions", + "/ai-agents/agno-tools", + { + "group": "Guides", + "pages": ["/ai-agents/agno-knowledge-agent"] + }, + { + "group": "Tutorials", + "pages": ["/ai-agents/agno-product-hunt-agent"] + } ] }, { - "group": "Groups", + "dropdown": "Vercel AI", + "icon": "/images/icons/vercel.png", "pages": [ - "rest-api/groups", - "rest-api/groups/list", - "rest-api/groups/create", - "rest-api/groups/get", - "rest-api/groups/update", - "rest-api/groups/delete" + "/ai-agents/vercel", + "/ai-agents/vercel-actions", + "/ai-agents/vercel-tools", + { + "group": "Guides", + "pages": ["/ai-agents/vercel-knowledge-agent"] + }, + { + "group": "Tutorials", + "pages": ["/ai-agents/vercel-product-hunt-agent"] + } ] }, { - "group": "Banned Users", + "dropdown": "LangGraph", + "icon": "/images/icons/lang-graph.svg", "pages": [ - "rest-api/banned-users", - "rest-api/banned-users/ban", - "rest-api/banned-users/unban", - "rest-api/banned-users/list" + "/ai-agents/langgraph", + { + "group": "Guides", + "pages": ["/ai-agents/langgraph-knowledge-agent"] + }, + { + "group": "Tutorials", + "pages": ["/ai-agents/langgraph-product-hunt-agent"] + } ] }, { - "group": "Group Members", + "dropdown": "AG2", + "icon": "/images/icons/ag2.svg", "pages": [ - "rest-api/group-members", - "rest-api/group-members/list", - "rest-api/group-members/add-members", - "rest-api/group-members/change-scope", - "rest-api/group-members/kick" + "/ai-agents/ag2", + "/ai-agents/ag2-actions", + "/ai-agents/ag2-tools", + { + "group": "Guides", + "pages": ["/ai-agents/ag2-knowledge-agent"] + }, + { + "group": "Tutorials", + "pages": ["/ai-agents/ag2-product-hunt-agent"] + } ] }, { - "group": "Messages", + "dropdown": "AG-UI", + "icon": "/images/icons/agui.svg", "pages": [ - "rest-api/messages", - "rest-api/messages/list-messages", - "rest-api/messages/send-message", - "rest-api/messages/get-message", - "rest-api/messages/update-message", - "rest-api/messages/delete-message", - "rest-api/messages/list-all-reactions", - "rest-api/messages/list-reactions-with-a-specific-emoji-unicode", - "rest-api/messages/add-reaction", - "rest-api/messages/remove-reaction", - "rest-api/messages/list-threaded-messages", - "rest-api/messages/send-threaded-message", - "rest-api/messages/list-user-messages", - "rest-api/messages/list-group-messages", - "rest-api/messages/send-bot-message" + "/ai-agents/ag-ui", + "/ai-agents/ag-ui-actions", + "/ai-agents/ag-ui-tools", + { + "group": "Guides", + "pages": ["/ai-agents/cometchat-ag-ui-byoa"] + }, + { + "group": "Implementation", + "pages": [ + "/ai-agents/cometchat-ag-ui-express", + "/ai-agents/cometchat-ag-ui-nestjs" + ] + } ] - }, + } + ] + }, + { + "tab": "Widget Builder", + "tab-id": "ai-agent-chat-builder", + "pages": ["/ai-agents/chat-widget"] + }, + { + "tab": "Custom Bots", + "hidden": true, + "pages": ["/ai-chatbots/custom-bots"] + }, + { + "tab": "AI Bots (Legacy)", + "hidden": true, + "pages": [ + "/ai-chatbots/ai-bots/overview", + "/ai-chatbots/ai-bots/instructions", + "/ai-chatbots/ai-bots/bots" + ] + } + ] + }, + { + "product": "AI Moderation", + "tabs": [ + { + "tab": "AI Moderation", + "pages": [ + "moderation/overview", + "moderation/getting-started", { - "group": "Conversations", + "group": "Setup", + "icon": "gear", "pages": [ - "rest-api/conversations", - "rest-api/conversations/list-conversations", - "rest-api/conversations/get-conversation", - "rest-api/conversations/delete-conversation", - "rest-api/conversations/get-user-conversation", - "rest-api/conversations/update-user-conversation", - "rest-api/conversations/reset-user-conversation", - "rest-api/conversations/mark-user-conversation-as-delivered", - "rest-api/conversations/mark-user-conversation-as-read", - "rest-api/conversations/mark-conversation-messages-as-unread", - "rest-api/conversations/get-group-conversation", - "rest-api/conversations/update-group-conversation", - "rest-api/conversations/reset-group-conversation", - "rest-api/conversations/mark-group-conversation-as-delivered", - "rest-api/conversations/mark-group-conversation-as-read", - "rest-api/conversations/mark-group-conversation-as-unread" + "moderation/rules-management", + "moderation/lists-management" ] }, { - "group": "Restrict Features", + "group": "Message Management", + "icon": "envelope-open-text", "pages": [ - "rest-api/restrict-features", - "rest-api/restrict-features/list-restricted-features", - "rest-api/restrict-features/restrict-features", - "rest-api/restrict-features/allow-features" + "moderation/flagged-messages", + "moderation/blocked-messages", + "moderation/reviewed-messages" ] }, { - "group": "Metrics", + "group": "Integrations", + "icon": "plug", "pages": [ - "rest-api/metrics/usage-metrics", - "rest-api/metrics/message-metrics" + { + "group": "OpenAI", + "pages": [ + "moderation/open-ai/openai-overview", + "moderation/open-ai/openai-custom" + ] + }, + { + "group": "Custom API", + "pages": [ + "moderation/custom/custom-api-overview", + "moderation/custom/custom-api" + ] + } ] }, { - "group": "Notifications", + "group": "Reference", + "icon": "book", "pages": [ - "rest-api/notifications/list-settings", - "rest-api/notifications/reset-settings", - "rest-api/notifications/update-settings", - "rest-api/notifications/list-fcm-providers", - "rest-api/notifications/update-fcm-provider", - "rest-api/notifications/add-fcm-provider", - "rest-api/notifications/delete-fcm-provider", - "rest-api/notifications/change-default-fcm-provider", - "rest-api/notifications/list-apns-providers", - "rest-api/notifications/update-apns-providers", - "rest-api/notifications/add-apns-provider", - "rest-api/notifications/delete-apns-providers", - "rest-api/notifications/change-default-apns-provider", - "rest-api/notifications/list-preferences", - "rest-api/notifications/reset-preferences", - "rest-api/notifications/update-preferences", - "rest-api/notifications/list-push-tokens", - "rest-api/notifications/register-push-token", - "rest-api/notifications/unregister-push-tokens-for-authtoken", - "rest-api/notifications/delete-the-given-push-token", - "rest-api/notifications/list-muted-conversations", - "rest-api/notifications/mute-notifications-for-conversations", - "rest-api/notifications/unmute-notifications-for-conversations", - "rest-api/notifications/get-timezone", - "rest-api/notifications/update-timezone", - "rest-api/notifications/get-contact-details", - "rest-api/notifications/delete-contact-details", - "rest-api/notifications/update-contact-details", - "rest-api/notifications/get-twilio-credentials", - "rest-api/notifications/update-twilio-credentials", - "rest-api/notifications/save-twilio-credentials", - "rest-api/notifications/delete-twilio-credentials", - "rest-api/notifications/get-sendgrid-credentials", - "rest-api/notifications/update-sendgrid-credentials", - "rest-api/notifications/save-sendgrid-credentials", - "rest-api/notifications/delete-sendgrid-credentials", - "rest-api/notifications/get-custom-provider-for-push-notifications", - "rest-api/notifications/update-custom-provider-for-push-notifications", - "rest-api/notifications/save-custom-provider-for-push-notifications", - "rest-api/notifications/delete-the-custom-provider-for-push-notifications", - "rest-api/notifications/get-custom-provider-for-sms-notifications", - "rest-api/notifications/update-custom-provider-for-sms-notifications", - "rest-api/notifications/save-custom-provider-for-sms-notifications", - "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", - "rest-api/notifications/get-custom-provider-for-email-notifications", - "rest-api/notifications/update-custom-provider-for-email-notifications", - "rest-api/notifications/save-custom-provider-for-email-notifications", - "rest-api/notifications/delete-the-custom-provider-for-email-notifications", - "rest-api/notifications/notifications-logs" + "moderation/constraints-and-limits", + "moderation/legacy-extensions" ] - }, - "rest-api/constraints-rate-limits-and-errors" + } ] }, { - "group": "Data Import APIs", + "tab": "APIs", "pages": [ - "rest-api/data-import", - { - "group": "Messages", - "pages": ["rest-api/data-import-apis/messages/import-messages"] - }, + "moderation/api-explorer", { - "group": "Users", - "pages": ["rest-api/data-import-apis/users/import-users"] + "group": "Rules", + "pages": [ + "moderation/apis/list-rules", + "moderation/apis/add-rule", + "moderation/apis/get-rule", + "moderation/apis/update-rule", + "moderation/apis/remove-rule", + "moderation/apis/get-rule-revisions" + ] }, { - "group": "Groups", + "group": "Keywords", "pages": [ - "rest-api/data-import-apis/groups/import-groups", - "rest-api/data-import-apis/groups/import-group-members" + "moderation/apis/list-keywords", + "moderation/apis/add-keywords", + "moderation/apis/get-keyword", + "moderation/apis/update-keyword", + "moderation/apis/remove-keyword" ] }, - "rest-api/data-migration-constraints-rate-limits-and-errors" - ] - }, - { - "group": "Management APIs (Multi-Tenancy)", - "pages": [ - "rest-api/management-apis", { - "group": "App", + "group": "Blocked Messages", "pages": [ - "rest-api/management-apis/app/list", - "rest-api/management-apis/app/create", - "rest-api/management-apis/app/delete", - "rest-api/management-apis/app/fetch-usage" + "moderation/apis/list-blocked-messages", + "moderation/apis/approve-blocked-messages", + "moderation/apis/review-blocked-message" ] }, { - "group": "Extensions", + "group": "Flagged Messages", "pages": [ - "rest-api/extensions-overview", - "rest-api/management-apis/extensions/list-extensions", - "rest-api/management-apis/extensions/enabledisable", - "rest-api/management-apis/extensions/chat-widgets-list", - "rest-api/management-apis/extensions/chat-widgets-update", - "rest-api/management-apis/extensions/chat-widgets-create", - "rest-api/management-apis/extensions/giphy-get-settings", - "rest-api/management-apis/extensions/giphy-update-settings", - "rest-api/management-apis/extensions/giphy-store-settings", - "rest-api/management-apis/extensions/giphy-delete-settings-for-giphy", - "rest-api/management-apis/extensions/xss-filter-get-settings", - "rest-api/management-apis/extensions/xss-filter-update-settings", - "rest-api/management-apis/extensions/xss-filter-store-settings", - "rest-api/management-apis/extensions/xss-filter-delete-settings", - "rest-api/management-apis/extensions/image-moderation-get-settings", - "rest-api/management-apis/extensions/image-moderation-update-settings", - "rest-api/management-apis/extensions/image-moderation-store-settings", - "rest-api/management-apis/extensions/image-moderation-delete-settings", - "rest-api/management-apis/extensions/report-user-get-settings", - "rest-api/management-apis/extensions/report-user-update-settings", - "rest-api/management-apis/extensions/report-user-store-settings", - "rest-api/management-apis/extensions/report-user-delete-settings", - "rest-api/management-apis/extensions/report-message-get-settings", - "rest-api/management-apis/extensions/report-message-update-settings", - "rest-api/management-apis/extensions/report-message-store-settings", - "rest-api/management-apis/extensions/report-message-delete-settings", - "rest-api/management-apis/extensions/voice-transcription-get-settings", - "rest-api/management-apis/extensions/voice-transcription-update-settings", - "rest-api/management-apis/extensions/voice-transcription-store-settings", - "rest-api/management-apis/extensions/voice-transcription-delete-settings", - "rest-api/management-apis/extensions/stipop-get-settings", - "rest-api/management-apis/extensions/stipop-update-settings", - "rest-api/management-apis/extensions/stipop-store-settings", - "rest-api/management-apis/extensions/stipop-delete-settings", - "rest-api/management-apis/extensions/sentiment-analysis-get-settings", - "rest-api/management-apis/extensions/sentiment-analysis-update-settings", - "rest-api/management-apis/extensions/sentiment-analysis-store-settings", - "rest-api/management-apis/extensions/sentiment-analysis-delete-settings", - "rest-api/management-apis/extensions/tinyurl-get-settings", - "rest-api/management-apis/extensions/tinyurl-update-settings", - "rest-api/management-apis/extensions/tinyurl-store-settings", - "rest-api/management-apis/extensions/tinyurl-delete-settings", - "rest-api/management-apis/extensions/intercom-get-settings", - "rest-api/management-apis/extensions/intercom-update-settings", - "rest-api/management-apis/extensions/intercom-store-settings", - "rest-api/management-apis/extensions/intercom-delete-settings", - "rest-api/management-apis/extensions/bitly-get-settings", - "rest-api/management-apis/extensions/bitly-update-settings", - "rest-api/management-apis/extensions/bitly-store-settings", - "rest-api/management-apis/extensions/bitly-delete-settings", - "rest-api/management-apis/extensions/rich-media-preview-get-settings", - "rest-api/management-apis/extensions/rich-media-preview-update-settings", - "rest-api/management-apis/extensions/rich-media-preview-store-settings", - "rest-api/management-apis/extensions/rich-media-preview-delete-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-get-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-update-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-store-settings", - "rest-api/management-apis/extensions/virus-malware-scanner-delete-settings", - "rest-api/management-apis/extensions/video-broadcasting-get-settings", - "rest-api/management-apis/extensions/video-broadcasting-update-settings", - "rest-api/management-apis/extensions/video-broadcasting-store-settings", - "rest-api/management-apis/extensions/video-broadcasting-delete-settings", - "rest-api/management-apis/extensions/tenor-gifs-get-settings", - "rest-api/management-apis/extensions/tenor-gifs-update-settings", - "rest-api/management-apis/extensions/tenor-gifs-store-settings", - "rest-api/management-apis/extensions/tenor-gifs-delete-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-get-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-update-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-store-settings", - "rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-get-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-update-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-store-settings", - "rest-api/management-apis/extensions/end-to-end-encryption-delete-settings", - "rest-api/management-apis/extensions/stickers-extension-get-settings", - "rest-api/management-apis/extensions/stickers-extension-update-settings", - "rest-api/management-apis/extensions/stickers-extension-delete-settings", - "rest-api/management-apis/extensions/push-notification-upload-p12-certificate", - "rest-api/management-apis/extensions/push-notification-upload-p8-certificate", - "rest-api/management-apis/extensions/push-notification-get-certificate", - "rest-api/management-apis/extensions/email-replies-get-settings", - "rest-api/management-apis/extensions/email-replies-update-settings", - "rest-api/management-apis/extensions/email-replies-store-settings", - "rest-api/management-apis/extensions/email-replies-delete-settings", - "rest-api/management-apis/extensions/sms-notification-get-settings", - "rest-api/management-apis/extensions/sms-notification-update-settings", - "rest-api/management-apis/extensions/sms-notification-store-settings", - "rest-api/management-apis/extensions/sms-notification-delete-settings", - "rest-api/management-apis/extensions/push-notification-get-settings", - "rest-api/management-apis/extensions/push-notification-update-settings", - "rest-api/management-apis/extensions/push-notification-store-settings", - "rest-api/management-apis/extensions/push-notification-delete-settings", - "rest-api/management-apis/extensions/chatwoot-get-settings", - "rest-api/management-apis/extensions/chatwoot-update-settings", - "rest-api/management-apis/extensions/chatwoot-store-settings", - "rest-api/management-apis/extensions/chatwoot-delete-settings", - "rest-api/management-apis/extensions/message-shortcuts-get-settings", - "rest-api/management-apis/extensions/message-shortcuts-update-settings", - "rest-api/management-apis/extensions/message-shortcuts-store-settings", - "rest-api/management-apis/extensions/message-shortcuts-delete-settings", - "rest-api/management-apis/extensions/email-notification-get-settings", - "rest-api/management-apis/extensions/email-notification-update-settings", - "rest-api/management-apis/extensions/email-notification-store-settings", - "rest-api/management-apis/extensions/email-notification-delete-settings", - "rest-api/management-apis/extensions/data-masking-get-settings", - "rest-api/management-apis/extensions/data-masking-store-or-update-settings", - "rest-api/management-apis/extensions/data-masking-delete-settings", - "rest-api/management-apis/extensions/profanity-filter-get-settings", - "rest-api/management-apis/extensions/profanity-filter-update-settings", - "rest-api/management-apis/extensions/profanity-filter-adds-settings", - "rest-api/management-apis/extensions/profanity-filter-delete-settings" + "moderation/apis/list-flagged-messages", + "moderation/apis/blockreview-flagged-message", + "moderation/apis/flag-a-message" ] }, { - "group": "Team Management", + "group": "Reviewed Messages", "pages": [ - "rest-api/management-apis/team-management/list-collaborators", - "rest-api/management-apis/team-management/addsremove-collaborators" + "moderation/apis/list-reviewed-messages" ] }, { - "group": "Settings", + "group": "Reasons", "pages": [ - "rest-api/settings", - "rest-api/management-apis/settings/list-settings", - "rest-api/management-apis/settings/maps-settings", - "rest-api/management-apis/settings/unmaps-settings" + "moderation/apis/create-reasons", + "moderation/apis/list-reasons", + "moderation/apis/get-reason-details", + "moderation/apis/update-reason-details", + "moderation/apis/delete-reasons" ] - }, + } + ] + } + ] + }, + { + "product": "Notifications", + "tabs": [ + { + "tab": "Notifications", + "pages": ["notifications"] + }, + { + "tab": "Push", + "pages": [ + "notifications/push-overview", { - "group": "Webhooks", + "group": "Getting Started", "pages": [ - "rest-api/management-apis/webhooks/list-webhooks", - "rest-api/management-apis/webhooks/create-webhook", - "rest-api/management-apis/webhooks/get-webhook", - "rest-api/management-apis/webhooks/update-webhook", - "rest-api/management-apis/webhooks/delete-webhook", - "rest-api/management-apis/webhooks/list-triggers", - "rest-api/management-apis/webhooks/add-triggers", - "rest-api/management-apis/webhooks/remove-triggers" + "notifications/android-push-notifications", + "notifications/ios-apns-push-notifications", + "notifications/ios-fcm-push-notifications", + "notifications/flutter-push-notifications-android", + "notifications/flutter-push-notifications-ios", + "notifications/react-native-push-notifications-android", + "notifications/react-native-push-notifications-ios", + "notifications/web-push-notifications" ] }, { - "group": "Moderation", + "group": " ", "pages": [ - "rest-api/moderation", - "rest-api/management-apis/moderation/list-rules", - "rest-api/management-apis/moderation/add-rule", - "rest-api/management-apis/moderation/get-rule", - "rest-api/management-apis/moderation/update-rule", - "rest-api/management-apis/moderation/remove-rule", - "rest-api/management-apis/moderation/list-keywords", - "rest-api/management-apis/moderation/add-keywords", - "rest-api/management-apis/moderation/get-keyword", - "rest-api/management-apis/moderation/update-keyword", - "rest-api/management-apis/moderation/remove-keyword", - "rest-api/management-apis/moderation/get-rule-revisions", - "rest-api/management-apis/moderation/list-blocked-messages", - "rest-api/management-apis/moderation/approve-blocked-messages" + "notifications/preferences", + "notifications/templates-and-sounds", + "notifications/badge-count", + "notifications/custom-providers", + "notifications/logs", + "notifications/constraints-and-limits" ] }, - "rest-api/multi-tenancy-constraints-rate-limits-and-errors" + "notifications/push-notifications-extension-legacy" + ] + }, + { + "tab": "Email", + "pages": [ + "notifications/email-overview", + "notifications/email-integration", + "notifications/email-preferences", + "notifications/email-templates", + "notifications/email-custom-providers", + "notifications/email-notifications-extension-legacy" + ] + }, + { + "tab": "SMS", + "pages": [ + "notifications/sms-overview", + "notifications/sms-integration", + "notifications/sms-preferences", + "notifications/sms-templates", + "notifications/sms-custom-providers", + "notifications/sms-notifications-extension-legacy" ] }, { "tab": "APIs", - "groups": [ + "pages": [ { - "group": "BYO Agent APIs", + "group": "Push APIs", "pages": [ - "ai-agents/byo-api-explorer", - { - "group": "BYO Agents", - "expanded": false, - "icon": "robot", - "pages": [ - "ai-agents/apis/create-byo-agent", - "ai-agents/apis/list-byo-agents", - "ai-agents/apis/update-byo-agent", - "ai-agents/apis/delete-byo-agent" - ] - }, - { - "group": "Tools", - "expanded": false, - "icon": "wrench", - "pages": [ - "ai-agents/apis/list-tools", - "ai-agents/apis/get-tool", - "ai-agents/apis/create-tool", - "ai-agents/apis/update-tool", - "ai-agents/apis/delete-tool" - ] - } + "notifications/apis/push/list-fcm-providers", + "notifications/apis/push/add-fcm-provider", + "notifications/apis/push/update-fcm-provider", + "notifications/apis/push/delete-fcm-provider", + "notifications/apis/push/change-default-fcm-provider", + "notifications/apis/push/list-apns-providers", + "notifications/apis/push/add-apns-provider", + "notifications/apis/push/update-apns-providers", + "notifications/apis/push/delete-apns-providers", + "notifications/apis/push/change-default-apns-provider", + "notifications/apis/push/register-push-token", + "notifications/apis/push/list-push-tokens", + "notifications/apis/push/delete-push-token", + "notifications/apis/push/unregister-push-tokens", + "notifications/apis/push/get-custom-provider", + "notifications/apis/push/save-custom-provider", + "notifications/apis/push/update-custom-provider", + "notifications/apis/push/delete-custom-provider", + "notifications/apis/push/list-settings", + "notifications/apis/push/update-settings", + "notifications/apis/push/reset-settings", + "notifications/apis/push/list-preferences", + "notifications/apis/push/update-preferences", + "notifications/apis/push/reset-preferences", + "notifications/apis/push/get-timezone", + "notifications/apis/push/update-timezone", + "notifications/apis/push/get-contact-details", + "notifications/apis/push/update-contact-details", + "notifications/apis/push/delete-contact-details", + "notifications/apis/push/mute-conversations", + "notifications/apis/push/unmute-conversations", + "notifications/apis/push/list-muted-conversations", + "notifications/apis/push/notifications-logs" ] }, { - "group": "Agent Builder APIs", + "group": "Email APIs", "pages": [ - "ai-agents/api-explorer", - { - "group": "Agents", - "expanded": false, - "icon": "robot", - "pages": [ - "ai-agents/apis/create-agent", - "ai-agents/apis/list-agents", - "ai-agents/apis/get-agent", - "ai-agents/apis/update-agent", - "ai-agents/apis/delete-agent", - "ai-agents/apis/search-agent-tools", - "ai-agents/apis/list-agent-tools-and-actions" - ] - }, - { - "group": "Tools", - "expanded": false, - "icon": "wrench", - "pages": [ - "ai-agents/apis/add-tools-to-agent", - "ai-agents/apis/remove-tools-from-agent", - "ai-agents/apis/get-tool-actions-for-agent", - "ai-agents/apis/enable-tool-actions", - "ai-agents/apis/remove-tool-actions" - ] - }, - { - "group": "Custom API Tools", - "expanded": false, - "icon": "code", - "pages": [ - "ai-agents/apis/list-api-tools", - "ai-agents/apis/create-api-tool", - "ai-agents/apis/update-api-tool", - "ai-agents/apis/delete-api-tool", - "ai-agents/apis/add-api-tools-to-agent", - "ai-agents/apis/remove-api-tools-from-agent" - ] - }, - { - "group": "Frontend Actions", - "expanded": false, - "icon": "window", - "pages": [ - "ai-agents/apis/list-frontend-actions", - "ai-agents/apis/create-frontend-action", - "ai-agents/apis/update-frontend-action", - "ai-agents/apis/delete-frontend-action", - "ai-agents/apis/add-frontend-actions-to-agent", - "ai-agents/apis/remove-frontend-actions-from-agent" - ] - }, - { - "group": "MCP Servers", - "expanded": false, - "icon": "server", - "pages": [ - "ai-agents/apis/list-mcp-servers", - "ai-agents/apis/create-mcp-server", - "ai-agents/apis/update-mcp-server", - "ai-agents/apis/delete-mcp-server", - "ai-agents/apis/add-mcp-servers-to-agent", - "ai-agents/apis/remove-mcp-servers-from-agent" - ] - }, - { - "group": "Knowledge Base", - "expanded": false, - "icon": "book", - "pages": [ - "ai-agents/apis/list-knowledge-base-records", - "ai-agents/apis/get-source-pages", - "ai-agents/apis/retry-knowledge-base-source-indexing", - "ai-agents/apis/initiate-file-uploads", - "ai-agents/apis/delete-uploaded-file", - "ai-agents/apis/create-text-detail", - "ai-agents/apis/update-text-detail", - "ai-agents/apis/delete-text-detail", - "ai-agents/apis/poll-knowledge-base-status", - "ai-agents/apis/add-knowledge-base-files", - "ai-agents/apis/remove-knowledge-base-files", - "ai-agents/apis/scrape-single-page", - "ai-agents/apis/scrape-website", - "ai-agents/apis/get-discovered-urls", - "ai-agents/apis/process-discovered-urls", - "ai-agents/apis/delete-website", - "ai-agents/apis/poll-discovered-urls-status", - "ai-agents/apis/retry-indexing-for-website-pages" - ] - }, - { - "group": "Variables", - "expanded": false, - "icon": "brackets-curly", - "pages": [ - "ai-agents/apis/get-all-available-variables", - "ai-agents/apis/create-custom-variable", - "ai-agents/apis/update-custom-variable", - "ai-agents/apis/delete-custom-variable" - ] - } + "notifications/apis/email/get-sendgrid-credentials", + "notifications/apis/email/save-sendgrid-credentials", + "notifications/apis/email/update-sendgrid-credentials", + "notifications/apis/email/delete-sendgrid-credentials", + "notifications/apis/email/get-custom-provider", + "notifications/apis/email/save-custom-provider", + "notifications/apis/email/update-custom-provider", + "notifications/apis/email/delete-custom-provider" + ] + }, + { + "group": "SMS APIs", + "pages": [ + "notifications/apis/sms/get-twilio-credentials", + "notifications/apis/sms/save-twilio-credentials", + "notifications/apis/sms/update-twilio-credentials", + "notifications/apis/sms/delete-twilio-credentials", + "notifications/apis/sms/get-custom-provider", + "notifications/apis/sms/save-custom-provider", + "notifications/apis/sms/update-custom-provider", + "notifications/apis/sms/delete-custom-provider" ] } ] } ] + }, + { + "product": "Insights", + "tabs": [ + { + "tab": "Insights", + "pages": ["insights"] + } + ] } ] }, @@ -4781,472 +5713,1348 @@ }, "redirects": [ { - "source": "/ai/overview", - "destination": "/fundamentals/ai-user-copilot/overview" + "source": "/react-native/getting-started", + "destination": "/react-native/react-native-cli-integration" + }, + { + "source": "/ui-kit/react/property-changes", + "destination": "/ui-kit/react/upgrading-from-v5" + }, + { + "source": "/ui-kit/android/property-changes", + "destination": "/ui-kit/android/upgrading-from-v4" + }, + { + "source": "/ui-kit/ios/property-changes", + "destination": "/ui-kit/ios/upgrading-from-v4" + }, + { + "source": "/ui-kit/react-native/property-changes", + "destination": "/ui-kit/react-native/upgrading-from-v4" + }, + { + "source": "/ai/overview", + "destination": "/fundamentals/ai-user-copilot/overview" + }, + { + "source": "/ai/conversation-starter", + "destination": "/fundamentals/ai-user-copilot/conversation-starter" + }, + { + "source": "/ai/smart-replies", + "destination": "/fundamentals/ai-user-copilot/smart-replies" + }, + { + "source": "/ai/conversation-summary", + "destination": "/fundamentals/ai-user-copilot/conversation-summary" + }, + { + "source": "/webhooks/overview", + "destination": "/fundamentals/webhooks-overview" + }, + { + "source": "/webhooks/webhooks-management", + "destination": "/fundamentals/webhooks-management" + }, + { + "source": "/webhooks/webhooks-events", + "destination": "/fundamentals/webhooks-events" + }, + { + "source": "/webhooks/webhooks-legacy-overview", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/webhooks/webhooks-legacy-management", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/webhooks/webhooks-legacy-events", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/fundamentals/webhooks-legacy-overview", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/fundamentals/webhooks-legacy-management", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/fundamentals/webhooks-legacy-events", + "destination": "/fundamentals/webhooks-legacy" + }, + { + "source": "/ai/bots", + "destination": "/ai-chatbots/bots" + }, + { + "source": "/ai/personalities", + "destination": "/ai-chatbots/instructions" + }, + { + "source": "/bots/overview", + "destination": "/ai-chatbots/custom-bots" + }, + { + "source": "/extensions/notification-extensions", + "destination": "/fundamentals/notification-extensions" + }, + { + "source": "/extensions/message-shortcuts", + "destination": "/fundamentals/message-shortcuts" + }, + { + "source": "/extensions/avatars", + "destination": "/fundamentals/avatars" + }, + { + "source": "/extensions/thumbnail-generation", + "destination": "/fundamentals/thumbnail-generation" + }, + { + "source": "/extensions/link-preview", + "destination": "/fundamentals/link-preview" + }, + { + "source": "/extensions/rich-media-preview", + "destination": "/fundamentals/rich-media-preview" + }, + { + "source": "/extensions/voice-transcription", + "destination": "/fundamentals/voice-transcription" + }, + { + "source": "/extensions/pin-message", + "destination": "/fundamentals/pin-message" + }, + { + "source": "/extensions/save-message", + "destination": "/fundamentals/save-message" + }, + { + "source": "/extensions/tinyurl", + "destination": "/fundamentals/tinyurl" + }, + { + "source": "/extensions/bitly", + "destination": "/fundamentals/bitly" + }, + { + "source": "/extensions/email-replies", + "destination": "/fundamentals/email-replies" + }, + { + "source": "/extensions/mentions", + "destination": "/fundamentals/mentions" + }, + { + "source": "/extensions/giphy", + "destination": "/fundamentals/giphy" + }, + { + "source": "/extensions/tenor", + "destination": "/fundamentals/tenor" + }, + { + "source": "/extensions/gfycat", + "destination": "/fundamentals/gfycat" + }, + { + "source": "/extensions/reminders", + "destination": "/fundamentals/reminders" + }, + { + "source": "/extensions/smart-replies", + "destination": "/fundamentals/smart-replies" + }, + { + "source": "/extensions/message-translation", + "destination": "/fundamentals/message-translation" + }, + { + "source": "/extensions/emojis", + "destination": "/fundamentals/emojis" + }, + { + "source": "/extensions/polls", + "destination": "/fundamentals/polls" + }, + { + "source": "/extensions/reactions", + "destination": "/fundamentals/reactions" + }, + { + "source": "/extensions/stickers-stipop", + "destination": "/fundamentals/stickers-stipop" + }, + { + "source": "/extensions/stickers", + "destination": "/fundamentals/stickers" + }, + { + "source": "/extensions/video-broadcasting", + "destination": "/fundamentals/video-broadcasting" + }, + { + "source": "/extensions/collaborative-whiteboard", + "destination": "/fundamentals/collaborative-whiteboard" + }, + { + "source": "/extensions/collaborative-document", + "destination": "/fundamentals/collaborative-document" + }, + { + "source": "/extensions/chatwoot", + "destination": "/fundamentals/chatwoot" + }, + { + "source": "/extensions/intercom", + "destination": "/fundamentals/intercom" + }, + { + "source": "/extensions/moderation-extensions", + "destination": "/fundamentals/moderation-extensions" + }, + { + "source": "/extensions/disappearing-messages", + "destination": "/fundamentals/disappearing-messages" + }, + { + "source": "/extensions/end-to-end-encryption", + "destination": "/fundamentals/end-to-end-encryption" + }, + { + "source": "/extensions/overview", + "destination": "/fundamentals/extensions-overview" + }, + { + "source": "/extensions/web-push-notifications", + "destination": "/notifications/web-push-notifications" + }, + { + "source": "/extensions/android-push-notifications", + "destination": "/notifications/android-push-notifications" + }, + { + "source": "/extensions/android-connection-service", + "destination": "/notifications/android-connection-service" + }, + { + "source": "/extensions/ios-fcm-push-notifications", + "destination": "/notifications/ios-fcm-push-notifications" + }, + { + "source": "/extensions/ios-apns-push-notifications", + "destination": "/notifications/ios-apns-push-notifications" + }, + { + "source": "/extensions/flutter-push-notifications", + "destination": "/notifications/flutter-push-notifications" + }, + { + "source": "/extensions/react-native-push-notifications", + "destination": "/notifications/react-native-push-notifications" + }, + { + "source": "/extensions/capacitor-cordova-ionic-push-notifications", + "destination": "/notifications/capacitor-cordova-ionic-push-notifications" + }, + { + "source": "/extensions/migration-guide-push-notifications", + "destination": "/notifications/migration-guide-push-notifications" + }, + { + "source": "/extensions/mute-functionality", + "destination": "/notifications/mute-functionality" + }, + { + "source": "/extensions/token-management", + "destination": "/notifications/token-management" + }, + { + "source": "/extensions/legacy-push-notifications", + "destination": "/notifications/legacy-push-notifications" + }, + { + "source": "/extensions/push-notifications-overview", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/extensions/email-notifications", + "destination": "/notifications/email-notifications-extension-legacy" + }, + { + "source": "/extensions/sms-notifications", + "destination": "/notifications/sms-notifications-extension-legacy" + }, + { + "source": "/extensions/slow-mode", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/xss-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/report-user", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/report-message", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/data-masking-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/profanity-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/image-moderation", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/sentiment-analysis", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/in-flight-message-moderation", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/extensions/virus-malware-scanner", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/slow-mode", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/xss-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/report-user", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/report-message", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/data-masking-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/profanity-filter", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/image-moderation", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/sentiment-analysis", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/in-flight-message-moderation", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/moderation/virus-malware-scanner", + "destination": "/moderation/legacy-extensions" + }, + { + "source": "/ui-kit/react/v6", + "destination": "/ui-kit/react" + }, + { + "source": "/ui-kit/react/v6/:slug*", + "destination": "/ui-kit/react/:slug*" + }, + { + "source": "/ui-kit/react/6.0", + "destination": "/ui-kit/react" + }, + { + "source": "/ui-kit/react/6.0/:slug*", + "destination": "/ui-kit/react/:slug*" + }, + { + "source": "/ui-kit/react/v6/integration/next-js", + "destination": "/ui-kit/react/next-js-integration" + }, + { + "source": "/ui-kit/react", + "destination": "/ui-kit/react/overview" + }, + { + "source": "/ui-kit/react/5.0", + "destination": "/ui-kit/react/v5" + }, + { + "source": "/ui-kit/react/5.0/:slug*", + "destination": "/ui-kit/react/v5/:slug*" + }, + { + "source": "/ui-kit/react/4.0", + "destination": "/ui-kit/react/v4" + }, + { + "source": "/ui-kit/react/4.0/:slug*", + "destination": "/ui-kit/react/v4/:slug*" + }, + { + "source": "/ui-kit/react/3.0", + "destination": "/ui-kit/react/v3" + }, + { + "source": "/ui-kit/react/3.0/:slug*", + "destination": "/ui-kit/react/v3/:slug*" + }, + { + "source": "/ui-kit/react/2.0", + "destination": "/ui-kit/react/v2" + }, + { + "source": "/ui-kit/react/2.0/:slug*", + "destination": "/ui-kit/react/v2/:slug*" + }, + { + "source": "/ui-kit/ios/v5", + "destination": "/ui-kit/ios" + }, + { + "source": "/ui-kit/ios/v5/:slug*", + "destination": "/ui-kit/ios/:slug*" + }, + { + "source": "/ui-kit/ios/5.0", + "destination": "/ui-kit/ios" + }, + { + "source": "/ui-kit/ios/5.0/:slug*", + "destination": "/ui-kit/ios/:slug*" + }, + { + "source": "/ui-kit/ios/4.0", + "destination": "/ui-kit/ios/v4" + }, + { + "source": "/ui-kit/ios/4.0/:slug*", + "destination": "/ui-kit/ios/v4/:slug*" + }, + { + "source": "/ui-kit/ios/3.0", + "destination": "/ui-kit/ios/v3" + }, + { + "source": "/ui-kit/ios/3.0/:slug*", + "destination": "/ui-kit/ios/v3/:slug*" + }, + { + "source": "/ui-kit/ios/2.0", + "destination": "/ui-kit/ios/v2" + }, + { + "source": "/ui-kit/ios/2.0/:slug*", + "destination": "/ui-kit/ios/v2/:slug*" + }, + { + "source": "/ui-kit/android/v5", + "destination": "/ui-kit/android" + }, + { + "source": "/ui-kit/android/v5/:slug*", + "destination": "/ui-kit/android/:slug*" + }, + { + "source": "/ui-kit/android/5.0", + "destination": "/ui-kit/android" + }, + { + "source": "/ui-kit/android/5.0/:slug*", + "destination": "/ui-kit/android/:slug*" + }, + { + "source": "/ui-kit/android/4.0", + "destination": "/ui-kit/android/v4" + }, + { + "source": "/ui-kit/android/4.0/:slug*", + "destination": "/ui-kit/android/v4/:slug*" + }, + { + "source": "/ui-kit/android/3.0", + "destination": "/ui-kit/android/v3" + }, + { + "source": "/ui-kit/android/3.0/:slug*", + "destination": "/ui-kit/android/v3/:slug*" + }, + { + "source": "/ui-kit/android/2.0", + "destination": "/ui-kit/android/v2" + }, + { + "source": "/ui-kit/android/2.0/:slug*", + "destination": "/ui-kit/android/v2/:slug*" + }, + { + "source": "/ui-kit/flutter/v5", + "destination": "/ui-kit/flutter" + }, + { + "source": "/ui-kit/flutter/v5/:slug*", + "destination": "/ui-kit/flutter/:slug*" + }, + { + "source": "/ui-kit/flutter/5.0", + "destination": "/ui-kit/flutter" + }, + { + "source": "/ui-kit/flutter/5.0/:slug*", + "destination": "/ui-kit/flutter/:slug*" + }, + { + "source": "/ui-kit/flutter/4.0", + "destination": "/ui-kit/flutter/v4" + }, + { + "source": "/ui-kit/flutter/4.0/:slug*", + "destination": "/ui-kit/flutter/v4/:slug*" + }, + { + "source": "/ui-kit/react-native/5.0/:slug*", + "destination": "/ui-kit/react-native/:slug*" + }, + { + "source": "/ui-kit/react-native/4.0/:slug*", + "destination": "/ui-kit/react-native/v4/:slug*" + }, + { + "source": "/ai-chatbots/non-ai-bots", + "destination": "/ai-chatbots/custom-agents" + }, + { + "source": "/widget/wordpress-buddypress", + "destination": "/widget/legacy/wordpress-buddypress" + }, + { + "source": "/widget/html-bootstrap-jquery", + "destination": "/widget/legacy/html-bootstrap-jquery" + }, + { + "source": "/widget/custom-build", + "destination": "/widget/html/legacy" + }, + { + "source": "/ui-kit/react/builder-integration", + "destination": "/chat-builder/react/integration" + }, + { + "source": "/ui-kit/react/builder-integration-nextjs", + "destination": "/chat-builder/nextjs/integration" + }, + { + "source": "/ui-kit/react/builder-integration-react-router", + "destination": "/chat-builder/react-router/integration" + }, + { + "source": "/ui-kit/react/builder-customisations", + "destination": "/chat-builder/react/builder-customisations" + }, + { + "source": "/ui-kit/react/builder-dir-structure", + "destination": "/chat-builder/react/builder-dir-structure" + }, + { + "source": "/ui-kit/react/builder-settings", + "destination": "/chat-builder/react/builder-settings" + }, + { + "source": "/widget/overview", + "destination": "/widget/html/overview" + }, + { + "source": "/widget/builder-guide-html", + "destination": "/widget/html/integration" + }, + { + "source": "/widget/builder-guide-wordpress", + "destination": "/widget/wordpress/integration" + }, + { + "source": "/widget/builder-guide-squarespace", + "destination": "/widget/squarespace/integration" + }, + { + "source": "/widget/builder-guide-wix", + "destination": "/widget/wix/integration" + }, + { + "source": "/widget/builder-guide-webflow", + "destination": "/widget/webflow/integration" + }, + { + "source": "/widget/legacy/overview", + "destination": "/widget/html/legacy" + }, + { + "source": "/widget/legacy/wordpress-buddypress", + "destination": "/widget/wordpress/legacy" + }, + { + "source": "/widget/legacy/html-bootstrap-jquery", + "destination": "/widget/html/legacy" + }, + { + "source": "/widget/legacy/custom-build", + "destination": "/widget/html/legacy" + }, + { + "source": "/widget/html/legacy/overview", + "destination": "/widget/html/legacy" + }, + { + "source": "/widget/html/legacy/html-bootstrap-jquery", + "destination": "/widget/html/legacy" + }, + { + "source": "/widget/wordpress/legacy/overview", + "destination": "/widget/wordpress/legacy" + }, + { + "source": "/widget/wordpress/legacy/wordpress-buddypress", + "destination": "/widget/wordpress/legacy" + }, + { + "source": "/widget/ai-agents", + "destination": "/ai-agents/chat-widget" + }, + { + "source": "/ai-agents/actions", + "destination": "/ai-agents/mastra-actions" + }, + { + "source": "/ai-agents/tools", + "destination": "/ai-agents/mastra-tools" + }, + { + "source": "/ai-chatbots/overview", + "destination": "/ai-chatbots/ai-bots/overview" + }, + { + "source": "/ai-chatbots/instructions", + "destination": "/ai-chatbots/ai-bots/instructions" + }, + { + "source": "/ai-chatbots/bots", + "destination": "/ai-chatbots/ai-bots/bots" + }, + { + "source": "/sdk/android/setup-calling", + "destination": "/sdk/android/calling-setup" + }, + { + "source": "/sdk/ios/calling-integration", + "destination": "/sdk/ios/calling-setup" + }, + { + "source": "/articles/docker", + "destination": "/on-premise-deployment/docker/overview" + }, + { + "source": "/notifications/push-notification-extension-overview", + "destination": "/notifications/push-notification-extension-legacy" + }, + { + "source": "/notifications/push-notification-extension-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/web-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/android-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/android-connection-service", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/ios-fcm-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/ios-apns-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/flutter-push-notifications", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/react-native-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/capacitor-cordova-ionic-push-notifications", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/mute-functionality", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/token-management", + "destination": "/notifications/push-notifications-extension-legacy" + }, + { + "source": "/notifications/email-notification-extension", + "destination": "/notifications/email-notifications-extension-legacy" + }, + { + "source": "/notifications/sms-notification-extension", + "destination": "/notifications/sms-notifications-extension-legacy" + }, + { + "source": "/notifications/react-native-push-notifications", + "destination": "/notifications/react-native-push-notifications-android" + }, + { + "source": "/sdk/ionic/overview", + "destination": "/sdk/ionic-legacy/overview" + }, + { + "source": "/sdk/ionic/key-concepts", + "destination": "/sdk/ionic-legacy/key-concepts" + }, + { + "source": "/sdk/ionic/message-structure-and-hierarchy", + "destination": "/sdk/ionic-legacy/message-structure-and-hierarchy" + }, + { + "source": "/sdk/ionic/rate-limits", + "destination": "/sdk/ionic-legacy/rate-limits" + }, + { + "source": "/sdk/ionic/setup", + "destination": "/sdk/ionic-legacy/setup" + }, + { + "source": "/sdk/ionic/authentication", + "destination": "/sdk/ionic-legacy/authentication" + }, + { + "source": "/sdk/ionic/login-listeners", + "destination": "/sdk/ionic-legacy/login-listeners" + }, + { + "source": "/sdk/ionic/messaging-overview", + "destination": "/sdk/ionic-legacy/messaging-overview" + }, + { + "source": "/sdk/ionic/send-message", + "destination": "/sdk/ionic-legacy/send-message" + }, + { + "source": "/sdk/ionic/receive-messages", + "destination": "/sdk/ionic-legacy/receive-messages" + }, + { + "source": "/sdk/ionic/additional-message-filtering", + "destination": "/sdk/ionic-legacy/additional-message-filtering" + }, + { + "source": "/sdk/ionic/retrieve-conversations", + "destination": "/sdk/ionic-legacy/retrieve-conversations" + }, + { + "source": "/sdk/ionic/threaded-messages", + "destination": "/sdk/ionic-legacy/threaded-messages" + }, + { + "source": "/sdk/ionic/edit-message", + "destination": "/sdk/ionic-legacy/edit-message" + }, + { + "source": "/sdk/ionic/delete-message", + "destination": "/sdk/ionic-legacy/delete-message" + }, + { + "source": "/sdk/ionic/delete-conversation", + "destination": "/sdk/ionic-legacy/delete-conversation" + }, + { + "source": "/sdk/ionic/typing-indicators", + "destination": "/sdk/ionic-legacy/typing-indicators" + }, + { + "source": "/sdk/ionic/interactive-messages", + "destination": "/sdk/ionic-legacy/interactive-messages" + }, + { + "source": "/sdk/ionic/transient-messages", + "destination": "/sdk/ionic-legacy/transient-messages" + }, + { + "source": "/sdk/ionic/delivery-read-receipts", + "destination": "/sdk/ionic-legacy/delivery-read-receipts" + }, + { + "source": "/sdk/ionic/mentions", + "destination": "/sdk/ionic-legacy/mentions" }, { - "source": "/ai/conversation-starter", - "destination": "/fundamentals/ai-user-copilot/conversation-starter" + "source": "/sdk/ionic/reactions", + "destination": "/sdk/ionic-legacy/reactions" }, { - "source": "/ai/smart-replies", - "destination": "/fundamentals/ai-user-copilot/smart-replies" + "source": "/sdk/ionic/calling-overview", + "destination": "/sdk/ionic-legacy/calling-overview" }, { - "source": "/ai/conversation-summary", - "destination": "/fundamentals/ai-user-copilot/conversation-summary" + "source": "/sdk/ionic/calling-setup", + "destination": "/sdk/ionic-legacy/calling-setup" }, { - "source": "/webhooks/overview", - "destination": "/fundamentals/webhooks-overview" + "source": "/sdk/ionic/default-call", + "destination": "/sdk/ionic-legacy/default-call" }, { - "source": "/webhooks/webhooks-management", - "destination": "/fundamentals/webhooks-management" + "source": "/sdk/ionic/direct-call", + "destination": "/sdk/ionic-legacy/direct-call" }, { - "source": "/webhooks/webhooks-events", - "destination": "/fundamentals/webhooks-events" + "source": "/sdk/ionic/video-view-customisation", + "destination": "/sdk/ionic-legacy/video-view-customisation" }, { - "source": "/webhooks/webhooks-legacy-overview", - "destination": "/fundamentals/webhooks-legacy-overview" + "source": "/sdk/ionic/recording", + "destination": "/sdk/ionic-legacy/recording" }, { - "source": "/webhooks/webhooks-legacy-management", - "destination": "/fundamentals/webhooks-legacy-management" + "source": "/sdk/ionic/presenter-mode", + "destination": "/sdk/ionic-legacy/presenter-mode" }, { - "source": "/webhooks/webhooks-legacy-events", - "destination": "/fundamentals/webhooks-legacy-events" + "source": "/sdk/ionic/users-overview", + "destination": "/sdk/ionic-legacy/users-overview" }, { - "source": "/ai/bots", - "destination": "/ai-chatbots/bots" + "source": "/sdk/ionic/retrieve-users", + "destination": "/sdk/ionic-legacy/retrieve-users" }, { - "source": "/ai/personalities", - "destination": "/ai-chatbots/instructions" + "source": "/sdk/ionic/user-management", + "destination": "/sdk/ionic-legacy/user-management" }, { - "source": "/bots/overview", - "destination": "/ai-chatbots/non-ai-bots" + "source": "/sdk/ionic/block-users", + "destination": "/sdk/ionic-legacy/block-users" }, { - "source": "/extensions/notification-extensions", - "destination": "/fundamentals/notification-extensions" + "source": "/sdk/ionic/user-presence", + "destination": "/sdk/ionic-legacy/user-presence" }, { - "source": "/extensions/message-shortcuts", - "destination": "/fundamentals/message-shortcuts" + "source": "/sdk/ionic/groups-overview", + "destination": "/sdk/ionic-legacy/groups-overview" }, { - "source": "/extensions/avatars", - "destination": "/fundamentals/avatars" + "source": "/sdk/ionic/retrieve-groups", + "destination": "/sdk/ionic-legacy/retrieve-groups" }, { - "source": "/extensions/thumbnail-generation", - "destination": "/fundamentals/thumbnail-generation" + "source": "/sdk/ionic/create-group", + "destination": "/sdk/ionic-legacy/create-group" }, { - "source": "/extensions/link-preview", - "destination": "/fundamentals/link-preview" + "source": "/sdk/ionic/update-group", + "destination": "/sdk/ionic-legacy/update-group" }, { - "source": "/extensions/rich-media-preview", - "destination": "/fundamentals/rich-media-preview" + "source": "/sdk/ionic/join-group", + "destination": "/sdk/ionic-legacy/join-group" }, { - "source": "/extensions/voice-transcription", - "destination": "/fundamentals/voice-transcription" + "source": "/sdk/ionic/leave-group", + "destination": "/sdk/ionic-legacy/leave-group" }, { - "source": "/extensions/pin-message", - "destination": "/fundamentals/pin-message" + "source": "/sdk/ionic/delete-group", + "destination": "/sdk/ionic-legacy/delete-group" }, { - "source": "/extensions/save-message", - "destination": "/fundamentals/save-message" + "source": "/sdk/ionic/retrieve-group-members", + "destination": "/sdk/ionic-legacy/retrieve-group-members" }, { - "source": "/extensions/tinyurl", - "destination": "/fundamentals/tinyurl" + "source": "/sdk/ionic/group-add-members", + "destination": "/sdk/ionic-legacy/group-add-members" }, { - "source": "/extensions/bitly", - "destination": "/fundamentals/bitly" + "source": "/sdk/ionic/group-kick-member", + "destination": "/sdk/ionic-legacy/group-kick-member" }, { - "source": "/extensions/email-replies", - "destination": "/fundamentals/email-replies" + "source": "/sdk/ionic/group-change-member-scope", + "destination": "/sdk/ionic-legacy/group-change-member-scope" }, { - "source": "/extensions/mentions", - "destination": "/fundamentals/mentions" + "source": "/sdk/ionic/transfer-group-ownership", + "destination": "/sdk/ionic-legacy/transfer-group-ownership" }, { - "source": "/extensions/giphy", - "destination": "/fundamentals/giphy" + "source": "/sdk/ionic/resources-overview", + "destination": "/sdk/ionic-legacy/resources-overview" }, { - "source": "/extensions/tenor", - "destination": "/fundamentals/tenor" + "source": "/sdk/ionic/real-time-listeners", + "destination": "/sdk/ionic-legacy/real-time-listeners" }, { - "source": "/extensions/gfycat", - "destination": "/fundamentals/gfycat" + "source": "/sdk/ionic/upgrading-from-v3-guide", + "destination": "/sdk/ionic-legacy/upgrading-from-v3-guide" }, { - "source": "/extensions/reminders", - "destination": "/fundamentals/reminders" + "source": "/sdk/ionic/advanced", + "destination": "/sdk/ionic-legacy/advanced" }, { - "source": "/extensions/smart-replies", - "destination": "/fundamentals/smart-replies" + "source": "/sdk/ionic/connection-behaviour", + "destination": "/sdk/ionic-legacy/connection-behaviour" }, { - "source": "/extensions/message-translation", - "destination": "/fundamentals/message-translation" + "source": "/sdk/ionic/connection-status", + "destination": "/sdk/ionic-legacy/connection-status" }, { - "source": "/extensions/emojis", - "destination": "/fundamentals/emojis" + "source": "/sdk/ionic/managing-connections-manually", + "destination": "/sdk/ionic-legacy/managing-connections-manually" }, { - "source": "/extensions/polls", - "destination": "/fundamentals/polls" + "source": "/sdk/ionic/extensions-overview", + "destination": "/sdk/ionic-legacy/extensions-overview" }, { - "source": "/extensions/reactions", - "destination": "/fundamentals/reactions" + "source": "/sdk/ionic/webhooks-overview", + "destination": "/sdk/ionic-legacy/webhooks-overview" }, { - "source": "/extensions/stickers-stipop", - "destination": "/fundamentals/stickers-stipop" + "source": "/sdk/ionic/ai-chatbots-overview", + "destination": "/sdk/ionic-legacy/ai-chatbots-overview" }, { - "source": "/extensions/stickers", - "destination": "/fundamentals/stickers" + "source": "/sdk/ionic/ai-user-copilot-overview", + "destination": "/sdk/ionic-legacy/ai-user-copilot-overview" }, { - "source": "/extensions/video-broadcasting", - "destination": "/fundamentals/video-broadcasting" + "source": "/sdk/ionic/changelog", + "destination": "/sdk/ionic-legacy/changelog" }, { - "source": "/extensions/collaborative-whiteboard", - "destination": "/fundamentals/collaborative-whiteboard" + "source": "/sdk/ionic/2.0/overview", + "destination": "/sdk/ionic-legacy/2.0/overview" }, { - "source": "/extensions/collaborative-document", - "destination": "/fundamentals/collaborative-document" + "source": "/sdk/ionic/2.0/key-concepts", + "destination": "/sdk/ionic-legacy/2.0/key-concepts" }, { - "source": "/extensions/chatwoot", - "destination": "/fundamentals/chatwoot" + "source": "/sdk/ionic/2.0/message-structure-and-hierarchy", + "destination": "/sdk/ionic-legacy/2.0/message-structure-and-hierarchy" }, { - "source": "/extensions/intercom", - "destination": "/fundamentals/intercom" + "source": "/sdk/ionic/2.0/rate-limits", + "destination": "/sdk/ionic-legacy/2.0/rate-limits" }, { - "source": "/extensions/moderation-extensions", - "destination": "/fundamentals/moderation-extensions" + "source": "/sdk/ionic/2.0/setup", + "destination": "/sdk/ionic-legacy/2.0/setup" }, { - "source": "/extensions/disappearing-messages", - "destination": "/fundamentals/disappearing-messages" + "source": "/sdk/ionic/2.0/authentication", + "destination": "/sdk/ionic-legacy/2.0/authentication" }, { - "source": "/extensions/end-to-end-encryption", - "destination": "/fundamentals/end-to-end-encryption" + "source": "/sdk/ionic/2.0/authentication-login-listeners", + "destination": "/sdk/ionic-legacy/2.0/authentication-login-listeners" }, { - "source": "/extensions/overview", - "destination": "/fundamentals/extensions-overview" + "source": "/sdk/ionic/2.0/messaging", + "destination": "/sdk/ionic-legacy/2.0/messaging" }, { - "source": "/extensions/web-push-notifications", - "destination": "/notifications/web-push-notifications" + "source": "/sdk/ionic/2.0/messaging-send-message", + "destination": "/sdk/ionic-legacy/2.0/messaging-send-message" }, { - "source": "/extensions/android-push-notifications", - "destination": "/notifications/android-push-notifications" + "source": "/sdk/ionic/2.0/messaging-receive-messages", + "destination": "/sdk/ionic-legacy/2.0/messaging-receive-messages" }, { - "source": "/extensions/android-connection-service", - "destination": "/notifications/android-connection-service" + "source": "/sdk/ionic/2.0/messaging-additional-message-filtering", + "destination": "/sdk/ionic-legacy/2.0/messaging-additional-message-filtering" }, { - "source": "/extensions/ios-fcm-push-notifications", - "destination": "/notifications/ios-fcm-push-notifications" + "source": "/sdk/ionic/2.0/messaging-retrieve-conversations", + "destination": "/sdk/ionic-legacy/2.0/messaging-retrieve-conversations" }, { - "source": "/extensions/ios-apns-push-notifications", - "destination": "/notifications/ios-apns-push-notifications" + "source": "/sdk/ionic/2.0/threaded-messages", + "destination": "/sdk/ionic-legacy/2.0/threaded-messages" }, { - "source": "/extensions/flutter-push-notifications", - "destination": "/notifications/flutter-push-notifications" + "source": "/sdk/ionic/2.0/messaging-edit-message", + "destination": "/sdk/ionic-legacy/2.0/messaging-edit-message" }, { - "source": "/extensions/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications" + "source": "/sdk/ionic/2.0/messaging-delete-message", + "destination": "/sdk/ionic-legacy/2.0/messaging-delete-message" }, { - "source": "/extensions/capacitor-cordova-ionic-push-notifications", - "destination": "/notifications/capacitor-cordova-ionic-push-notifications" + "source": "/sdk/ionic/2.0/messaging-delete-conversation", + "destination": "/sdk/ionic-legacy/2.0/messaging-delete-conversation" }, { - "source": "/extensions/migration-guide-push-notifications", - "destination": "/notifications/migration-guide-push-notifications" + "source": "/sdk/ionic/2.0/messaging-typing-indicators", + "destination": "/sdk/ionic-legacy/2.0/messaging-typing-indicators" }, { - "source": "/extensions/mute-functionality", - "destination": "/notifications/mute-functionality" + "source": "/sdk/ionic/2.0/messaging-receipts", + "destination": "/sdk/ionic-legacy/2.0/messaging-receipts" }, { - "source": "/extensions/token-management", - "destination": "/notifications/token-management" + "source": "/sdk/ionic/2.0/calling", + "destination": "/sdk/ionic-legacy/2.0/calling" }, { - "source": "/extensions/legacy-push-notifications", - "destination": "/notifications/legacy-push-notifications" + "source": "/sdk/ionic/2.0/calling-default-calling", + "destination": "/sdk/ionic-legacy/2.0/calling-default-calling" }, { - "source": "/extensions/push-notifications-overview", - "destination": "/notifications/push-notification-extension-overview" + "source": "/sdk/ionic/2.0/calling-direct-calling", + "destination": "/sdk/ionic-legacy/2.0/calling-direct-calling" }, { - "source": "/extensions/email-notifications", - "destination": "/notifications/email-notification-extension" + "source": "/sdk/ionic/2.0/users", + "destination": "/sdk/ionic-legacy/2.0/users" }, { - "source": "/extensions/sms-notifications", - "destination": "/notifications/sms-notification-extension" + "source": "/sdk/ionic/2.0/users-retrieve-users", + "destination": "/sdk/ionic-legacy/2.0/users-retrieve-users" }, { - "source": "/extensions/slow-mode", - "destination": "/moderation/slow-mode" + "source": "/sdk/ionic/2.0/users-user-management", + "destination": "/sdk/ionic-legacy/2.0/users-user-management" }, { - "source": "/extensions/xss-filter", - "destination": "/moderation/xss-filter" + "source": "/sdk/ionic/2.0/users-block-users", + "destination": "/sdk/ionic-legacy/2.0/users-block-users" }, { - "source": "/extensions/report-user", - "destination": "/moderation/report-user" + "source": "/sdk/ionic/2.0/user-presence", + "destination": "/sdk/ionic-legacy/2.0/user-presence" }, { - "source": "/extensions/report-message", - "destination": "/moderation/report-message" + "source": "/sdk/ionic/2.0/groups", + "destination": "/sdk/ionic-legacy/2.0/groups" }, { - "source": "/extensions/data-masking-filter", - "destination": "/moderation/data-masking-filter" + "source": "/sdk/ionic/2.0/groups-retrieve-groups", + "destination": "/sdk/ionic-legacy/2.0/groups-retrieve-groups" }, { - "source": "/extensions/profanity-filter", - "destination": "/moderation/profanity-filter" + "source": "/sdk/ionic/2.0/groups-create-group", + "destination": "/sdk/ionic-legacy/2.0/groups-create-group" }, { - "source": "/extensions/image-moderation", - "destination": "/moderation/image-moderation" + "source": "/sdk/ionic/2.0/groups-update-group", + "destination": "/sdk/ionic-legacy/2.0/groups-update-group" }, { - "source": "/extensions/sentiment-analysis", - "destination": "/moderation/sentiment-analysis" + "source": "/sdk/ionic/2.0/groups-join-group", + "destination": "/sdk/ionic-legacy/2.0/groups-join-group" }, { - "source": "/extensions/in-flight-message-moderation", - "destination": "/moderation/in-flight-message-moderation" + "source": "/sdk/ionic/2.0/groups-leave-group", + "destination": "/sdk/ionic-legacy/2.0/groups-leave-group" }, { - "source": "/extensions/virus-malware-scanner", - "destination": "/moderation/virus-malware-scanner" + "source": "/sdk/ionic/2.0/groups-delete-group", + "destination": "/sdk/ionic-legacy/2.0/groups-delete-group" }, { - "source": "/ui-kit/react/v6", - "destination": "/ui-kit/react" + "source": "/sdk/ionic/2.0/groups-retrieve-group-members", + "destination": "/sdk/ionic-legacy/2.0/groups-retrieve-group-members" }, { - "source": "/ui-kit/react/v6/:slug*", - "destination": "/ui-kit/react/:slug*" + "source": "/sdk/ionic/2.0/groups-add-members-to-group", + "destination": "/sdk/ionic-legacy/2.0/groups-add-members-to-group" }, { - "source": "/ui-kit/react/6.0", - "destination": "/ui-kit/react" + "source": "/sdk/ionic/2.0/groups-kick-ban-members", + "destination": "/sdk/ionic-legacy/2.0/groups-kick-ban-members" }, { - "source": "/ui-kit/react/6.0/:slug*", - "destination": "/ui-kit/react/:slug*" + "source": "/sdk/ionic/2.0/groups-change-member-scope", + "destination": "/sdk/ionic-legacy/2.0/groups-change-member-scope" }, { - "source": "/ui-kit/react/v6/integration/next-js", - "destination": "/ui-kit/react/next-js-integration" + "source": "/sdk/ionic/2.0/groups-transfer-group-ownership", + "destination": "/sdk/ionic-legacy/2.0/groups-transfer-group-ownership" }, { - "source": "/ui-kit/react", - "destination": "/ui-kit/react/overview" + "source": "/sdk/ionic/2.0/resources", + "destination": "/sdk/ionic-legacy/2.0/resources" }, { - "source": "/ui-kit/react/5.0", - "destination": "/ui-kit/react/v5" + "source": "/sdk/ionic/2.0/resources-all-real-time-listeners", + "destination": "/sdk/ionic-legacy/2.0/resources-all-real-time-listeners" }, { - "source": "/ui-kit/react/5.0/:slug*", - "destination": "/ui-kit/react/v5/:slug*" + "source": "/sdk/ionic/2.0/resources-upgrading-from-v1", + "destination": "/sdk/ionic-legacy/2.0/resources-upgrading-from-v1" }, { - "source": "/ui-kit/react/4.0", - "destination": "/ui-kit/react/v4" + "source": "/sdk/ionic/2.0/advanced", + "destination": "/sdk/ionic-legacy/2.0/advanced" }, { - "source": "/ui-kit/react/4.0/:slug*", - "destination": "/ui-kit/react/v4/:slug*" + "source": "/sdk/ionic/2.0/advanced-connection-listener", + "destination": "/sdk/ionic-legacy/2.0/advanced-connection-listener" }, { - "source": "/ui-kit/react/3.0", - "destination": "/ui-kit/react/v3" + "source": "/sdk/ionic/2.0/webhooks", + "destination": "/sdk/ionic-legacy/2.0/webhooks" }, { - "source": "/ui-kit/react/3.0/:slug*", - "destination": "/ui-kit/react/v3/:slug*" + "source": "/sdk/ionic/2.0/bots", + "destination": "/sdk/ionic-legacy/2.0/bots" }, { - "source": "/ui-kit/react/2.0", - "destination": "/ui-kit/react/v2" + "source": "/sdk/ionic/3.0/overview", + "destination": "/sdk/ionic-legacy/3.0/overview" }, { - "source": "/ui-kit/react/2.0/:slug*", - "destination": "/ui-kit/react/v2/:slug*" + "source": "/sdk/ionic/3.0/key-concepts", + "destination": "/sdk/ionic-legacy/3.0/key-concepts" }, { - "source": "/ui-kit/ios/v5", - "destination": "/ui-kit/ios" + "source": "/sdk/ionic/3.0/message-structure-and-hierarchy", + "destination": "/sdk/ionic-legacy/3.0/message-structure-and-hierarchy" }, { - "source": "/ui-kit/ios/v5/:slug*", - "destination": "/ui-kit/ios/:slug*" + "source": "/sdk/ionic/3.0/rate-limits", + "destination": "/sdk/ionic-legacy/3.0/rate-limits" }, { - "source": "/ui-kit/ios/5.0", - "destination": "/ui-kit/ios" + "source": "/sdk/ionic/3.0/setup", + "destination": "/sdk/ionic-legacy/3.0/setup" }, { - "source": "/ui-kit/ios/5.0/:slug*", - "destination": "/ui-kit/ios/:slug*" + "source": "/sdk/ionic/3.0/authentication", + "destination": "/sdk/ionic-legacy/3.0/authentication" }, { - "source": "/ui-kit/ios/4.0", - "destination": "/ui-kit/ios/v4" + "source": "/sdk/ionic/3.0/authentication-login-listeners", + "destination": "/sdk/ionic-legacy/3.0/authentication-login-listeners" }, { - "source": "/ui-kit/ios/4.0/:slug*", - "destination": "/ui-kit/ios/v4/:slug*" + "source": "/sdk/ionic/3.0/messaging", + "destination": "/sdk/ionic-legacy/3.0/messaging" }, { - "source": "/ui-kit/ios/3.0", - "destination": "/ui-kit/ios/v3" + "source": "/sdk/ionic/3.0/messaging-send-message", + "destination": "/sdk/ionic-legacy/3.0/messaging-send-message" }, { - "source": "/ui-kit/ios/3.0/:slug*", - "destination": "/ui-kit/ios/v3/:slug*" + "source": "/sdk/ionic/3.0/messaging-receive-messages", + "destination": "/sdk/ionic-legacy/3.0/messaging-receive-messages" }, { - "source": "/ui-kit/ios/2.0", - "destination": "/ui-kit/ios/v2" + "source": "/sdk/ionic/3.0/messaging-additional-message-filtering", + "destination": "/sdk/ionic-legacy/3.0/messaging-additional-message-filtering" }, { - "source": "/ui-kit/ios/2.0/:slug*", - "destination": "/ui-kit/ios/v2/:slug*" + "source": "/sdk/ionic/3.0/messaging-retrieve-conversations", + "destination": "/sdk/ionic-legacy/3.0/messaging-retrieve-conversations" }, { - "source": "/ui-kit/android/v5", - "destination": "/ui-kit/android" + "source": "/sdk/ionic/3.0/threaded-messages", + "destination": "/sdk/ionic-legacy/3.0/threaded-messages" }, { - "source": "/ui-kit/android/v5/:slug*", - "destination": "/ui-kit/android/:slug*" + "source": "/sdk/ionic/3.0/transient-messages", + "destination": "/sdk/ionic-legacy/3.0/transient-messages" }, { - "source": "/ui-kit/android/5.0", - "destination": "/ui-kit/android" + "source": "/sdk/ionic/3.0/messaging-edit-message", + "destination": "/sdk/ionic-legacy/3.0/messaging-edit-message" }, { - "source": "/ui-kit/android/5.0/:slug*", - "destination": "/ui-kit/android/:slug*" + "source": "/sdk/ionic/3.0/messaging-delete-message", + "destination": "/sdk/ionic-legacy/3.0/messaging-delete-message" }, { - "source": "/ui-kit/android/4.0", - "destination": "/ui-kit/android/v4" + "source": "/sdk/ionic/3.0/messaging-delete-conversation", + "destination": "/sdk/ionic-legacy/3.0/messaging-delete-conversation" }, { - "source": "/ui-kit/android/4.0/:slug*", - "destination": "/ui-kit/android/v4/:slug*" + "source": "/sdk/ionic/3.0/messaging-typing-indicators", + "destination": "/sdk/ionic-legacy/3.0/messaging-typing-indicators" }, { - "source": "/ui-kit/android/3.0", - "destination": "/ui-kit/android/v3" + "source": "/sdk/ionic/3.0/messaging-receipts", + "destination": "/sdk/ionic-legacy/3.0/messaging-receipts" }, { - "source": "/ui-kit/android/3.0/:slug*", - "destination": "/ui-kit/android/v3/:slug*" + "source": "/sdk/ionic/3.0/calling", + "destination": "/sdk/ionic-legacy/3.0/calling" }, { - "source": "/ui-kit/android/2.0", - "destination": "/ui-kit/android/v2" + "source": "/sdk/ionic/3.0/calling-default-calling", + "destination": "/sdk/ionic-legacy/3.0/calling-default-calling" }, { - "source": "/ui-kit/android/2.0/:slug*", - "destination": "/ui-kit/android/v2/:slug*" + "source": "/sdk/ionic/3.0/calling-direct-calling", + "destination": "/sdk/ionic-legacy/3.0/calling-direct-calling" }, { - "source": "/ui-kit/flutter/v5", - "destination": "/ui-kit/flutter" + "source": "/sdk/ionic/3.0/calling-recording", + "destination": "/sdk/ionic-legacy/3.0/calling-recording" }, { - "source": "/ui-kit/flutter/v5/:slug*", - "destination": "/ui-kit/flutter/:slug*" + "source": "/sdk/ionic/3.0/calling-v3", + "destination": "/sdk/ionic-legacy/3.0/calling-v3" }, { - "source": "/ui-kit/flutter/5.0", - "destination": "/ui-kit/flutter" + "source": "/sdk/ionic/3.0/v3-setup", + "destination": "/sdk/ionic-legacy/3.0/v3-setup" }, { - "source": "/ui-kit/flutter/5.0/:slug*", - "destination": "/ui-kit/flutter/:slug*" + "source": "/sdk/ionic/3.0/v3-start-call-session", + "destination": "/sdk/ionic-legacy/3.0/v3-start-call-session" }, { - "source": "/ui-kit/flutter/4.0", - "destination": "/ui-kit/flutter/v4" + "source": "/sdk/ionic/3.0/v3-video-view-customisation", + "destination": "/sdk/ionic-legacy/3.0/v3-video-view-customisation" }, { - "source": "/ui-kit/flutter/4.0/:slug*", - "destination": "/ui-kit/flutter/v4/:slug*" + "source": "/sdk/ionic/3.0/v3-calling-recording", + "destination": "/sdk/ionic-legacy/3.0/v3-calling-recording" }, { - "source": "/ui-kit/react-native/5.0/:slug*", - "destination": "/ui-kit/react-native/:slug*" + "source": "/sdk/ionic/3.0/video-view-customisation", + "destination": "/sdk/ionic-legacy/3.0/video-view-customisation" }, { - "source": "/ui-kit/react-native/4.0/:slug*", - "destination": "/ui-kit/react-native/v4/:slug*" + "source": "/sdk/ionic/3.0/users", + "destination": "/sdk/ionic-legacy/3.0/users" }, { - "source": "/ai-chatbots/non-ai-bots", - "destination": "/ai-chatbots/custom-agents" + "source": "/sdk/ionic/3.0/users-retrieve-users", + "destination": "/sdk/ionic-legacy/3.0/users-retrieve-users" }, { - "source": "/widget/wordpress-buddypress", - "destination": "/widget/legacy/wordpress-buddypress" + "source": "/sdk/ionic/3.0/users-user-management", + "destination": "/sdk/ionic-legacy/3.0/users-user-management" }, { - "source": "/widget/html-bootstrap-jquery", - "destination": "/widget/legacy/html-bootstrap-jquery" + "source": "/sdk/ionic/3.0/users-block-users", + "destination": "/sdk/ionic-legacy/3.0/users-block-users" }, { - "source": "/widget/custom-build", - "destination": "/widget/legacy/custom-build" + "source": "/sdk/ionic/3.0/user-presence", + "destination": "/sdk/ionic-legacy/3.0/user-presence" + }, + { + "source": "/sdk/ionic/3.0/groups", + "destination": "/sdk/ionic-legacy/3.0/groups" + }, + { + "source": "/sdk/ionic/3.0/groups-retrieve-groups", + "destination": "/sdk/ionic-legacy/3.0/groups-retrieve-groups" + }, + { + "source": "/sdk/ionic/3.0/groups-create-group", + "destination": "/sdk/ionic-legacy/3.0/groups-create-group" + }, + { + "source": "/sdk/ionic/3.0/groups-update-group", + "destination": "/sdk/ionic-legacy/3.0/groups-update-group" + }, + { + "source": "/sdk/ionic/3.0/groups-join-group", + "destination": "/sdk/ionic-legacy/3.0/groups-join-group" + }, + { + "source": "/sdk/ionic/3.0/groups-leave-group", + "destination": "/sdk/ionic-legacy/3.0/groups-leave-group" + }, + { + "source": "/sdk/ionic/3.0/groups-delete-group", + "destination": "/sdk/ionic-legacy/3.0/groups-delete-group" + }, + { + "source": "/sdk/ionic/3.0/groups-retrieve-group-members", + "destination": "/sdk/ionic-legacy/3.0/groups-retrieve-group-members" + }, + { + "source": "/sdk/ionic/3.0/groups-add-members-to-group", + "destination": "/sdk/ionic-legacy/3.0/groups-add-members-to-group" + }, + { + "source": "/sdk/ionic/3.0/groups-kick-ban-members", + "destination": "/sdk/ionic-legacy/3.0/groups-kick-ban-members" + }, + { + "source": "/sdk/ionic/3.0/groups-change-member-scope", + "destination": "/sdk/ionic-legacy/3.0/groups-change-member-scope" + }, + { + "source": "/sdk/ionic/3.0/groups-transfer-group-ownership", + "destination": "/sdk/ionic-legacy/3.0/groups-transfer-group-ownership" + }, + { + "source": "/sdk/ionic/3.0/resources", + "destination": "/sdk/ionic-legacy/3.0/resources" + }, + { + "source": "/sdk/ionic/3.0/resources-all-real-time-listeners", + "destination": "/sdk/ionic-legacy/3.0/resources-all-real-time-listeners" + }, + { + "source": "/sdk/ionic/3.0/resources-upgrading-from-v2", + "destination": "/sdk/ionic-legacy/3.0/resources-upgrading-from-v2" + }, + { + "source": "/sdk/ionic/3.0/advanced", + "destination": "/sdk/ionic-legacy/3.0/advanced" + }, + { + "source": "/sdk/ionic/3.0/advanced-connection-listener", + "destination": "/sdk/ionic-legacy/3.0/advanced-connection-listener" + }, + { + "source": "/sdk/ionic/3.0/advanced-managing-web-socket-connections-manually", + "destination": "/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually" + }, + { + "source": "/sdk/ionic/3.0/webhooks", + "destination": "/sdk/ionic-legacy/3.0/webhooks" + }, + { + "source": "/sdk/ionic/3.0/bots", + "destination": "/sdk/ionic-legacy/3.0/bots" } ], "integrations": { @@ -5259,7 +7067,7 @@ "metatags": { "charset": "UTF-8", "viewport": "width=device-width, initial-scale=1.0", - "description": "Learn how to integrate, customize, and scale real-time chat using CometChat’s UI Kits, SDKs, and widgets across popular frameworks. Get step-by-step guides, best practices, and implementation details to build production-ready chat experiences.", + "description": "Learn how to integrate, customize, and scale real-time chat using CometChat\u2019s UI Kits, SDKs, and widgets across popular frameworks. Get step-by-step guides, best practices, and implementation details to build production-ready chat experiences.", "language": "en" } }, diff --git a/management-apis.json b/management-apis.json index dc505bc9f..8bf14133e 100644 --- a/management-apis.json +++ b/management-apis.json @@ -4173,7 +4173,7 @@ "data": { "settings": { "appId": "212663ddb7a2a65a", - "customerSupportUid": "superhero2", + "customerSupportUid": "cometchat-uid-2", "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" } @@ -4240,7 +4240,7 @@ "data": { "settings": { "appId": "212663ddb7a2a65a", - "customerSupportUid": "superhero2", + "customerSupportUid": "cometchat-uid-2", "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" } @@ -4298,7 +4298,7 @@ "data": { "settings": { "appId": "212663ddb7a2a65a", - "customerSupportUid": "superhero2", + "customerSupportUid": "cometchat-uid-2", "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" } @@ -5626,14 +5626,14 @@ "allUserMessages": false, "allGroupMessages": false, "senders": [ - "superhero1", - "superhero2" + "cometchat-uid-1", + "cometchat-uid-2" ], "receiverGroups": [ - "supergroup" + "cometchat-guid-1" ], "receiverUsers": [ - "superhero3" + "cometchat-uid-3" ], "allMessages": false } @@ -5702,14 +5702,14 @@ "allUserMessages": false, "allGroupMessages": false, "senders": [ - "superhero1", - "superhero2" + "cometchat-uid-1", + "cometchat-uid-2" ], "receiverGroups": [ - "supergroup" + "cometchat-guid-1" ], "receiverUsers": [ - "superhero3" + "cometchat-uid-3" ], "allMessages": false } @@ -5769,14 +5769,14 @@ "allUserMessages": false, "allGroupMessages": false, "senders": [ - "superhero1", - "superhero2" + "cometchat-uid-1", + "cometchat-uid-2" ], "receiverGroups": [ - "supergroup" + "cometchat-guid-1" ], "receiverUsers": [ - "superhero3" + "cometchat-uid-3" ], "allMessages": false, "appId": "134234d234rf33" @@ -7301,7 +7301,7 @@ "data": { "settings": { "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", - "customerSupportUid": "superhero1", + "customerSupportUid": "cometchat-uid-1", "chatwootInboxId": "12112", "chatwootAccountId": "42113", "appId": "212663ddb7a2b1b", @@ -7371,7 +7371,7 @@ "settings": { "appId": "212663ddb7a2b1b", "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", - "customerSupportUid": "superhero1", + "customerSupportUid": "cometchat-uid-1", "chatwootInboxId": "12123", "chatwootAccountId": "42613", "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxLjY2M2RkYjdhMmE2NmIifQ==" @@ -7433,7 +7433,7 @@ "chatwootInboxId": "12151", "appId": "212663ddb7a2b1b", "chatwootAccessToken": "EgsXaxRZFUy4atPWDjwmyZvYk", - "customerSupportUid": "superhero1", + "customerSupportUid": "cometchat-uid-1", "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxMjY2M2RkYjdhNmQ2NmIifQ==" } } @@ -10822,10 +10822,10 @@ "message": { "id": "65", "muid": "_5zytzmceo", - "conversationId": "superhero1_user_superhero2", - "sender": "superhero1", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", "receiverType": "user", - "receiver": "superhero2", + "receiver": "cometchat-uid-2", "category": "message", "type": "image", "data": { @@ -10846,8 +10846,8 @@ "entities": { "sender": { "entity": { - "uid": "superhero1", - "name": "Iron Man", + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", "status": "offline", "role": "default" @@ -10856,12 +10856,12 @@ }, "receiver": { "entity": { - "uid": "superhero2", - "name": "Captain America", + "uid": "cometchat-uid-2", + "name": "George Alan", "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", "status": "offline", "role": "default", - "conversationId": "superhero1_user_superhero2" + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" }, "entityType": "user" } @@ -13039,7 +13039,7 @@ "customerSupportUid": { "description": "Customer support uid that you have selected", "type": "string", - "default": "superhero2" + "default": "cometchat-uid-2" } }, "type": "object" @@ -14298,8 +14298,8 @@ "type": "string" }, "default": [ - "superhero1", - "superhero2" + "cometchat-uid-1", + "cometchat-uid-2" ] }, "receiverGroups": { @@ -14309,7 +14309,7 @@ "type": "string" }, "default": [ - "supergroup" + "cometchat-guid-1" ] }, "receiverUsers": { @@ -14319,7 +14319,7 @@ "type": "string" }, "default": [ - "superhero3" + "cometchat-uid-3" ] }, "allMessages": { @@ -14546,7 +14546,7 @@ "customerSupportUid": { "description": "Customer support uid that you have selected", "type": "string", - "default": "superhero2" + "default": "cometchat-uid-2" } }, "type": "object" diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 790ee7c35..82a8db049 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -3,7 +3,7 @@ title: "Overview" description: "CometChat REST API documentation for integrating chat functionality into your server-side applications." --- -Welcome to CometChat's REST API documentation! This documentation provides detailed information on the CHAT APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. +Welcome to CometChat's REST API documentation! This documentation provides detailed information on the Chat APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. ## Introduction @@ -13,11 +13,11 @@ With our REST API, you can perform a wide range of operations, including sending This documentation is structured to provide clear instructions and examples for each API endpoint, along with details on request and response formats and authentication methods. Whether you're a seasoned developer or just getting started, our goal is to make the integration process as smooth and straightforward as possible. -We're excited to see what you'll create with our CHAT APIs. Let's build something amazing together! +We're excited to see what you'll create with our Chat APIs. Let's build something amazing together! ## Getting Started -To get started with CometChat's REST API, you'll need to obtain your AppID, API key & region by signing up for an account on CometChat's [dashboard](https://app.cometchat.com/). Once you have those details, you can start integrating CometChat's features into your application. +To get started with CometChat's REST API, you'll need to obtain your App ID, API key & region by signing up for an account on CometChat's [dashboard](https://app.cometchat.com/). Once you have those details, you can start integrating CometChat's features into your application. @@ -51,6 +51,14 @@ _Replace appId, apiKey and region in the curl request._ CometChat provides error codes to help you understand and troubleshoot issues when interacting with the API.\ Each error code is accompanied by a description of its meaning and potential causes. Error codes specific to each API are documented in their respective API reference pages. +For a complete reference of all error codes across the platform, see the [Error Guide](/articles/error-guide). + +## Properties and Constraints + +Understanding the limits and constraints of the API helps you build reliable integrations. This includes maximum field lengths, entity limits, file size restrictions, and more. + +For a full breakdown, see [Properties and Constraints](/articles/properties-and-constraints). + ## Rate limits The Rate Limits provides information about the limits on the number of API calls you can make in a certain period.\ diff --git a/rest-api/conversations/delete-conversation.mdx b/rest-api/conversations/delete-conversation.mdx index da98aff83..1757cf7aa 100644 --- a/rest-api/conversations/delete-conversation.mdx +++ b/rest-api/conversations/delete-conversation.mdx @@ -16,13 +16,13 @@ Use the type-specific endpoints instead: ```bash # Old (deprecated): -curl -X DELETE "https://appid.api-us.cometchat.io/v3/conversations/user_superhero1_user_superhero2" \ +curl -X DELETE "https://appid.api-us.cometchat.io/v3/conversations/user_cometchat-uid-1_user_cometchat-uid-2" \ -H "apikey: YOUR_API_KEY" # New (recommended) — for a user conversation: -curl -X DELETE "https://appid.api-us.cometchat.io/v3/users/superhero1/conversation" \ +curl -X DELETE "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-1/conversation" \ -H "apikey: YOUR_API_KEY" \ - -H "onBehalfOf: superhero1" + -H "onBehalfOf: cometchat-uid-1" ``` diff --git a/rest-api/conversations/get-conversation.mdx b/rest-api/conversations/get-conversation.mdx index a09d10228..2d5a87e92 100644 --- a/rest-api/conversations/get-conversation.mdx +++ b/rest-api/conversations/get-conversation.mdx @@ -16,13 +16,13 @@ Use the type-specific endpoints instead: ```bash # Old (deprecated): -curl -X GET "https://appid.api-us.cometchat.io/v3/conversations/user_superhero1_user_superhero2" \ +curl -X GET "https://appid.api-us.cometchat.io/v3/conversations/user_cometchat-uid-1_user_cometchat-uid-2" \ -H "apikey: YOUR_API_KEY" # New (recommended) — for a user conversation: -curl -X GET "https://appid.api-us.cometchat.io/v3/users/superhero1/conversation" \ +curl -X GET "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-1/conversation" \ -H "apikey: YOUR_API_KEY" \ - -H "onBehalfOf: superhero1" + -H "onBehalfOf: cometchat-uid-1" ``` From a64e5bca4736846d0d0bc56b7b273f21d5541192 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 10:06:11 +0530 Subject: [PATCH 25/56] added rbac and sbac --- articles/properties-and-constraints.mdx | 32 +- assets/version-aligner.css | 7 + chat-apis.json | 1900 ++++++++++++++--- docs.json | 102 +- images/72e46214-2b1ac60-sample_curl.png | Bin 133229 -> 197074 bytes .../conversations/delete-conversation.mdx | 2 +- rest-api/conversations/get-conversation.mdx | 2 +- rest-api/management-apis/error-codes.mdx | 38 + .../properties-and-constraints.mdx | 24 + rest-api/users/delete.mdx | 33 +- 10 files changed, 1762 insertions(+), 378 deletions(-) create mode 100644 rest-api/management-apis/error-codes.mdx create mode 100644 rest-api/management-apis/properties-and-constraints.mdx diff --git a/articles/properties-and-constraints.mdx b/articles/properties-and-constraints.mdx index e9d939720..c5d1a7aeb 100644 --- a/articles/properties-and-constraints.mdx +++ b/articles/properties-and-constraints.mdx @@ -4,31 +4,14 @@ title: "Properties and Constraints" This page lists the properties and constraints applicable to various CometChat systems. -## Webhooks +## API Keys -| **Property** | **Constraints** | -| ---------------------------------- | ------------------------------------------------ | -| Maximum number of webhooks per app | 25 | -| Webhook URL | Valid URL, max 255 characters | -| Webhook ID | Max 50 characters, alphanumeric only, no spaces | -| Webhook authentication username | Max 50 characters, alphanumeric only, no spaces | -| Webhook authentication password | Max 100 characters, alphanumeric only, no spaces | - -## Management APIs - -| **Property** | **Constraints** | -| ----------------------------------------------- | --------------------------------------------------------------- | -| App name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | -| App version | `v3` only | -| Maximum collaborators per app (team management) | 25 | - -## REST APIs - -| **Property** | **Constraints** | -| ------------------------- | ----------------------------------------------------------------------------------------- | -| Maximum bot users per app | 25 | -| API key name | Max 100 characters, UTF8mb4 (supports all languages and emojis; one emoji = 2 characters) | -| Maximum API keys per app | 25 | +| **Property** | **Constraints** | +| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| API key value | System-generated, 40-character hexadecimal string | +| API key name | Max 100 characters, UTF8mb4 (supports all languages and emojis; one emoji = 2 characters) | +| API key scope | `authOnly` — can only create auth tokens for users. Referred to as "Auth Key" in the dashboard and docs. `fullAccess` — can perform all REST API operations (create/update/delete users, groups, messages, etc.). Referred to as "REST API Key" in the dashboard and docs. | +| Maximum API keys per app | 25 | ## Users and Groups @@ -42,6 +25,7 @@ This page lists the properties and constraints applicable to various CometChat s | Maximum groups per app | No limit | | Maximum unread messages per user | No limit | | Maximum users per app | No limit | +| Maximum bot users per app | 25 | | User/Group ID (`uid`, `guid`) | Max 100 characters, alpha-dash (`a-z`, `0-9`, `-`, `_`), no spaces. Automatically lowercased. | | User/Group name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | | User/Group avatar | Must be a valid URL, max 3,000 characters. Image is not stored by CometChat — URL must remain accessible. | diff --git a/assets/version-aligner.css b/assets/version-aligner.css index 8dd2607be..5e4b62e05 100644 --- a/assets/version-aligner.css +++ b/assets/version-aligner.css @@ -116,3 +116,10 @@ html.cc-version-aligned #sidebar-content [data-version-aligner-button] { font-size: 0.875rem !important; line-height: 1.375rem !important; } + +/* Fix deprecated badge wrapping in sidebar */ +#sidebar-content div.w-\[78px\].h-\[21px\] { + width: auto !important; + white-space: nowrap !important; + padding: 2px 6px !important; +} diff --git a/chat-apis.json b/chat-apis.json index 3b7143570..2239420e8 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -14,7 +14,11 @@ "description": "(Required) App ID" }, "region": { - "enum": ["us", "eu", "in"], + "enum": [ + "us", + "eu", + "in" + ], "default": "us", "description": "Select Region" } @@ -24,7 +28,9 @@ "paths": { "/apikeys": { "post": { - "tags": ["API Keys"], + "tags": [ + "API Keys" + ], "summary": "Create", "description": "Creates a new API key", "operationId": "create-apikey", @@ -32,7 +38,10 @@ "content": { "application/json": { "schema": { - "required": ["name", "scope"], + "required": [ + "name", + "scope" + ], "properties": { "name": { "description": "Friendly name for the API key.", @@ -42,7 +51,10 @@ "description": "Scope for the API key.", "type": "string", "default": "authOnly", - "enum": ["authOnly", "fullAccess"] + "enum": [ + "authOnly", + "fullAccess" + ] } }, "type": "object" @@ -82,7 +94,9 @@ ] }, "get": { - "tags": ["API Keys"], + "tags": [ + "API Keys" + ], "summary": "List", "description": "Lists API keys", "operationId": "list-apikeys", @@ -93,7 +107,10 @@ "description": "Scope of the apikey. Available values: fullAccess, authOnly", "schema": { "type": "string", - "enum": ["fullAccess", "authOnly"] + "enum": [ + "fullAccess", + "authOnly" + ] } }, { @@ -166,7 +183,9 @@ }, "/apikeys/{apiKey}": { "get": { - "tags": ["API Keys"], + "tags": [ + "API Keys" + ], "summary": "Get", "description": "Retrieves API key", "operationId": "get-apikey", @@ -213,7 +232,9 @@ ] }, "put": { - "tags": ["API Keys"], + "tags": [ + "API Keys" + ], "summary": "Update", "description": "Updates an API key", "operationId": "update-apikey", @@ -240,7 +261,10 @@ "scope": { "description": "Scope for the API key.", "type": "string", - "enum": ["authOnly", "fullAccess"] + "enum": [ + "authOnly", + "fullAccess" + ] } }, "type": "object" @@ -280,7 +304,9 @@ ] }, "delete": { - "tags": ["API Keys"], + "tags": [ + "API Keys" + ], "summary": "Delete", "description": "Deletes an API key", "operationId": "delete-apikey", @@ -333,7 +359,9 @@ }, "/users": { "post": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Create", "description": "Creates a new user", "operationId": "creates-user", @@ -341,7 +369,10 @@ "content": { "application/json": { "schema": { - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "Unique identifier of the user. Please refer to https://prodocs.cometchat.com/docs/concepts#uid", @@ -433,7 +464,10 @@ "status": "offline", "role": "manager", "createdAt": 1638354015, - "tags": ["Engineer", "manager"], + "tags": [ + "Engineer", + "manager" + ], "authToken": "cometchat-uid-6_16383540156641d37a023c75d26f4c22a21ff126" } } @@ -448,7 +482,9 @@ ] }, "get": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "List", "description": "Lists all the users of an app", "operationId": "list-users", @@ -469,7 +505,10 @@ "type": "array", "items": { "type": "string", - "enum": ["name", "uid"] + "enum": [ + "name", + "uid" + ] } } }, @@ -479,7 +518,10 @@ "description": "User list can be fetched depending on the user status. (available,offline).", "schema": { "type": "string", - "enum": ["available", "offline"] + "enum": [ + "available", + "offline" + ] } }, { @@ -652,7 +694,9 @@ ] }, "put": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Reactivate", "description": "Reactivates users for the specified UIDs", "operationId": "reactivate-users", @@ -667,7 +711,9 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] } }, "type": "object" @@ -696,7 +742,10 @@ }, "example": { "data": { - "nonDeactivatedUids": ["cometchat-uid-2", "cometchat-uid-3"] + "nonDeactivatedUids": [ + "cometchat-uid-2", + "cometchat-uid-3" + ] } } } @@ -710,7 +759,9 @@ ] }, "delete": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Deactivate", "description": "Deactivates users for the specified UIDs", "operationId": "deactivate-users", @@ -753,7 +804,10 @@ }, "example": { "data": { - "deactivatedUids": ["cometchat-uid-2", "cometchat-uid-3"] + "deactivatedUids": [ + "cometchat-uid-2", + "cometchat-uid-3" + ] } } } @@ -769,7 +823,9 @@ }, "/users/{uid}": { "get": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Get", "description": "Retrieves user details for a specified UID.", "operationId": "get-user", @@ -828,7 +884,9 @@ ] }, "put": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Update", "description": "Updates a user with the provided UID", "operationId": "update-user", @@ -903,16 +961,24 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] }, "unset": { "description": "The unsettable user attributes are avatar, link and metadata.", "type": "array", "items": { "type": "string", - "enum": ["avatar", "link", "metadata"] + "enum": [ + "avatar", + "link", + "metadata" + ] }, - "default": ["avatar"] + "default": [ + "avatar" + ] } }, "type": "object" @@ -947,7 +1013,9 @@ "role": "manager", "createdAt": 1638354015, "updatedAt": 1638354799, - "tags": ["cometchat-guid-1"] + "tags": [ + "cometchat-guid-1" + ] } } } @@ -961,7 +1029,9 @@ ] }, "delete": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Delete", "description": "Deletes a user for the specified UID", "operationId": "delete-user", @@ -1030,7 +1100,9 @@ }, "/groups": { "post": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Create", "description": "Creates a group.", "operationId": "create-group", @@ -1043,7 +1115,11 @@ "content": { "application/json": { "schema": { - "required": ["guid", "name", "type"], + "required": [ + "guid", + "name", + "type" + ], "properties": { "guid": { "description": "A unique identifier for a group.", @@ -1056,7 +1132,11 @@ "type": { "description": "Type of the group. Can be public, password or private.", "type": "string", - "enum": ["public", "password", "private"] + "enum": [ + "public", + "password", + "private" + ] }, "password": { "description": "A password required to join the the group with type password", @@ -1084,7 +1164,9 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] }, "members": { "description": "Add members to a group with scope admins,moderators and participants.", @@ -1157,7 +1239,10 @@ "hasJoined": true, "createdAt": 1638440784, "owner": "cometchat-uid-4", - "tags": ["friends", "project"] + "tags": [ + "friends", + "project" + ] } } } @@ -1171,7 +1256,9 @@ ] }, "get": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "List", "description": "Lists the groups.", "operationId": "list-groups", @@ -1204,7 +1291,11 @@ "description": "Sorts the group list by either Name,Guid or Created at . Available values: name, guid, createdAt", "schema": { "type": "string", - "enum": ["name", "guid", "createdAt"] + "enum": [ + "name", + "guid", + "createdAt" + ] } }, { @@ -1213,7 +1304,10 @@ "description": "Sorts the group list in ascending or descending order. Available values: asc, desc", "schema": { "type": "string", - "enum": ["asc", "desc"] + "enum": [ + "asc", + "desc" + ] } }, { @@ -1231,7 +1325,10 @@ "description": "Determines whether to fetch the groups either before or after createdAt/updatedAt timestamp. Possible values are append(after) and prepend(before).", "schema": { "type": "string", - "enum": ["append", "prepend"] + "enum": [ + "append", + "prepend" + ] } }, { @@ -1269,7 +1366,11 @@ "description": "Fetches groups based on group type(public, protected, password).", "schema": { "type": "string", - "enum": ["public", "private", "password"] + "enum": [ + "public", + "private", + "password" + ] } }, { @@ -1346,7 +1447,10 @@ "hasJoined": true, "createdAt": 1638440784, "owner": "cometchat-uid-4", - "tags": ["friends", "project"] + "tags": [ + "friends", + "project" + ] }, "guid": "project-group", "name": "Project Group", @@ -1360,7 +1464,10 @@ "hasJoined": true, "createdAt": 1638440784, "owner": "cometchat-uid-4", - "tags": ["friends", "project"] + "tags": [ + "friends", + "project" + ] }, "meta": { "pagination": { @@ -1390,7 +1497,9 @@ }, "/groups/{guid}": { "get": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Get", "description": "Retrieves details of a group for a given GUID.", "operationId": "get-group", @@ -1429,7 +1538,10 @@ "hasJoined": true, "createdAt": 1638440784, "owner": "cometchat-uid-4", - "tags": ["friends", "project"] + "tags": [ + "friends", + "project" + ] } } } @@ -1443,7 +1555,9 @@ ] }, "put": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Update", "description": "Updates the group details for a given GUID.", "operationId": "update-group", @@ -1467,7 +1581,11 @@ "type": { "description": "The type of the group. The available values are: public, password and private.", "type": "string", - "enum": ["public", "password", "private"] + "enum": [ + "public", + "password", + "private" + ] }, "password": { "description": "A password required to join the the group with type password", @@ -1495,14 +1613,20 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] }, "unset": { "description": "The unsettable user attributes are icon, description and metadata.", "type": "array", "items": { "type": "string", - "enum": ["icon", "description", "metadata"] + "enum": [ + "icon", + "description", + "metadata" + ] } } }, @@ -1538,7 +1662,10 @@ "hasJoined": true, "createdAt": 1638440784, "owner": "cometchat-uid-4", - "tags": ["friends", "project"] + "tags": [ + "friends", + "project" + ] } } } @@ -1552,7 +1679,9 @@ ] }, "delete": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Delete", "description": "Deletes a group with a given GUID.", "operationId": "delete-group", @@ -1596,7 +1725,9 @@ }, "/messages": { "post": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Send Message", "description": "Sends Message on behalf of a user.", "operationId": "send-message", @@ -1640,7 +1771,9 @@ "data": { "interactionGoal": { "type": "allOf", - "elementIds": ["element8"] + "elementIds": [ + "element8" + ] }, "allowSenderInteraction": true, "interactiveData": { @@ -1707,7 +1840,10 @@ "label": "Lift" } ], - "defaultValue": ["option1", "option2"] + "defaultValue": [ + "option1", + "option2" + ] }, { "elementType": "singleSelect", @@ -1786,7 +1922,9 @@ "category": "interactive", "type": "form", "receiver": "cometchat-uid-1", - "tags": ["tag1"] + "tags": [ + "tag1" + ] } }, "card-interactive": { @@ -1872,7 +2010,9 @@ "category": "interactive", "type": "card", "receiver": "cometchat-uid-1", - "tags": ["tag1"] + "tags": [ + "tag1" + ] } }, "scheduler-interactive": { @@ -2044,7 +2184,9 @@ ] }, "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List Messages", "description": "Fetches the messages list.", "operationId": "list-all-messages", @@ -2082,7 +2224,12 @@ "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", "schema": { "type": "string", - "enum": ["image", "video", "audio", "file"] + "enum": [ + "image", + "video", + "audio", + "file" + ] } }, { @@ -2123,7 +2270,10 @@ "description": "Displays messages based on receiverType (user/group)", "schema": { "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] } }, { @@ -2148,7 +2298,11 @@ "description": "Filters messages by category. Possible values: message, action and custom.", "schema": { "type": "string", - "enum": ["message", "action", "custom"] + "enum": [ + "message", + "action", + "custom" + ] } }, { @@ -2395,7 +2549,9 @@ }, "/messages/{id}": { "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Get Message", "description": "Fetches the details of a message.", "operationId": "get-message-details", @@ -2487,7 +2643,9 @@ ] }, "put": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Update Message", "description": "Edits the message on behalf of a user.", "operationId": "update-message", @@ -2534,7 +2692,9 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] } }, "type": "object" @@ -2630,7 +2790,9 @@ "editedAt": 1641477338, "editedBy": "app_system", "updatedAt": 1641477338, - "tags": ["t6"] + "tags": [ + "t6" + ] }, "entityType": "message" } @@ -2651,7 +2813,9 @@ ] }, "delete": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Delete Message", "description": "Deletes the message.", "operationId": "deletes-message", @@ -2777,7 +2941,9 @@ "editedAt": 1641477338, "editedBy": "app_system", "updatedAt": 1641477338, - "tags": ["t6"] + "tags": [ + "t6" + ] }, "entityType": "message" } @@ -2800,7 +2966,9 @@ }, "/messages/{id}/reactions": { "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List all reactions", "description": "Lists all the reactions for a message", "operationId": "list-all-reactions", @@ -2923,7 +3091,9 @@ }, "/messages/{id}/reactions/{reaction}": { "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List reactions with a specific emoji/unicodes", "description": "List reactions with a specific emoji/unicodes for a message", "operationId": "get-message-reactions", @@ -3032,7 +3202,9 @@ ] }, "post": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Add reaction", "description": "Adds a reaction to a message.", "operationId": "add-message-reactions", @@ -3157,7 +3329,9 @@ ] }, "delete": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Remove reaction", "description": "Removes a reaction from a message", "operationId": "remove-message-reactions", @@ -3279,7 +3453,9 @@ }, "/conversations": { "get": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "List conversations", "description": "Fetching all the conversations", "operationId": "list-all-conversations", @@ -3473,7 +3649,9 @@ "sentAt": 1630305562, "updatedAt": 1630305562, "receipts": { - "data": [[]] + "data": [ + [] + ] } }, "conversationWith": { @@ -3517,7 +3695,9 @@ }, "/conversations/{conversationId}": { "get": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Get conversation", "description": "This API is deprecated please use Get User/Group ConversationAPI", "operationId": "get-conversation", @@ -3613,7 +3793,9 @@ "sentAt": 1630305562, "updatedAt": 1630305562, "receipts": { - "data": [[]] + "data": [ + [] + ] } }, "conversationWith": { @@ -3647,7 +3829,9 @@ ] }, "delete": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Delete Conversation", "description": "This API is deprecated please use Reset User/GroupConversation API", "operationId": "deletes-conversation", @@ -3698,7 +3882,9 @@ }, "/users/{uid}/conversation": { "get": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Get User Conversation", "description": "Getting user conversation", "operationId": "get-user-conversations", @@ -3824,7 +4010,9 @@ ] }, "put": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Update User Conversation", "description": "Updating User Conversation", "operationId": "updates-user-conversation", @@ -3938,7 +4126,9 @@ "sentAt": 1630305562, "updatedAt": 1630305562, "receipts": { - "data": [[]] + "data": [ + [] + ] } }, "conversationWith": { @@ -3971,7 +4161,9 @@ ] }, "delete": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Reset User Conversation", "description": "Resetting User Conversation", "operationId": "resets-user-conversation", @@ -4040,7 +4232,9 @@ }, "/users/{uid}/conversation/delivered": { "post": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark User Conversation As Delivered", "description": "This API will mark the user conversation as delivered.", "operationId": "mark-conversation-as-delivered", @@ -4105,7 +4299,9 @@ }, "/users/{uid}/conversation/read": { "post": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark User Conversation As Read", "description": "This API will mark the user conversation as read.", "operationId": "mark-conversation-as-read", @@ -4168,7 +4364,9 @@ ] }, "delete": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark Conversation Messages As Unread", "description": "Allows you to mark messages within a conversation as unread", "operationId": "mark-conversation-as-unread", @@ -4233,7 +4431,9 @@ }, "/groups/{guid}/conversation": { "get": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Get Group Conversation", "description": "Getting group conversation", "operationId": "get-group-conversations", @@ -4359,7 +4559,9 @@ ] }, "put": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Update Group Conversation", "description": "Updating Group Conversation", "operationId": "updates-group-conversation", @@ -4473,7 +4675,9 @@ "sentAt": 1630305562, "updatedAt": 1630305562, "receipts": { - "data": [[]] + "data": [ + [] + ] } }, "conversationWith": { @@ -4506,7 +4710,9 @@ ] }, "delete": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Reset Group Conversation", "description": "Resetting Group Conversation", "operationId": "resets-group-conversation", @@ -4556,7 +4762,9 @@ }, "/groups/{guid}/conversation/delivered": { "post": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark Group Conversation As Delivered", "description": "This API will mark the group conversation as delivered.", "operationId": "mark-group-conversation-as-delivered", @@ -4621,7 +4829,9 @@ }, "/groups/{guid}/conversation/read": { "post": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark Group Conversation As Read", "description": "This API will mark the group conversation as read.", "operationId": "mark-group-conversation-as-read", @@ -4684,7 +4894,9 @@ ] }, "delete": { - "tags": ["Conversations"], + "tags": [ + "Conversations" + ], "summary": "Mark Group Conversation As Unread", "description": "This API will mark the group conversation as unread.", "operationId": "mark-group-conversation-as-unread", @@ -4740,7 +4952,9 @@ }, "/users/{uid}/auth_tokens": { "post": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "Create", "description": "Creates auth token for a user with the specified UID.", "operationId": "create-authtoken", @@ -4802,7 +5016,9 @@ ] }, "get": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "List", "description": "Lists auth tokens for a user with the specified UID.", "operationId": "list-authtokens", @@ -4887,7 +5103,9 @@ ] }, "delete": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "Flush", "description": "Deletes all the auth tokens for the specified UID.", "operationId": "flush-authtokens", @@ -4940,7 +5158,9 @@ }, "/users/{uid}/auth_tokens/{authToken}": { "get": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "Get", "description": "Retrieves details of an auth token for the specified UID andauth token.", "operationId": "get-authtoken", @@ -4995,7 +5215,9 @@ ] }, "put": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "Update", "description": "Updates the details of an auth token for the specified UID andauth token.", "operationId": "update-authtoken", @@ -5086,7 +5308,9 @@ ] }, "delete": { - "tags": ["Auth Tokens"], + "tags": [ + "Auth Tokens" + ], "summary": "Delete", "description": "Deletes an auth token for the specified UID.", "operationId": "delete-authtoken", @@ -5154,7 +5378,9 @@ }, "/groups/{guid}/members": { "post": { - "tags": ["Group Members"], + "tags": [ + "Group Members" + ], "summary": "Add members", "description": "Adds multiple users as per the scope.", "operationId": "add-group-members", @@ -5269,7 +5495,10 @@ "guid": "project-group", "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", - "tags": ["friends", "project"], + "tags": [ + "friends", + "project" + ], "type": "public", "owner": "cometchat-uid-2", "createdAt": 1625460947, @@ -5327,7 +5556,10 @@ "guid": "project-group", "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", - "tags": ["friends", "project"], + "tags": [ + "friends", + "project" + ], "type": "public", "owner": "cometchat-uid-2", "createdAt": 1625460947, @@ -5385,7 +5617,10 @@ "guid": "project-group", "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", - "tags": ["friends", "project"], + "tags": [ + "friends", + "project" + ], "type": "public", "owner": "cometchat-uid-2", "createdAt": 1625460947, @@ -5441,7 +5676,10 @@ "guid": "project-group", "icon": "https://cometchat.com/120x120&text=image1", "name": "Project Group", - "tags": ["friends", "project"], + "tags": [ + "friends", + "project" + ], "type": "public", "owner": "cometchat-uid-2", "createdAt": 1625460947, @@ -5472,7 +5710,9 @@ ] }, "get": { - "tags": ["Group Members"], + "tags": [ + "Group Members" + ], "summary": "List", "description": "List the members of a group for a given GUID", "operationId": "list-group-members", @@ -5495,7 +5735,10 @@ "description": "Group members list can be fetched depending on the user status. (available,offline).", "schema": { "type": "string", - "enum": ["available", "offline"] + "enum": [ + "available", + "offline" + ] } }, { @@ -5611,7 +5854,9 @@ }, "/groups/{guid}/members/{uid}": { "put": { - "tags": ["Group Members"], + "tags": [ + "Group Members" + ], "summary": "Change Scope", "description": "Change scope of a member to the group for a given GUID and UID", "operationId": "change-group-member-scope", @@ -5688,7 +5933,9 @@ ] }, "delete": { - "tags": ["Group Members"], + "tags": [ + "Group Members" + ], "summary": "Kick", "description": "Removes a member with given UID from a group for a given GUID.", "operationId": "kick-group-member", @@ -5735,7 +5982,9 @@ }, "/groups/{guid}/bannedusers/{uid}": { "post": { - "tags": ["Banned Users"], + "tags": [ + "Banned Users" + ], "summary": "Ban", "description": "Bans a member from a group for a given GUID and UID.", "operationId": "ban-group-user", @@ -5780,7 +6029,9 @@ ] }, "delete": { - "tags": ["Banned Users"], + "tags": [ + "Banned Users" + ], "summary": "Unban", "description": "Unban a member with given UID from a group for a given GUID.", "operationId": "unban-group-user", @@ -5827,7 +6078,9 @@ }, "/groups/{guid}/bannedusers": { "get": { - "tags": ["Banned Users"], + "tags": [ + "Banned Users" + ], "summary": "List", "description": "Lists banned users from a group for a given GUID.", "operationId": "list-banned-group-users", @@ -5949,7 +6202,9 @@ }, "/users/{uid}/friends": { "post": { - "tags": ["Friends"], + "tags": [ + "Friends" + ], "summary": "Add Friends", "description": "The API allows to add multiple friends for a given UID.", "operationId": "add-friend", @@ -6022,7 +6277,9 @@ ] }, "get": { - "tags": ["Friends"], + "tags": [ + "Friends" + ], "summary": "List Friends", "description": "The API allows to fetch friends for a given UID.", "operationId": "list-all-friends", @@ -6144,7 +6401,9 @@ ] }, "delete": { - "tags": ["Friends"], + "tags": [ + "Friends" + ], "summary": "Remove Friends", "description": "The API removes friends for a given UID.", "operationId": "remove-friend", @@ -6203,7 +6462,9 @@ }, "/users/{uid}/blockedusers": { "post": { - "tags": ["Blocked Users"], + "tags": [ + "Blocked Users" + ], "summary": "Block User", "description": "Blocks the specified user", "parameters": [ @@ -6227,7 +6488,9 @@ "content": { "application/json": { "schema": { - "required": ["blockedUids"], + "required": [ + "blockedUids" + ], "properties": { "blockedUids": { "description": "UIDs of the users to be blocked", @@ -6279,7 +6542,9 @@ ] }, "delete": { - "tags": ["Blocked Users"], + "tags": [ + "Blocked Users" + ], "summary": "Unblock User", "description": "Unblocks the specified user", "parameters": [ @@ -6303,7 +6568,9 @@ "content": { "application/json": { "schema": { - "required": ["blockedUids"], + "required": [ + "blockedUids" + ], "properties": { "blockedUids": { "description": "UIDs of the users to be unblock", @@ -6355,7 +6622,9 @@ ] }, "get": { - "tags": ["Blocked Users"], + "tags": [ + "Blocked Users" + ], "summary": "List Blocked Users", "description": "Retrieves the blocked users", "parameters": [ @@ -6483,7 +6752,9 @@ }, "/roles": { "post": { - "tags": ["Roles"], + "tags": [ + "Roles" + ], "summary": "Create", "description": "Creates a new user role", "operationId": "create-role", @@ -6491,7 +6762,10 @@ "content": { "application/json": { "schema": { - "required": ["role", "name"], + "required": [ + "role", + "name" + ], "properties": { "role": { "description": "A unique identifier for the role.", @@ -6561,7 +6835,9 @@ ] }, "get": { - "tags": ["Roles"], + "tags": [ + "Roles" + ], "summary": "List", "description": "Lists the user roles", "operationId": "list-roles", @@ -6648,7 +6924,9 @@ }, "/roles/{role}": { "get": { - "tags": ["Roles"], + "tags": [ + "Roles" + ], "summary": "Get", "description": "Retrieves role details for a given role.", "operationId": "get-role", @@ -6708,7 +6986,9 @@ ] }, "put": { - "tags": ["Roles"], + "tags": [ + "Roles" + ], "summary": "Update", "description": "Updates a given role.", "operationId": "update-role", @@ -6756,7 +7036,11 @@ "type": "array", "items": { "type": "string", - "enum": ["settings", "description", "metadata"] + "enum": [ + "settings", + "description", + "metadata" + ] }, "default": [] }, @@ -6810,7 +7094,9 @@ ] }, "delete": { - "tags": ["Roles"], + "tags": [ + "Roles" + ], "summary": "Delete", "description": "Deletes a role.", "operationId": "delete-role", @@ -6863,7 +7149,9 @@ }, "/roles/{role}/restrictedfeatures": { "post": { - "tags": ["Restrict Features"], + "tags": [ + "Restrict Features" + ], "summary": "Restrict Features", "description": "Restrict Features for a given role.", "operationId": "restrict-features", @@ -6888,7 +7176,9 @@ "content": { "application/json": { "schema": { - "required": ["featuresToRestrict"], + "required": [ + "featuresToRestrict" + ], "properties": { "featuresToRestrict": { "description": "Keys of the features to be restricted.", @@ -6941,7 +7231,9 @@ ] }, "get": { - "tags": ["Restrict Features"], + "tags": [ + "Restrict Features" + ], "summary": "List Restricted Features", "description": "List all restricted features for a given role.", "operationId": "get-restrictedfeatures", @@ -7036,7 +7328,9 @@ ] }, "delete": { - "tags": ["Restrict Features"], + "tags": [ + "Restrict Features" + ], "summary": "Allow Features", "description": "Allow features access for a given role.", "operationId": "allow-features", @@ -7113,7 +7407,9 @@ }, "/messages/{id}/thread": { "post": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Send Threaded Message", "description": "Sends Threaded Message on behalf of a user.", "operationId": "send-thread-message", @@ -7149,19 +7445,31 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories are message and custom.", "type": "string", "default": "message", - "enum": ["message", "custom"] + "enum": [ + "message", + "custom" + ] }, "type": { "description": "Type of the message. The available values are text, image, file, audio, video.", "type": "string", "default": "text", - "enum": ["text", "image", "file", "audio", "video"] + "enum": [ + "text", + "image", + "file", + "audio", + "video" + ] }, "data": { "description": "JSON containing message attributes.", @@ -7178,8 +7486,13 @@ "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", "type": "object", "default": { - "uids": ["uid1", "uid2"], - "guids": ["guid1"] + "uids": [ + "uid1", + "uid2" + ], + "guids": [ + "guid1" + ] } }, "tags": { @@ -7188,7 +7501,9 @@ "items": { "type": "string" }, - "default": ["tag1"] + "default": [ + "tag1" + ] } }, "type": "object" @@ -7278,7 +7593,9 @@ ] }, "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List Threaded Messages", "description": "Fetches the messages list of a thread.", "operationId": "list-all-thread-messages", @@ -7422,7 +7739,9 @@ }, "/users/{uid}/messages": { "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List User Messages", "description": "Fetches messages between onBehalfOfuid and an uid from path param.", "operationId": "user-list-user-messages", @@ -7455,7 +7774,12 @@ "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", "schema": { "type": "string", - "enum": ["image", "video", "audio", "file"] + "enum": [ + "image", + "video", + "audio", + "file" + ] } }, { @@ -7520,7 +7844,10 @@ "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", "schema": { "type": "string", - "enum": ["append", "prepend"] + "enum": [ + "append", + "prepend" + ] } }, { @@ -7883,7 +8210,9 @@ }, "/groups/{guid}/messages": { "get": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "List Group Messages", "description": "Fetches the group message list for a user.", "operationId": "user-list-group-messages", @@ -7916,7 +8245,12 @@ "description": "Displays messages according to the type of attachment. Supported types include: image, video, audio, and file.", "schema": { "type": "string", - "enum": ["image", "video", "audio", "file"] + "enum": [ + "image", + "video", + "audio", + "file" + ] } }, { @@ -7989,7 +8323,10 @@ "description": "Determines whether to pull the messages either before or after any message id. Possible values are append(after) and prepend(before).", "schema": { "type": "string", - "enum": ["append", "prepend"] + "enum": [ + "append", + "prepend" + ] } }, { @@ -8210,7 +8547,9 @@ }, "/bots/{uid}/messages": { "post": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Send Bot Message", "description": "Sends Message from a Bot.", "operationId": "sends-bot-message", @@ -8266,7 +8605,9 @@ "data": { "interactionGoal": { "type": "allOf", - "elementIds": ["element8"] + "elementIds": [ + "element8" + ] }, "allowSenderInteraction": true, "interactiveData": { @@ -8333,7 +8674,10 @@ "label": "Lift" } ], - "defaultValue": ["option1", "option2"] + "defaultValue": [ + "option1", + "option2" + ] }, { "elementType": "singleSelect", @@ -8395,7 +8739,9 @@ "category": "interactive", "type": "form", "receiver": "cometchat-uid-1", - "tags": ["tag1"] + "tags": [ + "tag1" + ] } }, "card-interactive": { @@ -8481,7 +8827,9 @@ "category": "interactive", "type": "card", "receiver": "cometchat-uid-1", - "tags": ["tag1"] + "tags": [ + "tag1" + ] } }, "scheduler-interactive": { @@ -8655,7 +9003,9 @@ }, "/notifications/v1/settings": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List Settings", "description": "List preferences, templates and sounds for the given app.", "operationId": "notifications-push-list-settings", @@ -8911,7 +9261,9 @@ ] }, "patch": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Settings", "description": "Update preferences, templates and sounds for the given app.", "operationId": "notifications-push-update-settings", @@ -8954,7 +9306,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Reset Settings", "description": "Reset preferences, templates and sounds to default values for the given app.", "operationId": "notifications-push-reset-settings", @@ -8990,7 +9344,9 @@ }, "/notifications/push/v1/providers/fcm": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List FCM Providers", "description": "List the configured FCM providers for the given app.", "operationId": "notifications-push-list-fcm-providers", @@ -9027,7 +9383,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Add FCM Provider", "description": "Add new FCM provider for the given app.", "operationId": "notifications-push-add-fcm-provider", @@ -9073,7 +9431,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update FCM Provider", "description": "Update existing FCM provider for the given app.", "operationId": "notifications-push-update-fcm-provider", @@ -9133,7 +9493,9 @@ }, "/notifications/push/v1/providers/fcm/{providerId}": { "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete FCM Provider", "description": "Delete an FCM provider for the given app.", "operationId": "notifications-push-delete-fcm-provider", @@ -9177,7 +9539,9 @@ }, "/notifications/push/v1/providers/fcm/default/{providerId}": { "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Change default FCM Provider", "description": "Change the default FCM provider for the given app.", "operationId": "notifications-push-default-fcm-provider", @@ -9221,7 +9585,9 @@ }, "/notifications/push/v1/providers/apns": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List APNS Providers", "description": "List the configured APNS providers for the given app.", "operationId": "notifications-push-list-apns-providers", @@ -9252,7 +9618,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update APNS Providers", "description": "Update existing APNS provider for the given app.", "operationId": "notifications-push-update-apns-provider", @@ -9304,7 +9672,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Add APNS Provider", "description": "Add new APNS provider for the given app.", "operationId": "notifications-push-add-apns-provider", @@ -9346,7 +9716,9 @@ }, "/notifications/push/v1/providers/apns/{providerId}": { "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete APNS Providers", "description": "Delete an APNS provider for the given app.", "operationId": "notifications-push-delete-apns-provider", @@ -9384,7 +9756,9 @@ }, "/notifications/push/v1/providers/apns/default/{providerId}": { "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Change default APNS Provider", "description": "Change the default APNS provider for the given app.", "operationId": "notifications-push-default-apns-provider", @@ -9422,7 +9796,9 @@ }, "/notifications/v1/preferences": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List Preferences", "description": "List the configured preferences for the given user.", "operationId": "notifications-push-list-preferences", @@ -9624,7 +10000,9 @@ ] }, "patch": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Preferences", "description": "Update the preference for the given user.", "operationId": "notifications-push-update-preferences", @@ -9835,7 +10213,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Reset Preferences", "description": "Reset the preferences for the given user.", "operationId": "notifications-push-reset-preferences", @@ -9936,7 +10316,9 @@ }, "/notifications/push/v1/tokens": { "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Register push token", "description": "Register a push token for the given auth token.", "operationId": "notifications-push-register-token", @@ -9982,7 +10364,9 @@ ] }, "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List push tokens", "description": "List push tokens for the given auth token.", "operationId": "notifications-push-list-tokens", @@ -10049,7 +10433,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Unregister push tokens for authToken", "description": "Unregister push token(s) registered for the given auth token.", "operationId": "notifications-push-unregister-tokens", @@ -10118,7 +10504,9 @@ }, "/notifications/push/v1/tokens/{pushToken}": { "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete the given push token", "description": "Deletes the given push token", "operationId": "notifications-push-delete-token", @@ -10182,7 +10570,9 @@ }, "/notifications/v1/preferences/mute": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "List muted conversations", "description": "List the conversations where notifications have been muted on behalf of the user.", "operationId": "notifications-push-list-muted", @@ -10224,7 +10614,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Mute notifications for conversations", "description": "Mute notifications for the conversations on behalf of the given user.", "operationId": "notifications-push-mute-conversations", @@ -10285,7 +10677,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Unmute notifications for conversations", "description": "Unmute notifications for the conversations on behalf of the given user.", "operationId": "notifications-push-unmute-conversations", @@ -10348,7 +10742,9 @@ }, "/notifications/v1/preferences/timezone": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get timezone", "description": "Get the timezone on behalf of the user.", "operationId": "notifications-get-timezone", @@ -10390,7 +10786,9 @@ ] }, "patch": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update timezone", "description": "Update the timezone on behalf of the user.", "operationId": "notifications-update-timezone", @@ -10451,7 +10849,9 @@ }, "/notifications/v1/contact-details": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get contact details", "description": "Fetches the contact details like Email ID and Phone number for a given user.", "operationId": "notifications-get-contact-details", @@ -10494,7 +10894,9 @@ ] }, "patch": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update contact details", "description": "Updates the contact details like Email ID and Phone number for a given user.", "operationId": "notifications-update-contact-details", @@ -10559,7 +10961,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete contact details", "description": "Deletes the stored contact details for a given user.", "operationId": "notifications-delete-contact-details", @@ -10603,7 +11007,9 @@ }, "/notifications/sms/v1/providers/twilio": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get Twilio credentials", "description": "Fetches the Twilio credentials stored for the app.", "operationId": "notifications-sms-list-twilio-details", @@ -10642,7 +11048,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Save Twilio credentials", "description": "Store the Twilio credentials for the given app.", "operationId": "notifications-sms-save-twilio-details", @@ -10717,7 +11125,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Twilio credentials", "description": "Updates the Twilio credentials for the given app.", "operationId": "notifications-sms-update-twilio-details", @@ -10786,7 +11196,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete Twilio credentials", "description": "Deletes the stored Twilio credentials for the given app.", "operationId": "notifications-sms-delete-twilio-details", @@ -10825,7 +11237,9 @@ }, "/notifications/email/v1/providers/sendgrid": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get SendGrid credentials", "description": "Fetches the SendGrid credentials stored for the app.", "operationId": "notifications-email-list-sendgrid-details", @@ -10866,7 +11280,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Save SendGrid credentials", "description": "Store the SendGrid credentials for the given app.", "operationId": "notifications-email-save-sendgrid-details", @@ -10969,7 +11385,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update SendGrid credentials", "description": "Updates the SendGrid credentials for the given app.", "operationId": "notifications-email-update-sendgrid-details", @@ -11063,7 +11481,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete SendGrid credentials", "description": "Deletes the stored SendGrid credentials for the given app.", "operationId": "notifications-email-delete-sendgrid-details", @@ -11102,7 +11522,9 @@ }, "/notifications/push/v1/providers/custom": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get Custom Provider for Push Notifications", "description": "Fetches the custom provider for Push Notifications for a given app.", "operationId": "notifications-list-push-custom-provider", @@ -11138,7 +11560,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Save Custom Provider for Push Notifications", "description": "Saves the custom provider for Push Notifications for a given app.", "operationId": "notifications-save-push-custom-provider", @@ -11212,7 +11636,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Custom Provider for Push Notifications", "description": "Updates the custom provider for Push Notifications for a given app.", "operationId": "notifications-update-push-custom-provider", @@ -11279,7 +11705,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete the Custom Provider for Push Notifications", "description": "Deletes the custom provider for Push Notifications for a given app.", "operationId": "notifications-delete-push-custom-provider", @@ -11309,7 +11737,9 @@ }, "/notifications/sms/v1/providers/custom": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get Custom Provider for SMS Notifications", "description": "Fetches the custom provider for SMS Notifications for a given app.", "operationId": "notifications-list-sms-custom-provider", @@ -11342,7 +11772,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Save Custom Provider for SMS Notifications", "description": "Saves the custom provider for SMS Notifications for a given app.", "operationId": "notifications-save-sms-custom-provider", @@ -11407,7 +11839,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Custom Provider for SMS Notifications", "description": "Updates the custom provider for SMS Notifications for a given app.", "operationId": "notifications-update-sms-custom-provider", @@ -11449,7 +11883,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete the Custom Provider for SMS Notifications", "description": "Deletes the custom provider for SMS Notifications for a given app.", "operationId": "notifications-delete-sms-custom-provider", @@ -11479,7 +11915,9 @@ }, "/notifications/email/v1/providers/custom": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Get Custom Provider for Email Notifications", "description": "Fetches the custom provider for Email Notifications for a given app.", "operationId": "notifications-list-email-custom-provider", @@ -11512,7 +11950,9 @@ ] }, "post": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Save Custom Provider for Email Notifications", "description": "Saves the custom provider for Email Notifications for a given app.", "operationId": "notifications-save-email-custom-provider", @@ -11569,7 +12009,9 @@ ] }, "put": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Update Custom Provider for Email Notifications", "description": "Updates the custom provider for Email Notifications for a given app.", "operationId": "notifications-update-email-custom-provider", @@ -11611,7 +12053,9 @@ ] }, "delete": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Delete the Custom Provider for Email Notifications", "description": "Deletes the custom provider for Email Notifications for a given app.", "operationId": "notifications-delete-email-custom-provider", @@ -11641,7 +12085,9 @@ }, "/notifications/v1/logs": { "get": { - "tags": ["Notifications"], + "tags": [ + "Notifications" + ], "summary": "Notifications logs", "description": "Paginated API to fetch logs for notifications", "operationId": "notifications-logs", @@ -11691,7 +12137,10 @@ "required": false, "schema": { "type": "string", - "enum": ["message", "interactive"] + "enum": [ + "message", + "interactive" + ] } }, { @@ -11763,7 +12212,10 @@ "required": false, "schema": { "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] } }, { @@ -11791,7 +12243,11 @@ "required": false, "schema": { "type": "string", - "enum": ["push", "email", "sms"] + "enum": [ + "push", + "email", + "sms" + ] } }, { @@ -11801,7 +12257,13 @@ "required": false, "schema": { "type": "string", - "enum": ["fcm", "apns", "sendgrid", "twilio", "custom"] + "enum": [ + "fcm", + "apns", + "sendgrid", + "twilio", + "custom" + ] } }, { @@ -11856,7 +12318,10 @@ "required": false, "schema": { "type": "string", - "enum": ["prepend", "append"] + "enum": [ + "prepend", + "append" + ] } }, { @@ -11963,7 +12428,9 @@ }, "/stats": { "get": { - "tags": ["Metrics"], + "tags": [ + "Metrics" + ], "summary": "Usage Metrics", "description": "Usage metrics of an app.", "operationId": "usage-metrics", @@ -12028,7 +12495,9 @@ }, "/stats/messages": { "get": { - "tags": ["Metrics"], + "tags": [ + "Metrics" + ], "summary": "Message Metrics", "description": "Gives the number of messages sent and receipts received in an interval of five minutes.", "operationId": "message-receipt-metrics", @@ -12079,43 +12548,694 @@ } ] } - } - }, - "components": { - "schemas": { - "APIKeySchema": { - "description": "Response data", - "properties": { - "apiKey": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "createdAt": { - "type": "integer" - } - }, - "type": "object" - }, - "CommonFields": { - "properties": { - "authToken": { - "type": "string", - "example": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d" - }, - "timezone": { - "type": "string", - "example": "Asia/Kolkata" - } - }, - "type": "object" - }, - "CustomEmailProviderConfig": { - "properties": { + }, + "/roles/{role}/permissions": { + "get": { + "tags": [ + "RBAC" + ], + "summary": "List Role Permissions", + "description": "Lists role permissions", + "operationId": "list-role-permissions", + "responses": { + "200": { + "description": "Lists role permissions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "createGroup", + "type": "role", + "title": "Allows/Denies creating groups", + "description": "Allows/Denies creating groups", + "dataType": "string", + "availableValues": [ + "allow", + "deny" + ], + "defaultValue": "allow", + "createdAt": 1765962204, + "updatedAt": 1765962204 + }, + { + "id": "sendMessage", + "type": "role", + "title": "Allows/Denies sending messages", + "description": "Allows/Denies sending messages", + "dataType": "string", + "availableValues": [ + "allow", + "deny" + ], + "defaultValue": "allow", + "createdAt": 1765962204, + "updatedAt": 1765962204 + }, + { + "id": "sendMessage.allowedMessageTypes", + "type": "role", + "title": "Allows sending messages of the specified types", + "description": "Allows sending messages of the specified types", + "dataType": "stringArray", + "availableValues": [ + "text", + "image", + "audio", + "video", + "file" + ], + "createdAt": 1765962204, + "updatedAt": 1765962204, + "defaultValue": [] + } + ], + "meta": { + "pagination": { + "total": 28, + "count": 28, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "name": "role", + "in": "path", + "description": "The role identifier to update permissions for", + "required": true, + "schema": { + "type": "string", + "example": "default" + } + } + ] + }, + "put": { + "tags": [ + "RBAC" + ], + "summary": "Set Role Permissions", + "description": "Sets or updates permissions for a specific role", + "operationId": "set-role-permissions", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "The role identifier to update permissions for", + "required": true, + "schema": { + "type": "string", + "example": "default" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "permissions" + ], + "properties": { + "permissions": { + "description": "Permissions object containing key-value pairs for role permissions", + "type": "object", + "example": { + "createGroup": "allow", + "listUsers.mode": "friends", + "createGroup.allowedGroupTypes": [ + "public" + ] + }, + "additionalProperties": true + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Role permissions updated successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "sendMessage": { + "success": true, + "message": "Permission with id sendMessage have been mapped successfully to role default." + }, + "permissions": { + "listUsers": "allow", + "listUsers.mode": "all", + "listUsers.allowedRoles": [ + "new_role" + ], + "getUserDetails.mode": "friends", + "getUserDetails.allowedRoles": [ + "default" + ], + "sendMessage": "allow", + "sendMessage.mode": "all", + "sendMessage.allowedReceiverTypes": [ + "group" + ], + "sendMessage.allowedReceiverRoles": [ + "new_role", + "default" + ], + "sendMessage.allowedMessageTypes": [ + "file", + "audio", + "video", + "image", + "text" + ], + "sendMessage.allowedMessageCategories": [ + "message", + "custom" + ], + "editMessage": "deny", + "deleteMessage": "deny", + "sendMessage.allowedMimeTypes": [ + "image/png" + ], + "initiateCall": "allow", + "initiateCall.mode": "all", + "initiateCall.allowedReceiverRoles": [ + "new_role" + ], + "createGroup": "allow", + "createGroup.allowedGroupTypes": [ + "private" + ], + "listGroups": "allow", + "listGroups.allowedGroupTypes": [ + "password" + ], + "joinGroup": "allow", + "joinGroup.allowedGroupTypes": [ + "public" + ], + "listMessages.allowedMessageCategories": [ + "message" + ], + "listMessages.allowedMessageTypes": [ + "audio" + ] + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/roles/{role}/permissions/{permission}": { + "delete": { + "tags": [ + "RBAC" + ], + "summary": "Unset Role Permissions", + "description": "Removes a specific permission from a role", + "operationId": "unset-role-permissions", + "parameters": [ + { + "name": "role", + "in": "path", + "description": "The role identifier to remove permission from", + "required": true, + "schema": { + "type": "string", + "example": "default" + } + }, + { + "name": "permission", + "in": "path", + "description": "The permission key to unset (e.g., listUsers.mode, createGroup, etc.)", + "required": true, + "schema": { + "type": "string", + "example": "listUsers.mode" + } + } + ], + "responses": { + "200": { + "description": "Role permission unset successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "permissions": { + "listUsers": "allow", + "listUsers.mode": "all", + "listUsers.allowedRoles": [ + "new_role" + ], + "getUserDetails.mode": "friends", + "getUserDetails.allowedRoles": [ + "default" + ], + "sendMessage": "allow", + "sendMessage.mode": "all", + "sendMessage.allowedReceiverTypes": [ + "group" + ], + "sendMessage.allowedReceiverRoles": [ + "new_role", + "default" + ], + "sendMessage.allowedMessageTypes": [ + "file", + "audio", + "video", + "image", + "text" + ], + "sendMessage.allowedMessageCategories": [ + "message", + "custom" + ], + "editMessage": "deny", + "editMessage.denyForScopes": [], + "deleteMessage": "deny", + "deleteMessage.denyForScopes": [], + "sendMessage.allowedCustomTypes": [], + "sendMessage.allowedMimeTypes": [ + "image/png" + ], + "initiateCall": "allow", + "initiateCall.mode": "all", + "initiateCall.allowedReceiverRoles": [ + "new_role" + ], + "createGroup": "allow", + "createGroup.allowedGroupTypes": [ + "private" + ], + "listGroups": "allow", + "listGroups.allowedGroupTypes": [ + "password" + ], + "joinGroup": "allow", + "joinGroup.allowedGroupTypes": [ + "public" + ], + "listMessages.allowedMessageCategories": [ + "message" + ], + "listMessages.allowedMessageTypes": [ + "audio" + ] + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/scopes/{scope}/permissions": { + "get": { + "tags": [ + "RBAC" + ], + "summary": "List Scope Permissions", + "description": "Lists scope permissions", + "operationId": "list-scope-permissions", + "responses": { + "200": { + "description": "Lists scope permissions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": {} + }, + "meta": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "addReaction", + "type": "scope", + "title": "Allows member to list the members with specified scope", + "description": "Allows member to list the members with specified scope", + "dataType": "string", + "availableValues": [ + "allow", + "deny" + ], + "defaultValue": "allow", + "createdAt": 1765962204, + "updatedAt": 1765962204 + }, + { + "id": "sendMessage", + "type": "scope", + "title": "Allows/Denies sending messages", + "description": "Allows/Denies sending messages", + "dataType": "string", + "availableValues": [ + "allow", + "deny" + ], + "defaultValue": "allow", + "createdAt": 1765962204, + "updatedAt": 1765962204 + }, + { + "id": "initiateCall.allowedType", + "type": "scope", + "title": "Allows members to initiate call with the specified types", + "description": "Allows members to initiate call with the specified types", + "dataType": "stringArray", + "availableValues": [ + "audio", + "video" + ], + "createdAt": 1765962204, + "updatedAt": 1765962204, + "defaultValue": [] + } + ], + "meta": { + "pagination": { + "total": 11, + "count": 11, + "per_page": 100, + "current_page": 1, + "total_pages": 1 + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "name": "guid", + "in": "path", + "description": "The group GUID to update scope permissions for", + "required": true, + "schema": { + "type": "string", + "example": "supergroup" + } + }, + { + "name": "scope", + "in": "path", + "description": "The scope identifier (e.g., admin, moderator, participant)", + "required": true, + "schema": { + "type": "string", + "example": "admin" + } + } + ] + }, + "put": { + "tags": [ + "RBAC" + ], + "summary": "Set Scope Permissions", + "description": "Sets or updates permissions for a specific group scope", + "operationId": "set-scope-permissions", + "parameters": [ + { + "name": "guid", + "in": "path", + "description": "The group GUID to update scope permissions for", + "required": true, + "schema": { + "type": "string", + "example": "supergroup" + } + }, + { + "name": "scope", + "in": "path", + "description": "The scope identifier (e.g., admin, moderator, participant)", + "required": true, + "schema": { + "type": "string", + "example": "admin" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "permissions" + ], + "properties": { + "permissions": { + "description": "Permissions object containing key-value pairs for scope permissions", + "type": "object", + "example": { + "sendMessage": "deny", + "initiateCall": "friends" + }, + "additionalProperties": true + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Scope permissions updated successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "sendMessage": { + "success": true, + "message": "Permission with id sendMessage have been mapped successfully to scope admin on group cometchat-guid-1." + }, + "permissions": { + "sendMessage": "allow", + "listMembers": "allow", + "listMembers.allowedScopes": "participant", + "addReaction": "deny", + "listReactions.allowedScopes": "moderator", + "listReactions": "deny", + "sendThreadedMessage": "allow", + "initiateCall": "deny", + "initiateCall.allowedScopes": "participant", + "initiateCall.allowedType": "audio", + "editMessage": "allow" + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + }, + "/groups/{guid}/scopes/{scope}/permissions/{permission}": { + "delete": { + "tags": [ + "RBAC" + ], + "summary": "Unset Scope Permissions", + "description": "Removes a specific permission from a group scope", + "operationId": "unset-scope-permissions", + "parameters": [ + { + "name": "guid", + "in": "path", + "description": "The group GUID to remove scope permission from", + "required": true, + "schema": { + "type": "string", + "example": "supergroup" + } + }, + { + "name": "scope", + "in": "path", + "description": "The scope identifier (e.g., admin, moderator, participant)", + "required": true, + "schema": { + "type": "string", + "example": "admin" + } + }, + { + "name": "permission", + "in": "path", + "description": "The permission key to unset (e.g., sendMessage, initiateCall, etc.)", + "required": true, + "schema": { + "type": "string", + "example": "sendMessage" + } + } + ], + "responses": { + "200": { + "description": "Scope permission unset successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "permissions": { + "sendMessage": "allow", + "listMembers": "allow", + "listMembers.allowedScopes": "participant", + "addReaction": "deny", + "listReactions.allowedScopes": "moderator", + "listReactions": "deny", + "sendThreadedMessage": "allow", + "initiateCall": "deny", + "initiateCall.allowedScopes": "participant", + "initiateCall.allowedType": "audio", + "editMessage": "allow" + } + } + } + } + } + } + }, + "security": [ + { + "apiKey": [] + } + ] + } + } + }, + "components": { + "schemas": { + "APIKeySchema": { + "description": "Response data", + "properties": { + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "CommonFields": { + "properties": { + "authToken": { + "type": "string", + "example": "cometchat-uid-3_1710141033938cf7e3c67cc44465440d" + }, + "timezone": { + "type": "string", + "example": "Asia/Kolkata" + } + }, + "type": "object" + }, + "CustomEmailProviderConfig": { + "properties": { "isEnabled": { "description": "Use custom provider", "type": "boolean" @@ -12197,7 +13317,11 @@ "messagesSetting": { "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "messagesOverride": { "type": "boolean" @@ -12205,7 +13329,11 @@ "repliesSetting": { "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "repliesOverride": { "type": "boolean" @@ -12213,7 +13341,11 @@ "reactionsSetting": { "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "reactionsOverride": { "type": "boolean" @@ -12221,7 +13353,10 @@ "memberLeftSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberLeftOverride": { "type": "boolean" @@ -12229,7 +13364,10 @@ "memberAddedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberAddedOverride": { "type": "boolean" @@ -12237,7 +13375,10 @@ "memberJoinedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberJoinedOverride": { "type": "boolean" @@ -12245,7 +13386,10 @@ "memberKickedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberKickedOverride": { "type": "boolean" @@ -12253,7 +13397,10 @@ "memberBannedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberBannedOverride": { "type": "boolean" @@ -12261,7 +13408,10 @@ "memberUnbannedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberUnbannedOverride": { "type": "boolean" @@ -12269,7 +13419,10 @@ "memberScopeChangedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberScopeChangedOverride": { "type": "boolean" @@ -12277,12 +13430,18 @@ "messageEditedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "messageDeletedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] } }, "type": "object" @@ -12364,7 +13523,10 @@ "dnd": { "description": "1: Disable DND\n2: Enable DND", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "schedule": { "$ref": "#/components/schemas/Schedule" @@ -12505,43 +13667,64 @@ "initiatedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "ongoingSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "cancelledSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "busySetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "rejectedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "unansweredSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 }, "endedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2], + "enum": [ + 1, + 2 + ], "example": 2 } }, @@ -12602,11 +13785,19 @@ ], "properties": { "interactionGoal": { - "required": ["type", "elementIds"], + "required": [ + "type", + "elementIds" + ], "properties": { "type": { "type": "string", - "enum": ["anyAction", "allOf", "oneOf", "none"] + "enum": [ + "anyAction", + "allOf", + "oneOf", + "none" + ] }, "elementIds": { "type": "array", @@ -12815,7 +14006,11 @@ "usePrivacyTemplate": { "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "textMessageTemplateDefault": { "$ref": "#/components/schemas/Template" @@ -12939,7 +14134,10 @@ "type": "object" }, "TimeRange": { - "required": ["from", "to"], + "required": [ + "from", + "to" + ], "properties": { "from": { "type": "string" @@ -13193,13 +14391,18 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories is custom.", "type": "string", "default": "custom", - "enum": ["custom"] + "enum": [ + "custom" + ] }, "type": { "description": "Type of the message.", @@ -13656,7 +14859,12 @@ "properties": { "type": { "type": "string", - "enum": ["anyOf", "allOf", "oneOf", "none"] + "enum": [ + "anyOf", + "allOf", + "oneOf", + "none" + ] }, "elementIds": { "type": "array", @@ -13760,7 +14968,12 @@ "properties": { "type": { "type": "string", - "enum": ["anyOf", "allOf", "oneOf", "none"] + "enum": [ + "anyOf", + "allOf", + "oneOf", + "none" + ] }, "elementIds": { "type": "array", @@ -13870,19 +15083,29 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories is interactive.", "type": "string", "default": "interactive", - "enum": ["interactive"] + "enum": [ + "interactive" + ] }, "type": { "description": "Type of the message. The available values are card, form and customInteractive.", "type": "string", "default": "card", - "enum": ["card", "form", "customInteractive", "scheduler"] + "enum": [ + "card", + "form", + "customInteractive", + "scheduler" + ] }, "data": { "description": "JSON containing message attributes. Please select the appropriate schema based on the type property.", @@ -13934,7 +15157,9 @@ "data": { "interactionGoal": { "type": "allOf", - "elementIds": ["element8"] + "elementIds": [ + "element8" + ] }, "allowSenderInteraction": true, "interactiveData": { @@ -14001,7 +15226,10 @@ "label": "Lift" } ], - "defaultValue": ["option1", "option2"] + "defaultValue": [ + "option1", + "option2" + ] }, { "elementType": "singleSelect", @@ -14063,7 +15291,9 @@ "category": "interactive", "type": "form", "receiver": "cometchat-uid-1", - "tags": ["tag1"] + "tags": [ + "tag1" + ] } }, "interactiveMessageSchema": { @@ -14109,19 +15339,30 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories are message and custom.", "type": "string", "default": "message", - "enum": ["message"] + "enum": [ + "message" + ] }, "type": { "description": "Type of the message. The available values are text, image, file, audio, video.", "type": "string", "default": "text", - "enum": ["text", "image", "file", "audio", "video"] + "enum": [ + "text", + "image", + "file", + "audio", + "video" + ] }, "data": { "description": "JSON containing message attributes.", @@ -14507,7 +15748,10 @@ "type": { "description": "oneOnOne or group", "type": "string", - "enum": ["oneOnOne", "group"] + "enum": [ + "oneOnOne", + "group" + ] }, "until": { "description": "This is a valid timestamp from the future, E.g: 1710696964705", @@ -14646,7 +15890,11 @@ "messagesSetting": { "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "messagesOverride": { "type": "boolean" @@ -14654,7 +15902,11 @@ "repliesSetting": { "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "repliesOverride": { "type": "boolean" @@ -14662,7 +15914,11 @@ "reactionsSetting": { "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "reactionsOverride": { "type": "boolean" @@ -14670,12 +15926,18 @@ "messageEditedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "messageDeletedSetting": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] } }, "type": "object" @@ -14720,52 +15982,85 @@ "groupMessages": { "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupReplies": { "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupReactions": { "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupMemberLeft": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberAdded": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberJoined": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberKicked": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberBanned": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberUnbanned": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberScopeChanged": { "description": "1: Don't notify\n2: Notify", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] } }, "type": "object" @@ -14775,17 +16070,29 @@ "oneOnOneMessages": { "description": "1: Don't notify\n2: Notify for all messages\n3: Notify for messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "oneOnOneReplies": { "description": "1: Don't notify\n2: Notify for all replies\n3: Notify for replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "oneOnOneReactions": { "description": "1: Don't notify\n2: Notify for reactions received on own messages\n3: Notify for reactions received on all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] } }, "type": "object" @@ -14936,13 +16243,18 @@ "type": { "description": "oneOnOne or group", "type": "string", - "enum": ["oneOnOne", "group"] + "enum": [ + "oneOnOne", + "group" + ] } }, "type": "object" }, "unregisterpnToken": { - "required": ["authToken"], + "required": [ + "authToken" + ], "properties": { "authToken": { "type": "string" @@ -15569,4 +16881,4 @@ "description": "Allows configuring Notifications core." } ] -} +} \ No newline at end of file diff --git a/docs.json b/docs.json index 73e29b8a5..66b7848b8 100644 --- a/docs.json +++ b/docs.json @@ -208,12 +208,10 @@ "pages": [ "/widget/html/overview", "/widget/html/integration", - "/widget/html/advanced", + "/widget/html/advanced", { "group": " ", - "pages": [ - "/widget/html/legacy" - ] + "pages": ["/widget/html/legacy"] } ] }, @@ -225,9 +223,7 @@ "/widget/wordpress/integration", { "group": " ", - "pages": [ - "/widget/wordpress/legacy" - ] + "pages": ["/widget/wordpress/legacy"] } ] }, @@ -542,9 +538,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react/upgrading-from-v5" - ] + "pages": ["ui-kit/react/upgrading-from-v5"] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -987,10 +981,8 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react-native/upgrading-from-v4" - ] - }, + "pages": ["ui-kit/react-native/upgrading-from-v4"] + }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", "ui-kit/react-native/link/changelog" @@ -1302,9 +1294,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/ios/upgrading-from-v4" - ] + "pages": ["ui-kit/ios/upgrading-from-v4"] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1632,9 +1622,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/android/upgrading-from-v4" - ] + "pages": ["ui-kit/android/upgrading-from-v4"] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1945,9 +1933,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/flutter/upgrading-from-v4" - ] + "pages": ["ui-kit/flutter/upgrading-from-v4"] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -4492,6 +4478,18 @@ "rest-api/restrict-features/restrict-features", "rest-api/restrict-features/allow-features" ] + }, + { + "group": "Role Based Access Control", + "pages": [ + "rest-api/rbac-overview", + "rest-api/rbac/list-role-permissions", + "rest-api/rbac/set-role-permissions", + "rest-api/rbac/unset-role-permissions", + "rest-api/rbac/list-scope-permissions", + "rest-api/rbac/set-scope-permissions", + "rest-api/rbac/unset-scope-permissions" + ] } ] }, @@ -4741,9 +4739,16 @@ } ] }, - "articles/error-guide", - "articles/properties-and-constraints", - "rest-api/rate-limits" + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "articles/error-guide", + "articles/properties-and-constraints", + "rest-api/rate-limits" + ] + } ] }, { @@ -4907,6 +4912,7 @@ }, { "group": "Webhooks", + "icon": "webhook", "pages": [ "rest-api/management-apis/webhooks/overview", "rest-api/management-apis/webhooks/list-webhooks", @@ -4918,6 +4924,15 @@ "rest-api/management-apis/webhooks/add-triggers", "rest-api/management-apis/webhooks/remove-triggers" ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/management-apis/error-codes", + "rest-api/management-apis/properties-and-constraints" + ] } ] } @@ -4930,9 +4945,7 @@ "tabs": [ { "tab": "Calling", - "pages": [ - "calls" - ] + "pages": ["calls"] }, { "tab": "Platform", @@ -4953,9 +4966,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/javascript/overview" - ] + "pages": ["calls/javascript/overview"] }, { "group": "Integrations", @@ -5016,9 +5027,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/react-native/overview" - ] + "pages": ["calls/react-native/overview"] }, { "group": "Getting Started", @@ -5070,16 +5079,11 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/ios/overview" - ] + "pages": ["calls/ios/overview"] }, { "group": "Getting Started", - "pages": [ - "calls/ios/setup", - "calls/ios/authentication" - ] + "pages": ["calls/ios/setup", "calls/ios/authentication"] }, { "group": "Call Session", @@ -5124,9 +5128,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/android/overview" - ] + "pages": ["calls/android/overview"] }, { "group": "Getting Started", @@ -5178,9 +5180,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/flutter/overview" - ] + "pages": ["calls/flutter/overview"] }, { "group": "Getting Started", @@ -5527,9 +5527,7 @@ }, { "group": "Reviewed Messages", - "pages": [ - "moderation/apis/list-reviewed-messages" - ] + "pages": ["moderation/apis/list-reviewed-messages"] }, { "group": "Reasons", @@ -6426,7 +6424,7 @@ }, { "source": "/notifications/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications-android" + "destination": "/notifications/react-native-push-notifications-android" }, { "source": "/sdk/ionic/overview", diff --git a/images/72e46214-2b1ac60-sample_curl.png b/images/72e46214-2b1ac60-sample_curl.png index 192c52dbd01071bd0cba7ad4ee08edcc5b1fa3a6..f11ca231d64a85c206cafe3e0c75049047366647 100644 GIT binary patch literal 197074 zcmb5V1ymeav^9)$pmBGH;O+!>NU-4U!QI^*f+n~_aCdhN8k_`oclW>ZW+s{M&8)ZP z?^Sf2uI{d`d(YWt?{jVu_Fh&30Tve)3=9n6t)!>|7#Ora7#QRb5DIj}ZXt0U3=Ce@ zOhn}UTM-fB_x3i%W|l@^V3J|+s?chRUokT@6-WTUKvMEcicm=yV)8&tL3b2U^4H+P zVaz0j^AlpP<`_uTR2(sS`w$0nsP>C#BMe;VBVJ(`X=`EO(bx!sX}0aO zq&XZfdYFJ^xt!-sYAK=l^1f}S<9O}M{^m`Pm^&g<7PRSUK@ZkoUfS+15Nz1?;pTiB zO7QcMvP9mjz{88h1Zwyu1Xzq|=v0us5Mi$bSZC@h1$BNfQR+>4<1MLpSIAy&mR;iB znRjVL-J|c)%DWSxt=0{jkOiQ8OUHJGS-`*T2Jw~%#=to3GHI;Rp@fqoKZqQrCUS}Z z&qzb9vJuigl~0=#_~d=M;~c$2k>M9`0F)Tu&}|A_4mhsnJ-GmlT z=lwk!xs>l+tJnm%b+#yVVn>l8RPF+Zz)*bQAi&|M^kkq}1v!u#ZrCn6eTp;mI-yx& zU_?9ZLU9OV+2+ao=D6Miy+b4cn`9dhP#$7gVCR|QRqteZyNk-Bhz$$nisB$M1k<3q zg%}Oh=Y1?ufzri2C^5{krhF&9C(SgO$uTtiHVbVZ8flC2>ELm7 z_WcwBQm0oIw^Dy{BZ+OV_8Kq#BGT9)l=^YZ%1~*gxY-N6f5q{)7=pfJe}zk`XY_>$ zGWJ9EMRBFiP0!o{G`dp~=c5FBID7&(C5LeOc>F(5HKPdn$Mg#-;nY}X!PL~?W<%@r z2jX2n^zjjD+4a=)A>Mz2bP}&fW^_?We%s_w=Fo5fC;=zd05&78}M|bFPkm z+lO4`it0C|mJm@B!2>pQ61{(Q&24`;g^VjSs!Ws@!^ z2FRLD-b!rr0EJ2@O8|x*&pb?V7t$)SDcI;L`YntWAhFBI7P>rx;S}Q1pEHX{2pLsa z1UnSmAY6?EF%+&_+%uN=HAI+LTrAsbv{+);4}{eKYOz@oj6uXNP;Wx@D~kJndLBbWu8Tqu{K9ds>kh^G0~*h)0|i<|+p ze8+pSR%y>*TX8D}##dF(pj{cClLg7JQSgB}0788hl21$#@1?284k_@-(}Knou+|V_ zB|o5Ag%X~sOH&x5?VzfnHlW_1$)WOuMu&R6M*Zr$DR@pI7JK`}Q-Rrx)r_bp$T4VI z%w0l-EHzGhuxk^&I#5fLf$W4llUSETfc!?0jamhr@g2IDWU`35%y%)f9IYHj`THUb zCA?xJ_KXx6ZE5;~S^05=69wIpqN3yyx8lCSuo=vv_!5HmJQdf1M{UjZ&28MOe9GF{ z?eDyz@84c6>{pnvrLd1?CI}A~l;zBPlbt%AS~g>1OJj4z6^;zTjmN#hRb|teq;{m` z4&jf~kz~vz%Gb@gF;!qIV{c0F9DS7%pEAH^V}5PMT-$FUX0~NkHvOZ-N$4P%Eb>+53^wdz-7S%ObNYz}`q?>6Pd5lJx4%81#^X0S$2xa9A+67+&X;3n%Lh-E zIisQzz1nC*cS#SYUe33U_tllw2*C(p2;BsX2CxQL1bB!n3U3Fe!IK9Dhm<3Lj!>DlO}?IseRmlz~Xp~(K!O;MKV$T>-)fchQzRgSCtLGH2Gg6R0i zXXapRGy+AOi`UMchpqDtb{`w}>^wG>d!c(PqB=h5rDjQ*%6y^Br%~>K4WOe1Ob%t~}Zq`Z}(wex=l+ngX39V=j7^A7^`)dyjh| zQ$Vw~W*$@g=ef7akL`{+_X(Fe;Hs5xPlb0G7l{us??Pw8GK_COln%Ql?0stDui+VH z1cigd2!?8?u2G1w&A4|eT6_(q2{9+Nix1%&M*5Q^QO!8AH>^D$`VVmk6rjzjY8~?D zMj}}~jMl1`>_z#Nmy;?WIq$7tHTyWjp6x5a5F6CZ*nw_)Jv!eQbI@iC4$N0G^!D>Zx z>C61II-&e><9GXulu;tuYMOFYD5c{SgIc4$ga*wZ%?itl6_ti1SC74Gq?NFamO8Qz z5?=96%HL(z$NbafoXL;5Z}=V_QkH^Sq+EP{kbR$0C(!iD@6XLQu9#S!sWUChsrS&` zZyy!_JbzQ$QEM<1aPZj!w-vNoz3ZwC;6w}}GUprN*K+CIA56&om`i>o`IL6Q99$Ya z*1y>wWvD-(k=mLX^}Ktzkzri3J+#q0pqiPLq2_Lol~EKh63b-gOEXtltqkkC14jJ4gE9i2{1ZwPG2SQ=}4+Mn~+eK?_O zmTJ_rm%GsU?v?wX-0}UXzGJHG;x?cY+6rldaM|s(>*adYaQJOM5!%BLei!{u;KA(EbER_?>UQCl6$Lp2G>Kl+A9JR zodOHJ0qh3CkU8Dbak?HWVUqIVd1BpA^Dz=Ursi;e^4_}H#iUZ!?%KW9Wi<)_2Qs>k zfC>zN;aidS@Cabw){q+~px3fSYHy8YWWZ=ZHV_N|jtlk*WPyYJ_`&gh+2Y_-V37ZF z90Cjs0_{)x=coR7#DI1`U;WRXykeFbWaFEO$|-^Npl|$qfNz1GsQ%c4Y;ZlsI4`#W zFfc)|x1vHyuHc91uY9#;ng%+)FR8mkTZYCVlQlvkdNj4<6Sr^dLYa}5-w#kMoGM<;hWETKTZS8RD!DN9o%M`q zJ-wPF{x&zW!0SJHbMGSQ^yQXoYPLfp!C)r*@#>&L>ja2`3MoE}w4C_O+WTTbpO( z>m4tlqo?uA9P|lcd@Jg6o+M{!l%^t5O?*WKG4GVyw|VH#ZztA^(kO=%Hs#|lBGRsoPbC$C(npzA0H5J6RYD&_IkLM&|I#_Lg&df)8$sTbuAh;xE5Q zVWlWH{2*P6^98)>89bQ~A6*yjJZJ9nT zWKWvI#8Eal85i2qOKCjhCL$^vxMTK6c4Faue|QyIS3d_~(Wf7$a)Q3o zJaad3;VgA2HC)@XraKe{@J*?)g#m(TY^P^}cp{`Avd2+?FfU$8&7 z*RbF|b9Na+eA=kZ+5+yyAAHw~bVbf$B-(U#)ERKg=He3!-q=)lg(>J7iL{%-CtU(s zy%71f@B}8UGhM_c59SYvG#3`^`pqx-nM#`LR0smsMpr94hc)d=8qA7WJ&ga8Nxb2(j%?SY zg@y(uY~~`H8l?p3ZA2sctJfO&sfM;RV~=!KBKxRc9wn|b!nMmz%vS&p@#V(+ggi1z z_Q)%>Vz|a#tHY}XT?ujq(lI_-HD*_(CtQ14*FKLjJ-4ko%ZA5gO5@RBFW7Sg>QMxO z5F{=rpsu!K#3!}8_2X;z1$EEUW)9~Ct~_7Sr)>74IuckxVt>H&!8^PnR6n zQtF>KKP+5Pdx>$UaET#dbax;GNH84aPd7XZJqMI-4@h9#K#tnCWv5@%a`cmKIE4{% zsvygJw2I6vHlOW4DURCAL-ll2VS6rP9?*^_0ko(QLqXVy2nxJaGx;(GHS4)!^r@kv zO((VKDwjn`ZeP??ro^4gUyu!^@FqQxIjzsz+|3N%yZ+vBm#@i)OUi&v&WrmP#cL>3 zG|KlTf{i`+S-24XXg4qWtb24(&s5>3JJ#AB_0Jrc5Auo+zn*ZJ^ZqY?G?!mEQtvu{ zk}F$KG*YIBYVT)Oicp_EaLU{=n3%eHE%!q~MmJ>6`wBPISMU(%`k-|5kYpDlHN+w4Evt7kB*Yj$*i>dlUl)TdLvQ4K|b!+BZK|A|O}9jR|| zn0E_anE+p?6At`fVL+-b$;6{+3GKoSVGS?>9HG`WovG0_D0M#GV1w(>5`yWpgd16} zOi*FSVZRxtLv%={fEaFMfN1$qBU#)Ox-H*mvm-A6UIJ5;OQc80AXYz7HlHMIgi@x z(m3)zQ#-Z-gmq$&HO}^)DOU0}Z*sL(t-1v^<6@~%m9)hDNo=BkZj}~kKh$450OnVS zdg_eBwOEeVCe(ZNg_C7a4hjO?=ebS!685XBgj}Ecmo2Up0wp_4d$A034>7H63zd$P zI;IxiZTno}kvEHDS7Zyrvs(REb@HO*Z!(-WzYZxxaX}_}ATCSs&PiCuAxqYB24{MR z_FO4nv{|YaVLIe*xyknS$?HJcDLtc+mfsfi>MqIDG9co;(vw$g4pQl6)P!}&K#fj+ zGHrqoNDSk(oAxI;9#J44gDsy*9;zgy=dAx|!Y38GJA8rnL$lq9%H{^P?5Y40kCN^rf8k^0Ov&X~#{*b#f|w}&p$B_nblDWmBQ?FmSB z_aQ1P5w>~j5i#9ToGNMQU+EtUg?D;7_Sfm8Z5=kyjd5MILd`oiEfDF{5MfoB`j0kfpAjBm{tTRrg;WxL=rNx>L zfIuNb-p5;cvN7(>|FBOreODwKY@Pvvo(w?iR-1VoqxCZntw(bV>lGR$OovbOqt-VK z#_%WlVL6xQlwAD3(j^!mN4C@bVsynf!+I?F$L$`Id^w(s1MllGq0DY z=-!c9e&O`Yl&<%qijg6?VZLx3wA)SoiS{N&H*oJ28SOruKHLnBE0-0(>FY*ZOr=-k zQ$ha5A_<9J)A+WFbOWB#ET%WN^ydTdgK8!B!g5MGf}+q3E_A@7r{xv3>(k@IUZ-Z2 zH&53Q!U-J;H2JsYUcE8>iA1=%#_OgJu}M>DDWGXOur_mxeZTDuQ%I{cXStxi%E==W8C|= zZ?XKuyq+sw@sWNiE~jBvax}s*_|Y^LqaW$cb@TP2s4j!`D7!f^MWbGHD-R0I9xee2 z*?$R00tr}81Wi{|ihHFA>Wr+;^d5}VP<%A@PfY`_3UQn$d;A8xY{|ZBt1R*%sGuR` zES{*WL!zA_ZX*KB81gUtfk9-zxVGZ#G!-ZCj8x#Y(eq8teQJ!l6vw@*B1S%S>m1)% zdASj*=`?@V!WruI5d%aCmQ1al5yd zm$6JpjqOpoI}(U|7$KWvWVw}^oJ{RAIW;BIRu#80F(FjCToX5Lmgk;ILkj*oN`EuP zFY5SZ#3%vOdW}RB%`8)5h2Fe*!(tuyZDB!bX=&*^q%7nqC@V*M@kCr>he;O)!LAM{r@`uuO9*#tI=S1ImST!#;mMPrTABC<>d_2u&J={ zFu*P->@M+|nwlWoOe_0`#l=NBKM%#m00PLX-$M77;{8{{w=8ICa|815)NC#HtF=@io z)G>wduhBH;w((I3VGCFK(Y5%FjgFGF@X2h~*VTRX@)1#PLC_|H{jcX0LeZmLdwle4 zilpas?JaDtd(IyHD#X zD#lemkx)k@Bd5j23W_3`ha`G4ABl3DMuJI|dP4{4f*(oGDZ5Y zaU<>9FhEaB`-w?ILnHJCF-itLW>E{|zwr@V(;w&Cx-%&!K`zZia8#CqrfhHDh=l7XuqKf=>6FeEgRKn!%XAS(XL z$A8I+zZs$2;JMg~^YfB?e0=gmiU`O~BuQR+i3tgDqsBcMo#EV3|1rtD6%stc;pO6z zyt=xYo}1%*eGt`*tVJri>e!Nwi;G*>(BLA886@r2Onh*!3WXkTN}N?x47e>5Jv=nD+1|;{&d$cf zggnZg1=62?o8|w*4)uVbrlwYsmltZ)wbj-pxVpKKuo{y`@&AsRMDJh4XgjUL=?MSd zqBF)9@Y!U`)TRQ@jzrDMaYUul65+q2jd=AZge?gcr>8|h*edr2_LDLIK%o%3lp$VM zS0~SI6h#c_`0Br13mAlmxNpM`dPYXdklg6~gM%CvYtf+9!$V6NDyo=b_L8}uEztkC z9RtqK>$6G5OWtf`r56Ha9>^Zzf4TkR(wWpa;aW+tzZjN3nrj{%4-5BJRZOvc$nhDACij zw$5%bW2~4A=&Pvc15KcUh6Zk_pO=s@&VS9OTrj&TU0#UAB_+{RSSP}jxZ;UnSD`c$ z(KyLCN=j;?Ahb@;&lm2HLHyS#BwkGyw6kM2`taesq9U4;i;G7E_J=Tf#)iR`Zdz^! zjAnyb=5ScJtxfZwlYQ^Cp8r4dDBw3etwh7fm`KVL(G?3@|HwNoTq!XAEkHJmi=91a z=-u$9r}NPdj3T#eqW_8uNmvLn@sBYFAHS@Xl@WK$=N6r05s|B5n3$MEAbfNv%Fgz4 z_we|%9@I(tpA)VEpt`!c@V%?PwUt#~R8&-`qXjJ;6^uM^Hl<3_)We;7W_tQtXQ!Yj zMUd=&4I*N7;JhVAacSx2;08-yyf8glI=U+=Kq|NDc1N(Z^=AVz8fxnJCR;cw-vFxr z>VANbU{grcXYlf}!b;2cz!Aa#{^39GuUIsZt;@F#Y{|QMDc5za<$^{sH=f z*?iS}|6Xu(baZ-V218V8T-l1eZ%Y_>T?){=f#Jv#OHC`a92y+SlC;)1bW0h0^&ije zwPP~hq+f=Ghs4L;)j z(NUgvEFmHZJ$)o7M5tI5 zt^mPar#_af*i!@G;M1&JSsjBxR*fO*-kiQ4q|T!0`ug1}o-3$4IhPnso&!xT+3W;u zru*K>37T9deB*2x%{uUJ83-8}{JOMTGZa+cg@qj7Ql_)8ut*cCa&vQs`m8^}k?Y=I zVqkzork~jn;@KBRn+g#fiDC$E_kT?`s6k*JQp$cE4K>GxoSUH1+yM^6uWwcBimh|- zYosm;KkQ4=q`jBDQ||k$ogs&Fr~Wy`OztzeUIst#(k0@7rA&KTec@f%0&bC;Aw7HP z_qXX+R{R=$J}5qz5fKr6gk5FRGvD`q3~~aP=Q-Rj)kqH97s%BDm2J@C4YSc&K*MW_)SkD_b< zT>===e-d0z446mndd#QP+=}w5>{whpyer36@yVcXn(Q7dk=&-F7&677b7lrQ@~^+u zW(PZa-V<0o*z#S$W^+wI98_#=ZB0|dQ)vX57$Z*7sEJ=DjojP}*DoZUDFC;_hgRo) zNNNBggzF3$3fxc+b()%+xsT~h+)h^f{XLgnIjX8A*7Co7EoFRQ;m`IvreCvwxAPk^ z($m2@=#A6S)0f$8m<4CH(lIhlX$y*g$!@yfZ6p58(SI;EG7WeM@d!h%g~fsNa+UBA z&*ahky-Rmkjp^eVE7=nJy_6nA>avCyo~~~4dzJ1(vx@3!h2!r_i;JaGiKw*oNBibp2K-~16u z0gkD4ad8pYfHO*trn`79;!y?vNZyd6;9-CbVN0hA^AX{nm&^#bZK{xq%L~_KX%v^4$%r*a?P=OjTU!|P|Dr+y0Q*0}RdcLR`Ov4^ z1A2h;6f!W+D9_#$(+@9jffn$4RDTPuNWrjq{kq;;iEW_zYQw z-~!+S9}*`@G9G@@E;bR3NjghaP_sthU(5Yw%HRx`T5VOojiYt*v#G62op)sYAtm2E~o-}F;Vf?CrIaa5u5Ys#4Pg{%`*5EeqRh|f$uFb4`nLsIo#%A z@T5%b1Oc1qYNMxx-v9HVKfYim+DQd9&@FQrh-N%-c^A@)f+9^m0W9@)$FcG>G+LBh zNJJj_lwe>B1`0dA{1GNK035j51EaREM}i-FdXuIlaExR*P_Jc4HZL!QM?ei?I1$+K zd)UO;Ky3PegM))DZ>k9`uoFcs_WXB<;3!-vUnV$zBk4~H12t1YrCEd3k~m1JiB$83 zc8d7Fp@s@GVNMFtL!6nJ(b0_%?A2SSEn-E$>|&78QwdaTb(Wd_Ueu%!#YxgwTN`+I z?Z_-}2y?ixC4%z%{JrepbtaWP6H-@K2=eI`$}^@Q%Kl7fQ%Py7B%kZ>k3jO%7Y7w) zi)0_68>|)xuV%Uk9H&tzm%z^UDY*4Wl60Ag61wX5rcBH*yUZ!|>VcT$IqIk?47oEC zxBDf0Q|oVmpf(G}!_bzzZl;K3hL%kl!}{Mn1S6gW(ms=uhxQfA*VosDBkhfiN#RoA zMk_NdtpfTu@m&+tzpwrm!NWsByo0y4H2u=w-(Of(XzPhX;C+K5e?UY)$>@hv?&0?{ zsxf>81NAa01xoZ5KJIzIMCe&rDV!Ri%u@p*Lg`L7Nt=}q+lEPW0$2Z(pAPG2qwkxD zV<6YD{`QlCy)c!-#+c@BrvIqXMF%9Mq;jh^`iJ<}P`PtVC;q9*1yNBzEs{B+>g8&; z2&UPCh@pLx6*t_UnfcwyE?W}}n^j>p5>_j=DzZPSzuUG>slOGgNhNY=SciQOHFXMm z<&^Mz(W`^mF0GIQPImUM`)8zpot+&;Sy@CUCntFahnh4zZ@<4upw}FJ-QB`NLqj=H zQHbVNR*|~~pcjQ%mA=Ff66mztztzBBs!UQCVu+?OuSv|+GP2cZYg6$ik6M7A80M?N zR}nG2B>{olD@J;v;~u$HbGT~2qYvVihlR?#1>wV%J6DdP#zYIUP|#3jofC3iOJ3*ARjOKY_Jk0B zbLk%wCwPv^r18pTx%N$tPFuCqh3OdC#V0HV75)zZOzlTDr`ZOC@2>4ou;RdN@7A!c zdUcOu*1{%V=cd3}xst(8Ns)=L;pH zhA1%pBCjIPVTArc+#nogMnX=C(}~?l!AH(<(T5xzUK;a%7pifeeXC*1D@vjZcV=;R z2*o#|Gn2n4RUKx(uG}kAzPwT-LfDGY83=DgwnUrlv@FOf^@+!}#PCyoqq%G!3LUXJ zIf+`mFqH=!F|cja|Dhi8tryKCXhEjC;pO-${&JLc7}c9V?N`tV8ldTcmbLXlaufFt z$S$%pe&!P7C-HZ{G3xO=X%YxZk6layTL~+VYQxU^-}3p7LK?JeN>#E-m_22=P|rsS zKY3BJdrLVMA*s6y06>tO&c5==Tb?Z!EEcbmtrTXG>;I%&X*FBwWz;SO1g)!+-|o+L z=Rnp&soa5(QKQ*$er{g{eNL>bsv7btz0CKf{nnHQTNhJBpr^=gIGa(Nn5>2xDI4~qukg4e@ZFU-Im z=(UpkPUU}&00u@Ws_=6O2;*>9S3xK2=G`zgruUB`aWStG@M$4RGIhl9R@87x)~@Wx zXaR6Rsx{EgVQueDuU-Rcc5xZYvq4SWQ0<4H1I*?RLqP6TpPg7fliS0Wk`B%8k6hgD zyEPt|3O&u*`qzQmzYsx;j0?U+*xb~V+}zylLBq<(7)?V%J2EI*0mXg|WP&UvH5DWj?s`1{4fXZG>>zjG zV4!0LZega-`@;333jwar-c@2RR@cEKbn#wly9*No(EZi7XV7)2pX`T{KY*IA zP!SMi>GRQ?{DG_MaRx(@<1yWia&pmW9+e$YjSujR0f=C@En(g-%~%kHVKl!6K#Z&o z0jj5!w6vu8+W4ligE1J#&8G|HKgXw&KkQ+sbY%y2SM}LK6M%6!qb;?PJC+=P1q)*Q zlVQ0?v#w!|_YZRjc$@>-Yl^>rGCPrqhABZ}gYtV1EOj+y1_^jCDjBj_3MEi~Nv{^R zel)FVTrd2+|7dv@A53>}6P#URQ_)-F-XElmt*svw6sLMWk=J#vcy{Q=`H2;zI{{^Q z?Ns#QqI{i@|c8#cSc5A20p9&#bpR5Ve3_fF1c(id>=@-3V0J) zBC10ipTc<6Tofstrt2v|Y18GOqX2`UB5537%c9q8N2-k9F=rj)``Aw;Fy%mEFGL&; z;ApE0Z};BMrHWeZI2eTKV!b9rZ!QPQ4(mpl;o!%zqL7~#j`%gT=H-cP_h|sjL89QI zth^jkWlYw=Xvgx2V4nOkw&NkJ!VcY=$oL>28z1QXQz-kb$q2%91wca9+HK@lVtNe9P%7?SPUv6x z^%En*`rXegn0>dZ2%cm!uw*=fx=6YjCNpcu%^z}FRb2)AO#dqU_d2Tx@6mooF{vPN+5!K@DH^5B=db(P zU2sE9@pqr)W6TZ_&%l6}wT_A&POct2&`j{fzjV(pqZiz72qoSgbH(bGq4fKR+b-P@ z!#L8PG2=K}Kba$y36p2m`=jtdFB?~MSNQbO%mX$;ub{gmYRrtrEvbgxLNjs3Rzf1A z6eAoAj~O=o&}+kDNG+3^a)$4#ZU;tJ03JGeL8A`6O)MS}WOzaszV9UV@YP7v9! zT^v=J@6NukShz?+OJ>=L5Fj7|cDg7#%lTBKP*he-GTid##VM2%1YRC5KwYD)Dh8JS zO$1;7QVC)O;Zqp7mox>|qu5kzcL+Z)m`fL)-N?IWXf+;CSIw*PeUM%T#!66?%#vaL z6g!(qQ=pEl-M3P|bWTgh?0NAe?euD1HEHsI~4>Nj06s=T5|JKH{wuuPU@xNE@ ztVp;?USZYrtiUvAgl+J-=PI*U%!%uH=E4uu^NzLrR8t@;b4Cb7=0PH(>_eAaGTy7zp4WG?6^+F1TLbxQ1xPa%$<0?yKY) z3HD15vaB*K^UH{=zO*xh475)8~^{PAi=XITCp>mX;s#3(_lXRmU1`vVxJ*)s&yoNsO>tulGVR~n9CzqohLgasqF zN_=%q(O`+vx#xI}ybq2<<~3XYEVTCW{Tym~a#qVQ&(F_0Sz3w2^;nmYxTP@+Qn~RZ5dH3de=&oVL7oKAq;@}pYTIfGjoGS&g1xeBk^tP9O4@^rY zS0u%YZT`bnL*CT$viJSwGWm3EQI~@7XI*7UiADET&GwFu;8g-Acv!rQB?R8XXG%=@ z-*nM3w=8sZ#PF7H`$3mTa)LDS06-GsI))a=%8lmMKvdRLmFj3YY0t*yC}pmC8s0Tbtua$bL)v~#0(4pxy5_&IGE2r z{V~0}@{YcugCk!u2exbNHld;5%i9~UmaS-}s?)^V8<&%bj#Y*2d>wu|>g(hCS8 zEF}I-J@=cX26WjJo*TgZX+ZR)BUdaW;(TTTol~1m>>*E@TQ>claDPqf2cj?XPs1YO znQAMdOD&#_Zm|gIq{8m+o{x)l&a1zL$r)j z1)1KsW!a>&jDf46*`gA^=;9B9nIgti_%!|@L+nB6P(SC|$6_UJStl}?BRl=caR|wD z`L^fdcl+^G$`0?o&z$(Ev6%jHOHZbI`g21RIUgC>79dd_ebqad~kNaqb&Q4aJiKBKwDd#(!6)q0F8l%Xg&YzSoy%x=?=v z-s%Ba0ztyXBwP5`QlyBOpf*^D#}iJm#jb7OY8wM@XfYx#9%`|T?o04&TlG5|I1)99 zHD(s$5$xv6N!_p2etzH@m8($uCv&YhZkEWD$tIazm|I&rsm2aVPIC$xDce!_m|YZX zlE3)+52KgaPZZ6ci04{-sLtd-RCnc;gsM&&ts`N|x^CkK$4BXtv;hlWz_()sNmo2UOOC9rF`xnAeovHN^ zh~}5U5=YfZCv6$WtB0EsgQ-}tS)z}8Y8ogt9(zg!#=R*DQgS?AwND)iNcQlT$v=t! zniCnswSNSbaX=N!{B*klO1x(w%${*JVC-MhcX82dQ`fdtG=O5M+hI>ppGG5V1;Z92=Xx z#PyDYSHm+?OB=iXYP6EU=?R0H$-E_xfq zVU;5iaYZ3um?>OWQBjfOPP)t9TyQl1y~&SSGetqxbiM~B_uJTz4@<|#4BUDz0efB0 zCk0Ix+X~j!hzPJ^?Rj}Y{P(AZ&A01PgKMXc3iqC9!9xWGtPhW zHF)Q_GoYhjZ>j(WYCSke4cft$3m>%ZE(szIbiT)LWce0mnFKk=ze|FjJqBWG;Oi9R z$D0is&ZDPcO;0G&{Cf{(b<4JkN-64rjIA2;hHpv7PwOXyb*UF7k1(d zWq|kknrdM>({VOvz!Z|$9+{4aMvXAiSgyDJhX@@+F?5Vr)uV_>FKe^wX+yypNy^x# zLGBtOLyuUMZ`yJ^SyOG4+4zA(_=Vu8&iXFRZgv`N7kUGcBc9!vpZiY%R6oz%!b6-SmDvV$1!9b%Rv)ZDDTI^hIebsBy`?nwDfC$B{Nl^#Z|&3a@nTgN3E@H-?j~MYRJ(9w|dV zT2I`^VDjIY=UFS~835aZi`mGbAoGTw_ZsHp^<05uBIhUwPD(9Q-4`$d5 z^NrOlt>%`Og+lN>sb;1deW1CF$0jZ>r+lXROf58J1ujM$97kv7+-X?0g2(_X_QNul z!x7&4`{PNg>^hzkd6(g?Op}USTc3$w^dIFWjgkxO;|IFW!5@e=6|q&F{`UgCB;rq5 zAz-^Xqm-dt+QG&5)aE$nlkw#wkaFg|h`KY%)A1>-3`9*u`#kQAPmrs{OiHORlO~F0 zBnIEr!&%e|YDE96ZD%Nsh(PubB+2A+#N zasej}&k^3ah$+mZ2;{BI8tyJU%=n;=XL)bK$sxD$Gdp$6Z+ey%$u@M6~frgPc3-g=?* zM9#8w+giy`OG*aUHUAoDA$)(rKN!T0uF%8X3@oY>6r#WMF20 zXm`RYD^!=d>OQ(;t7_ZrA{#~WtFhS8WoYi1?xz8ibR$-YQQyqa1+IPVYeBJ)neBuM zvrH<4h-i)`dca%4s2#F#ahz1GTTu{kfjg4tjiSJalo!i4qzlwz_frFQ_lN@-81eQL zTrlJrB~<%_Xa>g<>*C%5+xN0EBao)m&>!H$e)FiAn&@^EmkF<4yTw{z z{8X&Z(inVggrcRUCb{6!xF~wE*c5Txy1{Ti*YPYCLg0+8?ep{k>*B?r|I*;HM6U(& zoY1(G#H?&@(=XjHjq)uK@z5okY7XH%~hCjhCv4-<;;OEl}NV7H$N8 z)Q?^T-cn|Iif&MToRhe{-7s=oY3o2^$kW`bos!Lt2%4$-F&QYPRwaXUb>rbY)0ZAd z12~y)Qf{`}=AU=J`>ZINtE^kL{spwAE9DuPnvl;oGm6>faZ;B_r`RFOrJsRbt9%bC z3vw;Wo1*xiHWlB=$t8O6UY-(NG0!VI&g@nd|Ks+@x3a_&po+MO7p7s~=n!wW;OL0` z(&$RV{pLZgNE=w+-hDXn@Qv}BcSdPz?dACs|M$Ci>gcv_%TDtZ(keYSj6MnNrRuqJ z7q0<6iXE}u4|lp-vwX$t?eU6xa}P;G-=2nx6Zf917?6rhq%+7C-=(${wBIjzT>9Gv zS;2>d(@QX-YDQ~_(18G-n2r9kzR*(9*n6;!$r|RQF7@kUL0nr7t+~dtk zu1i(hiG0a@VU#;%ssH2L&8>2>#awy*dAR+LDnn?#``wMp!5)US8(+xl0&*#B%FZSS zxhy1sTS@jllt0N3HA;}F+nUKK1Xi?g&TIA#ArIMe-XYy-F3!}i}DcPodaf!>s)6I&F zR?14FGH|(4ACkbia5mF?^7u11Jn4A>At7-6j9pmZZhcXx_{NarApNQ0pCQ13#w?tRYocl^Hm!DnD*p7pG??sfNdJ!*!W zr}12@PVY6Yr>;$>AvnEWWrx0;?;sX6l^dy=|K#B$<+;roD`$uUcRwQD*><+Q?KEL^ zy_)z5i|ic-f#*#JM`!)Y`MNWhr2O9q9>$K)u7hljrJ##2wXBppQi&hhY7yalyo5UE z>Ku7ra)H~*e>URN6X$5I3y&lu#uKUI{bz;xG=&dWcxZS{n`&ER?^N5++gQv#IJTO* z&U%HM+pQ=Kc#IZxD~mJB2WJNzLIc+kGdbBO5@e7gO8+O{C+jOt1$){;crRI_KmZH$ zRFlSmHnKoO?^%$`;9#5>`+i@xvR0tw46%J~jN1nPfE)zcN`SexscqYM-evV@FNEnd zMDXm`-V!I(JRjyUo@)xz-XUm9Dc{R*o_1C4`|gRgU*_uE=@u{@1Sd5!R@bf5_|3_- zjGLB(ld3JEFjybP7|&F{j;8wA>6!$zX}f4*<#@X<(i5~HOXnL|c2G*H40@}3<(i(Y zn{JzTK8z*nIl3hDZ7FEyTdba2JY(%xHKAoAE5$#fU0&{P*PmPf;Q!L{ARA+_o4%pX zlPrf9Q%-5$r4oantaobyPIyjzF+yeOqpNd-?6I=pX=3x&mATzoSLfWkw~VQp%c`xk zkYd|OigphjoWw9SJjD7SvO4udwb+O#h)v)YZ{CN3fKnQhYd{m0pV#f!+dxDZ68wR_ zIt`^wO-YBIjwTXz-0`|7GlIV7hL$37B*HyM@j#aA3ba*{;B?+{)I-+DiI9?Rba;5s z|7+wi*OSq$1p>Fl?pr&Z*`$d`kax<8ed}e#)OgJ5c|5=xx!{+Zeoq)$bwlI_7RI0k zwne>zqz&0cVk<%gzlGICah0|Be@Uj(OG_EGQ9k#l!d_v6;@ayFraFx(qps1*=r&s` zPd*M^P$PF~-_cZ2S2xW|08RcgwvGaij}f<1(+O?*N!X89&W`;_T!if@dqTr_kQ!Qz zNJ3?IIsA81@H1zR4}KtIeJ?>-B{za=PYXJ~FFYWHmM z6C*f?d>D=X?Ksa_8;uK2$7`8&$ZP70gYx(Y9?WZChZnm&J21!AZ;f0L6uSFH{<%1X z_^KF;fjkazuxeS{KOjZA@VM3^(r&75ccE% z>w4+|!h2Y1jzOQ|o{DbysuN2u4AIKE#7vd@6O1M{Ljvg_`xUziYojzn+@o*vOkaYHNv_)R&Y}%Tr&)o?C?L zgM<8bPAbH*$I(p}hb6dv02e+IcN(Tf9=A5*J|n>HeHt&A_zj5%B|i@3!bKJYiT;=7 z{7k_NlFn;%?e1G7TzdxNuOB6Kj>oPsOq52DXdc3?SW8QSZ3I43SZ==>l=K~X z-V&&9-*zqmffDuJo`5cC*BwZC)jNV%wB#_Gx~-`RmBIOeI@>1=&{nJK$Af{HcGow) zs@nHe;NV6<=plsrXp7lzd8i^`9t%yT&$5N~m=!;VR=KuW8*!UdU&`TT)9*_tpAgB) zrnwTp)WU{mL9?5pBUYTFE7g2PageBv^y!8A8(e?8>E&GP5N;}8t&O#^!lkEwPw24o zY}q_a7|J*$F7@z^HTh0sac zYsR=HE3Vi}a+%#I2<7Tam;83xFOU0Kf?;h>%&-eRR@oXob6$$ygexm6uk`Y54i@T? zx-H9BIIfMp!h+C3+}F5Y2F%hGHzb^H^7QQ1Joa2lamM)S)%s4(R-v8M=oq<%*RSk- zlE{MoZ_~w01oYh#wa-!gwirkr9OKWq^dR*#$TZz3mX#eVm$8P)Ezg8bed9X$Se``X zuG1hBp1J)VXU7r7S!Jh$6EHtawi=>Lo@?Xd?AUSzCRvdWlHy+ z2}1+w6#D2j=m?B|Ktq1e@{(;u-TmZkfXG|q)vL>JXB+D2R}1o;NUVG>L4wV+`&I5x*6IR*6*sO z_=_^LZGYZ#wVpSrQ?|NqT@mN>Ei-k4C3Z1PNQHXgvC+0uo%u&fRt)mEI|)T;va{Ep zt*_Ic`vU!$v2{A+Rx?$}Sr6i~5O9f-Fq9uv7GFcT^ZvVhXg8Ax1;}4-x`wBSU3P7=MU!B#h=H=(6r;BFAGU|%j zHlI}K;Xa_!AwSP8WSkv!lp|kk_wfczdpf^NQF}?uSA9d9#opy;!+ANWyiw?`jRWP0 zw2wPPXlE;Rnf>bps-Tn?Y## z@*Zj{f6`;Uq$aDC#^L^vZpCT?dFj{LVa+3-ukhiDZYk9II$a`T{UiY`%Eg%oxh@LD z7?;@XWU7G(%QKZ!H^>A?Y>B*K9V1An(_XQiX^_+(@uEvb&h|9+C3}_a;Mo?sZ!USi zE?#Yl{s@D=z70vet@E)*(1UXWWKVVuO;d+()OE}~?}F^sS?1UI%0#0uy{kAl<}qJ% z252E?>)yTT>iV8Ng_w{2%44_Kk+*oWHJ_-}OFrx1pw5HwpJcla9q>d>y{H0pQ`J5X zko+|#<7e2!)$x$FOSq}M@|lkB+5wegrQDzcj@UffOW6ZnVX!jsgE9?n9#+6 zKMkORl-JaIcI?+>u7{ktN%K3n#G7An->AfE+^t#*gmcAq=MB{D&cKRaidkDHm$Y*T zk-b{I6~4XLlX?3Li6>y$7w?X>xnOxsRaNz&b`;yA(Uz7A0z3VbO6+Qma(o*q1Ojdq z4{Ta7hI6AA1@RCrp9bDwO0vmE3eh zbTWeW*0^kBHI^{-Xs@SkY3wf#*e$hL|MVIN?(?%lu@adZ_|>eKK2Usf?wK$Xc1hz1 zyoc5r-dp?f+n_FPlYTJI6w~73-4bChkSLIq5W5TMP`aQNLc%F(r>Cd*g0(F4E#(E3 zm;UaM?U2-mGHFupg19@rjJL@)-bLXVb>0_PE;it7<@m zXZUQTrMmJ6J|c9O$KFdg6-@>WC(qw~xwr|*lxdpLRWOp@oOTJ5TLVYg)s?3dClDvY-tl#Z83q}vm24+YOC*#0-Thm(qhH5PJWm|nVo5zC z^vr+WgY{RP^&;#k>v;#jEtxM*J$R2}=I@S>eBONxv&GXrq2=La#|l6CMgy^rFK&6b zy|#4LrjB!;o&2C`!X~@B`$26M*vhMg8l`WRkRCXaqENk(SvTZ}acn~1+==}m@32jE z;x{hqN%5d`(d5JZ7D1{Dj`O)Va7Ir zJFf-NUXID9M7{7ejz?+;WZbPk%nLeM&4{=j9;z%((%e&>6$tDIP0oqn{x9$~6_2m@ z4ftWE+d;pzN+NAVtZzz4N*|g2qe{IaCcE7l6=spd!^x(p{xBpr_q4O599dqT-v4|m@;x5F! z?2*aqx8Alc;nN?#p&Dmo$%NOKJ`fybcdje}6$|I53>uoyu-F$3q9x3#21Wtjs4Agq zw!)_^lTOR;Xtupn7gxq6ha^FbhkL||1J9s)ASvzZ#zx>71^OV9@92e}Ti6Jhr zTN}{|3NP%z28Z>|N~26}e(sP8v1m!4(Wkf1cD7T`L}?BPY+B)jZ@x|5Km{FW_8{#s zz_XN6C_C7-x!F8J`xZg@;7eSiN@jNIAtAAQL6>ZNwj1!+r&OBvPaoDw1ZN{@i$S3U zgLg~8!pcfT6FFdkQ-J64w1uJK>Yeu}Kda{FG1qzK!wlrCFVA?tRV8^R@6AL>c&f{| zH*TDUz&8n>4)Q8p%5A4_{+e>CSGScs5zwI#D~BZwZj0G_9Mxe`Bi2+!Kk^~h$U3!p zfEnsvo@BlFb!@H<7c96X!0im;#-(myl0$5<_#gPs)_OPktk>QmC$s06!)$r{5c}(S zBE=(p>!!=*Y^JtQb}SeDuF3;32FOgqdf#AQLq{j%<%-#68dsk?#Z%nre6LE2%d&CI zt?rj)o-vWToSk5#b6AeXX-&E!HXP;x@D!Y?y7n9MT8a*AY8N=&)(1LNVS7t$CMw5d-b>1#oxG`-xn+)>0vl(a7Ijy?Q10v0vAT-MwUdf@JU0%j~Y- z9>s5usMD>~E~T(VT_FvPf^}2sKL!B4Ybi_u{UvlJI2wQkW}9ib!M+cn%ahNl-$7{G z;48GH;1tEsxsqNY^>vW4U{0jw|KfuepLBuPzyO zD)d=*jPYAuUY^-`A))-tLsAXhKp!38G&36a zr$ef2XXNtLJU8-bzjHu+ZwO8oCL0yCn;Uz0zXy7Zo+bpLM_YM`X;A=mu3xMtyB?EJ&5z2y)zo&h*(?-VL?9cc7c^;Me1hB+ zdG^saEWqu*qJwAOlTcZ`?cUk)DU_jS9;k1uE+6kL8t;s^V;(nYV55QFu_3t()BshI zwQn)$q&E5@XVrVM;chq3JL&J_Z^hv6f8;<{9dzJ#7}j$bC>YvpsJxyS&<~t1>*w8s z-uNeGgP`|y(T2IxooeQ6p}b<&2i+|E20+cE@5hWLx7)zO%JB{&_XC80(6 z_F9nbb$B%z#vp~u0kpN;%av-wX;@|6GS~(7t7#I(pn&tY_`IP64L{t~tf{PM6(?qG z+R{&|zL>9M?X8YJr9bT#!_177ZAtUu)9c`s!Wz5cB(yONJ0S=Vu71mO9}kF+Y5b+szY z6vdGexBqK5!Jl*3_!y#g2RHl0(y^c3CXdq$tdqC1!)z$4Z4fp-kdl_-ATMV2QK%*0-zogIi{wYeVv3D%>L5uy<(VQF8i%xu9-va$lM@QF516c(>uTFB7!tbV0dhbWZHNAMoec-MxBwwga zc;oSE9NVv(f`h(d&{90_X@5}1l*DZK#-%JXL%~Rla(C~_(i{~BWhhz)ZV;P?QkC`e z;630HOV>Kl|BEFk;+e3U8!t}mP4sYuADzZAUjL)h7$5>CJ!khCbtZ6YB>&@Jgiy3D zT)c66*!($hJz*wl^_w(kE5C`HE2A;4aS*S^VC9<4YDU=jUWPUo?!UMqI`4r7X-|x+ z)*rulYCuhr-0?$&yi7DaU$H>_MGc0u^Ox7M1<}r1jo*qxaRc$)p5lcVc$HC63ittV zYHoJ6RH{DnOUf^TerWAR&0OByf9cuTVuBC91X7sn69j;La{&0u&CNZ-hp_j;Yst{` zg7tzIAb?0Lgn#74Z{@mJg<@j)yC&|>WUu^Zi+UMBc}Yqmq$oikey?dKt^_G;1cL^& z1P9>`Rbe86&YQS_4RfX^TKH;viem?zq!=p^V%{fV61DU45?uKF8N?uTmDSFW20J4O zCoIq9LLmxwxj+`e$CoZjNnv^d6oVbAwE_GW5Wl4#3s8fkH8gmvE-$|t9UU#X!bnH= z8vX`l6^012wzekUeMe!}8b>kraC|G{(LI6dGm?In{DuLhfiW#;Q|5W}KS5mQ>cNN5 z7Z8nnz?zxUPSEzhjo9LM1EKUllGI{-sP8q{Q%+wAJR#ZS-LxsT;NeMrwARVmtSeXf zANYutd}Lt%J{2`JTpV0nC1+=V9OJm$U}yO*;x6T~&sp+SmN7KR3{A-CdP=}>iA`*f z(xbnJ7v4d=3Bc7RCNvyeT*~U|>Kd26#SR94Kzs7^#Fy}`U~AeH_n72wl6a!m_Aa~t z2+;4S5|=v?xIfRz&t_r31V^nv(NHt~POz0@go9kj!}<~1QSVTWnNq-cw(u#fZ`O5= zojEw(YhFpRWOqDxt>dg(D=HHtJ1a}c)wLGZay1v=j$uxEYbC~8(|DxUxdyI?u4A~p zqm(f~wfc|s$IdAzpi10QPzE~(P!yP!DCXwo>`s#!AEkDSwu(qUvU1ys3r>m?>R~xu zovO;miD|h)^Yp*s0UzNqSPqfm-Pk(gZCrp|LwEm(Ef*&-v_yKtNoe^31ckZ;xnf-L zH8k2+EnG_g&|Xz!W>P<@&Xx%=sJe#1^?+{;mf-TKz^-2UU~i_eDWb{MMDtDYCG=lK zgnL#fR;b;$tr${FBM2_>M=YwUukVWOOn}BU_W)zN8uA}Fi#E{uGU3eSs02_`|MC4_ z7lNkvJVBqLbV#tCsJc4i8-%-ZsOfNwz2tgF1Q#kE)S``d9POsvwk?VGEdF{SjJ|-0 z8{b(t1P{^A&ooULw~vN_5MbZWMA5z)p2`>L#AlKB;eNvWz6_#2i%Y!~joV!BG5yWI z^z5fZFjkNIrEQYdm(YgFd*+(vV_(uj?G4vv>B+B{-h4z*9!W7hG$^Yp3i*GWODb?K zk#%mhmC6}+y1Dn63A~TH?>Po}0Ww=(S=++&;#A~&%R>cR7aV}C06=M?I7>5f05CQn zp#*JTQBgPZa{4{qA`l34%a`vrBux6`vOjpXD|S}ARN=0AUe*O%$HZ1>poCq;zJjSW z9fxi1>p)v4rQO)X&VgG^s@)|%eiFZ|?%O1vDVyxUK_#B>gaiTteEg^HlU&?iKA!LB zY@#s6DWEa=FF+wizNf$I*~~>LpanarVhKTOgE>r3IYBT1!eQgNC3OjxOVKQW%4PSV9-3Xsv0Z8oj5!6(tr4;4{cD`Wa1X&~D> z$M5TVamE5eVBKoOfGpsNW@u>W@X*k_4h6fdxM^sx)i+XwveB?CSOU_mtpz7hXx-s`oDac27D3AbY z*BT3wLC*nuU7rhM#}t^f(*6Ps53G`$(6Iak8kU%j5FpBc!5jPO z7#PUw1(JFB_;NEd-^nmM`X}QE;BbP&Q9ktc(tJlh5~lNx0%uoXRi@xCGnEtWcQGR9rYjxEa4)ZD6FvwAtA3$oE|IK z#LXLr8*s3F2bX8EejFX8Es)|>!TJw&EmUDLE-on-*UnhB!s24Qhb5GG zPqLzY&-5bF3RIMfii*hNnY~>LbB6bB!SVU2-m^gewPwO7*v!E#z=DXKDsa4=g?Meh z?Hr!hgqVl}m_1|U4Ler!)@$UqZwGzb=8(CeafJ=*R~i%Kt87suWoAc5)mE4BwfY#3 z$qaMHV&g8oojvd>HgNi#9_N@;M@cWrI;8R_RR37^De4FysXqxO70Gs-FQ8}I;z zlD!$Aa5~B*N)iebueGPN2BZCB@nPPO;glBsa*d}g!A}*hIqmEziHW_Yee<)MPb z+?y#r5Cb1Ll8+ut(3fp$N6NCM|@f8K4OSBtWaDZ%r!ea*1$ zq1{cA@o>xKw;*HVJ0R--p!Aa(R)nlVyZnOx#5MakqcjNFdU=s#W_~ozOmn!pVXY>~ zHK22Kv~~I(IqARMXH94ZkVri}#*gn_iqTJs96b~`9QHK-5RSQ}df8Z7?k5gh9v=+` z_jAczcjCjj`8jf`DEXC3F^?0+vK=>k`LgQYZX7^!N%$1^jk%)>Rdlq@Eoa8WjMmf& z8u``%Tp}wg+rqKNwZ;C?QJV0BpWXNW+>1`(7TOE@4$jKf*19?bljoj~Kep+>!MrI= zn~WdFm3!y@rrG=&U2eHx>6aDp2Y_AR?v^3f`V>V?x+q)u49J1|gmqujE zXJ{vtXxv<+{O2kGPv;SuVe~tF!Mv7F7Vhr#_uEHGf3Obh@`%7j75}RH{S#Kh{2W!| zvVoq(>oLLHQkK(dh5LPd6w^X3!y?#otZw+tQl1Q%3~C3E8YVsUX{LK*cq47ghUJ4l_6Rom4$TnVW#&40&{D>cf3bp!z+T zaQ>Uj1%)$FR>wK>X)60%bb$BZvqCE#{mXm(Z-h=xPH5>E!-1=#qM{;xIpA{E;a8G3 zjg1&X%KeQLnE$-W&&vTi9P}pIt^K_nhx#w4nhVwJ)#prJpwA_@z@Miq+OBgL*wnP7 zZ~4J@>-kez{S}fDa;+7knbBLt1#T>F;_e#*hSC2Z#EG{XZBD_xNz?rO$${|F>E^ zO>I27@I1Zyi2GDto(y#*fIv7yz4W1ofXC+Wb}wI_UTF&aax?{*0iJ;3#mf>BCGM-q zDLC~S7ZinCBsV!O-XIg$TbmKviGsPA`^@=WYeaWn6^( zuV22i*f|_fwb=EJo7EhBSPx)C9`Y%4qJR2U365C>*_bv*iBcv7w^g(DBt8n1%;&=Y z_{IKGSXQK@E`#hm>bo+mN<;MkK%opLaK8jB${^vZ-XGz8lfx`Xf zdF*iha4%#&!Y$yVmn1u%{jat8zH+{^Ffu4c*iwt?|DNCZyBD#+NAam||7rOyLf~RP zWZc{-m(+d#*P4AF5%Pe{K*Ubz;r;0S{9xGQ<5a|yrlzLb(P*J|;}=t)qyBVX!c&lA zbodC5=i7$f@DMU+5g~sg5Z*t?g%~xghK&2}h?L5@8kWw&cxdpf*sd85)1Ss;SNCnl zgl`N=-gyACx|$aH$N91AoX_uxQi5e}v7@yOPHXRmYHw*)IV;;P?jp3R#q3Y>yMS{2 z22=w!N&E4PY)p{X!Ner635d)U0Vxd0Kg{wXgx=TZa_il~!IL~_QCW6NJD@6rLA2%l zuKa19WT5B(zM6aYme=Lh)r1X0J2$twrt7ruOIz$bm;d-}11N+ZDkszPjSkAWbcJ(w zNJ-f-l5Fhe9P$6&7x1oGoNx<#_W91bmY;z;bxEBS$9)G2i{Pe9@Yz6tdtrZ`^Mmsn zkB_hAxY}xCe~C|Yj@Eo6m~6}gzX7nD{^8DjVPL6~l1J(m$;N85s_8ZIGL#}BBX&I% zu!x>^bn^W9JYDF;N=lq4S|roRZW+;4kti9Dii^uhy(Ge{FZJgm&Wv&~A8IpH*C^*o zNkO4g^kAvEou+c+snwRB#{y;EIb^ciwc)znf~)h2}A{3*}K;N@#P@_PHWvaL<3{xNCA{{+~h)mQ$9U6 zC#U2-6?F7k!~a2$anA)gcYdyyY>ZtQ^HNls$@$AEviZj_|pbK*~MFm z$uvBD?5RxkQ*j0sN^HV%)Kwu9e0+Yh&?8PyLByjtvN1e{i9gS*?tErn+*~kCB}&4{ z#$0vlZfNYXd*xPt_<+_JL^g){mhcba0wn_vr~=Y9Rli%1M{;F6?&g?Icd)@y9S>E7 z9!H)(@c$iv*hA+3uVSAf;IQUB-DqbG2r zh0}`lsgYu=J8*0LF@y=w)Zkb#FJ2IG1UQR}X^3(>PbZkY@A`4O$|^T~ta?A7&LCc;{Qf(_HyFV&R>O(}XtVFrX~ zvVXpfi{MejaQFRHTSzPIRVPUEV!gQJYFEfj`}(z!FH`mEwq#HzN5kuXv<5lF=bNS1 zh*ZrDd1{C5VM$0(XE!70xdCb2_4FqS`s0LZ(9RF}$Jfr$M6H!TtPpd*t?AJVGji}&ZfnmgYsK4;!Z4ro<-Am^%gXq7vxfN5$>PgOHF zQ3b+vZ208LA1@>PU7N-^YdFH_^H!dFCHt1#g49dBdD$Cm2sdbY@jHtZ$^gU0rhNSP zF;d;is^INgaTyhrC~<=3ZmbQ0ql5$gUxWI#pys@MPDe+Z@#a8PP0i+kwl*y_H8oNl z_=>ZFcc6VYOUP*ds7R@X4Bk0n03R#%aY*^P#rFb#koH$st;p%AWLm-}1ne8p&A zym&#zpk2l8Rrvy+^4R!15c#qAW+^Dfl6M-s&o0g*ym(x;493X8irY+N`7uC?QZ9`> z@K1(3kshy){y%3-M_UEG)nlBZ& z^R)ag{~S%2tm5);4%6bp#fZ{U7QHjM8e9Feb#PQ@la(hDIs#VR!9kdubW;7&CTMw6 zTcRZIW)%}Hp3MM-h%E)Qs;mEZo)OgF2h9h>*3{G-?~HRyaZYh@aaYnVUi!+Dbm{Mb zcOVfF5jzsq53I~}8)&VjluM)lxu&Qf3V=edKTVTl&h`%>D6U(S;6)=h=95&@W+YHPjo#wgC4G`9{Qacpe%Cpl0j)4UsO z=C`3v)rP+_lCK0&SXfvhqNDGkGH5Ngq57=725GUsTn*vvn|7G~m?Yd}d`|08Wvm@4 z6lobZO31h=1+>*6QrvVt3=sP%9-)%8Q(7av7_~afn#--ke2bm_&zx5yzSh%BF|3Ui zR^R)r4^BjIkprnCXA>sKb8#z;WwGGbsP-^0DxjgH0S{mxcU%Kg85$}(#wQpbqM@di zu)P*T=CV56@!20cyqa+*i_rEZQ`5nq)_yh?DJj!Lm2J%Ove{H4pc*bK*OHNzekK$& zboJL>{4GGQNY1M^5iu!Q;VR@?U#1RsxzU6E;bSQ<7-0Huhc@dkE(P_@uw23gl_HZ- zI^cE7jzqNHfH0jJra5ekkGR#f1x-=)32;q-TX=kO{Vb|8lGJX6*KLQG)q2$-*4kH# zWvNziNqIiH{2!P9=_>cglF`x0L}*j5O-$=o=%b;dClX%V5Ba5c?Vdu`4Y!&akDjNc zI}@eLqph1?!h>W#8fJoWdMPP0%-w`IFZb)I6&!aiNbjyW`xhWRqr0kv3mW#uyPhC# zWou^>@b1vMZj2xb9e?B23fG`NGBuS^dJ@qjD>`fEJw8eL(_Z$oqwF!)*y*QP%``Qd zGiG3<5&$ir`b4V{#1GG}dDeol^9k#|X3epB958#@Drd_@c916KP562}#)M-UFFbx# zoV-o`bEZG{7X(~5CF&^oX~_Gbuut;6LqqHR}ua#7zoR4>P$Czw`7r$;^0}k>u`jv z1|@@5ML(t|XdfOd-o(;tzF;9Z2SnwCUZa~dI40CIz|p6pV~E^n7axiwO``7;;n-*awcU}Th|prkB3iH?p2S+8`2^Ts6gRQ-P0-oW3g@Ykz1B4ji)lDwZC`>REv zL>Tf>?!Vp=m2V-rQmkLC2dFyXUuaP9Ah)xCEcJdEyfdeU)lgj0f@U`2ColW>ny>ZQ zl_c*|S5~7%>>I?y)-&q^( z(#&2LQeoUtDFldL+vT4MS`!i!Ki{Ieib?dMC$Snbb^QjUULfL~5PejUZoQUv5N5q} zin~o!S+$#c{NKPW)gW0m(~f1l+0K;0AlN(oABe6FEh5;NM7_K z6P_#r<+iQTe;m2~C=?U?2Kx@VkM+*B%6h>arr41Bm+We=q||2Rhw~2$RMkR$06A*v-DGl;zNK-!SGmc|KHVU7q44 zY18EDU-_l5Z+XD^eMRn&F0usvQ~Lj20e?TR>~$GgnXB4q1l&X^clLiC8>oMfk0y@J z3w^SB=S_@+L^NQS#>!M17ookqy`%U&=3%q1!v#O&j3=9VqJn25P*GB91G@ME>pU#r zU{p_WisCZrP;D=HTlZjDZGI-f#fD5cn*B>AglnKV7PDc=y!XY$A@-Moy2KU)f1ZC| zW-R7>cz#~qqm6`05oMeQu=Tymmd}G{YihVZCO5Y&L;{!v4W&)3DlWaoa#>>)4t#dp ze=Pi8)0`uFk&r;Ua%%;tmU9Io==KMJUn?+2ZJ>5}bGlL+m|ys(Mc`AAh#5gzS1HvC zG-!yw@z!|OEi<)8P|GZ|VG2dW>bqr*egkPyOi|8Xm-wm0gz?cFfZl!h{16dG$bF5J zu^K$v^~ak)-GH@J)1qBN*g}K(D8NQu3&nvruZ_w!o!B&yoPON6p`*rSGj_+Q{dx4+ z@lrG6L=O(!KpFmT!w*&W_4kLE4^@RW3FP^vPn3ogryOea= zJ|!F5zyk7IAjo<9w$!xCwj-bcsZN<`-%!#~ON~3tcuvGKZk(t^4&5U&y!2De|1AUY z!jh7K85vm$*NIH}q9=ZNYHws)h)CSzTS-2GQb*(riAc!=rCB%G*zs~k23751LjD4# zm|Qf_W5EgA?GsPd3ah)iZ^_rLgPG46{Oy4KJgRRLd<@gtw$h%+{F(|r8f0RtAJS^0 zUzP=Sg;50fatlpIo6#YRbuGrr%kM(GUqs6Bf6U|)DM7zV_w#!{SDXxHa_+_qk{A0m z(FF!zlm~Tf{Ms?YI|dk-jb2l3cj@RX2l=R=PV=?}WEugDQly?y*YNxGQ(PVf-o(YN z(|z{-dRtNKRnmr;aXl?1T66RG(K?HotF6vqsdvKpS>I)1{(EE};T$w78k%5aM@8A7 z(#J+VAr)J{wZDBuGa8h|t^U;@{E*<_gqQ?JbdB(>#z#JL!dCC*yPU2 zD{VMWw}O-xgw8yNbfPa^#ki+tQdC()V80~DWO}wyJX!@{F|tKOZk3gCfBTj{*Axad z_TAZWkd~D(_5#Y~>EFs_R)XyIZEf4054|x&^RZfG$(wHPTs}5=)?2Z8F=*FyPu|?w zw75SO^Nb;rthwbtq;fbKUCI6>~z> zLG0cDri77^m4uL zP3Tw5tUa|za}v_|E0^qxyF6K2E@+%B7q%amUkn!2&xiI?Y??+TkCNzfVm`R+V{Doc{qc$KB;O@!{J4cJ|VyD__jobOjv^B+Zj z?V4b2T-9*IsN@$qs+Gk25}0Jd-zLPJGS?8k6rhS=s7rzejj+9FmdO`cYh{J#kCRJR5A2f;*-|gujfth{&eHLT&f$7_-$r8LUd4*?0-))r z9NoCC`fPF-TXCW|=r{Qr1w7v{;%zEgUfvwPS$3mk02XeP!)4UElj?CSt!oqB^ka?L z?-_ji97N#IQ0yla)-Z)A^0DD6)?bjah#F3a;cE|zj8ZFfh+P4=MIZG-2cUEVF&fLV z#C8RDZ`m*QvPk;sei?Mmz>+k5#4YKV%rY;nS#A>Abt+c-5YxA(4>guqBcP?p>s~9# z-WO&+ebS4?C;VwjI969$aTXTJoHls32RJ+3Uteim#h7ZFH9&_qpDxm^OjIMY(T_c8 zzu>f9c6ZVwFFxw;U*y^T#`~U9`IOp%(ZC+x+&fT6jt%?<_*}3pN8?5gF~hQ;Uyi_4EG<^z-dLtrGIhfHLJ8LDXH`1 zV=tDIgLzC4W#%1CdmZ7udo=Wu3&8r@rg!rk;<3Yzs?sZR6bo*{UB7!l56uhmX2pOX z4KkOJ;^N}>lUPnn9zBXeACO^cydx7sUs}bX3bVrWMR3!VjBNE=pawD5gukqeA8DXH z&^5WXQ4oVv*~zodZK)CLSjDvdjK>C5i(g(<4OQ0NT*D<4fI2n50650RyBf6csp4Xm z(UGm*M)&=Q6an}9M;IH%3m>8-SI#=hY-gHyy*=*V557j?5djRDg4glmXX|67uX~qf zFZ^Z|G$0sjPvV-QthK8-K2R6x)~k7kA%p7Wl6enz<1G#zYzG~mowPSE>`kodOJrtU zOBD31d;6~AmKdtdi?8$TM~>Hjtc95uO3*_MGi4SPzgc3wD)(zF$>0f@V#WBhE4_I$ zCr2TV1~a4=3-2pKTECEQT{FtDtkf}u9L?RhqW`4x9Wq5UGgw{U>Vp20C-yrZ)lQmd zeM}3Fa-r}wn|7>!Yl90Yp;Rz5k*%KUNqY6`jrX0_C&>Z2xoCa7Hh-GeB5nnkxc-iO z*K6+kUvxL^ACsM%XJHp~7f^e9(d(OY)8-y53HUW9$o*J)N*@ppyj0Csf0pN>dfDoW z%qu#0Bd8;>jhN+O(>y52^V@8&Z+L9|4*7(D54wkglE?{e8-WW++`gKB#3_ZzdHvW` z{bIRR41;6Ck^KXsJ=Es&YMnib0kuUUz*N+@{#b zQ{wnuMT;c@`^)*cJR^f~B6il~B~4`W)WdDFUs*iDxnHb*5}$ zRhjEH%^`Bl_VY&djFYP%aKKm=32dmBQruIf_0;re>{C-;Pw0CbW_p+(Km4JsTW)UQ zLh?O*p?+)FkW|M}%_qlSZ^y+h?RpOEqc7|t^s4tbOkn(O-NX?l$MFR*@oXmVS2@CJ zwF%jvoR{=e$*n;jvtbR#>L6mH|CI&@9em19YagbuQQY^im;$4HF1w8pDkpb8pK-fV zh=mEKRaI$9_4@T!F^l|CCCMSbQItNymBM!*t=mg|Tqx6=$n-w8z(BnkyO)la@Cdi( zWfQnN6U4^G4cYhB@4hJSMdn*g)`-}0F5Rx$XPMY+JWH9hJGs6{yZJ*%pMrAFKn{8O z$iu*AZkZTNj@RLU$t41<4OKsO&ykraaM`2w5!_ogZm0R?wE?vwlkQ ztu~8Hwmx`Vui{)qmi;1TFnL4`^B39o^^GnS<#v1ouIgbN0 zcn=JL@bdoLZGSMNzI%)1q5tR4pI5(-dKg^0c(QVvF$jZ@Q)j%|wz#_S=*!t>;FtAp z2w!bIynLC}w09dhx!R|~F({cGmTcVrYQEsmx7uooB3v&1p{~BsmDbT9PQSoggL&G? zeEXNz!aP;cw24>yOS~n;#1?ox3iNf)_t-pIPj}Ihl9_A#49zl;LW7l!&B2xyZf(Z? zyJA|!`Ajz(_lq1hr^RMEKveQ*xj#+G;P}!mi{!}g`jV-Pj!wfgm&J}5$nK~+Ci1{J zE-`)IR4=Ftx?7K7T94;q-HF4g3MzsF+H`h$ME&7FBpYr1YD#+;F&)Sx?1e`i9Jo+M z$qr2HZ8Al?c|$RU;Q(9zmZqnsg0oeiDc`l(d}gyj4XwI^GG2mt(HhhI(k;jl^109S zJpp-KClNb~`+@O?buZ!wLD7l6l8et6)V~vPe_IKzK?58-$7{vS_pGdvn$pmj8WfsN z_O#a)ZRU> z)^{{kDr?KE$LqLiwZTth@{E; zn<;|Uc?B~iBGvVdYbMX@9%tH+0^7LgEil9T?$vx)Brb#2>aM=`k!ngjN7uM1CloIG ztfgtfZ#J_lrn4-wYv(GcscS5a_u_&~8UsfcP@lzbYA53FBu2Nc-j*1C)8C))`|3sF zx!?iTqWA|%>;q0*VJ0FXP4qf7_flLwp=z2Ox8(pr@G8q6`S2WRG7b1F$cxo(_o5<| z_P2gF?LCa}p`d()Li#|irbQjCaMOXK(E*(scJsR00Giw?k@n+v6$YBZ?J!m}Y224)spiaDtGh^R31$-94*nC?= zQS#2}h>Wc^Ao0ohU|2cHV+g0JdN90U+k7NB?Y7M@<>bABC{ERJnUfe@1Wcxy+b{&k znO>3%C8AzgWY3(adLJc~rLm+K+I|h*a~MDJVv5bA*RB?0Ke}$mQHWDxv@xJ*x@u(K z4RkxjqJyMNeEixy=bj40;YSnRbwT!uj|?0mEIiyIb{m)>BtI1TufP}lDQu4o-37fF zdfA}g^KdBjluGIvwyl#&7(eMZ9?NYQK5w4SM@id>O~1K5s!8Iqo^gnwq}*hU($z(I$uh-*sWK1?^-aoV5DwgleGSA@Q|pJT6SN-}lx>9_pK={S*+ye;ByL92&}o&l{U&;mxK zp07lCIIY>qoZ@BW<(0dWwM@&-aD$$HGbWJzFE7_x>qcC2>EX+HLeqlmsU0H1)oRSn z0GdYa|D|cfUq?(@UvoWbwhcMNv_E&6xBG~0}FRpgUtyq;G$5O z;*ZJuKs$f6S}z&^1HwHWKPqVB6ETvPu#!V@HFuBl>O2HcrV+ZabH?G z_dzl;4mj~`RjO}O$+-FWy5jQYoYrc%W<10I4+vkQ4JN!0Ly!P-(!2RH-shvSwKEfa zLp$z(miuiJ{XHs>qcZ_i@jlS|QCquF(2ZCNSg|mmyu#_WlJ!M}T3TAVP6D>B8XEc= zkuS$J%OlfBV*=Us>=Wd5!q0mXL}#z~y-z*Nhq6MyxKFz-eGq+(Ld(es@~VfXiX$x+ ziuM3ZH8YfBu;TtWFMJxKgJ@Hq5MH-7sx z$&-G1yi+AEA<=aiPsgB}a&qXPob5wq2-*uou|5;1WWm=tdgq(Q{0vl|9WUQR@c8tc z#_B%~*jb(yE5?nz*_Axsu~voL=4YepT34HQe+9yC@-K!Z8V zRN&t_#6L?|`ARFtGw`sYdx)Yb2RvJml5rM5N?zL@H&l`(fg_dVFeuG9@}@jBmEm@> zOGKC9X46p-%jZSrSnGlx*I{=3CKd!S{QQ1(^&`?lSj!?I!!$$2T>6<6yH`%9poFOG zlCqF+=3%LF0pI4Job{D?A7 z+6UrcJ>kHtq{o3>g63fzf(6M>9qo5lL9wEDb1{3JTUBkfa*zuHE|$sv!^JYX+6vsp zQd&n#H^?5@0U&gUZD_!#tJlP`B608GQ11$DvyF&(RurvhY@GS+)SVPx%y9aVQ|0uC z5L{??Soz6^yV)8DkQUHtv~f)Tk@oi?x4V-ES6x_aa3!6axCe@8+>@dPw*HXTX%&pA zDsa;q7Emc`zKB0unqWU<;t1ykJa18i6d=fH|8DfzVli7c#O<}?dzt$LEu;z6sy+uAjpy39pzRlMi=#&~axGtT%qT--eH)Z0FjI4Kh|aFIP(03oB}}tl${rj;_AP7sWS=n zMrml@cKNcVY?f+gruliCqmryiyBFptR%_U)SVc&xRu2^5JR+p%w*j%{@zx`exAfI-@39P!T$c=03nb5@m~EU7j-$RGWRIZFnRZ&;iLzTEaObydW#E_%dbEhhBB+U`tB9xu8n2Gfp#=v7 z^tnJ_^rZhUk8(sA$%5UmGC<3rL;u2DoM9Dig;{_6zmkoTrpkgSZSN!M(>I@#Yi9tq)zR@$;5 zY`*~_kEQzi&wDM_?!Rzuy+2>$w>0Eo%>_em|9R*S zB|bD4-1?onJ4+M|vMIS_GP% z>8U{j%V8UF7FGCwT`37Qeb;;Sw5uyiRPY`OSAT=|_<;e7yKZR*UB^d=G5LVlkhDL! z;QYUVnWr$IX`4Sa=7C&2nh!yT0Fi*Q{^mQIQ-hEIZMh!I8(B&)?SAk7MRdS39e}(! zU=Cf~8>T@DHoiL!JujeFp+1-$)&3szOQc&plxiow??gZPXSv&mA0&DynG)ew|O^tqOx@bvVDqk4|qFUt!^ zdy@o_D^7Phn7;t$j)KI43*+v;6EdrG;9U%!pkJ-Aq3-2gbJ}sKhal(Bcmk;JZH8x8 z{_r;O>|0n@*XO#`tO#us7#O5QIy%aJ9Q|1`<^iozZm*e#CWu$5%*KifD$z-Jo?ilw z@M9M8pv+ax8W)oWZkPS9$MCf^mrQ4($e0*fz*#yTN$@yV5toqQ?%w@!M|#!F$H(W1 z@qlQ^nJGy7frb^~pntOB^x=0BoZTA;U0byEL|1EeX|%3m0xmv;g6it589w{@_V(-F zA+VtGzS|CV)<*a1Xi)828l`j%*i6Uoq4WQc5h2o-=hIBuvT6=kcmlHGuU%97`ugVM zT{Z`oj042yKzkE0(EsT(uSffPk@MP(rA% z)YVbyeSeWOBQFItC)R*uN35lGna&Vb4 zSW$*W|-thjX zzRZe&!7gSoUHG%<4_nVIQDE?{n})U7>@rN8#NQyU}Wv#rPT!MhP_Cpw~gfMMp-XBg&acNry4UIlK@Y5q= zt%;8x@3HTX%+2RFp@#!^I8b%E)GRCh-~d4G?|?U}*1ESoDtEqhaV`zg-`P%qgWU>Q zgn~?4VfolaA$dH6I>d3L_0yxnzRS)?_m)z{ZAH0pog*1446v8kG~Vf|^T{ezMQ zWlmUlkd0k|edgMDrCp$=2N>#*t&=?I=W7nayjZK2sJ==&6PX^zjWOmz-DYu>V#B1` z2W#G%_%bpwPe6td1bTI~B!fbDIjSY%i(N5PppaEFIMXSdw?{Z`b~z;^g5T@rN_Y*3 zHe2lS;A~bJ@ky->EjO8$c2?37a?P;rgzIfhaf1ZqtE1JdJiV@H<|*`dFN3)igPGhj z^fxCeoHvc&-1v_Y>pp$@)ZXZGYkp8k3+|kKBFsGCU~Bt6TeC*>{ABt9zx!;@;j=_! z)BPt;#2-8_?_Y3958nEgk{0W_qutio83vFBYPtz3wNle}KmezgPN&XqHu(Gd@1*gb ziE%jabe2cnrDkAY>8=6sfCdc+nk?&FL*SrAfEz{}hux5k$|bSbW61;L=}-6ipM;#7 z{U5S_GxZ_jDsGD*ov^38JJ z`$p}Kp~h{uD(@d)jR-I8SMCCONs{Meo#`^r;5}KFV_(azQ$AY{+88fu1Ko7im^vk; zdjKBLDgl_0XOFUSHl4b6dpbatE!*t;sj&;oB0EFvJQjr|w^SaWmjx2*xN9UNIce^m zHQr);KNrH=pbmG`Dm9Jbx;Qlje|Q0DM6Obc~dw>@_Qk~+yK=xTk31AeF9v%ojwW1 zQP!1G-o+a?Z-;_NtNrjg=G=vYql*3dNRo&2;qe8ALBbj9WkxKLf+$8F$_4ybRgc5^ zC6tkWu}^yE0liuB98!LTrg(CodTW5j_mapI5XC@>-U4ePS_n?wVEQFj^r03%=p6Qj z@h6gCk@k-k{&CW8f?7K;(SX5om?$BdCD3J^qB~4{JL~AfR{6`f=--1m%|lPmwmc%s z%atSNIzu1v@=ik(w!RGyw?aJgs`fb|O(x4M65{hlh%+-+`yan-Dc{>Id1BP3(NaRW ziu%HZWOrA~bsOnu){kV5fl0miK+eoA#HzrGfq(iKZEc|enb>kGGY`I5we@Y6E`}2{ zRoOde;SL4uG21k=?7HSArcIn#_G_7u8sJX8`v7cP&1l)>YONJJ`O?~4WvW(Y9``){ zG_ivPkZ+&MFXUFFZ*}(RODtqWF?C5Y*T(dS6B%G=cfsFLSVSf#le-1aHu*^$Y;vo2 zD=BI&VhLo$WfmR+UWnz2QjC)yI+5P|R~d%kME83F3hLu|5@rO<#-HB5e_tMZksQeI zB(p4}tTbbd@!{8Dg=YH%p+KBAn;vcx_`j(^P*t!wN$~1&)!%yA^HDa$JZ^jn50R5N zZx|FMIpnXtB24m)Qjh>-gng*xaIVG^yVbcun~ejBrDeFja60SDmfMqx zjOU%0uDe~V9kYH8gROMuItA4`I~_wmYMq>%tUKOdDmoqjA^r+takIF(QeS-WadF=e+ z{3_2SBOm$|j4p{mhXI=CLy&p*dHmGs^OTmnd^)WH*e1BM8Doi0*y1+W8Z;;08fSPI z$O1Q<-fLRac=>RdQOF0rdQiVj6-#Px0XH?d0I9$Eaf>EjNPf z8Yv0dfkCRT*7+qVEGm~D|o$lNU>Fqgw#28e0vjLoxis2(;1)l=E`R-_V zv4UhakE{Z3Oha5IIkAOz>QZEd61pkJ>-cx`#0_g zF$Wf9#+^r<=*ps`UHTKFDrUA&Qw4;W19b^#wlA^bE;B| z!-7_lG6Y!*oAKilm8s)FfQQTlbL#cPBZSC}E^(cI4`h6se~6tGGPyKrknj$`9#dlm z7U@UYgVp)QN1Ig^L75}$`;$E5%syfJUdE`fjbYIAFFn(sHKb0?<89_OVs7X6XA~M^ z`!vHqZ-@yA`Ak`W1#CWGYN;-RYpnCP>JQiW(sPUdCWpMf-&?TisR zW=^S#8jw4YU_xpqC!(At1;>N7)`YLJFGV#D+Euf{6M`xc8;s9KV$8F1zZZLad42uH zd}dbeP|SqafXL_Pm^QiU3iRvrvGT}^cundTM?D5BHl`!_4e6>iT4g3KzeG-b+JNm6 zianUv-D|yj_wLtQjGZMOpCnF>*Ya>}c;-P@IV~3RiNpf{VpO7UZ0uZb3BUvV1WP{i zstv`1NoTi_e4V}&5$Q=qn~O~L*KYLt`TM*VP967N9aBsWMpoeC9M_&?CdA-Bm>jlV zj4}{!4UXH}1U`;5$oUb0UqN_}M_vwL@TMnac^tuUk2=#;&%u#T?fmEx^RI*pDc7ZA zJjZU0``ahMo7i7iGem!T(wIyTpA_DAJEN}a@A)G zra{`1o4bka0+IGval$hsK!BnTciQF2RGQI@BrVU+e<2)%Z*<|9mE#Ll6hz5t=7z-c zoT13fYHCD8!=4}P9->lCo($ea96rFyM17^uraruo8mamIXm@F?X`TPa`e;uZa01ty zIkM{T5Qq1&Tkr&J0I^A!gsDIMi^gj9ml7#mlhZkpi${yMc!VsDE(hg&P|_SS(^>>x z+!KW5aWjJ-c`N5}cx;x5w~3rnhrI>~``bm)3^e5B=K%zN6`%f8eFB$7$4}$$C|yBe zFX*8F0~B_)58}^PcFFM_dNJr}jB-G#Jeh)ub+KPo*OAEYbstcd&32T5c+-dAeF)wU z5cYs++mSQ-ZGz9qTvB9Sx@CXyTAJrbdCGAP?VyV}msJ>Q>Ko3i`DVO3Ix}RlG9d3o zUyYU|fBvdkf`Q{VAzZwkQ^$jlOuI=XRTME8FUN*Q}@*1E=A^BDh?Xe z#Bhyc?-3NaeDjJ-$r)z8DM;qs_fXBSP%-$$Xe)xUddPpZ&BKOvE|wgR5nE zp`5p-R%Tk@3pZZ}4#q%v<`0DrwY3pRf`0Awp6EqRyNhjLrayo$EM}-`?~Ms>At>fj=0(6H=XX1dl@^y^ZaUvnRObU zwE@oaiSaGi237hB9|l*A3HqYC+rhw+Wm6eFiR| zr|rU|!v*eZCL7e>?%&U}l4lDJ+g*N3eT7uek4nPlaoF9fBpBZ=&YLHN-sRcny+T za;m8=lJh`hn4UZ-e#r(*EUD7uda+Tz-h%jWfRanIv5ZVodXiHYB^g;my0+czgsep_ zg~7)CYkP-tA*_pHHKGnmNnp6yOLc)~C3Drg-I1WDsMvwbZYs~&o?PWdPX`EiDL}qs zScCU)=7!VB#)UKCP%mkD&|~!<%Hx&|B(6Vdx7jVKT!ZmF^EcI-S(%mUEEH$Te;lp`J$%5lr%+!yyNa@o3r!XgyA((<+%EB43YF1 z_tQhpoYhTsoA^j@%kD~+e<#k9D4^-2%4pX$6gBZVSi3*`PI5z@`tv=vHTCj)iw-hY z3f9peSbCT@kis7WDvx;!Iy-03U+zL%3OfvID^55{Av99nuA z*J*g0fTc4%cGJjgtkNv&bO+3oP~Oz#BET*m#|4pWDeF95rU4TOqr+ljvw4$?iw7V) z9*=8pbl9a&ms#+x7C&l6>K}s(-R?CM;V0B^`gtm~FogaM&7FCqSSXuApN<-1NKRO2Ir)NQO{Xv+jv zJJoHf%0aVXv1=Wxa>tbz43m@@X)O2$QKUn{Xowz_p&>Sh)9kV1XB z?{|gSk9C3gV}}iG;oP~CJPxL$z!~8-h_j2ZO7O_s?i(nn+iCCE0jF(nq{l4{^`(O2 z$LQ$QT8X@@P?xs8RO>IVDfTLV9-DN58UOGHDmtaZfsa@=r)tzTYfl(tbP6h-3W0SV z*UT{23_Pi-?DoGy)gI4{#872?e3rY8?NEB-Hf{sV^M2A-OTYjY37Dgd8+OjD)$Wh*+xwb;ZS9RMVE z@lIqZF;;+C_qHAi1*ZdYQ+{d0)?-FHtrsULB0jksFOU|%+!-i*6s|JBRK7oELdlqy z@};FkHSL8UNss%v)5^=vpsYs2lFr8nyIT{Bxn^IPI4HD(pb4cDloZL3$AhMq_}UBbp-3-y>QLDehe~8`oXh{8wVC9ATpI|^pEHvLxrDkM2 zSXN3vqv7g$)J>p2(FE2TeZ{gW6G4eRLwqVntqjj|>ho*#x%XjV#@=1qgR}H^1&cj@{vK3yFKf}<{#DiR>pLNCp2vs{-t|c!lXK&jTSNL0 zaTWijpB6Os<9BX5|MXPy5s3T1_nhQMABi6gUpdjg08G&O;}8LGQ3ox1kpnQEp8M?h z{|dyeA?VQelGpmQE`P2y2hB*RQ)sRYg7rk4{R^bbSC5r$0vcr%rw=neeFW2{!r-?In!aOyWgmajIJ#8p zK@LQF`+7!tw&9S}1lMns!Z(NVOh{Nv!1Y!F$w)P92Ey!Cct8n?W4A^s?XnKgO)tsa z|4My94NDP9kQzQHe6XIGIe)d*6m$iiJq_Xu^p3#7!(4$k#YjU%TJ>P&PdTW(6ca0N~4?JJVI-k2nZfg04(F-T~Se?EhPdcMYLS zGqIHPV})nTnG)jf9CuP!l^|hb|`Zf)WyO!wR;KxtV=|up^&JzqA zF@+DqV~BfyEFjxF0%ptCuk?4YxOu2Rie~=P)5tnIwUlR^1c(j9)7Ss@fsg@m@N%8` zy(KdRS4^*&&|8iK#2j>9+O((4q6!GPk*cs6Py{v^#111;um0P5%ijV#XfSpCQ+aWD zB?bK-%Mi^+%EO`wVpeq?cJNk;Z6I$%d(D2z{F&Y-^P@~q_Ab$Xf&$a1CHW7j=jxzd zUfn|g3-Ue8OIA}R81uJqT|l@BwRTTXHbw@l*YI-cyN_9by{{zjp;Dikvh^4+>EUT|`N(XH{ zMa9S<_Sbd(mC*Sq#`Rb~uo1U-U))z{@u0iXCy=M9uK`I2D1!y8MnKe-Y)j8XcMDQu zNrTwuLF_lvGi5zw^1>8zAYcLT{<;9lmkW@5!$*7N@(Q$C0^pgeM)vLYnZk)QR(k9fAx7?8UXsO@VHU#@oU3L50M&q0A*SZP#+;I zt=>cM24`JuBB+a#urYDur)My2#;2xNC-O=gJ_1>>BmAppAXf2>AUEKxjB-E}UkYYj z3?$#sE+SV({$i{-vnnKcX98f+HJ$-8#<;3i?{js9e#yK+x%#_-0lLp``AS&o10KTK zHD#p6VBZuPWnMBye#<}{&^pL6-@~VZ=hs(UX{N+&BmhEB$4Xz-gQv&v9U?bGfzir1 zBka;Z@=Po(Bll@_qTg$<3dhI*;vzZ zS_vCglK`m})wgE89w@4;1fu`{g{s)#T7oDFcPAxL1SKVdVj_Ufs)mu4n`=FEzS8c$ zH@=G>h!i`Q{wC%x>i{wH%*TMKEtRtR`m)fx9z3nDoORU3#C%toBpjd!kQ{w2U0n!l zgShxt6#eU$m(rC9_AiUx@JjC@g6uwWgPCd;>BzgCX#RXm6ac1l`g8?o7bQe9eFW_f z>+;pH|Ijr5S$gPgfTuP5xLXc7>afWpY*@=tGI5I~ock>hpbxfMYF@6NryyOgDbPI7 z5xyWxbTrWRdR-NZkccQ}1rPri>T!de`!Dx}f%}pj_Ll1*LVu`fkLXi%2zhX;9@L%H zdUTu$Wu5Xw1pj=628v4&9%msU#BLBi%EN=NBIuNCPP|e?94EP?VS4?opyxF>p(DBc zK({BSkf&BBKQSeJB70{c&cJWwM5WL=<yFHx?0`U69nv6PLWU{>IZz zj(7Tv=rB8Ml7xdlzY4PUze0Eo0T8(IslVkP^zg(z*xt4xrlMxd3%w&%-Tji2018O_ z>_u_+i`zrPlDP{F#>b*7Z|Y6^*HnES^*WYFo476ZCh%QYpS4PnU0QXOWrb_8V`{6x z-sXt#19j`qt@a0K#;c84Y1O1I0qDybOcs@*g|gw3RY&S|b}eg#uf`b?PR=GDAAC!) zR`#Ql8Q%2^{QT9^EA^aMocHH;kYYkENXs=^X^L>z$dkp3IDP%?2aw0L21yJT1^!zF zURj+P20rLIgKQm~l9wk>WMkLfcG^ACdAySa(G~S{_PF(aS_h`ArYoN&o=tR*yXVOE zF#p;7F)x6agQ`zQ$s^BN_m}U7Gn^H5uxQZ=lEhQQ*kdnGT1cLz6~7IE4-URO z88Nt^2y|E5DyYdN=w?eTdrRQ%%d_rZks(z5LS?>-}=6n9D4N#nP&r*$ibs zx3cTWpwPO8<6@9^@>4ttzvUedrX$DShxfPWlfD6he`DA3fmFFH7FH%L3>kf$0S_-{ zuMGuud0b(Vi7G%bjpn5%CBqr# zjFy#0@DSxN2~D-6bN|v^2LdRSGlIM7#BO`9*qwe{bF&72z9j560F>avc3$+b-J2K# z@0&i?kk^@wnHLa`GD~mPd}nk%t3m2m_*TYKus`ZG6BF;K;69b#HKr8li)uJs$>2Afv2{k#6VcFWKiI1N=+sE1%*Y`wIF0G@=<@ZWdb>dJcHX|WP-u(3k$6)&i0LX4z|Xtv^HaZ6nD7qj(8yl=&zSYS+BjhHE%d) z6CQ@8*W|mgGo+^V)n&_L&HC+$ILHl}Rg%zdI43;Rr$pA<9`FCOM2+h|hBHh)`mx78 zC|h%{*7RufpttIs%;Ub#tp$CRCy&EMlOorri!@5l3tzA>T!`=E9-`k((f$7EAhhFt zmYmj-LCyz#5}qs(sdfAB6~~x#=Ueh1leN3--sjXu!zsOQszFib3a_jfb!I)-QmqqE zq(4k3nKT_ZP#xShb0(y6I+OnJWse1mh=5AJUh(_kGbyB z(u}#}IW-*_mKsY>KVInGFAe-$v z+-&3^&Mgi?GqaURvV8vh?Pj%I)|wWBsX^jZmg7nj^gh2V{M?+ru#AH5-AkEic>Fx) zOeVwQ!ufQ2cwux&T`+D8Ho|VR`M%Z-J$z>em0foRdta_SMb117Fa-oI#>Xn*yCRo&T)$ThHmKhxl_mvKl)|>^Q zc)asE$)x4J;MioQcwMLkDGBRebv!6UruaV;t2ioA_d4&!Nn8ySyYGZ7D8! z)k9$)!sx2@vD*rnW3tb{>SqOdTpSTlQdao9$LA$|a#-ybG(9&&|Lvdkx4yLByBxMd z9&{Ox%Ec8BV*>FI2|SEPFJ_+5dVy}H5C7WDbOH&+4cQzk@v1&<*Qi{T(>UplbI}_w zodgLa7ylr;yL{;$cdFKRs`OU+6oxhialRbiL5!j5=$WSCJ^c~$>GOm3*ViYrJ&!l* zJc6rtR$E`OMjnjuOsCqs$pKD{)9A@=*~$+Vp2rGf2Rvf;Wj|!Uab-4uWnUCHv*{om zlx9wv>hK0s55FN*nW45>!(A++EZ0Rc8IB2d6IkFzhUkMwm$kU`} zr7>Y8z;4YHC=ZfR$PTfwzhsWTHrcRmbIV2%&P9@fDXmE78 zwCSPzp<%;0j#MPhCd;WRnXc=Eque19oCDV%BPGIcTlk~y#r?|KI*xr~F-c>xthc0x z&Wxb{)2@#()OACMs(oRJFwJ5uxXq%?VETM@4QKRc8UU(yX*(P`IXlHYK)I9x#MHNO zQR__x1ijFLF4F7Dll*lBD82c}4dD+oDLu~C{8f!xIxoJ4OV=7@Oj>swSs&@At-%3( zK`6I+mB&QO3`O>V(XU}xPq$(Q*O2Ejz8Rv< zW5Tu1g0Ki`GtmVH1`SGwkg^@teNiX-UpKFJ1fhW#@nS2^FIA(8ZnUmWIhepU=vD|m zjdO!T(O&4cOyh%jIbW3%lUurHXs`t5<2pd|B^Yv2c=@f-z?RusMaAbfSD&4-QPE4Y z1dIJ!Ut9teqbf6phAZTmGf`hmMt(eu2#Yn6Pd`>hU!Pog(pfm#MT}U5VU>Lx>v19C z>^>gQhvnonkg=%KcOb1Kw$;xtytZ{_l0I*7+%=Yl?@_fYsX?z^=#fy((~bEfYa`03 zX5qrzS(aIU^1IWM3m>scv)a>zU?ocGq99E)d8qodi30An2Wxj|XK;(u27R@5e1~59mZeAk&du=b1@0M|=P(EJ#}!tz6dVbU{G>3#jf> z{QmvBEiYj2TwvMw{I74y_wp8^3&8tx>n>`=x{q3kh`Dmq3`DK1B}S{#L`(4ng<~Yl zE+zLz;#^*Ma`KHuBlt;C&jgtW;Wx>$ll`n*oKlC(jol45f-#=izN$}x7jmxgubQbC z+e0pF5Ht3rh(g#TZ)&)vxrIx(^h6Bq)cG;kjDA)G917YLKS%FQDoyv0;w?^Pl7mM2 z)-?yX^{SoR{j#-pm3185Zg`ISU40v0Z1!HASP>!Le#amAymy>8&MC|ENZ+#~>8!h4 z(fMo^tA_pszolEAf`)hWno`$MRs^@&(ANOz#Z?mq_IzoJ-KEqF*o^sx_53zL_ip)@ zv*uLm{V%Iqq1+H2W!VSVA3hMbrlZ|itft`2nOwI^7#q3E|HFuCKUAzNHZ{*^h*qnO zDbIal_xK-fCzK1Jixt9>;E8#h$!oDemY<1!*>aj2)ByioNk8|T!GI+&XIi8zEF}zg z9O1rYWdsIf45sYirES4)(HdNF(KF?AO<2ZE=P(qV`jg*O73xExTL|KL^^k=7HmxaicS3T+w9y0HlJ%KVB z#4K2jJHm9L?mUUA?5ScD-OFoh@XGRxNG6WV-AsWW(ILpaB}JccJ~Kz}e?sP{ewfxl zO*S%BvO~^RyLD%aj*=AvBV6LSn0WH?u1IsuA&en#iH2-KSE=V zeX(OMR&$euSbRE8Lqwwkm#gH&UD{&!B`KSMD1$gYvGMXe4n+ijh$Pzk0R z^>c)UQIaV)7%;~~3gpLBQB}A&s%qS-dLShxB|fbAwJV5=igkWRM<>S5jb-S#x2rt;*uNsCBnMmV|tGq8${ z(Gy02cq>Us^=uWES5Bp>I3PaUn*jz$VL4m9BZtD`9L9C^Nv|RN<)0a4gd-sckL~hP zyRBJ5oQBegg6g|4GZks6{kB|aEYv0rC&<`fH;j-P(ZDWe5w}^_<;Ax6UD-nv!v2v&zS&JWFnK<~-d%FeReTSrs zX!86A%HQ4}d{n4#{ix4Oj#@3b#|63V_IGCE!Q;VVpR`4ukB0~!a0Lc4tx;Re%@ZVvP(Z_&?7d-c@A-M3^`qC>uN*bMh>Onnsc zq@;mX>BqBXXPC=SoH!pJ${rjHx1TmQaT?7j8J%=Yl|<8Z3Xmo1nmM0Rc42Qvxy7s; zL{ZT1i5JCpn+49`<#7w9HhC=vyeT-_`+~PJR5%~E)Rvd;P-)LBZ0TMMS-hpeK1Yd) zwja(g6=R!l-(8K>-Cer%I`%&s98C2>+glsQqq(l&Q>8l&ySwLeMgMyZbkM-+2RCg< z$hEYzoE%6IIo-o`k^UkQU`c085o0wV@!K2Y@@3}CM{3G}5rWiDo{aG+ml&(4mTOnj zCGdLqj1`|Hd>cwRdHK}!kg2d*<;ynFlleO-L31Yz8p$Yui*x02Qjmt1t+x}U;+|UV zMDffSPS?I{Iofq;(IhJum{c4%G?F}=sQp2~ah#Tc{i=q_S5`C%|NVQY2mzS;_sFVx zHkbnE>yy?I4Q8>T`2o(oW4)|+N*l7nq^XymC>b0M?T#ODTuhS)PaB8WrdG!Jeckay zD>4Fv^B@+N;r2UEH`xWsz4kxRrlI%F((~fkShrM(UbBnKR~^#es0?Ir&4`=+6#noj z0b7)~yak^_czEh-H>G>m7KHKpD)36oEE8O7?hzCkc=*Q(wGdvHEVRT4>8u z0O4BbPm<48ezVSLF~xB_)5PAw);;eHJ^dkAvb@{FtaI!O9bP;uk7v*de$s8TB767j zXvsY#HsQ%WYQt2mP{vwS)_m%NFH?7Qx1hQ@!>zo^EqytovUeOQLbg)u66!wsKAUKY zCo#S6AkC<9aL`BHn7Z>sC3kv(nMSKD_1myIgh3_cF|*sI;3%;NQ-J%K{XHRn8=Nd# z-U7-3zmP>qEBL4LZ^}ZSaHBa$oeg3eklCpT6|8@fXityf%$t^Po2ya}ixU62yjioZ3+l@ffhTm|I(; zn(^B9-7|>awsc4tyrUU0c#GvilF5Da)fDA$`*nAoV*Aql#)hQ1$n@zoCYufQkN18W z9nup-RBtGqk7m-YF-skwz+a@HHpChPYB#HX^wIW!G>lGbe*D|eB_J~D;jfEs0gD#D zioqlz*A;>#!o{iMfeqP5S`v?0rhxR**QrT`nORbCd$s0b`0ST=iIvASgpVHj6Vw$eEQgQ_aVXxp8i_{*;nT<+!Ch zFDj!w4BF>o3S=Xn8U&IqKB?Gl8b?#sjWxd$c$D|@_{)^7#bB7VSk8&7@UTToMu#Br zKla-nQeF*J|7?pSi14Z)GW^wbx)Lo0|BJwT4YH7-Rpoo=KZd8qU_$xNd;!zz&%y9l z*FKjkdMryN=^QoEKGZ5wgu38-?*BH&c-nPMqLMn>hdwne-k3iReS=?9lUTTjXVW83 zI<>rf&&rth_y?u&x8&M&t*p{T&9Qs2KDYDWfjwGjE}PWSK0>hy%nJr&A2ryN+z!Q@ z*ljcizdy!9Ju8*3>avk9H%u2BPA~FX={eex+4Gru0C!Fj?oV6xwD*$y@~uO} zp}(1eGsAwIzc7Z9tUNR(=H3B0gaNxyIpQIv4IB{1@Q$+dQpVxVx7dp?UxtL)BZ z@1jR=FI6CGdPmrivqF2H_jz33pjxKoE3$HIR0%$!p98jD z-+@{>k(Jx7?5Or?U01u~Qj&~A@li;-8A~~!FzVS!a)3X}L{9#BMFDe0|qKJ1XtX8|_S)6ha}*;Ll!uQlnf9yHVeoG!ZuA zr|zm}qNd)TOd^PsmXXzUmf@M4Xq2?oEvmQXiUYXBuuS>f_RdmD9rMZ?>Cx>~p_R|8tg6&<*ATY5QBn0LET zz~{S;?ePwCC8o`_Ri?Gq=K3LQOkP%mzq3PJmSNJ zVh8ynDjvuRD|3&JybhZJ;!yMVdcLl++uqv#s3d>4rq>WqJ%I~HD5Dq(({cz~kiuA};&3>Ravq{9cN$e!*uZjIwLKhY*4MJL}SP{}(M18wO@Ard87`%i}=!Al(Rbwvr-=rfpDscmR%s>v?-zvCdk9 zt=o(1KfS3LM+62&L|jHqRo06S#dd+yRq~>!O+KZ*6hrT zwi7EE;!>St5cZ$rGJj8Cea&Zn=QT8T-21VI`JEpav_j1^!|&4A_lLzXy;v#Br2UV6 zj}qMZc)2^6vy`7uO&Ru#`|=a%eYCq!l?$b@eFX&s^e_c1iMK>!(SK@{UqkNxG11`P zJJ+v68jfZj==fi4-ivw^pn3?26=A6w8!Tx7)#@|&GS9p4kYv)}KG06n(BHrQ*99Hs zYpAI|>gu2WIrgXU=p;2itzcD{8T8R)7Jf7hP2nlgGBixDmd=ORf8Gcvx%%+`vi~;F z*U)vsgX>v;D!6>9OZn&xg(PhoE7oQpi_PUiFzF;=K`i||Iyy*#5PJs)DrsryqYyto zWUJAx$)E|;3K_ECl(&d~bD?L75f52I-d9n-4~rE5O}0Qe+%t#GiFX&4c+>}%GQ?f_ z5$})1BQ>~G%!Gt@b5#)6Hj}W;Pe~-AiA`w`ifC7UM+np<1tbaj*0G!nh?fM|PJT$951<26I6uSep-ykL#b6{h6xtEN7@ zhtr_yMJzos=&j9KCLmufib*3|{>J|>CM=A63QKBW3J2%H^JDD$=jyE&%Mk-no8-2C zF5d5JOUU*8#f8NOTrU0|6WrdzjN6T6i$@(2Lo0#0GHjdngp^bWrvFfyn1bS|&ZM#Oo2J>>*&X3|hd^zd*KTfSUwCVM zvzF%P?^n`K-IRJGT~E;9bX-2GcO`JYb!eyq;t0jZvJh5m9L~JK49dIGDzUx^@-E-KQaf8+?}Lv zf?Yi`u^#i%JQ(s>WjhJsmTdxcP|-`jr8|>o!&tBI^LnCiF2#|@#BL0 z^AAsd{G)Jwf9cN)q{wS(C?`ip_%KTWU4+R>Cpqu8;xy$i)~l_-a>JS){nv6+%XSX?Xo$2y#I?nt_NV_ z$&1%@b+b>7L7iY@pfcf%p65018M=A_r9Yl{-S5&0j!g4@?K~)&=}gY6fM(AuIkID7 zVirE&ZHAyj73YDofvv(=ItRd6WPvgwXS_mf4%Ke zZ<@_{YyK$(!4xlkcxzAY31ecLeOvD{siiUI^w*`9ElG2W;_4tWcNYZ_p`rDWum7qet|72s{@CAt;NCXT)fM!8ZjPFRW9+jPQpFwb8JO#V)yCC( zh4KQOAyp%t3F%Y-sf8hWPdV8zY8skoPz)c=Yfr5B*EoJg9+8Wio0^SH^i9JiV#iFU z1)BFvCtecrAJY2zCCXhxvX9Nv0*Z%A$YjbPD4h}YppYNxnKL0F|5r0IBFuNk%PUp? zk?u`{&f5Z(Ev~(P&Km{h4@nU+bSAWcki5OGvQ3|C{)?Wj|+~a{)fsg+nGVp>_ zZVP|sYO($}4($AVZr9IN2WcB`smMw_Uz4@rgV<+``v+dX@@FIOUq<$KFh5%8^Wea| z1YvF9kk!8H5O{?3$2$FSw&$OECJO~(-D*VfN4aZ9Pm`9`bFj+~={_if;$B0j5KgpJ zh9aGufLtl3?fis(OwXNpCGU1`6Jk8{*h;=O^82L!+?enD!HXQ*$2&MTWfKdq=yjpc?e|ieeM87gA_=&c-_R$D#dVU#Ia|@O1(&PT;1WXTWE=&zF z3^+aM$Tf@n+4pf5dfW9g!S{V7MQ1Hvhzdm`8}BRx5rA2>x^@4?Q(IA&vV9vb*n5CY|n{Hv@{vwi|!ZFr5<~^rsOz!R8 zGh14Q_?9k>50tbkr}jDf*|@IjNxqLswF$tycr8XdQ*k2v!S{hgEN&T!$jI-? z$}pP0eCf?m%a`hB1ukLSvj%p1V)z{=M_e(725K??V#l`+PE$=feFFR&jf-X5EGsc> zI0Xyxb^RY5YuDegM%wDuFgpn8sg&p_Qc9*?jo664F79(vM)WnKMo5ih8lzSR5>_`m zB~x9UtWiaIwldt_J)Z^5eEL~%Oy#d`Q7x09!e`Uk%%f}Hptg^!I}ljNRSe|E#M z%CmENi$5(VqbgqaW0dP<_i1dK7|&6ZAit(dq9ux!V!5}pxD@D@p!Jpc?&*^jxvtfY zqpIMGvFM@+b%>pIjY;D?k7w2cDSp!6ns zNGR+6ScwT3HEF27kbd*(82zE+J!2_m78Zoa$jF{>Dd^4XDP`#@uDThCQw2fkvxv#kUqz$6jEV-_fiValy}T zSJHg{x+si4vajR3GmAVwK<_8rW!v2gs=37vm>eUj#Iksgzlt;IgDK33C@ zsS8YUj@lHS%1*V9@tmJc^;dCi31h~8=b=pP1Pu4emS>9lo^)MUb(RcL9JK`Nx6F+b zGYm0f?ZM62vGpjt%82H&MFG%q^KV*yQe$TV@3K%E*qd8XEVv`|Zd`}E+z`k| zt1ldBe%BMZN=BZxMPJ8NpM=;ccb2)3u4kB-JypI0b<5W_yIu?#YM5stW22*c%f-d@ zkVEy$&0rBz?cJ`RCx6q4e4Cg*wlNEUNBNMNTI>sIZI}yHy9kpYq+5iQHZo!?e>_G$ zL&k-j6CfL*x00c!P5JKfTx@)*@KO@Ek0m@hmiVntbW&W5T+Gdb_J|9&vpXBSPE!Jm z@)eoTx14JEC_rs@ooJ18ghvDs(KV0tN2V-SNWWS-_Tky*v%??C@!{&(zNNIhz=-p; zPB7O3bDhL?IM$pDi>3k!+X}cy9quTZniX(dn7{oPW{3N{txfDMp8v&2-zJpj$_4u) zj@b$0b9B5{QRM;^P&663&y>~q7)I$@JB18olB;u=JT|XLl5~?ytR~YvGe0>f z7n_bL*xs8QGb_w3e4{o|+TbSa(yywJkzbZ}S7`YBEKerSfX#e1r~Ii`WGy|uT%wka z4yH>OdVIyRGgX!c@!=YjB4FtI&XFB8m9&}-c`ycIX*-R9QoqlL-n=eTiNm! zMVet(_l>AZ{v4|8^h)LoL5I!z{S%U$g@jo}&qNdRS2rjaElwK3pRW30AE&-@9+6_ zetT~y?{&N8>7iE)!*DHHO4BphBse+Y9T|sMh?D^HqS(xBlCJ$S3x37*ZPdiAft6Xo z_q(k~*(&#d`~WmW>ds_V2^nJS0JfD}hZ?JR(Dm%Ymy2dmr^{!oc#CP1xOc@AS8p6< zJTG>Qo(Wo|AHkbmJ#JO}W0G-;ur;IKr_9Zsj*9>J^N*fhUW|0S{?_x2M$O96zujc7 zo=-i#K)r}cE2ZrG@ndu#iO=EIbI=ES+fL7aL($9~9fHDhZ1>8K^Fz zHee$nYk_0cN#)}wO*X70AE6k!3Spt3|&dJ zb_p71X~NQ9Hgb@H7UEDQXb+xn{`iSE6%YM5C2=y?9;o3)W zQV5NA&l_zp^$gHq`ck?B1n>ze1w0Lo+gPE z>BKdKkUH@lF38yx)!EjnS!a$#%VcDCq%T!2S0?XTL{W;h&eCztfwuYidr6m+$%a(a0@Pz7ov`$p$2wVaeL z-#5KyF0yf%oY^7Z!m#n=lo^EaR@7u+!rbjgqSbLWdG%)z&+!AFYUmxk4w}Nos;6Z6 zQsvcc)O^e1b&JaCx7Qt@HE4e90Mo|Kanv zG6;FGdTB-WGcd{y;~VuUd;O!ehO%xYyf{=Sue>S`A*i=6WfbU13eEY&(9#p?4~&Jg z6TOobX@U^>xD}JZZ5O{fQ0G_%SM84Z5!aY|+s{q;$3%&$*5<8o2F;=lY2kw^gvxnX zz_bp%4CmGyzXsi6ZFh=tK^)u}yc&T$D0nU*ca@F&-rXY7(8i>5ly_y+~rYi?<*a;42{rp0E6nNl$2| zUNjO#bFsNmvk^~D#Sa@&Q=RHNl5HVK#X3E}A~a;zf{8ayooytfecH(F=W;vxRGlVZ zBPy-;$@>T6rAI}4UD%cPnw^a|Ec%>6%;I#!Pq##!rlaQh(fmZ2yIZE$IlyB@K^Nr% zW1e6TxpRtbL^wp84)r*6AW?L6u3NkmqX(@;gRxY zeTecZ?)A&t9WTSE%SH9-ySdt`+g|8T!LWoJ-kuvJ*&U_D*bqYm%2DlkeAyR1d6mw^ z`h0fhxQUy#CwH>EwQSD!z|zNjY|B^6Fs8_Jv+>^G3%2JbI6m{8EoHs|0YPF5jE%{|8dx_U<_~wa=U{Mo)M5yZ1F5=SCE4?DFy`RQ&RGU||h8^wyI__qnngC-`a3 z{y{OoJ)v@Zd}J|rM^WSI{q}L|9_eJ3^KzPY+ukN$VU4;LsagSuAWkUk@_pdPWD_d= za_l*ETcb~<)wX!%tXtF{BxChse;D&fma!q9XaPl&Y|DX|xs1?WOzs!fCH|14%D`!J zb$J%tLC?%m7KFz(H88h1@m)Lh;%RzQe%)p}lC&h@_<`8Zgl%OunvIz%_)FR3yCCmC znJ~A(Wr=$@t1$qPNHY0=7IQXyCY>T!A=g?WpNF9FrZ;mMg8KWP=OvW^* zLhY8*>cyb>xsI9rYie&~x?h{H+o{s2-25uHlJvAj+nVUZk5Y}BJL)|nc6VQXVikVD zy(l)nn8K!gVvh>pJD{95Pul2bpy0$fPRm9oAbH$cFm1^8(gkPV9kqHQwKEytXGY~5 zETY-F!|SqDjLxzfsSe%xBqZb$rj?aK2{eoa&OD8bW^Tcv??e*K*&GH~ZDFE{0jU<5 zZno1Ecf=uSu-^EF_xWf?ET`dXB3*;Myz@UFc)W4Vw7{4#_D*x6QYTuu@GuzgjazdN zuo;s}tl!7l>aFiHy07a7 z_Hq7oCE*XL+oxQMJ9E|taICNiCDl8+&6Ns|sK2SI~+p2-Q={b&C7QhYe2@;9l`G7ZBg~rMHqB5a*qqJ_;`7G zGB7ZF!Npx>Wa_O5v#r_TwGjei6%M7V^K{X-#$iT zmrh+UE8&@dxE$ns7#HX}LKX4yWPDy!H9P-;(q#pGzS(Uci!Ikz*ZD!y?z}af1K(d% zh37l5@|$wCC8>O78$Ox7OO6=jis|SosB(~RQ_T>=QKjlPDiWemav9-Mpt5aiO&yG` zIxpEeiS>?hACuxcX`74+9ICd4k~o&q*=C)(;CaI;Bc667fji-T)k+PiC{z)~VgffA zN!6xxhk^`3*iF^ywkqXGSs4->pPgPSusMPa!T|nKna!VT#tfwiZ7-x(xhY>gkJCn~ zw9q{vLK?p{utw=|2*cTToLLTwqJ8k1H_LmPsiW*eF6<>#THUI^`uj|QYiAu%7Jpn6 z=p}exg;hnStu zivJ3Vt0p3ycJiuqY2n!FISP&o^7^j2LPiOLqb`!}HBnl;Ba@Gbq7CxCg$1u*RGK^x z*#iC&IsDc%r)V-QNN+6e-OexGvje;%HJ&h3)`i3jtZdORzKq zU3{97&4z)hpRUJc-Xcouoa_z+(@|VYI}=EH+hl`m$UkAwaf|U2!M@;qAvh-1X|90H zSzP-xdQx%uSqC&Mw(+Eqr6T)^UUd#snJpaPxReEsbx5rq^p5flpFBkYdiZ=lM`9@BMH{@bsfnVz-YOOo7U{93)cVztq^Sy%L9KzvvElL+bi;Vgm z2l%ze+f{OI6lkrnHhobms*zzWP7%v-@~9&dV_PeNv87`^6uUgL$5|QYSAHv;kkVPI zT;HYQ${)k|A~|+&rg00|khEu1^0mMEs2sO8+0Mo})6#&G`>nieL3E=~^P^bc1k1&K8d~kcbz+4g1*`IcI6)^dQa$H^l!etjxq$4j! zS*br^;cXp?)w3VqHoy0_T%|Z)TKxnu*-O&ts?wQe-BvI)*Hp{YT!0kEkuk4Y`Nn0jdsLme6P34!tPj*dE%xd$8FN=;=>>wYENXkOD2A!?@F{o?}mX?6s=-jK@VBf18zM8;Etl<8t-`PnQ)G{K8V-DB(1l=%TX%soZ0FxlIC!a=?F=XS*N$}^3hV(T0I z1p!~YSxJ?Ka?Vz{KZ~YVbTm!scybVZ85lCjzu8){<}48;ZK)wckktR#BDH2{@;~o0 z#1C3h-kVx-irZH#!`2lL&_pvPnn+Debv)ZvX>jNoXZ0)BHT+G_0YG`4W1$_|;NO5z z?j&1VRPa}kfsHX56IBXx*kxB^sRW>KL-7Ax* zr%d3K!b-GO%k&*q1R+=&Xd{nij5Ue~fnE;9#0|wYflQ1S1txtPfr?|o%V03AkEL7V z{Uw0b!mr;pE%fh)&GONoxG^GEW?zkt*BvzQSQ}4eGz1_nOK(qSDrA>Qg9-Ts z1Yoq%Bv7-z6*MQ2vxD51{+QT4T+OHn8Z3f^5{ExT0yaORXjG!9O5Fpw`puH>`bJ`@ zYhJ=w*9;l=vjqoJJrfRfug^CPLcA3p32N%1aIh2Kr29~o&)|QDH6&g8@B`PQu zztYgsRT~HxgmC&Bt|qEfBUzrEn{3S)f$_S=Z%_8;CQh#rnLjT1SC|M}G2TASdezd# znYunzScBcQ+?W!clc-)9>4;1jMH=1-a`w}`b#y!O+yWh@8klSi*u-t-4xYv*44Yb& zZunwb_BmMYA?*_Q0GP}zTiGi4cVK%A0vli;VV<(uMsEE?5pADM_>FMVHkJNp#@RiF z!>b*L07XzJso!4TG?w9t+Vz~SNkflZ29$1uF3HnL7H~OA2ciU1MZC3OG3O~iytL)e zo?@^%PhoqhJPVX4Q%EUbT5L)JNdyT7U~3hrb1*`58XTn%9GsJZPkxu${yL8AUF3A0GOF_BWT3Vyla2F5XMPzTy z4|jr8vGP-tVG`}sFdd!-<9F(5^!V}ZBE)7X7wD|<^n#F@}&`36lES{+veuCZeG zsz2t7IuAx4)7g_XqN#fMF=Zh^(k`$&ZiF8^JATo?4lV!qlzG`wa%JM8;RJe{)C`8P zX6|!mm{^!A76$H)K}T5xT_(nPpa5Vv;Bl=nlNup$Shgi?dT>-px54Q`RlrvO+Bg3yv2RSTq*B zkL=|Ov?6tkVbaB&(m3wDq1ZPyuDp~4Lv(i@3IQWJift(`yfl--Gzfh5)(lFq@8Jys z5OCSfGZ3)ZL2yu-?7+jCuHTBJQ5?j<)nO57K~2WsIXHmzVocp7dTc(R9Lkw$5T?@> z0y|(7Lv6qwt@%SMA)8z4XKSMuFm6AYCbYWbdn!)bMUMQ0clC9oCibETosQ@(q2~C9 zkI;|18>Rs6!96>&GyLrr-oI!n|3S#VeZ%{1LooXkVA5RBx6Y3xxqH_su)W~j#$_ch z?PQ)%n>1KWIv(ae`va`z+`bXM5MCaoYDW(D@Cb_m>9Ve44431_QjBhd&p8xR1v@;KcKx#BHO)U~CqJv_)PL%f{Ev#=jlFC$!dz z3nOPKe45()?sX2Ua?)47)$D^OIc*E6_Bv%{ne=ZDM~1A1j=E}5KfL=`D$#oU`GNfK zZOr>VvjH8`?);6N8C5LBxByCQh`iF~wG(tWve=^t@&jPyj<&;9A{WU;=wyIXV<7=f zb|50RUgDCps1vfVThesHwG1<=I_Wm^imwYWgU{Z;ScE`_23X3udh?pyC!P(4c*P6l zi~RH^kln+)(+}S{dW$vqTuhavJM_GjLp_{ksjuLtC<(RadhC=iKixGU?n2-e&trII z<0Ht+eEpWZ%MIKD-JKV^x*R{qD@F}{jD=Hpnj;gIF45U1++H2$b|Ddbt}kB~bdWaj z6KgnEx*9s9K)*H7_(0^u^|gjkkG|_VsaO7+cM6xBm>8{Wlr;R*jUC$afu@${dT?vg3eMKK8W5Zi~m39tIZAe@m;I_)@9)oD+v<`)pc5 z&gs`IW+ENSvzhG}R`jGfHHi)>OBUz{zFH*Zp@AdfxDYS#^A&dsRrPIRLejUnnhJ=E z9l0y-JxZX9-dGw|8%)(h9{QMXh~1NS$XuuC6H1jhHG(5IbA!gOtlpnZ3ntf!XyzQW zy;BW2DJ$-5*gjWoieou%rdbv|5VDKC z=M;bz<&*`5--Y(cpiRyfZPSym5LcR-G8U8N)^D!Yd_93iv~dK8Yi<)^o3W>XU**GBrZc>*)A8tvcK;`ryW!+hYTPD$3me!* zl*8|_lg!d69keB)hx|>am!5+5`xOg@V$)xd8YMP(^_M*pbH#`hJ75y0JkI zevT~tz5o9QsXstvH8{ZO-}MkjIfJ^|YX!A1NY7%4b|n=XsW`vd0+5{CTD&5F9CJExiT zc|Xn?u=~Z#D^YT?4SOUw;A6#UEFmL1gf=s;bxPmkK~LR9W6?1)4j@p;;*3FqW?VZz z9*!SbRMp>L>#NjV7i+}nH7_QzIlDl{ zHx)6YrMUowV0&UKbbW)8X7VCn=GmFJHf8?np=!5x?C4gn;_$fFKKgYJXEc*&B5%-A z8l-FVm#tkP;b3XZzg|}g#$ngFp@N{jl%MfxzJTchbQzhPJ%%}k%9x_;4qnfd)U8*T z1#z|GEIZVhHX~e=UTK44uRN%lo9FWLC+sXSZWVXkI8^vVP`RS0$Tj{Zo#oW z>G}2`05(Z<6)mMs3=sFi0Se(TgdXj!)39<;&!YOy>@ok7>7{ z@}hD;lSIZh0yveOV2CI-J@6E)i=QAUHR+rpLn>&J)XCf*WrPn_n}K?eZ~7(ET`0|> zbv=dK<8|WNw}l*vvx{^slYNlJUYA=#iziaf zUxgIwOpDd2`&X4&LPHUHC|=i^fD2~?cE74Q-j!2UMzddtfchrcZM(f$iluU3FcUJD z%fiD3Cl>h1bo7{-jqC<`+|LS{jxt>Vtq$!qk9>N>t#|9XwsMmtM*%I%cP_kl%Hp(F zs$^%bHVxc}(G4!K3jRfKoraNGk-I*|u|&&W|ZFWV#y` z_BXdBCh3F@qi8IYdW5E=!@ad=(nPAElAuEi9o9$)wleb^p^X_-Xk5TG%r;rgxuuv6 z;T_MCnueFJdSITEXd*rMi~5J%8E5C1S3m-w0jVoGE>}ZaKbg4(QkaUE@tTc~sDGHo zj2IA{zZ{I5?hc802G1L1h0Jnnp{WyDKioIUEeAx6wsM~2ZjIORo>^)Rt&G#LwrWbJq=qG9(fwoc^LEjtfY$K>=DPN_>UAT;g2a;k9KJria>2myUO4k*|_SpY; z0RUHnrH=dX;(Gfx9gkZ>i0j}Y7XpS+Eka<;$worDB?Nw)69K5Ab z?#j^l_yIi^js$J@exyc~ZcvLu+pMw^P4RhU^oAWvKP0gCg73`)uEp|AwPIEccbZ$u z_TWh^G*mN0+X8?9DwDo zp1T5Ss=&=oAfTG#e4odn)~K;0@oH|7H(44|Fd=_Pd-i5 zaq0V~C)epXzpF*Q3j#dyXQXJYlW;W6SKld+)CErdTr1{wA+NC@X=Xk(Va|m?xs71^6 zfNzj0u%QWHiEP>pjgFYbTg{13=vR3hA0;Q<0VaMG?DM0Mx#aKE{2RPr>we`5Ln+Ow zO?vbvPpZt^39sLVJd==)WvR&*6Z~!aI3D*ScF_?aaA;uvfb?k>x0@Y!BRwg?hf-T! z$M-U?g;F8Q=F@xB$f(UHn`f_1AOZHH+HLuXAP8;n4>{h%=g1}xDg1ptV&LRKa)>dl zr`|wDb}^wNgEYA*``cQ;b1OCYl%dImVDx*Z378R#qQ@8e@=(RI`WO}B`!@N-Fwz5W z56|RQt4#O7yo-*kfg1-02e;Q1UzJfGA(JL|xS-?is}NGYoG*uHnevK?xD$nHak#j+ z!Gga>*DPuNpi*A}AhnuXAINiE=1(`&$Uogh21l_#w)=CB(OT=<2`T|<@2c><2%#^g zm|;yj6f3#l#2lX>NY|lum<7$l&8^oP+sDCsY;8Pve}BIU3QbHh2}PZ&+R7wES;$w) z4ZLU#BgsvD`Aa)d$fZO<^3iVtU&|qFrzAr&(<-0Zhfhb}BX!TQC8p|2?ny zP!lZ~Oe~HieE88aFeoTZ}wW<-=`{Mdke|Q2@@^gQ-Tyt@RM-< z@0GV9u|zlgH{&Qd^5YJm8fIRM;e1JojPYseU7*CvDZ419M;@-GNMu^C zNjrj{fYU4D`^-8633xHug#Ekh^>Gpa2cFyO1E_zDP47JZGv*>sBG&hnxHV4Rgb=lo zn}pst_Oz{VU=a3)Tsd;tD37;!6`I(*Kc$O*zQP9v82mi8FQy9u{Z2lI41ASY-jCS9 zUH|^=_nCV&m{z(cf!U+}26hZ{;DYB_=~$@i;^N|Vpo^32jgb`8Fh@hf!C!bgmNw#! z*@c*|GK>29uJGLW$Z=zkoYVMVFhyvBj%LWtb)!GQBHCqlTHNdUoTE2c590_heSWr4 z@4N@>pTl-ZN(U-eVB+;DFiMVO&)lE&V^v#)nf7OAhiWP{_dBWg z0O#!YvPrzscvq~BO|C~sO-DaSt32S=QIo)oYf$J~@4bi#@cWmUJp%zFD$Lq^;innc zK9rm+p(<4TjErCRTUwk2nRUFr)epm6lys~q$PQ9E zp^p5!T@n5sDDNI2fnHKP{ufF6feHP+^v4Z@!zWv%>?KYtVOzcnT1k3kvkDiU8<)k< z6$ux`uY&{mArZcCfblI2T(XJ++wQIxEvk$Mo*7gCM*@1Ss%HNRpxV$cpHMtLImvGQ ztn)Gvm_SOue2bv%E5PnA$*1%vsvj9rT!$SrXZmB3_Ru+FX)AphVq|2jxM|0#%mbzc za1LeI@6A>R^S&*b7`;;XZ*jv1Tj2Fh?u!7rnCmA?z5i_O=PlR_FF}CxZ-B>fyO={C zId`6E{#pEWIdH1g`OB>sFq+8jt~HZMtILwqhpAq#y;u z2_Zs()j-PCn%tYaZ^~XgO2X=v#+kmE6Bid(bSzfP4jkczBEq<> z=lC@iDqYy!JlsgFYK%p%HfcBxTq-<(?m9(QU;{AoI5Snm;{!0()@*xxD1`QOXG%?- z+=j0=RI{-B55xa%k)aFU?^(i+*jh`JD1ZD5D#-maWa=vj4&JK`FRSJWma#pR{;H1F zlC1v6WEi#&Eqam|C+=r*Mx-60rTu-mYs6(&*%MLk8{%r4MF{WRQCAv1F)_o5g2I%H zuew)b_6pEZVh|OD@XpX6%O~?IsLQ%UuL$tk0h2>be*}{NFZ{Iz5h*FN)|)9Ff$Gdj z^9nTl-#jn({qybtU5{^+54D8<>2<7P+$(Y8Se06_eHbTRsxOdCQ1jEu{;|$G`MIeP z$TAb;mQqg!WpP~3wt19mEH&z72xWJsrk1xg!Ej)1t^_cwFlIol6p{^04^m%;LaGCq zqD!Bj0AsDv>0~L&dHp8b0skCe0?XKJ^-i!r0H()hIvLlYGD)3seS!M{r;p{$hi~^mZ7t@zgmg>1wEVB2*7;K?E@MXMbLNr$xLJ#7bv;J~eS&WSn}3hN zGN4H!SVPVhvskaz-L; z42(#6U1>7JQSg-FCal46i@NW%j#tbhQNCeQQhwX#R`U&=3_A(N1Bqim>VFe}MVX@w za~=T}hmnIrf%hj3^2zssBxvU0p{)QamF4-MGntLWop3pDc=(b{GUTAoI=$BV zr*U0KXjqHvXH+cSuLFIPFkrq7@A{GhkLC17>-h%SjVd)XU>*w^=CjkrayAiz0nV8S zi-{?JntuZ3@7?;Ul@7QT!S1kqFwPx57NY(~&*furSqrOgP}4 ztP9BfW=KF~ZT*icfg!QquJ;SgDk=c=FMbr$@YUrtDN^ae)@*fQ+pPm0APXER%mcF60P+dAz;7LADEe_K?)mq^-r_ z+%!-9{!(Kgq?|Cj|681guLWFqt39x&>Xt+w*4h8FAl>Z9_mzM~Mlcm}A$6KLPJdf^ zVx4-{J3S2)Ds|cwPdD~oZ613KPWU(!dSlB^$)@Fj;gplA`#=M03cZBNw^@-23j&v(IDUsynBlllDcBVZyTAz?#lcnkDZ zgI~okr4#G>I%kLkrRPfyZJ1`O-DhA7>3b@wbo1)|#b)xiCmTb#JyG;Y>Ua*BOvsd? z_VI!k>C=;jY}@zK2?d>Z!?$eT7V(Tpq(A(x#sAm`h~$gr_0d|{S|;p1{d3I>KX_c% z40Kkb^>8fhYx{k5t66E+*vk7LK!u^gIheL_?K~s`|4?l{k);lk?LdgwEx(B+f&djE zV9W3bxCtvbI&zZ>yM_ZVF=ox}SpSu`rUm5iyTE^EH2XL}T^7RbyEHd%5>NiGiw59@ z0xV=G8oSurjkTI08*!}{RqD1^}nf`0EW)HPK!sUzabR0g_N%^%7j4xk)PzAzedg-?v z%Ri9gfp=;}2`GtfPOz0LI7N6}1GTziDJ4g;Ght*c3_@xjUc5}6Z5CAuT{s$h>*#(^ z>O8or)lMh+Gl41QNiHcz?bb|~iNMryzbaRj1DE;FCDF|De7Ny20L@5h3^Y!zahQ9` zO9VE02SF|@Q)hiWMd@FjgfuHtzv03S3X#tmG{{-IARy?t9Rsu<+o!r#J;$B-Vxw!D zNdkie_i9&ly8G?$&bCe&s>GxF8AQcL^(ZLI3*BVcU#rOJF}e?SQN(xp|BBc@No!ev zO+ryQVDC@^I9XyaLn*60CGgC=@4R26T$)s7#zq33c>%Fm_vTM-&TNSIr#9M=djctX zJ~KAwG&NPSGVgPoX~bOoX*IOlSDXsQNVUP;=d01M@vRhg#$R%goru4LbJ2gQ?lLz6 zRt1qI;pWm<^I$2+@K&F~=^TBf!_6}KGD7bNrqbl`qR)hWCWedQzYMG4X+P_X?F&eBG$p6&DBIRp4kuf*x^i_-@{tM2Z_{j!O4TcQB^>UE2J z?Q(7v28#D!EV8J{=E;)M=jd*e>UEk;0Wcw+d<~5Tf5cu|CTLf_|45qU%QY&lnuX`Fgf1*Irf@dFxa;%^7F2MKimYofM**5~1@ z_ty|qLd$x3W?SFu1}T4B1WVzl;Eb`%6(vy6C7z9JR&E0^FX^&uP#ns5P;iB7)By(69mD=Vuk03J{ z;HgT2ay6p0i45{Xx6~<&E*<^KO8 zr0Sf`mlt+yS&d-OQi0y{QR+`YO$BS4;yAVO_rkI&eyrLftuT=fDRNqkpvuX+nDjL+ z_|R4d(xEhYV((6iy@-EmDnHFU1)L92VkxG31GZ1g+O_IZwA!iz2m#aMgKmwNv^(4S#j#$l5^ zd&YDi!gTVQ&4Qp-go%c0-F53CoZ6un7$D(7da(8K4grvCR01qL|oW`8frk+`{U=( zMTKwtrEZE-Hd1Kkr);1-{{d>C^Rxc?tMBmHPHp?^gwbQfu55NtUX6QpihTiHg z?dhs8Vwl&_3&E={`>`uBCa*sU7+Q7>&RntX&2X!n%4VkJFEw%@H0BElD@RXLYQp6p z4d$cVWqa+XtL<3b4S=AK_t-oapc#$bH6x^oBQNW1MDA4_TiaY<8%YpFP<&;;8Q;3s z&d=uHh|GQXy#%|F#fJ(5P|>-+OCZu50?##aSa=5w518{TB4*JE+_zS1F5SRy067Vq54joP@yv^ zB(yP4juv!I15M~~)p7ThWWjBu^}o*|0X+an9jMAcVLXm< zO%!okNrT)n{YzncTHWBfZxFh*(n%V8*;$+=V3YH8$ddI2koe&59xyMDs#3X>n_SK= z;x8X9teAw@#k}_&i7OQbq`#qQnfHpaS$;em{O5kUg9oDS{tJoa(Un_~z44@(Hl0$b zTY~GlezXtbSz$yNBdNuXc)l@}sp@ZZt_F2qBZt`eI+kshL#|nL0w{7iJ&<7tS$~t`iUp?OyN;EtwbrzG>L)EsFO5@8NmFcjCCYZna z6XOvlfczyxSQJHV{h()n1 z+7i)lZMItXGg6IUQE0TP>~=0+k3rbi9n1%AGZ!WJcuoqFFb`LSp)g(&FMufRv=9X? zy?1XT_0kyL=hts$Nh%Eh6rLB;Y0O)tew4%p2R3~1`(}tL7Rswz`YVsETuHE;(JWt) z)Lw@e%=hPtjjC0T?W`XS>iel?mQ~CPSKgE+T-NK8p}Mq|aixaKwLrCI^;ZFdIrVM# zn95J%jt&1|wI&&k#AA?)Ko}2SM+L{3K_WJo8GU2|LKQEu)AKnsy7Gu@7fFqPybzsl zQb}igveIsd>Poj&bLDhb&K;mL8M^%~pOz#waojO#{sHLjGJm#dSEQ=HGKq*AJ0$6Q zVbdflQjy1ZJ%EVh3R+k43$JzWdQdGLy2kqW`&X%+st{{uqX#-p&B^a$*mwyvmC1Kt=_4;$kDx>Dprd8n@CkxDq(L)x1=>R+|EGhnr9Fq0GIeHYc-B(Al(O6eA-|7s_&8^p6Mg zI=9bxEemRh)y)a!U&{N+-Db?yW#xk*)T}P`-Ux6QsjT%r#p!s~K!xW{ zuYe{3f|VJ7LD1HTD~)@Do0rBJzzzW_hIWe|;h(ueV!LP;P0=)K;J*rgk zwEn%cG(~cqlUuupSz!%(%oLq-tghPqnJNk=XjRGA=lyJ%ItY*lW9N;#0$>bc%W{ux z-Xe`5SmlgT60pfi>NP(}l%Zp~{q~OHBX>_idI%8fy>U~?Y9l>wKC|!z&gzJgztCd5 zODfT>u9BT%U@Fn!mlK0#X-IGH0juK`Q8owgt-xpL^m&lDDMNUg*rx0hd&+o#VitJ`0v0ugY_|NA=x+JwD_tVd=`a{D+uOGxT0F1omsCQydEsP!Em`rqU z)L13={<1dgQ+92s9K$GjzLY!UIS-kBb#qX2<wT)GDyhI*ORIYy-#~3FPh@}P16qA)UG3c}YC~Ket0|^!4)R?+Kgv3%W zuIjgR(*T{8b%fJ7Q{`)1Bxi6yNz`yWD z2WYQTawIZpa(nW8{D9lAFJSY_K>}D8wm`)q2X888vYPDMpN@aKeyI^Bho(Bmo%Dp0 zxkKV@??t`2lkQRAs1IMBE6VX96U)4O;a)Ny5LrG!O1TO_hP5qmGU>0uRgI#dE6-fW z%3l!zOV$O62LbMeBQRsvDmr9v1!(;%KV5}O#2+}Qmx2-)q3jDK)XD;llSDkv;{f4 z@9-lK+S>S^#B?6bAKDXs`^}WMuZT*rYhUrC3Dx!i%(o3ay>n^3POF`UULuTas+1%g zO0P!YVB(?eL{^R4ZP20re86VApBY>2nVq`_prqZUzT9xp8I_ONk59l(w*Hvc&3^sX zg{xvFFgqif-`EBU~fbA471z=mEJSq4GKK{>5@DF74{{hA=FF6hYc}rVJ z(wd}#2fad_qUzks9deAvIK%B@Z`pH%a$e9Y*ehm8d4)c1rB*Gdc0B1N(d1AF%IxzB zRLhqhK!uvmYLm0;<2v;6P^pW=Z7~^|0pecX{0UZ{;>WFYDdbug?xyTi2tVRNT^w0i zKSdE?K^V3tFK1%vt!r$9BTXrK>-v<5iiWe#d6n8+k{mS*|(Wr#l#QSN_l14VM zpWEU%(lw!9<6EvbNv=FEjTs?e@X*7U-r_q+bHVZO9zh3WvZ^Cc8OxqeKwzHoDT;Qb_0E7ju#{u5i zM{%Ct)!wf@{R#Wt-UANAfS0qU@uKmS*ZR98_8(=ggg(0^1WH@?{=F%_+-e<@TCbDT zk=Y3dTU$)#srjka1zDd>46aw(cL96{zC!Jgh3yeV$WOqP#~M=#pgqtZ3~d`79#_IfSU95dE>!_Kw`tql;cs9 zn+PCc!Jl06%PzY(D`2gX{4!sQHwyWqyp!kjFIA130gfg6Yi+ba`RjlKlSRUiyw{nU zKW@iSbVGlVJ26i}$cTYnTzKDosd;|FYJRmH|CBq5xD^LymeQ&NZSvEv-(rP-Ahl6f zxY~Vf9cfA6zk&eB%_;fwdzr)PG{Gt!c5*iHcZvnS`~X|V0mkDCQB8O~p@TB*i05#Z za--(0BVntkxA^JmMNGxcmPnFmU(v|+%L4TlR-SDEt;qzKzjq#7oeBQRftt#8kP^X9 zOZy`!cpxua$9D-w1gsRLsj`~A$rd)TbB`am*@!V0a#o;G{AB~CO8!3W>AoaSFJatr z1}!tV+Cf$Obz!;pXJ4TmHyf;QYK@9IwI+J+w`w*&^2Ww~E(=l;O!XjX{;kT0at5Qz z^AyW_fq5gfXWXkCUBi=0$Kp$6-Y9|BdxJzLk$(Z@s5Hhez`&!|sLW{39_L{KUhVCH z1#3=C(Ysq$oeuR98hsWMLmbcj_uOY`mgW)KywtuqEwj>t6@c^ER)J>9l(3COuml0rngz4dhYvOY-o|vV7eE~PfA0O=i>~JYpP$BS zF`KiRB8I5^A|=%EdYxy*XHKMXbL0VKcy1WGwm^NFGiw^tPvNGZ;ky|a-bG%o$K6WH zu3+N`zq)Ni+T5nhDidj zLP1?wcL~}H-*CTO_)Th$LwrKN4DLJQK||31qJ+vJhlP#R7=aC;p_61pl3M>o>_l3R zG#s*Nok=s>c(zsB$nuOhfETm4Z>ZtKYAnsR&S0ziG5w8BB`}t`?tSFeh88oqy(wv9 z84ehvSuaZK<~rABVZHkyJeFB5$$WkOByMWWhSK|4)y?u&Kp*_kImf_b9RWDIc;Bw? zqe5uYe%rTZ2eJQ;xwj09x(oXN1qT>KU{C?+Q3O;Z1Zjy8DG^kVZlzngV^F}LR6rV( z?(RlG8U=GRq8rDH~Lkq zvD0%SkVK|sE^+uk;#Nxk;df-ai;WJS8oaEyOty8e z%c>z%80nVtzSoLKk4|TyNM#va3&!EcjmDCCHv0j)p(tyAw6YP?ZxgxXUT)@5T}T$A_cKWpBeC? zEsJ|)++N{UD;MKf&Pua}P2|gy$n@+=^_FNCuPu=@{g7mANc!5w*;LadEAt7y^=Xmz zh7kYIaAh`b61UKH<%+an@#S4hX#Ms3vR>ru1gAsRJZfhL#MXKb}V*v8=>rSgb`@-3e@ea{htLUis}{0mgk*b zrxUB)vxuYGj3&ZaXp?#7Tqw4(dx7g?EF!D5v&wFO=%6FREbI;8ZDSEr-@U^*J&Aq4 z5m&xTnCXKOA=@&;g~bBwgD*PUIR%)z9vQbhB`~n@A%z&rm8!hBYu!GwRK`yeBt6kT zD9T97Czf|OvO%cW;vzA~lyntB~!7(yX$ax@3V;V;7QA z{@(Az1h4A(v~9H(2ILrNuL}vFpV;{uef3=bsWK>lZ}}Ak^|L0Jc8zi|f3sIPHPrdk zE^D8wl%wxTsAE^TY1+??-w#S$345JB-&Q@Ob~#h%qN02jtL;2SDLMZaN(sGy9FA~` zPt)8ndlD-~#jai#?fN=&v&K|kYP(Jz(PVSKwksA-Cg}bAKx9*dh227;dBg6i+ZZG@ zh<~c^{eoR5FZ<5)>UDbN7IoA>&kdqg-Zl(|YbG*WO* zGBJ1+-do{Ne$T0i-1gGr3c_jS8;1*biPJgnp7l0=SlDoQZzrO;e9we~Uj?@JPN+E~ zyiMTgdCS~Ebp!h?A%8*Ru=}?9d~}gu1R@{jgU1yI2UUY%%N>zb>x|4EbKaU6!Jwv9 z#Jl*l9!)0{#rO2#%GnHleW`Q;m#Lb{rf%l_$%4L@P45M$zwWX`8YXC{@5K*Pj7&(R z;h=4}Dr2pMKi(VDViwjV+Y8?06G#{yPP_ ztss9v?m1egr3!Sc0sL@>QL~ZS&vY8r2Iu*i5&eWefmj%R2MmIyi(mu;>&7uHtYjOMlWQbu4E=>^A$p0teMz2jo*jzp!j|uLJ~PBKais?( z)a@jNLs&W&oCWY6>dtV>DsPyMeBr9^V9$AAOvcUG*;KF?G5L1xc}Kl*IL=%gNnXNq zdjlA2a7K^Y?2Ob@Hd4%F^CEcCx7c^yW?7zhyU(Fxp<20G8F`azl zpmNEv?VvnL!7Fl#E$nPax9kf@BFuKdV4?3kR)YvTE`+|P?&+FFsn#kr6qt$qT|KPo+D zvu}O>XD<#m^xG4605x0)3&<6{|4dO9mc@rbb{`9Y3H65*7E3f2p=1!JB>PB>PkEis z91iNVYdk3@Eh$4NrNM6H>TsG8%7Ob8#LrOlLL0G)Xm4s1YdG-EhPFp}H zn16iG@fa4-S&2(k<_-D43`JFV(V>N255{a^RrG(eg?p#N{{moOXT&m>{#Q&orHkAf-tUUV&NSP7Ip{D%Jo;6O?5o@|NW-$YJ0-VMv5Q(9pZiB zVhN|=RDj`cN|n0pyS@65Wft)#vA@|6Fe*Ijp^JY;A;*XSJ}|3+7D87%^(S@c&kfuB*f5xv&O*F=naK@#OiBXp}dfdvC`fKA=YbZISr( zpXu{pZaL<+;D!);g;Aj{NVTL@gH_BaU4(0ZHSL!ZhndjZi~gVC7z=U@yt``%5L@Hg z?Y|Dsl8^8&Fw|LE3*X!r;ti>~`8$(tAXV{kE(0f$`AX*Lv;XYd-5m-9^cEaCS%~#_ z-*aH!kZO%ev75C2A(g!Zm}~CF4n+!BKb5`wXXvs=7WSYZbYp^q%UfWj^BITg++m+e zm90RFm(xa^Sl0SKWc{<3Ebud~=a5=XqDyc8tY}2uWBdY=bH?Ui_i*7JXMtrF7oEDS z>~qrgyK6GEbtg3Y^9-yTqvO z-@l)8_`^XH0NaGfzmGT?E~{jlYyCy(SDZxrMjep+yNXHXZ%_<=U7e ztc)pyr2kL2ar$9lI}(hMR0c-U@wJuOpMP%>OGLqo;u*38Y&JDq0!f`fzWl`t>Ax+eBN+&f)_1Q*tBJHt@hqu&c)N+e8D>TyUryr?AM zVOUuBZ}ofs05QA)M>bL+z$(W|9fuOa&2{%jihSze_VShN&C7SrA?4)qB@Nti+Y3Uc z2h@Zfm6;peeo)p#?ElVv^ZyK&XRsE}Ev41C$>0+7iLmG9sNhud8yUyNW>-5g`d$2M zsjdeJJF1kd{b;oH@5QaQ$fjhC+}L(TPj%b71s8%H z5h3$m8@x<;I5jzb%36+yBtD-`YcN=wSBMJ%sOi`U(v0*RtAJ+I>)1vLW z?gWbn31M{ET@TtR;hRFJCUDZM2nL{^5C5KgkalQoAr^Vq`pFh|zAS-nRZcF_ z@DN+FOSkoKU_dR`^+e>f*|t3XvqwqRs@%7cA;N7@0`XZ%Y$mJioct;A*~u@b8sGmF zI5_OAM_%XM26W)1HJJjpk(KlbaI_*gMtAvh){&6!lV=H0F+lz5XC?*ygOhL!At@{J zSUyBXGM~jIWJ_epbC}jM3{IJSDAx-nibyzDI5#vlKKj)0i1+B*d^et`sxtN$DoQB# zDkP_*%#NVaF!RT)qlC?5qErzmbQc$Xx%NJ8a&mHZ?%0OW;?3tY5dN203YUY+?z!PL z0&grE23)s+49L)xKeBd;EBENZrbjx6(;cRVTpT44+OA8u$Bv-26IQxuq1oV$nOg)E z92;u?7|uZ_$IgM=#VyG9DF1akF9lG(^&Ha1zi-@1>W48yWJ0X;rJt?Ns`x!Z>C$4{ z?^xRsQzgsJD&Z3^T3)%}`q#*vyb}I}zm#@u>*9@Dw?2G`qE8R=rr|P48sB!#sWrT& zVvNUe^ttOH!lK`8m5VKPEvfH{zdM8dl7vltSZ|l91ef$13YTS2_Lgd)8G+j6!k12u zf6gGXXaWt-^TDAgcb=?htp#bNj+fNGsjF0c>_cj`mi`N^A2i(cNvcDHQ&!&_CSBT@ z^(@T!#h#p+`Vs3a?q>_7ZW9xOPbFT|)s%N$V`L`aGIr+$nYSIyh-)L{9yFo7AHZmr zXEdsmMa9L+3NGaU6~mCh^~N~>6lULC?p zd+lS#dja>q<_kW9W3TXY=OUO+5O^(-R?E~3%z0KJub5hj37VZVj*rd0YCv=BSvOqG zGU>J4xgg^w*YfllOwr^0+J%P3`JX8l3b>XO5)W5?{raWQG{#vw1kPguiYOVMpDW}! zha9u%bI|-pYmY6+QV9U6+7Ogo)J>PDyE@abRkfR?;zY|6g=n&(0$cC9oZRREpF5cE zdBnkD6f9&T^aw9{6rGQYPmr|rk5JIf%J;}8U7D3o6_BG;!UwWgau5G2MrwkDC{~sN4sc6U#o}XP+M(aTy@U4wcrTYz+1ve>C~wcS-MSY2 z2J7rj6XFHY2d^E+o5Kn}jlSzKUO2J)Yhw?8p@TS8T3S4SpUcGU&T_`s ziC*VCOif3^W{rBYM#Hx*vo)6XIlW~$hg^3tWk*|+m>@^m*^06P;5?1n+Qk2uoD<8D ze9RD4%`@cWpwrLS|m7ghPG1j0pb}BXBVgJ#65d_YN)4(=x0nir=$`Dotr}S zR9CUHNev!D({xpG9eq3bHD%ZOv=(pju|f;PljL0^uik}jwDl`<6eane}n-FPxrpv(p?rRlZLFsbWgcx8Jq46Ue0^!(P7BF6iN; zvu=^wTJ@nPtcuTktdKH3Cx_i4Tfc5WK=ct(OTb8uuBU=e`{m20fz>{n(!T$R%{xtF|Aj7zGg$jt17F37eiBvnJ=RoF30wWy zcG$~`_4YCGk=9oTXCs~39B}J zUH!Wg-^?N`5M>`)FlgM1jwVY`DCUE8RyAR0RltU^8_Yt`(0vZts?=-uJI&g~PU=&i!`$0%u#{Ak1chK&!HR!*e$U}6&W{La4AbWQK{=%aTbXQaJ`x8)7 zd1a6I<0D;-$xi^j`y;5DoZJheM-E@KE+4zq9x@l(Nm+ApbEP+N2{Dm7Zjkyj-e zH*TK*&h=1?D=IC0^Zv+n{$(l_@b3T}Y_1EaVAi}$MCOH!SOQIz;c|{I>0t(Q46j9B zw~i%6%9GrMp*&P-N~fAor)E|78vZMxV1<(EgSK;UQ20g~!K({!;LPLo+IAVwJ4G2aa5VKZnRF zzgvP{_rRkGFziSOQd&B4CIZ*hBJl6hw zEqVF;)yfoA1vMZ!ckq!5Zwfd)lZj14KTO%wdJ!O`?|=iq4;iGx@>I|G-&^r{Pb)M8 z!X;}8FeK1y!Qb~d3XrhHN@oUx@#wm`zkhEnDJAvs*;J*AYgazK*5WB|&tR+Hj0w6JPC*&} zb6Zn$SnJk3117c|%~J1~R?qT8I5a`bqB&!ggh}BuUeg9a<<@U2-rqiS3*#*172v=x zJ2UK?8a=R?hbmEGY{3~1^-E9_;um9ez6s`8>iu$4 zCc3nJFo>NWqthQn0d80?WL`kD*;5ODF!3=h2gPDI1;+VT3PJBVqLlR;>gUW zb~)`!sirB_zllqACLqyJWHRwUzM=}*VkErioky?05s1j1>(Ps4x^?T(;SEWfC8{F@ z1F?reW%l;=c9a1PMi8XtB;Ay;PemNip^D{P50E>cl=LCV^)S#nXGyRWjUau9-fG&9I`qEqN1$Eri@Smg6PgB! ztwi(-!=l))a+VSXQoE26RhMk^!;WSg?Ke-9Jj9aI%Sp*noiU8#A`v01%wda zpqm;*pTnLM_Zw|DljseDR4RJ3| z^szSYFd-`JrOvfNYRIiv;@4!3zIx5K<%Vnef?=AjDF02Q)i+}CAGQAXOzx}lv#!aT zKVmH&zvwU-s*fa<4!bK!%Az*i>a4eiOCbz*P?Y zR_iIur55bEjhF5CEFPR41#LE*oZi?|b6bi{6&E$5Sgi~A_m^skn&x|R2WKqkD!0C~ zj?boM5*A7T4@tKrET7$Z%fgNqktJ1qlI@`;&7y@lOb=-DaUDwt1GdJt>U5B$^~a7z z?LW2-Ah~8G(K!!teuJIWZtF;;ChactuQLxp_Y6 zX=>_g+-hPj8~w`F)_%)A!^F}KTOB)3Ez=Li4Ik(iaHGU)q{N?G$c?)&Z%u(GCCCPxq#FmkfW>svE%TYn)1dOaO* z1LPZ(U}^a}{(?IOn>7Okrs30No5OCJdd;7&GDbV+oMT)#uR^!=`yFe+N126z5sK=P zn3R-9G6pkl8?4bC1*Qy;mD^I zIoY!Pbmx=5g$?l5wEO9v_m=D5MGC&z36o2%o*MP0WnofCvv|CqtRG2VIP6-=pWejq zIBH(T8y`s|xHS@^QrjlDn>Kxqe|k-nY~ccieWplWw)U=tyx~!hbt=W@1#2FU57Dqp zto1cG{Qi!V*^(@u1Y$hGZ_>kNx6ixT7D#Dc^fOX$f2||3!hg{=(FSa5WPaX6Qp(N< zyI$MC#NhHmedr0qDB<@I`9P|(gQxb7>~7h$k)X=g8aKTaTk($p>LiWr;dcyS{y5bO zyuQZWppk%xg_SkLWuv!#@b+EkP~Hqb?}&S3zJ-lwy0Y`I%Vu%E^G2^eyUpw~JHES6 z*U{Hx<4AlKi;%e=We%(3AR4oo8U*TP*>74{+%YP~M*(3~t$4IzxjLZkOCzAdWj-`7 zWBjotRUy-o*&3mbQ|;i;x+^w2(#MP-^X17$GBGig8cfZT9wWvN?2WV65EeRg!ABZm zZH|?>$GrBCw`8+-a{8|m2b-=qR+_JfthT9-%VYITuDc5$-??K9?QeQH8OkxZBp2>C z1QxdNML}A`8@16zlHWVFKG$8^@4Ua>Z8;t5UD6SYuqf)Q=y)8#ve{NVJUIDNoHj@~ zSMOvWnHuFPAZ6Z?ao@iKEtH31Lu3Vw9@lI<{Ei7uUHAh3$P}Wl9ur)AlPC3WsRG!J z2F4>BBmkOzmXcejqwRmcVaPI_`*ndpLc|y%1lVgi6CYC0*8=qXI{kOeiTrf<)_iVT zaJPmNvjJ^AmDT%uYwaTFvJ66G6UYMIKv!rt{ZKV8C+XCD38;COfcjR;-6NaE4m}cr z28#k-v7<#o*WL}a1DS{oYP zxU9CzLPZjehBf=o=znF=Y+UF4KtC@UY7DqN1I@f zm8-SP8o{;O`-6+FQ?_j{S8g&kft(XvT7${)*Us5bn8zwM5;NHi;T?(E$saz&V_MvR zRvaGivb*fOL5HI7-h;bFY!eqSwTeD!h}(8o$O^68L9LmQM*VwoI&kgL7yiX}tb!qQ zemuV-2^Z+L{N47xs@V=G8#M(}Pn_;L^FFxFPsf@*LOlj2*hpJ|?` z0BSz#q|WYcyagw4S=T{WDYF%Ss^N4DxAsX0ah({Lj&sPb(Mw}~{4$fRk;V#rc@7_` z*mm5fDIX~9Z1kHqEsfT;`~ryh!<*LiinjD|OUk#0RZMR9<+6TC#jAqLP+z z0)xYKe#MCla=5f`c4KsSz>pdY;{FgX6;iU=mqH9~EW7Q5E>7(1>@4ax$a1PV$5_`7Jg*p13{++*L3+3W3-A3)0098>Z-WB=%c+(KUb!LXRcSlE0SR%>5x0ZYXpEC! zrk}aZ=6|f^8X{Z4Y!X~=`v*4d9}q7T|8CNJpo3w>(;zFmr$$~$!j?-pFo0cmY4jN{DTW{Acy0Om8kfQ}%!TOps4|fzXn1;duHmq{MaV}ji zGBu+_mZfBR3cbU}Zof1V(^rB=Z5=@6yi|>tGw^X~pbsfpC1pL3(6HCmZ_!bY;SB0d zSJg*3?93$UV*HC85|VzM$z~4S<=@}gLAumop{sjg$Ibu4xa+yc7U&7gc{=u^PBrp1qB|ZnJ(#8KdHFJ_4{IA)-Xq4o zOOV388(Lmm#bw~?zNU?Z{=wo=q?Vob=Rl0v1s6e4<~<0{2iGcn^_1Jb3&;rp4N=mOj5b&n#H zV{-xz#laNSvb>R6QobmFKa6bTL;PTCNPaZPdFy7)~+2V59ik(@e?FDl;W0gZ_ zVUwbUgXphc9Xbt+QsXO4tlZIvwcKWmso35YyvfA$5!{c|K)^jOoQ;6Bg>J3Zi=f;=D6B(uG55-nfeadKK1DJEGe_NoG>r2Te>6+=uX+&?< zN9XEk-R8}V#nF{+evhJEzeJjBrV3t0F~pwr4mT@lxEo5Xbl~OXxEf$rC&@8hbqB8` z^%A7?@<}Mzt_?Vl&Ez@KA;T|iRy;upM!LLFstD0^c9rW`0~PW%MZ5ORwr_rSct+B zFD;xy*85VD*$nUKa+~h!Y%PuI9dhV32Vk(i%jwQh8WLWBoxP>n6GgZ3khf1x0rgL~ ziK!AF1!=&;*^vDSvyXP!2qdNx^FfvD1A0BW^wZWMt{aG8H42UYl}<*BI2Rj~^ZFG5$Gl~we50V{q|D64 zw87ldn8gAh*|!WZGp^5=6%$<`YgG3w6>V(tx16^TtF#Vl#Kn%NF2vM#-0GcP3FH1g zgs0|yjnYU+opmpW<5=Bx`-kU^CcAK}`JSq(GAS!7>s8>^?g*{Dv#01WS{SQ}O^4f$ z{|H>!naeEf3!yP~bo44s^{T^_d@RM?0jXxervu0#tcFvvW3KH))XFqrVD6y&KRQIp zK$-vq!~ztM#o39A6cFPDm2}agzag&@~} zgJ45gq%wVk7m=LfIEFNd^BA#BMQZI^_9Z7q8Qn+K5(%lH(v&+IZ6+Fn%mPwd7`lPI zn}gt115bs$ZieRmE)F3TA^$v^!)$WmfU=_6%h&gozg@sa`Wg=TrrDJQh+% zSL~W`NYxtjhh(;b-gJ;j5cskWpUZmw{e0*>ha7UE{X5{cSBK^AWP`mx%5YAktZb?9 z309e`Us2SBAq-zm0t_sOt@06|*{#C28W^KL0V~^0UGn6j!l`==39P zf(HPG>jk5(5Sn=LvOy~r3i`)^vrjP4N!?xHshF-ZAwvYNam@?Wr~ZOd4K8MVyXy){ zaYbql6G3Rf`{Jlf&BYD6M=+|CT8!@uqxDcaWPWe`3E*?w%ALP$gdh!3#(bnRrOL2~ zu&`T#(QV~Bx0skbcfMPZJs|(-ozvUfi>Bx=0LS;qPhiLc%>=e(s|!nW*)Xzd89qGN zr03@5zNHrjS30Xqphrg_;zby^IporI8|CT-?){q0ptu5ww*DoVWAO8uo$|B~ZZ!pT zj!nA;Qh0OD0I^hgu+BO&Tv^#G7GC2DJdGCnB3f{{U-4y9(lAj-_2{e5nD&fs8gNoK z{C=xvU=vP_jeP&O5%3X#BcFVr1*x^DZuALy!mo>>Rj$JGDd0?soJ`>GKHBaBK)v7x z;aaE>`O2OIkvMo!Muv>n1@h;pbDJV(CxQJ77X|$=>;~;xcKKECt#%QjAaHkNpE@bu zN>@(iw~(nrv@`^+>r;b=?FYpv@Su!WuFUT$gb*< zaiH2W^mQ4)xT*%~f3)VApXA!K%+*6b;hrq`Hv@*UqOi1dUxVmkE(l7c925MP9qi1l zfZ(kGTvd9DVoC6D&&skL@xm7YC{6|{?sMLhe)m=+9Okp@o4+)sJS69R9#^UYqzZ&T zO?%s`gSxSFlw2kjO{turASu{<>nA8oCTQ1sg|4H^=46Uj{rE-f=43DdVIDmxHE@+}QOoZHkK&S~IA)ihpB!=mb z)OOqesIA|p&{L#8Dr!{mA4LeC;XV9{^z^5aTy!3THN=o%pl)V2c0iOP(#kXTUZFlL zIGDk>JHy6!6f~)UC0+U{%w^q9Q4r0%kBR-8uca@ia=IEp84r3ovxnxKbQmRyGM>P19YQRUQ+S|jNlm{oAA77#L^C* zG@UdZttz6Gj^GFR?ag$63MId!xd(4-4szG4Yl`OuFM_lVy0v2&RA-AjJiz%LwLF8s z2%wZ8q~o26uo_3HnuAma$bMQ*McNg2{PYvu<xjSlGkjK>gE)57(MPSVP9gb;=jJ zQs0etDQbRf34f;xE)DzunEJrd%F1Qd<~xbv4{=%-osfOt)oc_UWuY;5H`8-)h!6^H z!5Ugy3-lUZox3#N%+Z#Y*!2S>m**DrI})TFdqM78-5=a8*gKcxP&%LUP9R;(59Ash zK#Ih=H!R;+XY-(Rx0#mH=o6;MW7~^LSJnMBF1fP1GOXJkgUG2Rgn(Kid1r;7)8=#bSm{z^m$0VS7&hDMY|9W#{WCUYQYYM5!S@SH1n`}Xa4 zj3?nm5;Py4KJ1?Bo;~#*-xPm6$a9Ssjd?YsDd$Ff_r>b63W>{S72pZ(M?QD z8hQxchnGBd|B^UN+i%lFFwU3By3Y9o)-gmqOyQoObT_YhV8cQN<*bkc1W%Y z#QbLO7u8YMl?F!J03+sSa&mN6lBv2YIPyI-7;^YZG zgQN+;YRMt0c&J?c$Glqsp7iv*qON<(;)A-moNWsoFYH7qH@{$xrCGyN6k=qyxrnZ zj;_?3_mteN(}Ye|H@I53juu=4hcyhpCXgRyS~p1YYyKbhYVo`hrg{UZ9x8vBOn%Cb zXBd85L|9l6-hKk3nzzNqsjfEjoH!D{--=aCl^|Q=za`K?b@~mA0a<3&8U*>dOOX1_ zpw^$Kd;f?7_I?f-{-_RlBnU4VMuLW41JQ_x)FAvPr{(dAI13HD{By`llV7HUPb57? z8;CGSw0K2+KB}X`DnZIYeLBeT+hXYCj}ySesDqFBv0%Y@Dl)D82v1ZX?6%gvhXiau zhn@7OFV}|yBxYIG9t!-PU$Z=EEI6`#*WaJ;ErN|q0PnQCMS!p526yCyM%{Vgb)Av1 z0rW>syt*V~u%)Fo>AFWK>JUKlbBP5EqZrxG~jyvj0gcIYGt(3MitxJ3}c7O5D z*)%u}B<;8oXI~V>d(w{qgL=5H<9$)|9Dz|?3qSTpV-P3nr18_7+ynd}Vjksq=We7m~YfMj+lnlx| zxs^LKZDZ}EjTxQ&c-U<%V4-u3HCF?yKdx99}`Rz)SIy}c`Q&w~=~{MN=f z(PW>;9+-;7Qc5ra`RbpcdIy^p_ z43==F;AsnhdaK{8q1M#VVvqlPOFI!&s$8-=BqwPtkM{G|$ul>md$PZRYsT`8<5N;@ z8Pb==Jr8BLD?=AzMVtIQf@Xb z`{$V2^$+g3qMhK9`*qqMZ>;yIj?$9Czt1I|VFPTYEmCy+mPG>!`Q8VP&oXPCEPA&7 zkO;XuHgHl2z{vXb1mSq%^C7{(Nd9J zT{(-TCHlIT;z9m}Y}_uDSAP#H!3%IYLj=)2nt6w-fTA4n&malpWk_=JQy75W6B z^kaPZToI6bdOq-#c$MRg3Y$3vAQ*D?wlxYTBAz2GBjcAu`Xxn`ht*}f!O=hjHjsn= z0H^AxF)e(oqbv8kTcOF#*r|`f%Q=5e`@uS}L1DdPz3oSHmcNJ%eYxQnLvPW`7tMGz z$Hd5T@!s1Dz%$!{RALA*zl9k zR?nCyNN`hwWy8766DA&gZs|Rug76kj=VBqSj$rhpW7XG+g~fa`cK{}k>S|4*l%`5- zx-(|sQ5lL1X9$M^I8V)j2k03idQ})4L@t1rPBz8#;Q9BuW4ZDRG7fe;g}=*?XH8mN z&mWfaKPAxBjj!Xs+;p$Y=+^n$^G8Pm;ke+p^DuoYkGV@-N<9Qqix$21(Bjopr))oi#d@BncH{#yz3j7R-1~fp+GVA9Vf?Wo17+Q&eo=>{b&o4tES;$2p-M%n)n6P%@m$^g;QHr};UU%i9-; z{j3FgP8wwh&Ls`qN=Z$%StOaIt^%0)v9GVsOJTYB9spy6#aQA4WnG=HL6=L|-01HY z|FWbSpQl!9om>C*UZfeuS#jcl3a)o{=q!y?@4SuJ8`E)E_2ouZ@?FvaRbWS-SzIHK z#J)or91Ri}Abn81^S&H(FRXw(-1Q&5V{HFW8pE&%Y!tYh$i8Yk%`UD!lG%g%iaH{- zD*CVXpYgDOCgBo0Y&$r1WVf^Tlq5nCu!u`rb9rJ?#GIdn)|1-&YibA``TDpyNgw3R zje5R#l$1dRs&_B)vLw55%_{e~#`d}97QSx`AD$uSTVr$TbJMA<^UYau!`B@ua{#?F zZ$EFNat~kL)dhtU|3J`gqrh5{Vh}W7wK*uQ%xu&Ig2RTKezVfqeShlRS0;UVPyOv? zeu;|tmC5_3nx&bQ7(S4gOHwf(v>$^S_80gLp^-TF$}_%niE%Cp1GDwO-KEbgZy zC1H~M!-;&e!_8URwbw!0Mo6Z{zTzf9N|5l&m)Qs01t7(^4Q`NszJZS;h}Qx+@h*=X zl5cVDiqZ1+=Q_4!wC-!MMv~9|ft+ud?i?33cKAJyu+YB%3c7SgEq|Y5oONS%+gtV? zup2HHJhY5Rf9;|N`J9xT91QX&D!!Q+y@D&4f|%W*E}6ZF&Nm<8U*%3j z>Z!Ynm2J>j#XiomsVFCUU^5;Ifs6~g)#M{54JmQV^pp^F+v0NaF8V&3Zgon<;m?5S z`qqlGvv80LtMrqX##=QPv-vIv`fVIQFb#c0Li5+80R!>iS(T%~SU%|ay&UTinasLn zn`EpdY}Za8d>)RyF1#B6^$0jnbucm{hEwltgj)`H47tKYU&istwT4CThP{)mY_&G^w&}~*4y(2R!QcoNp9T0X|*NCB#2M82wn;E;G}tTY3%-T z~?ne(4f6SA9Om=@H;cYh6A3+x8fvos$;v|wQH=%Oax5xa2YO~*wns$^V8aTir zLi^L~Aa>L38nnWB;Dn%$L3gbK*Y4U3ouax;K1*Mgc6k!2`at9bA}ik+RCL}`*mzUp zR<3WTvd?(aru90DA!1_TO7iu+mYbeLf@~`DuKmANXh2cd63FHB!lS5r4ff(Mg`N&8 zJ+1u_NVl+gc@BBy;O79m=P&?|h~~L9y-SMvJS|l}$Cdw4YJ$|jN51QmX!A73a3@E- z%*%9&dX|@RV|rcrU!;0+UP*hYkJDJ>R}$+dn_Nt6CeU;3sLA6jAqc@H}u6qAKml6d4Nf4+^G6=e@QKp2c zc7h{dDTRJ+h{}Wgi2zTcKu`dd0&UT8Ne20kq7QN(eP%;Au1#y_$#4xj+yk?AqFGYp zM^O33ii5vF*dJ}}Qn?5+IdsX%H%mz7z&dmnHOgtX);b<{cgXp&={Y2VF4!9leZxnP&NHKTr+>)ST)3P&7E}7LRFiEz3vS?^_8#AxO zC&KbA`F$3(yeBlY9CeAVEulp&oi}^lwD4#)V8Fz^e_4nK)Cbuz@&|SO z1vUbJpGi5zDQ|8!+j*1SVP#yeuz~;_uOtL5u700@Txrny8%YZ}Z`nl64_$@xy#7~M zfk%fDp=5P26zGdd*~~)=l)T%Cqv?i^lr&}Y0dmsz>f_NyaBY7*3DB_jrB_{jDa z3hC?k{oL4xT#O4OzjeqeTbyVugRFs>H%)QYEwOQ?McLdT~^Jn||4&R+^wTc^( zjEEXS4J90UJ(QA~sK%o;P~aYpy?~T22MT%>9DMvG@4Pu^H?h0OxTP3k_}3)@uYd{A za8@8*@w{N^3Ho-yxs}xJFPs(u_P3A23=9gvxUf>?m+A;8!-I@pr9Q`a=2>{E5Fx$1 zGXP$E1vfp0h|=^xvW3>V9bpODMrRiGLAH`lr{hu`5y|f%tG4nlL)pdzoSa=>RD=`a z;#5R;R!6$p$D$3nZ)9_|pjVg?(rIgSjWvnTwT{LgUmb6yGpW z5^$RSnd@CK{FT$z&Tx*|qB<-(87M#?pz%nr+?QTV>5s zWeoXb5(o;Xy;Ik0z1|yr1${mF%QF3oIv}9uqf%H*kXN7Q^ESY#P9bbu`|2F()m1(@>aJ5@D*6ur7goidKQmd%bqUF6%|AA)`hK98eTKrO?58rdxx*kPK;; zV&Q+ny2RcR>#XEy;w5?ZrsDnMv5zt?k=?qL0%4B!7 zj?(<@5YC|7WAnbehMq;u*ko`)!Z7<_-;bx_)b#b#+|6N~ixct)M>+2&c-6Cqv}Tnq zpN7hf;?qi4^#9bPkEmS3Jd&?ZGAcM!S1_F3zwtq@%*_{7%|1H@)Bv1myfgI9*!FDt z>;x6S6X#DKDS}z{rDlJi_U%0H1N)9so;Pi`F>QXqi0>Xw>&~dHS_T5mR7%UB2n{x}V zntRAzq@0yni4r`?$#?U5xaMUCfXMGRS6t0ojMg}SLife4o6UNuOmnN;A^ksSd+&Iv z|NnnDbwq@tLPCxtl2IXKXC=wrGb4LshLEEuC6Q5CDUvPY*ra8J#IaXpWRtyrkC#I4 z@B4dwzSsA6yRJVvH@6P2@f?rmW8Lrfe-1hpJ=KvDh)Fs6OB#a9Q!&NPEuD#c4pr{$ zm~BHOeiwD#u2tE7I5^w~wboIKRgfx;HaUx#dd7&5~w+LN( zzW2TA(y9Hi#gn*eOE;H^DnxnqT;>1|BlfUR3%M`;SpCA6ve~cqGia_YOmvTHJgbk0 zmh|5rqIyM8ebRPmvUVVzh;e_Gc}`Wktz#~>51M|fq3?k%>mg@e!Saapm|fh)Ok9IY zWF>){=^+SgRb9m=sZptRp&Rr0PID(UBttbto+#fh&ax{O>BI3+MaA<$e zsR0wi5pdMw374wjp~E7}OmRzA@4!~K=+D5mGb-oS(LUwGC*aq2_DAXG5&1oKemo_y zHqK&euNw8;RRbLMR;+WTMCq_b{G-Bv!crk)X*9}MGeAm0a=a3{P}6-SlWTBWc^U%L z1x_Ou3M3Jwoo}cAnxAoYKFu=_jjCXHMvEHyc}W&9tcYhax_@wp=5RMr?@LxXtBNC+ z(P=u^vejUpp9?>9R+QuFzkJs2`BK31L1-XM)wJr7G`piE988$-#{4JK?ol+iIUoD{-F-W3w1%$^_azU8cmQsIyIr+fa49og{;>23lM zFLi%9yw2WEr0w!mBE6CBX@S(x+HMfNK2mZ3CDcpVr9>(PMLV|%diMqW-V8r{v0+nF z)7+bMy~1}tv5Vd!6RTHU+($XAZMw8shgJeAgH}{T*B4D%@rojIYP7;P?#51j1jZj~ zI97sR+n-GR2A%?4wInQit<*jO|+duH%-hv9o;Y-kGG0 z19>W6VyP?E*;{gXJ{Lhht5KfDt>UFv&QUWVDB8qkf#kEhZpVgx6UZkaP6>U6)6_nj8l~j zomR}e^+|;!Wi~X*$?BY1@)D_;Wx9^1klOOSURX+5SS}(MrAUj32Ttst$F@Lw7mDDC@ImCHt<>=EL6s34xvcUF{#2+Z})`8*!pj*OH4t0 z&k1}tt@i=*p^u~)^&pFd*1l71MJ$W%Qn@eBRVcN0|KZo8a9AC3hxlu@V1vT^zCB+9 za?VFPnQp96d`b0zFMehEtTp+ll3fwf%}ycg^;qF-9cb#rAxB+x?4%EQG$5}T8s|wK zQc{VgPEa)W-DG{kL!1HWr&F1{#ig!kR>20I<9XRX9u7wC#fr=;?X4&t``VfmJJK7x z?DpYbqk6xA{hilmUtC;V95(>)OBe;vs45;7 zQ@f>Yy2@`o$dOt#6UXjUTlM)-5Z$>WhNgOq_+_1iL!9JTr)-?H20GgCQ6j+$0Nf)b zvl%Ogz4p+t7}9Ex%E*3>g?OUzWkA=BABK~>UNd$4X21I7<}<*p)C0G2ZFV-3$0wX7 z)~6?Sh+bKST`OAD#Gm6#(MWnapQ5`iv-r)~#>z42J$dIfcw(3`p3PHWW4iYV^`1(N z$n!_~Ysm#ovtsve4!+1jmnv7u)G__?kr8%gXU3Bw3=Qk=0I)QZ(TZCr~o4lQ^Xh zJUf6&HM1}Hws*MQiKw&#_siDt{akD3H$9M^4zjzoG4g_6sWl%!hv%QD_P$g18yV4b zS+XXpf1Ca8XUcGdu3ZF3YwP4B!dCh9b`M2|K2s_!EPti|`eV@NP-KwQ^)q(4UTE?W zfJ;5;)|re2uze9aY)KH#=!HI3buQhL7d_sdlXP9wE;m>{2t|Tb=WkOKo=#x!Cuj7I zL81`zQvVa#+1dSI!?S4$e>_wM1}YuT^Iz`H#C#Z`*K><$Uj{q6AB)c=DUdyqZjzds zicdKD>({S-$RFZ@4fD7((?6$IY|y8OYsZ+ImxexmJOIIAI3UMLpA|jKDE9{3;|VVu zFR_Lz;zKe?lIN|dXZh4}=1Y~*1)LzrLT~$4VCFyEf#BkkJP=e66tB(eCx%a3C6dYH ze;Ik|rx{Q(R`ykJL;PgbFgLBOki7PiPP>w@ZeWXI_zN=CBWbQtEreflnx<7Am8P1S z&4vZm)Ma0txoOhPXg1I>c|=dMZmetFsGZAROxeXEJc1=k-siE)N2mULG0_lPDl#!r z3+Epk+dGz5Rh;lG^!}%|*5t?6Y5OKx5vKXCe_C#tf&>(8Y4x)Kji)qX>cPp7*H^jP z&jFF$u@v>(iIW_f8#Qg;?DT&qZY;GptJt~DVEamLVvR@}H&h9YVf1e^q$IZ_LRNED zJ1tov%jznUS8g9&4#-0A8`18A+ViXGsq4HwEW(QU@6>3jA3^8hx%AGTOY9}85|e{< zQR4#;P#WLH=65u)^Xg{x`D8mZUTCi%e!epHRTdzgtaKn=C9#uhr?a+ve*Bxe+g9y_dF* z7njId7OSk~g1qT>pR^VaGB0vE*Aja7{t%ClPeo%m+{<@EZ%isXTBCDZ@_o>0Ey`D? zqXlz<7Nj#D=`YWR8wiaVWu|5voQu6`&R??*clAHta6gE8aKvM@Xl*{*x>w(;?DP~U z#UE*{*q>+dIN%ioC4TY|9F3g{mkvP3{pljPhS1qr=QywA^9a6>pxAst`_aC?P9eyw z+(s%eQWRLv*`Hh|Khb2C(xco)Z-mWG4y-S~{OGePKghWz`!yxRK)t^5q9udjGH%G;Vg>kHT=reVb)UEhz5JHZ!CZU~Q?)p9V$x*Sm?L-bnZ#O$i zgDhh=nFd?(yBZXKe<=h#Da>|3gDYm%r6~)&MlihB; zA@>flE;ocq24yY6@tLe?NA=oe=<`#P+wsN2$2KrpR4EXBEqpH`Ycjta*}bw585Y)@ zRl?lXVGkM3VtahCS@&K%yXR8&KvA(x-sR_*MFgV(=2_nUJ0$Qz0HyH7)`_52-P#DB ztxo2v<4&Yk%~tX~@Kj*oQd zH+3psmg2{?9)U1Nvu!1DKnUy5ye^-z*X> z3fluB#69t?oSc7MU)Juld?2fsN0aGs82oE5HVKhh}+{z&!sO!Z>1P{c!iT^ zy_R2xI_Y@c*8#pf^|RiedJ|1Y8Rs3h$O53QLH)C}Jg)nh=AB154>Dr#ebkHR)EM(P zsSfj-cl+b$GTb3M=Jzm+!oU3+b0OY&U)8#?2NkQ@J|QKmmqo<>6z<~B(2KdA z*3n9F3rms6%PxgvmRHet5r|8i7xJvuZ}0mNi7H@SQnS+c{1cE>l ztxai3lRbJp;q}7$GDT{jM)gdCh+RUt^@&dg^l35cK zFYDl4 z|N2$yWmCc(})0mL;1ns>o3D1BKD?SdwUiyJp*C3d4novK}@$zC(rH&v%^iY8AT&jBC=jr z#qV^03sM2cbs+h7Zh${|R3>4YAVAlr=F~}Oby|ln*)Ojzz6=K7%;>n?^K>(HrS-{R zv2z*2`!tl5;>ZXq>V0^8&!rU6s&Z!GS8hRDF)K86Qsf@qcA1cL(=G8f!jk2*V`D@U z`F;kap2MLp)TOLH=mqWera0#aFB5V2mtJI-oFv=bUif+y*(2-rFqlj zvFe|KS|ClC+k0{h_b^8b_tiWR_?)SM&iF zaqok1KQNEYNq~>zw{Ato zsY`|S)Xf1ec!^iSrXg1Za@dqFoG?w4#^;Oi!q35#a;$QBRo$_`?Wonx;@t8W`FWtR!p6E>7&ov5}PEWlQd96xl&>o z>2+p~<45=VkMq3SH9RQa9U;Z0FA$}k2e`preJZNcsaIPr&+z;tyX}5wkreAxbdH<2 zo~QRCEhNTj`8De`Dn`6gnPqzp4A%18jG{O}Om4_oQa-RUQQT|C0(FChnmC!$N5&yN zNdC&ePQu}Ir;+xy9YZV{Fd~+$rX33%dRr@zMWXB0{Y|Crja}1aZG%~9k!K=qMcU`{ z#4biEKI6O4Vjr7Y88b;`U?|*qBXY8CuBER2=SdZq%5sBhm*z6Y!==to z8}KJqJ%Xl>_ARF?L^I8%u{2a=tH-r=5^c3g+!B9Hc*HX^GpF-s#Ds31GXsD9NJwI$ zE@}5Ns=_709aW)Fl=4vQ8>%}cx5eVj5(JZb@#pj9gzkR1fT{?RTo`L_y5TbuaYPhmLcg>pM{D_b|d=&r)BuF#GzD7>&UWu zEDVe@`>=Fk!SDSUxFK)-m9%Vq*?OL|na+@>L>_v=S|igpi6gd4 zyz9VZ`|2VGQH7AJh@|VpJiix)E^w%dBF8>kF()T+D$L!j>KU0>=S(!SACV~Y_}Aj$ z7n$Bg;<$*+5L|jE-6WB>dSs!CT>3TFDh9Td`BGW#g`pz3Uo+U1Ie~2^L|+F|dhbQ0 z?g1x&FhdcaMOr#FN}npqj8h>+R)MZ}y4}2D2Ar2&3 zOz9n!boM2dlQrpyS*7A==6bJOUNv&#d_3pokm-o zmcQKq*g3@5Iv$4m5)Q7{xCLKtybO&FOQA5Hw{NKaDpr>foj$to$X8Kb!^2Hvsrx~# znSA?X3rAdo*Gi9B?pU{Kq{36r;6=v@ zZ5XbuGpjXSeQ+vG`{s5}>s2ZTSAy~VmXfrn;&J9QqLvRq2T`pOlqmk`z^j||kUPE# z{B)5G*t=((D|OIa^~7#OWQUng%B9Z|6qH7}#pzFky(=l5J^T1tFURP8bE1+mqVe_H zjgB{nL?%0FH&|KBPO3vIx*3!SXz~HUEe}v4d%far8vhEa5ep`gPXp`LU65!B;AWzYlNF zar&gi^p)R@6}_3+nxHVcTV#DHm{s0o?wp*QC3EH2f}%by-PrFz)U~pJHlIB)qJIJJ zUf()5Flc20sO-HEOT8P85hzuVWkz{lQc?XZLy;Q96_r$1EN^9Pz1x7l^nBd$;@N_W z4Z3dz>6XmCnao94ce86gZ0o$4WT0Rhe)C-Q&F%=DskS}qwr(P81G!EKCB`PDb8eGf z={ANIxDQYB$EdVRe!cgoRoag8Zp&koe$u^8D_lvk{`qO(cM7_DcRuZvOJDO&`?MGy zXUz|aWgG`8CR)>qorxnwj9R-rQ+utdQu68D2;Kmski3GIr;Q8JtU{;p9;Gr z0Q$SwAf=sFq~C~HKts~S_Rgx?uahdOqs2Efxss~5y1Bp9rg5&Tdq;bv9@P|U7Q*6- zv3N9FzrvMEAus1QzSzYGe~U~_D469h72Yv37l~0MUVFm%^0~mG*KRiX9~GHoKBEv>lfdo0ihUUK_Z6so@HTxp|i-Gm_-u?1r=-&xz)%+dR6*lNp&lU_DZ&s;@#Z zvT>J^o~Aj>PU28GO|{&v3?9T%W(`n1J!BhwPuGWz$UIdH?O5v$c%LkdTTP z`-7F(V0kF%>`MO7NX$Y#pp9ooS7D`)VQc!WQ?ZMOJlf$9m?UL-L@~a}w&Xx6cU~r+P&Ih}tb@FOL zITPiBrUV=onk8%=NpIORUux3V8Wq+WnJr9N9fu_x?#uagZ1uo5-+BM;-$uj$j0m)W zeg_O;>5I1WTWKY<7Xh}fDt6B%1PLRMt$FkhP~q>8bT48v5kw4`0o&*8Rsv(tkr2pc zt^LzKJQiNrvlYZ5D}3_;fZ9NA3pj2+8WNuEr$2lEL;P^8I{W{{AYDdx_1$@QdFz50 ze-ydc&DY?;jvOhU{uITTQb@&~8kFm-%b9ZVR=5yUA0xR8as}RYRZ(qjdcc4bkF*`! zdf%-jLCni;gmep^Ahw$|zPkOq7#Y-gSB|iF$$*Z$7(wd@k)xk4$}(TZ?KaB`(&mZE zk1?93{hSR>q>f;r?W`8`uoV=N4E{3vr{9abI&nT&y~}`^-G_bemHuYCG=K@+4UTnu zTV|`yo>Y@##2G?4sEYW45AA#Z^@ty$K&Zf72AEdIYX)y@k8Oze+KSwU_u4ast1d3k z2BulpBO{=BoH(P2g_wNE>=SNln0MYv1H@74cx2J^shZo(W{C91NDO8z&6>h`^KfQ2dseQi!w-Qc7Ra|$obQ0fM{^DIA%G4TTjO{BZZxIyVT11$#CUcvdCy2lthm;l7?CBbb=Ou`bcXd z8dYq-{P|BZXJ;sUQ7}^H6h$Q*c5g8Eec75K-@~9ck|A^*RdL3HP}TNd4@jH}4_Gaa zrf;cz5VZ3owGnpJBkMJ_e57H{+|@=hQ9&#eK*Sl4Fe&^&{1`;M-fbB0vcv;wrJkSfgOQM{1j# z9-E{4yc)Tg8bn%U*R;0bm)pZ~0MVck1{Q*S&W%p5x2G!_;;Gh{i`YJa!WV-3|2-PX z$Y_8V*4Ns=pq+u25=TbkDa2=*bj91Z*m^|YCkK(ypoP)UFH+ln?Ta^HJr&7=3H!Fe zxog`jY#+7+;D9R}!uIW=A(GyDJ`gHG*1M1hsv@@RO7c$A>(&@c$-!&g4pu{V==`$YVSPA*nr@r_}#Fm3LtQNA-u0 zV1wH?OfDFer|R9Qh*K1;$PAO)9v^i^3{sFw+oafz$porQ&H?*FC zvfb_S@bimg&PUmH%-CHq0;>H2kEp(?HxmbJ0{+v*k|kG}goC91W# z<)Zu2x#W!GhtsLIM|QSft{Miwsyg|0%++$$oZVri-d(_kS6F9F87+U`Xyt{`Z`RD6 z-48!yA?xWLbT;Ychg0s-rJ;@6Syi}OB)2;`$#96--53?fd`zjv>f9 zo|U9TMcSSU2T=ooqVobfjENBU0=84$BkIAmNi3WST#=Z9b{fi4+d<;iql>SC&5Ihs zu}C-sO_TSfcj7LkPm67#IFYT0rMwt={AKD-T&RsREyEZ(K*FK*t&cJ*izVHR`Icz;RLH2}bn=K6G*8U|x>9D=cAvu^;DB%Fh$mUdU$Ge=jBU_KKYxg~_ zFRxs5Vfl~+`ohEB#|XS0^}n-aVYep%BLOo|cd$De^8_s*u^!^^Wa|>*w^3L!zaL!C z2|uh-UYPmLK0(^SAhx~y94D69IWe1Vd#7z(?Cw4!>g5F;oYaZuwYcz)9|T{8Ze4EI z?l;VjdQOy9cS}`XMRyfG{q^qs$1N@Z35Qpr?}6XZDPHvtLHf>nqKSdvKg*Kd2Cb)~ z@lMG1y^nh~(bl~&-%!m$emr06^m5+#1(#z4id7F{jeH_>s%!0&NTHTuyQvZI*VW+E zmO>7l25)e`+HopSNtNrb^*7mRfF^z^?&z4EkblNg$j*Wvgn9#@PyW~&yI-rdPyd;4 zfy??EMCzdpu z_YlA4;M@gpN7w zrL);R(Q!BGRKEP3zi<5etuIOujMjc{^uBh$cI6cc*=TYu3NE>+HS0Tz;eZsfbvtl! zZXz88kn_wYiK0Rc(ezs+0GigpX}}}>?9L&!x$EHL1qNAwrEf3=uW&LoxCohV``^fK zO$;*17ww~%z!VVdBgXQ{rvocqi74B@Z8-`#mbq_z!W!x9VOT28DqNe9F=ms(ki|E(KGft(1eNpCPu-1c}b9(!fAweG~DNefC(Jpte90|3sK z%6F0fgEDG!jGnQ;S&+?l2oZ2vx8fBQAwfIS&*Igp%AwtA7>mz#l{Vf(6>3%ljylYk}*_X;g)1>n7vJ*17)sVnC^jsu(1MYuTUbWmm_m@AD3K_={S% zk@_N>VNi=+R$~Se{25w(fMLcfWB-YN?8@IGBMGlpvcC)4mz|!dqN@8oZyW3di(ZW| z^l>Olsja^vTwqk-JjmMV9lrdpm)o`b5^@!CxXRb;1Ic{rztt0dJ2T?EgrUdf&VJ?b zNf;3DkE{;`+~3mMub9Qc|Ix z2djjzCg0EhZJ+<#0L=te{2++qU7(>a-sv~Az=0JeWq^PCKW;tB_Cf$X5?BMnti)G- z`s}6O!XsnQ2jRcDlI~&J2>p$>9%ajXpf6e=#|0uHIxDtkM-*)H6p3ttrMp}5%)id) zg_f6Va(uqFN1L_7?-@9oXV z1{8BIZ1D8;ZOxPK6Erg8AjbOt^^7x)0y5BbJi)Ns8`^P>08yy&1;eJl<{}fB3-gHo zI2V;x=+%W&MLuL#z=a`SyPIEr4lo6^!|hgCIuj*Joe8q;vM{*#sO;qvysCvZcQFJ~hwytPd=E z4DO8R4H#%wK~Na}4HRgK`t0iRXx*M~+X*}%R08+0I9lgFZg9r?5>sJ}tnz@1{``y&nipp`4lJMlYgnW< z7h3Iq9u^p5#s_YwB-%+5gKX1#(Ju3X`@9&Oc5KbDOE#L=Bm$53uL|pQp+@lc=I)<<=T^%TSz;gn{<})rRq3jVa$jGrMgd z;eWgY@Dc^)*4nVjRm-U;DPf2xjvNO#SJ5y2hXry#%e->C?BQR#ixSRe{ra>2ad$0v zpvQbd1_%4AXbe|1X@KZQf8G0I`1<|RLEA(2oIIaIUQ`>n0BpIOb~Y z$0n@`XgBv>5?fo%0ro@nI)Rn69iIU$zqzaL|6>T=zTBPSA`k2=2}wzwx&CUKkZVlW zZV>JP1xj`Z%)j-hU$Bn@M{Dg3be?j5S`%;&%~<8{y?Kh+zLYOM(`4tgx`={9EHVdp zoc=nk`XqeQ(p+VTqb*z0N=o#aeNw`oknB-QJ+m1D`Ys+&ijP=6@MvT$9u&Nm#YTzc z<>gIh202@f$1x$thJ*Vwh8qA(6WDc8vB|_fOhml9MW4v=+cfwt9v5{XV#% zGIGN_Tn}ZMP6MMyn^GAEjlU10&9>t8R4AOfwe4VNedD)tMN@Y-sdM=GHOn_NMaFtd z+;hBT6J%3lfAea*IR4yQ3WrAH;H5q`8BL&}r7t9V&QY#kOmY0g|n!7TN z@D2lWdVj3vB=Wx ztM5(U-s(>DT$soPiqXRB9~9oWP^#!|yFb1sAaz)LniA~J2lwlsQid?Q{Q~xb5u)1b z-Ual3sO-<21ag@xaQfW|SU%&v{Cbne^E!lbl8K2dpR7?hshbe<9z# z*FaOxWky?BnbMO;;6VL9$Dr{z(FaMQo#-t&;tOPk~ zuIsHrBk@HzmAr1tM{K zQ0?Mc$ko+#HXd)ELzPl7rFwGkc4NT3vBaKex8sf>-u(cmUAp?-`vHIuno*+K7N+_* zF-3Bb+0)jcihoA>ZuYI^cM%>zen%`CsRkZbOn~Y4J$%q%o=q93jZ$dX{09;L+7(q% zSMIO1lf1{AMc$_V_uJeA2w_zne=moipkTJ~07>E42G`@KJm#OKDV;2SKhlQ?gsN$7 za`@LTM`&G?v{8@k*h~pY>0`LL6(JwS3F{&hy0T?TMc?QlKJOT0`G2Wj?%q0#d_Qa+ z)(yx#cj5r$16f6PfT|-0dgo-4seemIU^EC}O#p|+{fT%xX zXg;u|Qh!|#JUtdTkAM*GB_)64n*K0Qz&A8^ zv+6o6bU7&&g0{>+m(#|H@eZ@$@1b80JOzSey_=06RrK_1ICUnS5ZpTSxoZKw0uyuI zEi|nE5D*Ey{2U{s2@Sfc?tm>AP5;56)a_BaJd*kqbd;2P$Dnbnk;31e(WUq}D@!fF zH_W&Zb&eY77X)n0FX$+_)SA(`5+=wRd-InZLZKKfO;8DPQv(PAyoBH0;iA_qmk`Dm zfG5^8TQ>E#o5zNOEEGy_0qLN`V&^@25Unq0V{cvo@KVnwzX=T$b@h|bdt(MojW1<8N6-E~OvPX9oBATyST9hCKz45%-0EeCKl8EC z`8Y9o-P{L_9fSRj6_$uGlx7Zp5+f!rX*Ntu)uf^2^d?$YH+qnaSqhOoYIz!k(^v#3 zKtJe!;7*J;SjxzE0xG|)DJbYRGqFZ@AR)dQdA*@OD*yUMo|QC^{Unx@L~H1+pS!&2e(=iO3aD2w zHfGwKuf3>6{ja;OpmQ8}-wnUo?8w$1Lsj@*h5lIfFa}WMF_3TxDFGjC zB`vMUY#s1WV`r)SarXAE0cj)%lnC$-LLjqwIscIN*c(|dosU3Iq3K2o5~zKC6cKJc z?v>A);~t+-45biTR00Ok0cfj>h>oU@Tk^&B0j~1#c>d%y?$%cdblnPh>R+_(_W_Pb zIo}Ewp(!zrbbpyIPxzi5vU%a(-o{f8jY`Z|)^kPDVe(Q6Yo z+%t{z=iJ3(j&ZiUZWr#n1W#cRqQz_?Sy8vt2%2hmv(;WzpG+eUo_?fX3cq$_+DUw6`7y?)ji3ty9 zA*JTXO2S`!j%hO|FnIxNyG5cJ?j{mbV(Zfsf+MeArhS|%ehh4#E}rLsgU5Smjs~*X zc(W*en%a7yg*QW~l+e&l_#IIzDSc4>ag}gp;0seg$BgdTuQ*#>IXOO^-Lh9-XQUv2 z7@4aLe@MC_2ygtPuQd-YLe@qPy3b9{qJGcASIiO)78$I#zg$OAu+%iV*uJ-?0X_rJ z*ZzYwDS4lSMP;stjXQhp0rYrtx~{sf2mcgA%O(wUqBjfdC~asCGlNiCvp$!uS^b=P z`>1^hR{(>@6F%Le9zU6Ag1n=&tF=P#kloogSwDS-TXeR`h8=Uv6N9$>nVyPew#K-@kCK7U$Jx?Fmr|2liA?g zEU5HURE!m-f2TaeAER#k>^gpe`T~+{u@HydO4f%uLn?a^$^duo`)@Z)KoS>8V!XTZ zXTKiGT6XIe_F8UOUMsM=4_@bEJ*PUp`A=d?vjGR6~T&&73Q@U4PMizBd> z>pXt(ZU~WAiamPT=vJCRX$KggbxzAY_$G5glXqgywrSE?R_$pz0;yNQ;{+9i;-A-t zf)T;#CBUD=YWHuwn*GL2W5{>N!V1g(Bl1}|tAfaCqO+{dT*@}1m~n0%`# z3heluBZn4^8T)M!G+=peHbG>4_6S_j-zbHP7E4YlK&r1%#O`r%>PJ%9isGHBu;lSP*RuTwSjRC~F4ZtPj8T>^wV$OLsB zn!jsxCk8aQmnPza?BYQ-2}p21Wo+srfOY1TM(mxk@h0D_uRrS8ba4VOCB0a;ws>+5 z`1!dHRgR$dRcd8HPtKhjDTW;{WHXbpfjq+n22`p>F|b3CmE;sbXr>ZJ*AMV$`MnfJ zZ8DtzdsIWpU1Fq|8nW-;iHnmxrQ_KSL=|-Wc40vN(y@{wQ_^)z3$J{qB8AWmWJDMD zTxH&sk&)3dDSiTl%Rv8*!m*Tn@lL08IDYfBUc?+Imj@Q}D)Hj^ld4QvBz`6?cW;|; zw4qUz@3db$-17fGH4{cE+6UQ~oMc$o{l*{)SUetN2%Nr%Ja%W30&SsJ^SI-ZS!Cz^ zdc)I(42wRy}@1;nM_=kgNQH#9`H=a_fW`An`Y^cPuY<|N_o>I{P4 zl3m+eHx1YhMo*8Q-y{d}G!5Y^kRkFu##pl9YifF}>UF2AT+)@8n}Y#hJm8!}{D&|a@z-80+KvcfO{Rtxdh6i zin~NifTm}Rr?;ghWiA{4VgU@pW964J?VU=KrKJ-^qy6A8eo6NOc@x^+zz?431N1r=GhbuKpfHPhFu?8a?EG4kQMQabBRvfl;rTlgqtQ5blsM*xt5r6x5cl@&c z+5Rs~UsLWaU@I=DscBT@_uix%v!c`&ReMO8?tIu)22Hp-y?S;l ze?3-kl=u%Offs{L4yXrtox*6xk&{IyM#2w*yF;Rt3K_FY%K%KY3M$urD7KDL_6b;| z*n~Pd|B^!t_poX1?#|p~t%Zlb+LPj{fwFJ1T;Mk%;3_pSelipq%rR|08`HZnA_-ss4ufxTr?76#&mJUc zfJQAzUP8jRvGjrc#@Up_@w=4FradJ~zNfxxJ_`w98o5@OovqSPI8!e)0PmO=`HKP@ z=Q*KGdv5H8r?;wX2EdP%C-=INvp>>cvImJ{77>x|SV%OT1eJ?RM-gn~s20%AfV3d4 z`Nq%`K?}!G0y|&yw^M{%Z6N0)hH&u2f=Z`r~qbUXtwErWG;r@a^ zk8!`b*h+#udz(ksXAmDAaMqlCMJW!;vvEO7Nv)$xA6y8pApzYP%%iwCR#3$W&KQ0n zeP6n}0mU;r(X9)b$cdWD3(rPd?TN3=$wZRDP=dFbL;ABwSG!k8=S&$#*QcNJ?z(T6 zA-6Ni6(2KWoz4jLV zYj8v}TW@IfU^)59tORZz>9wwn$intbA3RY75(iz`L2tG=Yo(B!?wu$|_np}P5uw@D zsdWa*%H}T5KwiEUag(M{2mEI8#l-=CS<3c=OxPx~RGD&FZ1gT67|~pPY1y zHS=c5a@V!GneMR2Th zGSZp;0Poj2(OujL%$OQRTWy2JG8h$#80dcCHY~gRb)<(u&~;2pIo+?ewl*l6x7)fJ zLP@J)iX*%iskseo6gR1VKNQ{adEOazxS!CX3jeAWkH*FQ0Vcc;UnZ_V%*%0Oyv;3PLqhiF z)5wY9n8v_-y@@rWQ0JcbV1%Xiqo)gTiSeGq>E>es^rB>6?wC?bfT(@@AL(3W=pb{w z$_fdrX{GC`P^JE=;$>0_WO)?$=#;JEuM_In+?S<|_F{@fwm{JbKYUd7?UVbdABZXS zV+$l^n+nVfR7pEzsH{XFVfljh3=8P`|j`hBg8w~Q4+1sGUMwOB5)E*z7Y1^r6H_LPx!1 zM)Z1h0>d~??VG;txY{SGeQuJh9arz|kv+Efgn#-*oTy`MdVW<|=}N!4$?Q|0S$I+` z{Ob~Wj8cRBck2j77LGdGC;PCrMkTKi=2K8}yv6GlX1p43VQfiDdlhdCa2htr3rUnO zey=Rwl9PS+C?=a8S0Q7zs|PsJQ7F{N2%eV;XsbdHh9zLkW8vcBDy>yP8g%>ReQOCz zBRhvq?pIvpVj`Ybvv&6>MO6&vH?H}es7hZDIYGnys_K2v{ZYTzSlnCU%bj;gbXK}< zs28!~Mpmt0S(p4%8I;} z){|O>Wb`7)nsAxfY%SMy^wfudh2d&beqs%m`I`kv59oxrN=N1%#ak^lzyYuQ@TkbM zi8Gt7#*!SS^sT0dVV>1PcNe^e%pj#krJ39Ghsgs@v4$@8Pic>IxZ7Rji{^DgndiGW ztwZH~wr*pkipO!`M?)ZqgQvc(4r8pwn67^N^=ZN9{zkcB zf)JgH9{E@shqQcTWOg_=L);SwiKC?%X|+o)#nzQGie6=Ksm71L+2eT}b6V+=+H0FT zH9i|lsSkYG8b>u57Js(!CmP(xX^6z%VV)}@$!w^M&a1)KEIFB*PK}eLpT!@%G5E~q zfi-G0dy({wx`2+RWSJBN!uhrNWP4N^ z1zF7Tq+rI7>mm$J7OC-1Hk!ue+Vj0$UiMm6xog?-Ww?4M@%{UU%DwZpE2=VLUpl&2 zVpf8}Iz47vJCptTs=g=ohYxhlmXTgR^EF?cPwwpCaSeHgc%`TF?~gKY2`yY{5mH^_ zTghiW-_~v4)%$uyH?d>1$bEDzxO%PO@|Qcs{F#s6ba!eKHJ|m5I?DTlwAAbSly~H= zc44+tqJxDae8-PVMR2TNx*#bTWY9`8Q1_H)08$_>q94XbQ5ANqi5HOc9RbSmG8_aT zR?)V1r=lqUwv#(WRY5vX{QA?2il%M?YrDa-4&8i0xZlepvd;i4tYl&h}Dv|BW99 zlil8PE>8_hdejtA-A_|he=cM)N6=l&?}DbMR#wZH{G!dc5_u+nGG70oQk$@QUo)Xf zzB^s1V48`lV3ALLVeJ4PkHnNZe)Q7Zr@FbN)biDf-&N)?-X;TF$_p-uOON#JFr;*# z*7x{eWw87OV`J+2`mU3xil;N*Eq=dw3DQRWiVy78U;QSIa&HeZ_9QK^K?8FHIm7v% z`c8wN5kbfV!OIHD*ZXcw`jw;sQZ{FZgnDe;j7g(Y@fV&V)?nPgQBPF-EiEuH8|FL zdS$wpe!JYR;HjKD3;+Hqd=wtvw6vaKAgxyYv+?Cz29Vjvt;|1UB8v%Dmv}?+pzfm} zafVVnw##dw+p$T3zZ!@zOu>K+UTql#o_ZHWBlRqgIYltYn%0cSZo9=zeCU*h+Lf5V znrT^NhTULfX;scwHhwL9&Pv}@_@I>rDsq|kKD&FXE-dn8p1!uOs1mO;?(Ek$Wz3SW zu-L9rc!hZ%`M$hC!gCFLhTXtq@jQR1sx?unFz^8SQ1k>J)MDHX{v=Z{{Lms}3)QlJ z&J`v})Hy@z%?l7o`s7gqo`zHem%f#)Atc$LSm?NK|NiWnXurOXpQ3Gpj_|dtJY*1J z2O*~HhpMMi_@^Ngl%SUUwdm&OCue>^s8~e*eiI%8;sCIYXU}e~wc@cCdd`J!cFSB&rFJ8%P_QpmJsP)&tL2N%v@{3?xA`vF z?{$U-6NELQy8-`p8q9q44j=~JH8|UC(qJDsInLF-r$l>weZ@XmJN1=X`Kuznv>f+a zPH4SM0}*YU&C^18u=wo2;~EC6Tk=o=O8^?^7U2r3helMW4t_3scaWp!K+wHh;WcY2c`6)xn2H%gln+6wza%8a%|fD9zRk*{MG5`w7<`Q!mS$ z%P`=YNfPFkonN!B0<&4)S~v*9kyfl+t+i(~B;qtEt}*(zskrFIRV zh-K46{9l*cqsNTr`K_8SQgi9B5v&soi;fRBC9#}4r%@Bhow*=HRFTq$FtkQ+>b~;K z(0+ZP4>Dg>AO%==?Dw1tbM$SxOGoW^xiexhZC*h$t0e;}iB}Hlf4ha_V_EJ$6Io-v zdQ+Ul|8^qn5s!|PQWZ9i3m{0C(3c_jAP>qnSR_24q7PxIX@8aSfkV!guP?aV zO8Eh`u^0Z)8ZK`(&-ni6TddxZXw;D2ihE}`F}Az)Snz|VC-}R(<1!qUh?)joRySye zYn~Zg_ww$^_Yj(+e|K$Ck8l6X%hvGlurSk6;XLDcUX4*OMCNNATD$#7YLc0W2A-17 z;lB-Y#eWMqI~O40(Hr6=G|*n0=_Cj_GQ(>bOR~Fn`+=S-uwBcYcP>zHo$TPWua8dN zupM?}w(D6O*R0GvDYm-!azE|a=DIvphOJDE3fM}S$p7w?kYP-WICI=tT>Lp`=ctE1 z))zA>QDFe3^2c;`B@&koaWf(1TG(}m8C72C4fD=#7LjgNX^M^^~BuidhF4+ z9P*QSUMuq&Z;o8iAv+bLNv$X_7;f%Xrie8%4;oA7FIhS_%s=3zfA7dqkHMVa8vk(l zgv*Imzdk=`NVs?}+rw}KbK`SmYQj4{m)SCxUaqhOR`QUXq$?Nm_SW^|j;|2E@Dv+PG0ty^Jwmv|3D&<#j2M4yX@^74G{_M z`icMQh=@AZv)tf9^0WQS1d400OI@g1!N0JuO&Pd?er^nS9irzwk0kOF_yk3RXNuyOo&Nt?Y@)kEJ zgXf4RS~D|+9X8gMb(TFoIkTj9b{X4x8sEXR9ZYHdQv|7pqH8A5n`b8U98 zl(#FJL|c=4S)3hj#YUBaj{w*2Yq2|FBq{&o7xkkauA#A#ZSIxp<8%X++&z!&-W#-h zgw>8Ga1%YJ)#2uORzV~gSdqr|_!)+s(`O9XO}N_p%7Dw@atPkgo9&yl{KYluabaqd ztdvyMS0K9lmb7Qq1yqA2-PeNn*GowoN}v_uQ@GCWBc=)gThKvg-an0WpX87pb|@Q; zJaN$jQ~i^nX}2rf&!9Byi4@NdCg#&gWSQ&86TVX)H9Tci*4-V|BBwW2xL^PEjrP=p zn|PfU{t-RJa}+Pl?VSDVYeysqS635O@qCG=xh+_;V%>luH-)6Q;6xS4JSnOUT3)ImuAxMC-%Kpdpgc`MHUl&#t68SHVE@v z^wudo?{cQ|w=<3DlSW*LAPKb1o}IqoNAkOG{*0EN(xXP49NFD)(kPmI|LJg?*tKEh zo=%BjU+Kc2oP&eIGdhN|rmx4qp;HjtB24KML9S@~zq;a|^bxEsVW@=Ln8^Qc9_Rnx zKOX5d_xAR79BVuCf7tuasHn0pdK6U~1Ox<8L_ne-H zFmFz;oP>7CiBs-s_YTe~)yVcOlVU5MF=4$duh z?9wF`07yhUd-hDXg77$6(1&Z_`uqE*X?}PV5gW_GteDh>2>VLDB~QBW__V(v(oMkO z{GV?Pd;vHVeCinf5q$h!yufEw%?wWv@=$+dZ0tD4QT79`)+fg&CXQZNvFGzStOB6G zHKg!!jZt3F{8UPOf7G|dCiy>WQV_Oup@#iwpx^m>u^=WUc9n}u`P=vJOn?;%U-JLq za5tsq2U?*r_V)SrB_(Bbb#?W&G={)Upb!O8nP^7>EHJ*Xj229?FcXa9NaUSN56 zPX^ABi}e2Xi9lLLrX^kA>z~UkPft&OPbP{b#cmJev<|@Ax@r?&-?;{-E_4P=o6jy~ z;(ZFf@{cbc9(qF5o}VTA#oxa=1#a8dl+NTZ?&ny+_#oGh>Bq5PE#lt&`(?LK_gL!1 zDzm!r{b|BM#RL;q`e~a9^4~`2{XPE2`%|hdmmCDh{Z$4A28!k9vd1^w6t3UfxAd&) zIkDAh5>fVwLFaG;E))2Vt$V+__-BF$>ab3LSB`uk`+IOLxaa0(L_ka&`RUVrKKC^f zjtOG;F*SO{#SbvGWDO19erjlF8Y)Cr9k{H2Ism^p?j`+Q#VWn>U%JiO3@CGs1MJJc zyt7(DoHi2d_ix{>^79W9F1^q>RyC|h_%$_25fBi3Z56k*z3gv@$0C{^KcT7m7n-CC z6eX4a79~$|l0Fo_k1!HG*x!G4^9v!>v*TY^^{|%6PeobzzC1HvrA`I7zTve4%7t!Q zoI3aQgI2xc#ev>VH8f_YclhrKq(0-@8P6NaX)n$`?Z4S=4(4Zf7;;)r+d{IbCi#=t zJqAHRT@t)pvB};H#r3_qc49!?Ji&zTvQ8Z||NGpJ0=UguT;^{<0|d5g^ZfbM^cio} z)}8ea4VS~wbJ*zzHlK2#ufxam)|>g+^NSH;0b*FDe)zM#jguQVENrnm3$9)3mcay6{~K%M2`n0zu3eLGSsH!QT*&t~2YAwZwIkp-(XfM8XtON0^xLD7z8D-^ z%hx`o&_PRhWi^n)N*wHqbV!#`&UUgOSRo0|%w!oV^+{gX-Lum|!HN%EN_tssbr!*# zUDX^-CFNi{k1#sk4&%WmBgEzf?|Po2fiIVtM-0`{f?d7a-sWNfXeJ#HyNx_`bZ-RX zuhSf+ukUgI4!Ot9MlWu;r=;%hm4m|6J$eBso(uU;E>s0MER9leTS{dqGfe|JyU~~J z1Y@+!&)bs;S^;9{t~0)XpiLU9bcI_XZOnYaKcE5Qj?1D)mW+nRYv_AHf#Yb|sxq)^ z_L^5w#8Pk*#g^Ux_lk0ctsbl4XgF;1U~kKOcOY8>$#JkJ68&{OhJ8=F8cfC}qDzj% zQ;6r$t1<86?)P}Ky<+aTwx;{r@#^>s*S14n_@TccZ_S5MO}*v_CexYt+xJl#{b)@~ zN?z}()uCn$+p05azm)Fd5a+H}0(4gEaq#e3yHe_d?UZ92_~@_AB;2A?sk(n(Ldx*o z+hR^WKIvi(5uNd}|lA2N;{_!j~tzx56$9F>(e|M$Snp(BNdGUDa{Ez%prm zAQ`OoI44K*gIM+UH%BxhQd7f#>hZt=zZWOKrL!R47X2p%qyJEQ-5Y>52M8Nl9!GAw zH?ZYx@Suw_hLh=?8GWEhAjGbC@N>~apheGpbUINo^zsKjM)OywMUgyy*QFb|+QlWb zhw;-BO&Su4eNj;t5OVE!BdO+!Y^0m_IUgFF@mEZ^%Wy?9G~csd=KlR>s=3-~z|E6+ zx>X~86LOw|M)F#X=%_PZ3A$A8%G?Z+v#RNsGLqkC6#A3jjWcc|=HyzQ!PdzVqzN`+ zVXF3agLzzrzQ$3-pluG3EvFmR5W2#ZYfS-JznF3>V&E9XOEBOo&`DsIhzSU~1vm#Q zRob5b_i-si1UiX24^2{Xrl9;A28<@ic%I@7jAzo6(_1PYug}PH88;9)@*;m{06+dz zrUx!-QP8E|ERE5*4!rB7d%iVLJL_$YyVfj>VaAo_M;#(nf0pt1Q{m7Jd z>46pHTN#)vg(H!q8-)n1%aiLUfT0np25U0CCpH9 zrb(31$YjAM3TbG19Ou9b?D5r?w z&UJltVbv+gQKB{6$D5!Xs=#t;mD=WBy>{)raN<7(YWT^4J3*ip-~aYbLvu=fhJu%P z9FGMfh?r5BJi8=ujcKl*ugcdIx;~1)%qp z%&OxI6dtbMLf(G~-VYb--?uRbM1P!Qz^`5yxjN{ga7ko*J2)k} z`ViZ0XTL+{lQ(vO;+G)Y0qV}4PNKi-b&0%zoLyUPSyjk5L+%Y@cXvjw$o84^Y-V%N z)6)%o6&5y#@=qj$xR79Ku?t588*bfDmX2QLqtCA-I)@oJ7=U42!PQGbGK8loik2P( z^doByJa?R_|KE885Q{qEhn;5}NaXaifO+oJYvZe>;5-|p)r zRx|?dyq@&=1#KtHfL>nZ5+l7M7;#j<%(3U}SQK1@~6b`a7}BTHkwU#-U;> z_^NmOg7SNwHhN8=%EHPs<4>RZ>kZpaRHN1asUbb<>8XDNk6`HX&jI`9FsZruO5j;a zMjCZ$`-g4nAItnci=IONBaJl3)9 zRuT{O`({!63U&znY!Lj77h7j#K+_s9geXNVDfF;l-jVLdnFZ}4i{1wOQUR^fgM+OJ zYMTR80>872>WQ&;4+w>b3Y~pFM7*Id(?8hl+50d)FjsT9ivU-KZs=vcM?@rgUoL%| zgO#s`3gq~10sps1V0zKWub&$$nyA8Vix zDxBFF*rz1IkI5mEP5u`=grEUV=d&*geC_R)3iKtzXj9QV>bSSft68ZNXKt39ee|=Z z@aNOgi$fX1HUCK>l%B)>+n47JqT&IMW)L;9?NGVfBS`qOsG3AT*Dbpu$Z^)~p0vkt zhuAMMAT+G!Q~PhCTH(m>bXj;=n+76OrG9PHXk$&a6?EKzEnv~tcf%R5(})v_>`F=* zQ|0KSUd%ja!k8;pJ9ifJ|w1 zu-dph|9}%W*eZL=929@K`mL6MXL1ePjDl~emKryuE@-PF)a4-y3S^d;cYh=gAD@<; zz)^bJHEQu^@#1FYcknr^Hgdde%TndlkSl59nR~G~r+t&!P z^Nt;tLSZ?e+8^M*Q+ctYUd+J4cFa7DzznTR_4D#^pgXV_s|XoydrX>>^tFLnXV$S=>oDYoc3D>rN4phNBJ^c; zSM2{8*qw<)^B>fm`FZL=iHuJleg%pVAh=(4uhiRQ1ap(3NLdk!!A3z(`8_Z}Zu`mLmG*<3{00~8v+v+1BgM9um_v%3?PVww} zTO5wGs@0fp*;?sS9ESygP94N4O>RzGGYasmSsu07d!Q{64cCt|A$E__4;x$1z8koc z6=ngLa7Er2+f1%Blo7w=n4t8RThRdw&HGX(N1AZOu2jyzWD?A7mp4j}0UoKXp@{;w z_3)T~MX#L)(AH%l@bCS2$7(4syUe&H>lQb7Y}&A?_c@)o;V=c0*>S_&m57RKc8#703d?CgO7y9>7diOt1Ut) zik0LM#n$@$0W@gWTPA##qZEaA?yGj{72gG0{?a=jshV4B+gC%uoaZKvSiNLmLjL`s zwYB%$LAQ*62*0lph@qv&JsqFxYxtNBew>&v0F-I&)%Ep3XK-(aarqoJsvpd>fW(0# z+Z9=E0xVKe_M%vkny9!8#pG*{fga+6zPOl}$;W3DOe`!?aMZ!3E=c_oi$O>2o#EfF z&L(JHDIUlhL#xKPyw0KN%f63oHGQoQ{9h}VcJ_3s&BV1r^Y#c(1eIOZ%{LSU4vNh8 z+j}2z7&ipRq)LX(%ZrGJyb*MNl}Z1QeUD@T4!@=#*ITI`&~e>UUDnB|NN{f<-Q8#r zTDviz-kR&nDy+`i#YAhozhtyLF;JrYWT`#7M9psWws}XUnz2G0>4B%E5EGNu?&f0r z%uru-D?25DfBz21?cl(h`VK{5W#aPfnN^$BWx?usm?g(VzsSK=s3i@W#N~&(GaQbh z2xBfP9E9;67Q@MH+4m6fu3Gn|QxmBYDlCx#&Ct+)>yHql%tQ~1^EhAt>u+;aD0aB% zgN-XpBC8lElCz0YRtzIP7QX4S|`IG1#`5Eh@E1ST}u zMlVW~>6Y0Wm3QOQwevh|>`d5sZ#`P3lso^K17BUBP^UCI)pdDX86;=L+3+ipXInue zO8H|>q9K34%q`315F{I19-G#Uen*D~!x*H_>AY2XZuVN6i$C)ZQPawk&*ze?zaC2t0@h`Bl}inJ`yM zN6{nGDvB03lHPfK;6su;u}^N24fv$_hgP7C|Nn4EU#;>r6Z75~M04-CzABW{_(<^c zHo7MaApsUrx1R|*OucA7$EUJjbMz#A<}+%mdQTVjQeWZGbjz}7oj>jz?YoZ((;>6IWzZjl2By`Lt-gar)OYw zKpRfo{4shV~&LW9H}h6HyhK`2M}&zXwDgM;$lS+7aLuHCwO$-obye zb#m%k-dyi{8Q{i-r73#+B=YKAdG45?($7Dd_)s@S7kYj`3@!27Db+l9x|>(YKfhzI zf>++$EbXv1#j1od@Bz&GR&~`%7n`}BbVL-35@Y)lbZ0Ugloh;VD|VokZYZW%-yRM? zXyuMno#V!{0~gAD>@L~)>@5%>~F^x_PYwE;pM zVMgR9_;6Xod%x^lRA`Zq`eN)&BmZ-m67$BY%hMG4Zgtb!3)-12^8>l&8-3MEGBK() zYPGYt-uJe?soQvhe19IT)|h_QpU!iZ!NQh^AvdPnaUueX8N@iFYh+?>unNI8!eyeb z3s7L3xo>Ry<0jA24q3QR;hK?pZZ2qDsiKP*XHd>ipb^q7A1?p8MZ7kUz&A%L`6pxO z=WeNuhSC<$_S5i2PBolU#4dA!ejKuTgIXn{WpCLhoVv8`_Z(FuP*|5(0Pu-A*6Een z3mwn|MVXi0%CQ4lXnsk(Y8HS8_4!C;yPJbq8tj%Yj9uHmMgV>Qy>7LqI|PQD^&+7Y zzHvQ4URt_*U;Lo5RP)0(<;;f+FGE6_BjlfRMASVkurhLelc%=~(lnj_oTgCA_l5FN1J3Xpjl{0=t##N zf^C6*B~)j__6YB1lse9be0>L@;yn)FOCA&1VM4o^g8TN0aO%sT!3sKW8o!yHCr<4^ zeYy7m$Jo&(s~>Zco0#QbUTU)YNJ$MO&gBp)?kD{Mgy3PIzt!O2zBy#{?zyAcKkL_I zkbH!?FyU`5ZMlNDKRuu`d@0$gFXm$dzSDW;>Z{Z|)+yS}VV_Kyl@2bz}FU4m1$vnA9K z`KuT4D-{6btWCa?{ohOF<8|`3M?qw?A^NZ}O&<3B#Lrd!Gs~(1wa>z15#Y*oAUp$2 z68KS@8yxSdA0WJ!@>`Gv0LmFf`Fu9ws-U1)Uw9WQYcmXg7MPf|f;Yh?;JUOSO-)Pn zx59n}n&crF1U!(21(MOfCfltgf&CyK59EG;zTnG13Q*RUFJEf@%4dG;n(epXZ>4q< z_qNN@h%NBV!?(s4oe|Gyh=DNI!AvC*3XPsC}>QqPn& znlZ)fKARg)$M?nHUR$e|cQ!(9m7lreHo%yrTWK`xQO3drtl109TbC`i%CoL=Zr>G| zM|f38?T|e%Ir^Zow$Y}D&D(mu5fwg3KUB399_(%RVf|~4$A{Wf8f~eOhT^Myd=Fr9 zFv)LZWTx8(rPB4;eQ4IMGFvFlu^69*2?Lu7z-@xX$2!TJC5Z~Z47^Yj;#dt&h7xPm1QN*d@| zGFu039Nae(8Whm*JM2XvRdbXkDgw!-*<_-JL$DOL=B={K zi0^W-MF7(&(j}_h=ZsUAXb{U}{^+|&#W@@eCj1V8kfuaNU*8dk1R?czy2gLT@1~I& zNekbafy2i{#iQN$dYI-+5}z(pHj1`r_wz~JnDMniY^n2W$wq!L1w~*W|7Ja+b5EQ$ zCgQ=F);ULXI;L!>qWNN&m$Lt;^|?WJb4@-s&N*c%r9R*AT9angDoDGbT_iPrH2DX5%vLXX zr|+q9xzjB^&-vga4Ry7{ou+ZJi)1%^7Wi4jXFQi2Pz9eE(_~w(Iq+=y=Zsg#(pvV) zG1i}HuCnuqX5Tw2n{kmiyBl8=OvfjO*3rT95;EoQ#XFO zVVkMPq+8St?LsA&L&qEKtJ!ZQM`jwF#Y`4AQ3dE(Y4@@*V&xC2w~UuY?hhFytRK48 z%+co0C0SoEn~uxoAb&A2IIm6fUINfS#53Ma|M6X$K)ShS_4(;thuhV=x5m(_;&UpvwY7`bcQFu4X=Kz~;{QwP~oAQ8e_G^D9 zlK$t-PVYECd;ZAx-i}509+#_=$d$4+c`7IeK`?p$CYZZ^`dEOKmmILkDwwag+>%+Ic=iV(v zn{i*Cb4EW^4bvdkwj1|oD%V7sW8*$w`8d^nNFwEy;%_lOTDC`*<>TzG=iM3m#$jn6 z7jB###lfMnH_m+W(3@l0Qaqr*a%uW|H@as*=kSq_-uro^M!IesI#^LEBE#G(&eqV| z00A0mdXCZxuykNZA|lj-L?0|L6a@2Zys7vC%ueBJvz;NHRZhS;A?6~TT*MAssq zwvs0=+8EDOb|f|X$IY_40*F27QDEjQ>ymfb2C>q+Ke>kjACL)G#$@Ult-|B z?abQiZsTH8l+}IgWp$L9osVsHx$KtH!6OqoHXQYJGCL7_RRe_TYkN#tb8=p|-N2El z4T2n)N&6L^d8TGJeZd%2*H4~vb2sN)gA1jAta31YpRTInWRAY$nsH*9?X*M1b@K7N zu@8#=fBcbVft4BH?(gUW)5jmZ<}#lYSI4iKK?<#PzU*}6DjtI*kPoUt$~b9gvs(I~Dp@B_VuV+j#pMCLi7kue(hl)4Ucv9XTj5 zm+~gM0g@VqcYS;}GdWf`y>;ha2e2%(rL$FS|w|#bKZ@OE|-k@49%aaVK zy>7@8SgtO*Ebz2KXHW{je@2L9oBsRDbbEEmTBcv(TE}>K`l>DW`a5gj=~le)l^Y00 zQbEIpQ$rO;`Ncl(y9LS}-h6|3tSod+caGuZdRaaw-{O8ABTVHiL7i0)A3{59`503Z z4AbBH=AriK_#H#|u)L#(EGd|rV{t%|1hr!A?hTD{{Ciw8po8M7a^Ase1^Fv;8)Kfc#@+2c9JU&Q`;OiD&0gT6Ka> z320DXWn>)PK8h<63LSIsyP^K=GEV$@SLpmEfc@G6Drey#T#K!A_uE4%CwC;V6DTh8|1_wX>St4P91) zgNo*C9>kz(y(z+|uzwA8%V0T(jl2(jubygOgs>- za&w#v2XH!iF8O~pP)N9Iw14Gh^NcO)FM`Og^bJRlla!Q{o=GO^=EoEhKG0`FbIyL& z036_N4XZsmVAImoWJP@XoZwvEo6_J})lWU~wiU)xaffK5iKH4X!%Z#ap!`nI!G;y? z*w@h8D-z8=SghcfwC)FjXS@AQZAUxT+IUQd+8ma3!umBMQ_Cx=@d}^#d5cXn+J6Bw z%p53t56+h7nN8mjmqDzz(Yq~fdaaEL1nFj9*S@PNOndl(!vh`9z4o=Gm}8H#)X24c zfH<2PXqho8ft`9R7?&m2tcLPIJD_0co^8ag4Ej*5@1IRNc+=``S$`QOfchE-pjhH^ zp~F<9UI#Jzr5gsp^SP~UU1QTHesFAhfHot8;mHLzuw8RBZxNh1L&l9GUU6z1hLDp!6e5^D6K7okBDJ4ElcX(tIpz+Wn!k3m9n zB~+A`1(3z-mODKW3d@DDU%K#C@~PY+Tpww08~<=~YjLfId7> z3DH*kcy)>j2bwO2--mCHlv5PwfuT8(bJhtjLSN(Qd$yW}QR4WNn?=g$74?`V4`&*r zSMdmVUe^wlOqMMKjWK9%Xn@p7gT$&8j2r{F1q2s@@k=stayiaE|7dF+w|@B8NiSZ! z4w1nCY@8s38IHe|vCLG8lq5|UVGrNR^GT=wvh>nH0AGEba)iB`Ikc?J+}c&w`+BDW z>1b1|>-J|!{tEldl+E@B#5Kr^uBYp?Q12Z{M+akF-2!{7>gQyXv%~-Asp6lih_*mlt=%_NR#Q@Ab;2b3-D+PycIN&yqjI#e%z(L~z@(m*{;l-%g z*~c$~g4XwOQQK$06s*y^`Y@{@Vt;VEhwQ*w)7&c>8#*H}!>&EkOH1dffZS>A5%TDL z`FlLZnn<@-5`F)JU0@d^`ODYwdi2f zw5F+1B&TpmB{vx3o^dBvUm8Ay#n(rf!h_v?UJ74J^*M)QuKMabSbe`>h|hl4T^4Bj z@zmFG5O$#b4D0(}=l3B9u|iif;^;Kn&o8tRiso~cdJiNCAw*Yh-xiJpLkuVn95`F* zLtdqqZ$mNBB;a}jI*@hE{`)tJO@x2jSz;lZetp&p7r#b2p2#4aRgLYZzk8MC;l&Vl z-N7RFWd?WHOol=+zdG|iGWAZLOY{f~#~dA({_0t)hd6AWdc^033=FlFlJ;w$uTc zoc%5A6oR%6v>E~6(40_RHK+%)p_sT&7&{h(sQm~Ytkp{~Y_M}{rVuq%YMQLoNkv7= zs^aq{wN#OYkEPQo({9mG|3^{38o;q@duZ+M^NkceW-$=hcBpK5r&xD4)|&ls*V=ho$JCrlFwG96 zmoHxplGy4VoG3YZv5~y`vK6(xLmtj4vH3cD^4=C8(pAm8>kh;0De>|j1!4=pJ$>@lBz0pjBni=;l zcj?o~=m{TY%P56n&#i+kF3)X8SYi#dSE_&!nsu+kI2gak=MS`LL?kx7n!iV_{#;FP z$+j7#^pDm8$*X|@u)H{+3Ex3?f?>TN^{py-6j*Ht?n&#NX@Q;1?^+J>sWUxmOSWYC zY0t(>XE3;2R@=sNunGIcmX2(7NV&mOp+SbzQ9|duhpo zzZnqRau!E*n=MImmUa-g6s7DR`c@xMi0EHK@GM76MVVMA=e~2Q#KN-lQ=-Pv9enY@eZmxc0WpN~1`md_0gCj0D4pE^b3mzBL8tzi%yCX%!~U}aKV0B+JmJIfm= zTgQze^+Ao^liBIMR8~Wp3P~@cznx35#hlBTZ|mUh-{A!wF{eizgZgi4M(2)vP%NPn zyiPLq&CMt6tbhNlD|8ilwwYeV+WkQ=^>seAy3nVMY0E`nGy;i-V5!_DYfttR%Tjpp zns+3;E?FEF7^6ghEp~4lioX`Tx7~z(fTcP)FdRfu-IFIz08u}&kOKY70tZ^IKHG9Q~M!b?atUXL8{KK#fSr0r+@ zF<>3$HUm$dy($eS@M{lprrs>LW8(pT_8<-AJr9uK^-pQ8Y2(DDQV;9I%*bJR-)N}4 zV=SJ+WaKtj5u=H0S0n^EX>2RyHL@h6tBP#|q;JC5J?a5rbGtD4uuGgKFaW0&eT7Ec zj3nuxe7}6}tutn;v_hS>0?WV3``n)gJ{1*IFxf~9(;st@x76do*DtX}$n7lXtg9YS z9bdyAyQ#sDfdQydQL)fD&z;Do)Tw$yQ0{D^AiH!k>$~}d?j@L)6ihUKxO+KopeI|@ znSlM0iCX%pul+hM81omX@Xa8?a&Sj;9T{fCuxj<(x-6rr8uh6$oSG%_%pqyi7L* zm~m3IYUm)6{{)3yg-_v|XuWm$ zT)=hswQ|G0JKJ@|rhcNyL2umQ5%60#0a}iYMKJzAB8lo|myT`79@HHwfXKo1=n!y2 zsd3YV#lg{Fh{L-XR>OZ_h|u2^WFkFxjv?R-dBpuxjlSkcPu8&^fPrc~bp}E!QY7Pt-wvx))*(4&E6i_Stk#*FSEeYs|4)> z|1MD3`l(&Yi2-RB)x@WegRM~a|M>h-W{`JT2FqQ{V^f8uRBCa6%)y|*5Ol%UkhLp& zhgaA!29ZmD9G2K1gS~w|B;CF{_Q%@8uNWli8sL9N0bz~o7Ol{FSE3_yjBBT%)%UF8 z2CGj^M#c!v=Wd4@(y(73_U~LB=-El_;lA^@Ij}zvO#J-X-@bhtRdcS+3Z%a~afgWn z6oK$_nMx@|x_TwgTF+&4G_-X1gwFB#=(*(kK_Ot$87focf$k;0Vj3XQ1SGDWZ15zY znU(st&yI<9Z8`G_7*ff^6Vu()BYqWMK{0^qCmML-q}?&WnAncQzu!h6u&#~Lx;Oma z$Kc*`+%`VHeu8JUaPuqp)m0=Ozo1hb2LmY76R(Mp=Gcz8$Ihmu-TyAq(;*EN0V+!W zQ3RxsgA>IgLCbanY&{rry=Vrvj2;+sqy6kJf(AQaYguCPx{3@3F+xH_)VIEwsZpHi z?$MVo4|Xan9=gE)2ET&)d;_P?oWSzaE$jow;>=F6js(7X^D}cs>DRB|E8u>-_A`0{ z%p6J*??~&P@o$&JCnSvg7(f^w@9^~_F3lN)#$UvdKbNWY0t?_vpY`cSlqU$dDm;4h zs7+oU3Fc3D;?f`Y&VR(^sS2ocKR@*u5bs~r)YKeaL+Vlt?HNV`B|HQ+cI< zF$R`St>c&cKcgQ&@LVLqp$HW~siLUD>0$eVLEu!*;8DnZAS9PFea* z>gTsQ;WrBLOrCTiMDus<0_oOnJj(Jhvt!d^N4kHBa_A>VPFdnV<}Qxfjf{x+HgZYJ z6Xrj8>eJe?xBI!*S}W@P4mk6~tnD{}O!r|6&B-08n{G==W1kVvj?`{lDo@fB$FS6QVbl z|8k0u#}rw{|7H$=)dNdT@|Pt?9dGylUoH9GiU0jI&4^JW^yL>f%i#DQrnSFDp zq|J)t@NwY99?*r9R#13N8#(^E?Ad)v?<1R@d`sMypcN0we>S8L*%mZK!vu1EejfgR zvwP^gNuE8IZ0V!heC#KrGtf#nHY}5C#%|h01g1g%SriDfMGbmh6g1Rsfm5(hzwGxX2zv2S1KK+1^EYpKeKhF6Do=-UTH8Bp6T+;x-NRoMHY5q}HFr+O1@qd^`yw^wbm zttu^}5W^bg9K#>oN`+x{7+K+68@>Ic9vtC&F3?fO@dAXUtt~j9=pHZw{eE9ba!v9! z`AXy|+%sQh|HI;Ioc`_e3c2!FM%D(r(dGucameK{Ha7Dp)8=9)fokr|th38TlM+1W zQ-TP(pk3ndLhRliE2!@5>RUc@Vdregw5p=23OwVzzaYosZX_#G!)NL|gpaZ>a472@ zZm(Jmq1;h|H@6?Ks-?WTdQCU{sgGTBm_98BnC&L*n4~p{MsvCf?gsajR~KJk)lw(> z_I+x*&a1$BoVvhfOc5H8^;G&dLAa9KF99bk|HEvGW>Q)88aN?ps~zA zc1ibPO!ayN1nxkn%mbO2*BCntBLGqdwqS0{XNQVl0XbR)_a1fJ{b-N=-i|#Ub~gyg zizk?qqav7OTfiuVsRI&W`|-sA>>EWPmS|au$ohEy5lb|Z$mwZ^=sTqYf8 zjzKn^8)6kj){N%HoK5q&l~XA^?N_;S!rS&XHHHe7^PMcayDlY_#VznV>FOJ7qdqZT zD^Ec3><1fV*x9Ko#_6jl$xwuZ6E^6U;Dt&yzvHGhMT<1{Tt=RO71`M8GT$GtonZ3_ zO^ON}8KWncCBHpWEgwbGz_;wP6~A;ceyLf)NIfrWUfFNkD>tv-$kOC71E14%ZQ+}F z(cw`yXzU)p<>dX2pzHNg;GWvV7H3O+wL7A>opQRHa!#ei;rG-mN_JT8cIOS;4k&Pd!1LX*fqF;iCuDSa^_~E zMqh17ypoYoeHj{Oa(DahG69v?GP(r)iG z_}*FK=E!}#<_E2Z3NC_my(~>h|MQfJH9Lk7CltW(I&oml1x$()}q31$168ZrqiXJiEsMdK3c2M zv-W9aQKSx4e-}eJ6-OMD=^xVo<1cpF0o6`}hE$4}GD}*x>~?%a#3N7HyLGEJM&Ct9 zBSY*QvbeC42j2t!T^&?u+zXkRHpe+PA6Cc$Vs$tgCvK)Xuiba{$`w9B<-AJ*SH&%zQeQOQ9z3mDM4tlVt7zqTG7k=Io`WLYtxdHNHsLr{It8lt>R2#u z&xUg6s|*{?c=40m%K~LOEgHF|qjp|ia>|dYh~~TQy;FR@SQkg0?8BLBpng;&bL8_z zYZLS-3k>TrX5Q-U|PYdfFxO3{y~3fwPWji}^%_ZYPny+SjbY z4{P-ei4I}igkN-pxnMaZIj$j@N%h%-3yYod+^&>IHM;kzFAX)G@$0YpG(vK@fAG56 z)lq)iwG6hYc&v}sh~;M@|9fM|7 z;?$8QdMb-@G&pefi>!{Pg-rr#tqzB;93|Xk*PwR9@?^V2t4)ZXM^g!T>HT2>77Z`U z{J!h7_{IQYc%e&$*C13$;@Ljr%tOQWqEylyjMtXkCt z=c+>^id$>CT(>?lBbcBJi>^my(|Sj!ohBYMURDP(nN6_p(66z7JoTTRPNxR+4Qa2A zDdwfu>{ja9=n2@7vBS~r^BbE>?HCj5Eti36?RM>!x0Ion5pK}K zY+Vv3D7Dd*^&Z|YrPbH!9|5L(X-55ssi5SeE--qv7^qeE8f%!CI~!i`Rc%ljvl#bd ziWJfdxYAwCy@rjE-t-yLia!oC1#PDVXuK&92FQ6 ztOa{&v&r4y|I!cpifix~e-SUg}6nvI{Ih4T5>d6fr~coALF! zh__ob#xI^YO8e%MT0=h$>s_gb>87k1_& zFLTp7t;jY#2Q_SkGU|yVD)-~}ve?1_;o`N17CkaBa#fXNOuxNFa}U6m2d)NG>!-H5 z*3Z`*jwzsO%&#=&w|1iTLUi>?v+gI~W&C5fzoa9v>@h0p&J3qIjSP&NE!Tr1UO>G5 zis?KFpfD_l)HH7=9o=#*$3lZ>85uuL&vrxDG%Q6<9pH=q8=H1+@9;A%|MprL7H23HNsEs&iqpHQEn6kG%D5^+6=_}!y2BZi;$j+X8p?h4{WM7)_33C^Df{pnkkQgs z&^fa(E-@Q4n1ssX)qdcrYhaL6wQh#u^O&>L%C~%49`r*gKn;pY>ewofNn8>a4UoJq zmA`5uR-Ad_?zL+%<25`s^8f1nR5QMX5d;PVX#3fFid7{DIZ8wXf0fnZ0`trg_&7r^ z-hxiyacNQ!9>t=eq`x~)qPMx&SUB|*{=8zLX0&0&wfc27HjYZAy8Lw85CJssar*Gnn>oCP2XBTttm zPvf1VSF0tpq$haxY^^=sl-GlO+5xWn(Z_dTQP&e^7k&L|4jj{(@)Vt$E>4k0DVJKh%YD&*Fl75-MU61W zxBasTs20P^6sm(GGo#!Hv742nw1pCwhyL0>epa-}>>XXN(An9wn>uM~UJ`O& zn<_RjT9g*YFNqn&2!O{>TpW>@*isrjjkx3aM`70|c5~D21kyG!JB_b-Z*Yw%jP_qE z?B7x-x!`Y3hu{5(j2fBBDJfW`NH^GmM9Qr1q@AgA_djKNSx30S)V}-U&RpG_!d{xSSeTe$mMOI83LES)37KOh^TtO7a=*^c`%O~W$A4@9)yEEhA+e1Sh1Bx#-$Z^y-}laW3d3kgPqm8UKLN6gDVubwG1At z64aeeRQmD7UcgU0GbDVW98a2{ROYWPQYLhPBT*Ay;?#eA^AmpC_$%u;-g&hzlbKf> zanrU5?%{_fpMzZ@%U8!wD%qnd_khW+y4F|GJ^tPq$-1T#%Tq3-D~`BWhYs6+FtPDC zCpUmdN%`62w74+60jH}))$R4Iv7*&3i*qD*wd*aL=8V!A&?>+mcbsPo(cP$Ai0tAd^*=9j=HT85oO|>}IP^F=lTmTc z3|(;BIZ_O&+(Z{z=D-NtiydeFYgP)qH~zl_kb>YpN@5^T`@b^=#j*DF66^ldlv|ESB%_ ze51&AD$t=MQp2{#_YGT!*)^&W6lFAfc(2*TI%%!jLCGZSm;2O~R<&on=5IYoDKX&D z9TzM?s`Fg*hZ8S}dXLkZaGcKPX%agvmXCWg^EC7#*uXlMoZu+Nughjy38LtnJ3PR< zaQ?jU*Wic5|2k{OM=ypTO))uX|KOmhxtTJiF6Nd6JE=eSg{G_FzT9H@8DX6AL+)C6 zqz>3qUj0=Ob(Z@F{EidEl%0byc`119htX%?YWLB8A+o)R@qVm)?}!4v!nZh#geS{ZJ+)rR`pw*tz0wy}2}!$mvRHAgusFd1lSjpN zQvI*kKBP`i3k5C(N@nY^J`F0&zvB%T{4}mWc=oo>k&4xKIT^w_ffBn&35_ba%}8nQ zWS#ikARK5xvSOfZ4d>v-ud|dhEWxSvITF5aNH|FL-@Aa|%G(!phhju7jGu@?<0+p_ zmhHUlj{+-ovy*FYlHK7+Gd;7e;Gyhrx#dYAkBj2u^E|2VQKyw2Dm<_+OefW?F{ZQZ z^@-Ar#GPG5#dSX&Vdz;aYweH&;{$g_pK=|SSW>U%N1f+ilF27HB3-{Pw$DJ!~y3=nffGt-Nn4vRKmK2GjV!i zj*re=T6)W_E2aAM1itUTey+YcQTY;TD;a-zuo20uNXC8WJV(T^?OfhdBA{p$Fv)Wu zseBMhXF=`G`VQAohWXI`mFI@9px3_jJXIXp6ftos{SkY(yPmVWZ4Gw$!ES*CZpX0T zL9s_^zJofBN|NU{5|OT+^j7QYQ10{B9^l)mp>ALwlVZmAz<{v92ru>^r!AwaxMmwg zZywz2d=tg(?%7U;o8=QU9A|oSkcQtUxJ#`F&^5@|u-ja zEU}eU5#H`J??oc@72-Cr^Q8&V&N}dpcLoh!MqT6Hle`-)@mm4mGim)bo;&`V`xUXC z`?r;vEwOUXCg(g3nRx#%zTP@4%5H5RHc$x>kZuR1OX)^H1f`^5Na^lQMY@shZiem@ zq`R8|>F&;NvG;!8{rsN2-|sm10}f{HduH8hU3p&TiN?rP?8w@8e&~95ijqNErG{>` zE4HaX@xK3PWp+MSbE6x}j?(jTf;O)Yrgs^r@tz!BAb~&2GfKmGdmYwfu(_s2O}3q+ zU=HwXsdwq#s05wVfV(_La?S~hnAo(3yda5|0pc*Wt35nc5?x0NBgv}nCE;*pC2q1& zQz=q|A&-_wl3U>vri>k5w~0YZwtNHgRf=W_Es>k!UnFKBC-GE|_6tjLG(q89u0D z6m_&z2(kW`UHk3*Fj6skugCt#dbZ6S{3b&xrd{tFdO|yc0S!l@O^YrlbO}>g2lE{7 zn^CE8+k0rWp6Oe?!O1(qVH7ztpUc>~ONdGnEfDqe zEVH)}KCF9q!cA8=eda}|Qgo49{8CRkL3ZTp$i{(ek039~*nOB%uyD7_i?v&<@rL`z zldk%#h08paqw1x=rRfb}Qlh$2p+-KB0)Xibv3` zQC2`CjcE6BS8$TNJlx@GPhj$~ztc-yyS*HQ{~9+uR6)NF|M)fdogf8Oz+9mGX~g;j zc>uw)e}wq$*Vg-Q^zKt?6?_}oH)gy}!R_?(1?G~G7mQ8k9&v1@WM{YPGj=wB|4Po0 zWRm6nq2ghRjtLfDuVb98h1jSk;nN?Bx`HUIirvxCacCr4+UD-|@shD0(|_9l4-h94 zzBM(G*3{NYfB1ml<>NEsay!Ze@mv^nS}8V1e*lE6@n%nn^Q22trXbJy)l)G7+``}e z=(7_Qj^vk&`=Hw$kpF_urmN*9I<+`aeU4zu&Bw^x+uI zxpcKJHqm#bW^n?+;+tLe-sgXb9yAH>FK1!H0^yL&5?@|i6htHOo%|*3i)!+xG?n1q zL;U^c*9(N%*$)Mp{QOR*+p)gbE*&puGa9KO2-%Is-o*d*8o#zaf~>)dc2`uec++F! z;z-}-ijB`ixmxG{_^_|P_r@}Zm6f3gDl}+4hfD^u6K4G*68hKIDn`0@Rd2a|qHixP z2_+>ZVPW74{0V8H-^Tmz9{!ak|06gbe0gO<7=ROw*N0wT(MNpN^F~kj%z#yi^zUUT zdUtDeH%He&N>-NakwzwEegrij2S z{ThG&4+G{5en%gD#7CTctRkH z{y&GJ%vqTHFW32tQ-Aa9p}RZ3m91?$VB-1$2nDR@Hj0hkBic=h{RsO0mlxKPfxM>$ zwg9eORpr~Xv?7dw@dt~9hnKsI}e!nKc#?m>LM zsA>GyT=D1qDPs3XM{G7h?Nw+-YiW(Ilv3YgH>Fpl`R}gw4dz33`#&|k6H?H}W%B!5 z39k^E`V~pnUi|x!=Ki?9>O_~c=K|<}eNN`%oojH81~>+~|KH~j=#ebH&y4J*aKJ^0 z*j#ip)=~5C9sPdu)%_~iT46yrtfP9Dx0l6<=q`XhAC6tX|8drf`5*pk8}PaxB$)ZY zEC26@doE~^Gevvy(|859tPiSt|5$NqGhfTx8YQ0Ki(q&FbOM!Htqq_>q<6X)ZpmF| z59ayrk9E@T0e|{}KKAwf*QxJE65QW%IkDXR_o9b#A!blOl;j1xT=ETml?uY-9j%Q` zKA#8zKKWvv_|VYM$uhwg|8eyHVGLw^A0)|BEr9bri0Z2=@D~H|QvB75m!>vEamp!* zPJjvYKKe2zrAs(n`Q={(3nAjnwW$;siQH)RbNdUwoOr+yB?l$o#y&!!fwS zvYKzjUtjW4@Rt%||H}yB7j-rVGJ@VJLmhI}tS|`jXJ2%p)jy|9xGQ zz%EvTJcdjT6MH!Q)mVx^G~FSSUshS^kdP^`k?~)!|E87Gw=)8^rOc`tPNz~t6;`dQ8U<|Ex zULj<|o$Gv)l*Z*R*}{)_Ix8Rs>|MN{@skST8?l44s;5G={gk<$>IJiD+`~M1fo&YEG(lKm3o$Fb#^zOVwrS*?xa=;Xt!#cv7}3zYl-KVp$-Di~a~xj58?Z5!Y#Dk^f>ZC5u}0s?wr zz+%FhBeo$}rq@U1dU0GA@ZiJt}{9_ywtjDe0WFi$SGATsRX|E}Zz{NkGo z&b=3g=fe3O_VHhRuc-2)Pq-f1k?Qo>x-ad_3h`aKCb-!homXEmo@pN1pplX8y|S|H z5|xzPjexfa5iy6#a^Z6R35Xu>WS=nbcRY~08rgGBzf@o3-(BH`i*zqRuILatp(y(uJN75Ru z58lNVL{EEa@_o16a?1og`A+K^my4Hx;;D1FUZyk+L}cX-2QN)gz`IicpRs{%e|2^B zVAyLB){^sR4V)ps#E*KJ^0$&3_!FHS_%dWt#AeHRN`oi=vn*gGL>(V_3+{_`AJVYx zWd>w@4D_y(A61t)8e{Tq=#6B$z^1&#T~P6S#Dw#+rKra36D+{xB{GB~7hQJdyg!k9 zBt<|Y#^eg%>g4j|x^(=W#VdGedQSsxw60SiEXw{hVHg_;!^1Je%*<@GRF{^^dX)tX zBCupu1)co$2;c9kS7R98&6Shib054oo{fknGUs6Z`J>ZU3oC!f zvt2Jf)1xB4_^B%!u+WP1YeQ|8TG7JvporoL(gAy>OugV+^WFr!=MauehS-y>OW@Tt z+;_$(CQGcJ$zvWkO%cD%21N829iaf{28e_%6(jphsExXG_dTBQhgDS_1~Kb)V@;Q6 zKhy1r3Ua$X5aFy84P!4SCwu*RW8S@}>#)*v#$dYKkjcECm8B!!6kg9cmM0%@xY8qn zfe~hN(XAV|e{*I7@Uo_o*7$aQb7lHcPFFkASa^7^)JXXq_P;Txp8HUUpC=WnHyD}W zHJpskjAjq`lLZBQ^)SL{HnB?Rq7yHtg_s^dm?f=Ta<~_ize|g(Z$p<7*qv6&ygP z#_^lzl&J>@GdGmQSrR9YMAEYCyB0o|o%tAOGbD3~r*n;sbq9x*bnqG%9a%~22{yS* zsYy2d`9&R9b-~yjN&c;IZ%SsI9_|*Zu*a!aeBIl)LtTchg&Fs>S4kk+d@gb>UXfm6 z2cGxp2==k>jXc$-bycIL#y)tOH+De2uo1f+!<;KtYNSSX?}8m_j?FC*MfSDKuN#wb znpzyEfed<>9Nl?6iY{s=l@uitORQ+%1U^&gc$%iL5HtSg*?jyAl}^v- z5VqVase$>awK*s?>yOS*9y7vMD`V(kNIqIIc<)#`HllU885hor0-2QT1g8Hp5Qk5e zFQe2oQAH^godj}tFfl+KmTTVRCRZXTtlZIL0OZX?LP+_?FV~p?dtmDJRHViix?gNg zD^Hc@eU8A)!C0Q#wdKpcn0G(G_W1~CatAm2bb->~2f$MLQ=(na0#M5t?AF&T)7&l@ zBsk2Y;Phr6EcM;#SBZv^mD_AE(eJ_z92gj(<)Q6>WOtd_p(5 z2m1DYRo)!i`o@x&tQ`%Sl>E?MkU#7C(S|>Iz4;Py9BZ|H+W0_J6QXManAy>rD=;_Q z2{gxK<%8M2KLCD(`7g)W^Yoa89BbeE+u9cf8%S>mw;$}4%co9`G>Wp{pyfO09Qx5%9BcF&l!3%(5) zAtAB664(D44--4_<99KitR5=(Rla4aUa`?- zD+@W18|kBaNLa48rDMq#OsFcYn_(A5p?dL;z(3`G0;Q{H&KM(>y*IN;^C?Z^jMz!b zNtC8SY$T>3&g1PWqgmDip-JOGay)pT!svAi#;N4qI^)D0hAk3XfC?nbk^S$h?=YvE zdadN<8V+vR0He&6gy`EkAs-FD#!a%Vv*Z-em@74)g~U+OMlwEIL4A<{N{2>A`NoZs z9ZoB7bRsRUh3)T+a*bci{9eIOnqBtBsHET5dc$oONg)fuO_I?hYew3SPG5SIApp~~ zA{PBp=Sc$hmWmvQlnQdEQfIrqLHx!mgcYmo^sqD1ZFyj-VC_B4p13;uN`kHcP9hPT6j*PPaU#{AZUJHLr`B%;vZpVUwoz=9X$@ zItp%sR#(4$&~mL-J|_tOJt6rnCvd+ZV?oa3KQm?)pWuGnm~hqGtj5x)$lNVojex3A zFFRhMvXb|hIf@mR*r>1L${psPB2o%1^H)rW-E!0PqZ#2yz=ReUwDxo=&_zZ-mZHKmLy|?7zgv2?ZeMijTU6Ruy)=K`A zva*R)<#xAj&nqAPbb3&)FV1K&xg>tR3Z6&42&jrK^I|g)n>UGEbPk55ri2w>sx?2o zU)&@&Dz654X;#|7q|XsirLo*^{L&>50m}hwIi!oX&Z(JdIb+#97=39Xr zmP@1cW+0ALEZ^yP9U`BHMaxA1x;dMG;(Qv5*z__>M)1NQz%MXAKi_6!dnvtDSW~(j zh)UQTuVcXCOH>T)vU?xF_$=#J!ACTfcY-Lv=;ZSviZ9jDaD- z0hGCMNn3@}jzf_Bys7x1PbwQN62ujAr5l^}=@u-gCf?1B;cWe&(O1p%JXs=Gx9?pL zXDm1F)HlX|7a#tavn-^54ht|ZJaP<3aox8$dx+r zcFX4=@Ydsg&OY1Aa3xgu(mCc%SGcykEH2@Un)WD@7DJ_w%WqBL58Cc<)0$+rQhQiP z3tjNatvo>`#LksCf|g$xfDG6flQLKMpQjhsrRsH@;5WVJ)0irA^W$hjH@fJ0+nvCR z#_Q+sX25#mOsI1#klwP3*r(x{#LCe`vHgS$*UDC1MQswdz zDHWZK`EZzN({Pqo38dTMVer*fb-#W)Tq{A?tUQL!*@g>gI zN#tw)Y3h3RxT2KrXr>;?=3-RZHS$x^1fy)(!^k}8WGh^1>b=K}QO~LhQn}f&qubhl z)ZXqryKfR{*Rc&}hWq5+{4%Es@TDilBo>~yHbus@A&eRVDb~s zL;y}Z9S~zq1vP9V>lv;x$8E|81~snBn_r*e%JsM}9IA%^+^fgC zj@OOTDO~d;Kj3Z-$GQIF)qr|dhh1qoOrw!X9^;*InV)gXyCil}J_+~4#t*y%avuSxvbiuhHEuC5%q*G5v&TD(@S<)U8#!758Gio{5z`G4|!NN$anodifb{Axev|N+14U zCdZl#u{oOMtrdnw(!#+hcXR0pC;6QBmA$QIix<~8rrhXjXGk59X0l~GE4bQ9j2zDN zo~!0?vESURIP>0l&{FGy~iV>wx_1@?oSRc)EqZ#bQiXCSciz%rJ zo{sPAc^&f^$0gZHABL&2@ryIxYXKDJdoUVE9y&U3(#JlJ_)f-A#eXXR zo0bNq!&!ujIb~HL)8;>H6+Lt8r+qM&(ZC{f!4)+4Le;Q(uNZ0ST7pNcrD=2 zLkDxDHS)!Vfnzdg@!YE@jRVXbX|S0}Lxp+J98bxT&@Kv7M{N9O4MvnWkJ$NiTNs3A zW8FmN=bK~sQ2hUZ_E_jV3cf5LtBDmrlr&omu7D@}NL}9knPgX_^5N*Ciy&QPKW~BW z;~t9Jfe#MLbJlm}txpU(h8#Qs(V0rNTrlGf{o-az=0`C63sQ(U4QQ${L}o7f>sgjT=J6xbj@V-8M`gDh)p?3e{wO zcM6Tq#aLofan1^Jo<&8Brqk5|e2i;cY-G6#4c^lxM@!}!?jP_~6AU+kf3uh$X)IpR z5}Ohn`Kjt(`_mtHV60@Kh@q&^BAD~Jd_<%%j}do1PIli2s4*7bbiYXB);(kmZ0Jhd z<@L{~)TWz%JnQ3?R$1}9;gwZGoYE^Inpv$GniJzwHr5;^ag40O`82W`4~Z-V`r;tM zNwu>;H)2o3HSO6q!ub#sw;BCHGDCS- z`Mc_<_f(m;0Jr27!Q}#m?X_K_0IBgsaSmUW3g(XUl%|aIf^*f(8UM^^rfq-kEm`}S z^Px-7#1fM`|It|mA9i14B*m#2d46@Gwgq8!u`i`o5x;aR=1~)2;8lmBoeFRBNHh-qF7 z8WqO%E0OJoT->b}&-+2+c`OcK>Hxj`I#5p^o*wOuH*ch#Pmt@0Du^DlBl>sI@}C`$ zUtyr}r%?FRQ&XgtHr$<&`3xSqxS8c8YcSQCYV|np3%kA&DF&sTUsqNw>Qz`Ct8~(Q zaj4V9D26`{$-*HvqyDQ=5Vmb3B&>Is;&#%eHzhD1Uy|3_EWXu!-Yae{mjg*cLyT9lqq&R=U;Jpy{M@prEK#^ivb>n4v`rz0s8=Y}cA<*n!sF=xNCjs~SJ<*O z^h2^)M>@KBRK|m`wF=@?=VrUe8}jKs@&==S{gsp}ad^H}U|GHrjSp2b{Mt9;`k?@Q z;U^z&O|4`1X|<>3l5yALn0%@C6g#T)YGNn1i*|h3#%ofdZYGJnXAiP-C^1H}p(JJF zBjdAWRx$@(zbEO{N|orlwdb5pbUT@Ud?v&mf4(P?WQK3h-`-?!LE8hBH^9FfaSFhR z*gPBu+jX1=(OulfQ&-22XX<%@tGiM|5E~JTi=$?_g?&MY*Vf(+q)@ol0Yu-oD*KMO zwskfD8`_VO-z<*bkRhB>hTh02p`25p-D%EA`;>=_Nz>D=nBCX zrFv;hMF`3`Ke&+}o`eVpzmVe=N;stBdKT~wmC}!OlaNnMY3vUs@PH|+y`7&@z zNCqhQ~}jKqsKSh{GKN#_!Xic z^(}hlZcc(eUdcnzRE;*O(}PQ40zo)Zzi{5z>tSEt{f%fSOd2CyLrRvOmb=m!yQr$3 zGehatrRBA6_lvR7Hx&!O))E^}llNbShQT{?>kFFskJ4Lj%;*r@M*vW=H~V_mjo>JO z0bWlJ>pjv%jc9u9z@qkRlo8>`-2#lHnwcRhM}Og)ol;srMRWf^Cu&{r)m4jq zNW<+SQeiAr$ocDqvm7u%PKuM)yvpS{e`Xv%0krYuhCV&cyShyV=@zB{AaviN84~Y-2f%!`O0_Z<@w#_5Uh7`(b+87kQ;*(gxcPKsA^ zlZMk)RnQ{raLjLySdwn}utJA@E@9JtTgdb>QTX&Zh^2f#@8p@ z8$xY)Nif7Z0M1s)ODX=Ca5&^#>ax9POK{S&7x#oh#n26&S7^fhiZ13(zuAMcM9`wj z$$Z$kqPxqn=~nmgjpHGyDgQP}wPN~a>Gki;9l-?t+zN8?GMCP0GFWSzPU5N`HhJ40 z5v$~Y8WDOyWo}1Mi&J9Tb+zY$prAwItjJe0y5mD0Qno??iFrEmY!~xmqQ_M&|Ym?`SUOz#3c=&ZW+<|_&;`@OPoJKyT(Lw5>LB}Oz9Usr#9h4^3 z)4b5XOp!BFYA~Wf+0I?5t4rTs2cIWZ2$y=H_g=ki)E`SmnPsyY+G|z#Z6vd&e;fO| zaJ*^Qk;Fh67I7RLXDe_J5<1;p~gU zOcI7v(Eg`izO97@i6KSYhmRV!2pR^g_Ep66T{hs?iLNTWo+#3oupc^fLeX|cYz8`Z zSc|1(>wJ!fF_W3qnHeFUOzUwGo1=14N&erq<0}~YeedWK0Ozd)OC}vH#1wN1|0(-55(>xdKbqzC6gwA|orff>yd?8e6wyqj-a&#Bt2h zB(`TfcvS|JeREsLSvnMTzvll5?TULlU|shwY`X3#ve=(L{6*|lI%!*S0oK+Nh2~{d zIbYirtt3^Dnt5WogJJKvL*mVg*K~h4hb9-lWnaUYhVnVlYO~%}HmBK9Sv=nnocgic zd-Y*M``^6 zvLmCSj%k&~*?ji)A3gj-!|-lWo$T$BIlTUf>&?l8U*k(6*(w|Al^_D!VvzD$tst|S zOujcA4sMUC=D+3mRIQejT4CKDhu7>^fv9JE0&w1jTV_+Gu|QibJMtv9-tlPIyy>P; zzAv6Vy76k4Te-3V9CFZPrYsR|i2E3F3ss`KO9N@53F|G$_Kj?RJaZQ|9;Y&|Hi|4_ z0+-9GnpbesBnT*)B~MkTjPjh`7}5U%IEKn~PYz-#x)oyqa6~$ctovCdXu;AbmwJx3 z4PQf_g?(CAKhX~TH+tq@@CFe`C^SiaG9K4c(-~7z<>=WO!z-;58u*-DA@n_e(Cz2~ z!ihptJHR2rFO+*_H>KZAg3%`@6tNU!+xRXg?LQ|z{QWZR4}@9jElfynN*tah&Q>KR z@ddNQifE)F|7J{XwnGqbrb`76@c9s@+P!b{H7S2ElV7f%P5cl>SV zoB79w0Wx5eA{^8^_Oth}(x0W?;rC{S@S60B?8K-F?*D6)B%`ggB&Nq1|E(!GcK&hH zY}A3eJmmZ^_cu#kxRzJ$F28K0DvR08J7pG1@BAC}=yWh4lrLSD!J3gY5>qJQ<-DM( zx8$*TWyzNcMu$9V3~Z{htT<3|Kn*)ep@{Bsigv?mfkG%d7ST$GntNf))_jk#{}jdTiD-AK5H$~qY7g4>a0;&N}XGT zR)hf&+C}_XyzGVxXL&S9;2DoZJyw`vb&K0eY@xo7;_POXN~=n1u5cK&*Fs1ZUFH?W zP?3)2yAP^HcBngXe4$q7wpqQmCDYz*NW}HcMv%#wo_HP}-gS6`GZr!Z${`l#*y!<} z?gTs&DU29K!~kzEWa=h^Y8Svkz!xL&{rkh^J<^nllbtIhpn6IQbp%3a5#07>%Bxk= zd2-V5?qM!panLp1$S-Of&Xf6!xQd#-GRg?7FLGKWQh-Y??hx#Q5;9o z0pML5OKUy=h==8!o!46=JPz;88}Xg{(LGSVr2Y-_6Z#Y>BTFCqv=y`llWa!dv&u&} zX+yMUU6?BTYur#?)4=9WdOaGRjq1121fMm^uzXc*qf?-9Q69RB z(LCE_V~7>sCdd3QIu^?wWo1uvai+>`?;%n#61vj@G>$*@1mOJrV0jno6pNqp4{}bHf;3nLQJT{|xmV`6?7MjiL5-%hg`QI6 zrAHMBugFrAdDPXgyEJ`&kk^9w#T9MQ;mw$hLxFHPmz`?JDw%rCFvyXdQO*WkJy8y1 zF04bN&t=4*1ty*LCa{}lkZZzFJpZ`@xE*k9WygvAK=h?F& z`MS!(K6A4~P%0hHk|>$?q&qB`%%;%BD6?Gp2w;BO?jNU6SyjgKwBCgTNFlkzviMN`W{1ICQS zAk_fZH`?UBJyQTQ0kKOwjE4c1sp2N4=lbRhX~R2lhC|X4DDh^JH#V9BV58wsnlKbQ zS;Xa?N067BZ83T3_@vckdmo`(l_arkjNSG)tj+><6RR*@H@*5ho?BrP6VBQ z1MXz7J<8ot_G&l>Xi?m$a?T={r{;kHyX5=1?p6YU9Aay11_9zmJgJM%5tsw-gOWX7 z?kG3KtiHGs-C+nh#qvPK@lOXx;Q4PaJT)H^S>hB_AWBL?VqnaK@^p|n2K{3jc1}_| z;W@SHz$Q|Xs*}d9_bAvPw!!h12GeWTM3XXLFthhnQc0%U0qCVJWOBb4sqgb;-AHg^(JSu+@A9%RzY55{X8f~tEwNZpMh8dHM#VO6-Lv8Fv`y3 zvnMLZWpz7`*9tou-kgZVUUP25pP}*!t)CV6w}4(H)jPrBkn`AsaEI78KhVc7nx6E^ z-D2X3_myp42#&flnZ}-Tl6fvDQX6Z^=Y6p$hKgf$oO@~B4ul*|EO>JAz3o5(*pzp? zF6VL==tkPXLUi@ByN1 z(W4+VFm-S^f4vEB;06-Y{`c^*dt4U?B@A~G-ccfyaqMhtP+!e8xrYFGKH9z4H}8RC zu=Nz>G#n0@F5lj*war&J9^m(PCdTQ`mW=<1O)EEgNyO{)L8-xRu)Ff5hjNZuwM8mL zcUj6+Klk2X5TSSB_i`^=e4N%;pExjf_X*rLBQz9USw2G)16r@+=i8R*oZl9RP6Q~; z=|azPMh26bPQNgI4Z2?Rdih4p)K@HLuF{n7$uoWVy5YDAV}sWHKXHoRz(*gseuDC0 z(1vo#$33U<%1rwQ?$gCMjYK@b;?Ivn{)#IGb0wpq4+dx=@}ELDSm6!SRr-%14!dXN zPMZcl`rfpXacq|OK2#lh`?R?E%>mXdZ$s{vDfYG|8o3fT>%$(btLHivJ>3~q&&NF% zjwlTrX5tQdO(uzwg^RzM_mCTVF6^!_`RNOIe?+oWp32LotP(CJXP@Wo=uP{4qS9@O zufiyVs8FPE-7)$KVQavHUUG^nLfdVeO8N_w#k!7@z3kG`uPgf_#37{k5ixavz)s>Z zLwH|Xx~Xa|g6nK~)T}qmYheI7mRhSDiS7v#E>Ov~*)Z5xI9q{kzl>88BBYc@l%yeb zdzczpz4sY8VAP2$7#33eb|oUzVY1!1R8F05`SIb2RrKO=@4P*V*x5)+EssJ(xsGKr zl-{F?m|J9?A%OLxT#b@3#x<-Mk%5}dgA_%tPo&kG>SnRwQV!1%ZPy6E)eT&O#->46KBr@E#qX&0=^w7H&qClT5oL5;aHSu^74tfP}rtQt(l z&+i`8#6_y{Ogli+Y^2U)m1*zKMcG;_&V>E|&93F*OCxYsrJ>zj5*}3wby}8VoQuoL zxP+z7u-67aNz+KtG0@np;81Fhm%doFiz*i~?-ZF^xVe{zX8Jm(e3x<9{b-bxl_*y7hB)Sv1$s%!`D<%WOc zOviKG)gfp_fi{fGT(0BA845*uPC0VELs7e|)3Aze0hoCF6V{w|K1eGWGzM#+Ry6|91gSOz0l+FAqp% zNf2Hb;YBJ@-){S}UR6V;@Jzf> zFzj^ZkWEvOC#|r1@S7BOr0s4OZ`=MLdQVpKqg0vMuzc!Sd*ZWE38lj=*+RO9EOkv< z300>>ODv{03@}HzXo|zDAGFY*xKBjPs>w>CXQvjC#+zOX8jb4|2zF@x{=um@uk~q! zS{w4G2iWtJ5^BfXWuXXX$^C*B&sSa)N@XISj!7l!9V(zSi+>Y_*ui=P-`+hC_47ni zT+IcAH3V(#N2j9^6g83FprAhBBpuQvqYPd0_1{K&jt2*mvDgk zFeOt@;QcOC!;H!*9-)bT%X}#&G&bl;mKt*=&~E+OFU~E~|lLrJHNPwC=ap zoJQkx!D4TezcpCD%l*T21_0BE4X>xJ*Ol*dzNPbq z7lpQIvd^3Ie7aRG?cxGBB(p2{sNFX$fqJKD11SHR^N*5-CQyY(#Ldi>mU>=bKh<45 zmv70f(9ez`x>dPHzACSUeaCnA49e-4!M2w&)g<$$R6g?+=R)G*@j~TdO%V4oom|34 zI%yJ}`HMXQR1-NUVMlBPmPb(%ujK3Lrpz76A8%D-O3u735MzVMNO@C2j0l{rWVzXP zSbgJM-iqQ-x($0vZeIwQejY4QT7j~F`sI}UP}O6@nNm)@j*ZxX^So!olNo`3`jhw? zS#;NQIr|eH6v6qav0qnv>_-3&XMKM^KY&$S9R@@OeM#xB<+y6mXKO!lcH>{th-uXKg zd~=C5_PKcJ*hl^yUQ5wtgAumeREu4*MlzXiDq!;J@x$YSZ>0)qeHw9`G?4ALOQ(LS z80?zUCw~?`l!5(x;)vXATIDx$(7Z!{7;yZkv|*|0C=;C#MZs-oo>afBVv`o(ldG24 zHtTPv@H%5BD};$bRxj3D#T|H-9q!1j!KBS$Mg%5$%U-H4$P2`gi2gk{_T z4Fj^bQg72n>f~7Li$__n29yNgNvtCoQOyZ;oZlOOvnTC%MGqwtUReOq0`X zPMre)4jdKVmXPoRd@4yi0;bbcP1j?b_bpd21Uz0C1SKWsYqdyNxvz2JYPeA6(<3#{ zPUgx|4&5=+@4lVbnX8M2yK7+ho=kueQBCV&qa~Q+K?uU#!KAnh&5?%R7XxuFN#vMdJkDs1kPI8+&TPjWaL(A9`^qpXd=&Ygh_@ zyKwA%;P}F5CiaK>@Z8;PWE)9(mTaVV$w2I6?L`QA84%{cmA*ghLLxB*kt zk8P2EXm7-!u7@M}`=0Ep=adJ#U5mcUaR9~<04nesM!iUBHL{UP@=aNF8TX%#8P15| zpqVKPWuJ8r6c_iH>UDHczQUBaT&nN2HmHzY9v>Vqjwnv#R5psRe+TVJZos&9W~ds@bm8=AqIOBq z#Lx8QfB{-kQ=W3{sgYb_oT9vX%K6qYITX-u+*lv6t>8vg>_yOiMy0_C*JhlpmLQc- ze#tHM(h77+;Vo+Wd8yqE=iyndu$s~h&DHI+<{UPWXLU7?09FS5UgCq3z3tQ1^y zpE|(Uyv#a)?6jtt6gOEV0YH9ZL97ms#?9hyE|!Qjr`>s#a=EG|Q3&0g>xFk?elMDV zvd?5>5#P;qha0qf=Ue0F9+jSKPm6~)bI-a5l!HIzt~D;(fVWFg3K;c>#YAL$(_PdYirIT zag0$T{D2oKTEhO>x8ZkNbrYjT^x0@mzl0}wZ4uEKhd;f$_K9!FT%61S&s4^Fo!dMT zw0+y0a{dW&iQeFQuj`J$VH>maddOgPt02bSvY|0-cF6ORqG!XHh9W04nM9l(an?VWyEfc^x4Qq{$j0D*2OdD1h+u3od0c|6E zK)9iyi4EPIOsoK5%S` zX@GBgpzU5~w`~LJDaZHWXnfgO4H3A@HN7uhok+28uA1D{3R5rsaWxws?!d&6iH$?8 zD6I+P+#0c2ivCC1vu@|pLBd`%|76b>3Zn-oie(?Ao za|LOKhaOE;l=LqP)#NQZhlwuVMP0rrzb_}PO>}g!R*|SYK8vmYfH*hM$J)cyAfHhq zxzpaCS%>zzoB{_9rz0?K9`F`$3X5v149O<&-X3|X68jaUcc?|)T(4;|nn$kLMlRZZ zrJ!AKp98WO*&WT>Ogny~_4AWPgR?3+4R@D$d=Gn^1 z&BzPXoLPKb1^kL$Q=UNKu6WdQ^xR-$Ul~cmo}ZW~1(oTAliRNVyhl`>$sZF2K*Pf> zabuhPX`~enTM591{-#BHc0tq2n#;9n$E|n4?kYt>=9u3jNO6+6%j2_9HzhFyM_HpU1LLL0^Tt!3 zn~^}7L%18vx%a?O(~aX%FdWjBOE1c@7775Np)4|LM3!zCs~7{1J9@KoA3${YD;a&j4Qp*CQ4;pgFycEw#Qy zxSYm6m*_WH(jZ!X)i9hndMxh^=~caoY%S-iU$0--0sWUcag0qeI*zGDeUUUIVcEn*?MyWHs*7_z7B^&wig3evVz{DVs>hoMwZCB9GnlR2RHx{qNtLgZ8Q$aDso zY@sGY*RP&F`C6>CW|N05*Ndo^OY8WTDPJ+Ct#64-<|pUpFAofcjnzG#o#E0IB3Wj zSiZn8wuoWm41Xbd&S1J2PRRrPGzJ zm$7@(SlDgXBGa?z&MJNZTXfRBL$N)N_(i8vXVPf++QR8-J$_gkzb|%Hz3aBoWvi*A zp_14CEx_zwEG={&)=^l{uC$NKIyRK;=+P%COUM(Hoy`2qnCq}CK@Z8#w1gU{nqaxV z0o>NhY-Ws<1(EWY-wX!TPe^sZN&-EahA(a1{9{(5B z0OhZRC?bThwAf#24Sx@Hla#-LPE`18L_x-AXZx zgV|BGUc59XZnO3V@u$Oa#p9!iwr9RVZgspIsWx2YIJR@kezkEE0wD)@c1OlZEVWRQ@L2OvKX4CjH;sBD4G#c^$sA;Ly&7 zzwZ0Dyv`IxOF5D^p_hiy0cpU~r}Mw~fWTQXm;kkpaKuDW+Ldu)AaCe8<5pp+@+DcU zk;tNv1o^d>h9&~6F->ftn-;|GWYuKOXoA1BWW2>D6KhVP(9^P)y`a)Ze&=v|eKQKH z^WPpyTo0Ut!DE|6z};VM+5hwR?dLE2XdOnxFhTOe=6y@Zy9ca|+)v(wXLpJyCJIcw zC74vd6^8t25aO-gs1rgXrSQV0*yCa-v&nDD8WML{Cl)!LzCJgY{#7fpyG=WGXy82I zRpANtYt9s>mz!cls@PP3a?uia`WQGkxSq~VZx~t1jxY-XWw&pBg$3m*-T#j39jtf) zHbEPo1%VQ@c5Fk>{u(=R;=6^H<|_+@xyCEOB=@iO$^_yOTMtMN*4OrhVBMlwux_h4 z-SSQ9PG4FpnXk|PBmg1be#J5r=&+vagLehUfBmGGz&#q4GBEE`J7}G#xmleaqN?~w z3BxY%u|6hfBr!2Dg(P@8*jXyUueC=yzOnfKSs;GzmdpXayUpQYO~d9OE%d+EKV%BA z!vs|&bN%tPr1@e6TI=fdtPD`D&?A}GK@dh-i;GvO`wV8b!l*a@|5mBr7yk72x7@7%`{zeX?@SfZhMn~6~8!=n#g>%{^@X7?KHA14s zH_DYBt7kdR{m$urJM*Y}5XQA=Fbu<}E;9UU|Nr{g-}l54gMsBQv|#Lx;H?yazma&n zYeVdyhucDOiO-87PCDAbnjM!DG*6d%FLQ)i{Gll6=)kWWDB*@NAf|uT`^ogc^aUp7 z`<0ayL`WbGAB-FT$p9bjuXX%uZZv+k{-=0j7*{K!VE;W$^mRed{JyXJ4Y{^vy~VF0 zrk6~Q<@%p9FzBkn7)bhCEvRWMF5KPS(~P+5z?Tf29UUFB0&fDZ%p+eo;{Q!%{&p{; zUki@`yBCxP`SkDXIXQd z?4?0#Mvn4#9N>rNFAb!Itjbi6Rd9CAXZ7L=megT`>wK&7F$QRs4-X|_m{xSD2dpW* z5E~}Xaj!T3{{O#mgx^*L>DQBN!`yJ6s#odX2eAng27vrqjvptwW;!l8s7A1|gn4si zYH39ZfIk-&291JhZ|7|6-7`3yhGkfr+&F9xG)Wy#3=;%ud}hSI$<=?Q*e&o^ObUl3 zSQ2RZ`pdJw$w~^Ph9c0`!Zus367-7`MAh|HhXMetsnav3QWsEHv^rek`xz88RY^_n zk1j8|<~#cLq5k)E6%`B_L4sv#s~U@8=aBxjc5b?uF|+H#OEGV8iDKwt#;Pz9esH$F zHLC#$`teeKfE~q zkskL5@?WF30k*!exYQK?&&RM(sU4t(1mi^7sja_}K2?I!Rm?SUGf>2ILPY32UuOzy z@IzlAwpw}s%EV~Av`Z5(JQvxSXJACk$188$@t!RH^(23@Ibq(v+)fMyfTn-nNBFOw zEVEN!RI{5~)_LnKM|mxa6ngx4_;69d96MX(7rexeO!V`SwC$ zV0IZc41-k0|A@qY#{hfb*7$oEu#9EnA=>~tj1pH8PBu>_Rf_UsNOW{`)tAoCk(Ipv zt~%}&eTN_R)^(79a9cTHS2j+sYEUf_R!zlav<#73NJG|tx!tw{1e;JUIfP3BaaYZZ zv7$PP3;b&5`p5lMyz31l{A_SwCaY8?^v{a!@Y^FkgGrYwqtd^z(DxTz^&nS(v;-&|Bww7zmc;aXefzYVhp(lCNIm$&5(PBkq4@R9#j(!alW z^Wm2-I>PXf-bS!?(_Q3i{N5HdZb{=?RgmdG$)DQL**~_$I@MEWBDOWs*GoyFkzJ~M z)E^dk(jXO=)cIlDkI%J(A-aFA`E}k4mq!LvW0kJW{H?bt9&jF3UuP0A>R=T& zgIm**3YnTjyH}I;itMf*)VXVPQQ4vQRFnHDygA8NQbcv;#>p-}+Sjwi69r+F>yfv! zwMKaK3P;$9eBdd~3*W$Bdfx*52$L7i+O=n_uG;>~lD-?+9>UssPdtSM$Z zzy{(^JR}%fne~!8QF?t-O0MexEVH7;T{PXILoUhqC)e zH~r1ymx4~f;=+!_Eqo)#o2#*i#OMvZfAf-Lg5FN0z-r0`kN%Bb29?gr*Be|Pe>I$` zOr}HqO%@@4k-QL3Tx$&4c>Og(D=mH7^RuE!)7_8E`q%octG4m#%_}z~w_oEQ(sd?x zziS)ZCmiO?myqQug`<_3!ZzC0cf;a06lmd)3X5kjuDf0)AK83ayBKFp%3q6kG>3(O zkkQ6k(K%7kg#@E_Dw{D4_L=?!#Jy4&U{AwO#u!*Fu0X=oD%rdJhUt|E;EF!m=@nN1 zS|wp4x1y8rvk?j4lNANDqyzuv3jXW0}2Uf|(mzzo&#Q74b?Vi3;h_Eu?f zZ$rA1JBINstpt}bm zcmUvQj6JSuv6?f{z>hcovh4*l7}d(#0}q)w65hR2l4cv9V4T-;`EU_(?LT4oM(J0& zdf?*--Ax~hSc~CxB>8|d%wqP;b}Axu>{`PD<8Szz>OH(1u+tAr+WzPzVXT?~Fj_Ep zKCk5$_3$KGE3jtsUVVp;ws#`Z2-Yuu7oz!NY1`Z{9DYBS>HH?MXuN??nCrA}x6^if ze|FZZoi|^U&6^k1UU(arVtkD>UYbbs{rHM;QWK&3j6fy#pZm^HZt8wC@rj6MpS59Z zJnlClmYB}UlG-kT11EM(b0@!v8M0CMW$}Cpe5Lg1OWYGtJq&69Q_!0bPhWiO_|(^U z_$4XEYZ^pMwh0)|yAfl`Ld|E<@;tt}zaUWY4y1kaBb?j=wXLhoi-H^jYxlCOxpJ!d z!hGmD`xXLzyj`+8sDE5CS}<}2CtF=8-X=b-+K=|Daq%6|J-*$1geKohjvqc;+;ZPP z9zTB=Ivamn|Hwo7<2LDGU@F5x%t6pobf*2PV(?>$Sls~yz$X7 zOS0>f^kIAFwCRp0Yb*L>YA}AB@oqp;9CC`++_e(B8QioRo(+*-8rV3Vp>f_l)0C_O*V#Zf&zc{v z?u=p|WrJKE$dX9uT-EUzPwx7fuf2DYAGhm`tw51Jef{dU zn>+arHrkF94@0wmv}CwCA+->*ShK)jXQ&|M|x0) zoyauZbjp)`*|5de*v2I#a5QB1h0(qhIqS0d@qV00U_*L17pE2nPVgNN=)Q@=qzq0e^dAt_U=soC%#4Ino_$ z88^7Bf81e=#^d2PzDa&Oh9o{f%^t?7Aa>d}^8!0W0gy)$2b{Zf#ip!YG~S(Wb?1PD zE&CL4V}!>MR~}cP9qFcJv24bNx@MO0+Yw)W&im%(v!tC=JpP6{%)9L7wcD&<=XU*o zL4x~K$ZgA6q3hnIV}G@qzMXy7%kF?j`KCRq?8j3Y7bnNHtws~a z`Ds_*mIUXwTm#urQMAgB)er1b9W{VOCF}uP-H2( zA5Q9c@hw%z#wxem2F4Fj$wc-%H52ownmKb2WConOD}jlUj9qkNz?!R}^YSyY7}Kan zabE~cl6_l5h3JAd)n_2^|C52=0>Q}-HwU!+QijMdqQt`8+zC?7Hdj^O6`T7;Wb&9 z3*_ClKe@eAx<<^edVxqCTA}b#+uo^Tm=YYwF^bz}?tRS77}Y)Kb@LsJe<} zS`xbR;+E6snYa4=){a(Pc119rx%u6N*&s;su`Rlx7A$rd|M(Cr$>_AM{pHaQ{eJ1J z|L{5*J{vtgNp?x3iq|Cc&e*~KR=MenRXqFN05lJIAZu#9xxUJFnmWsF+6Rm83pg%x z=U0A*+7n%wnB9iyG#)x1#`Eusn@Qa8(%u;w-1)UlH$I?l%|u9`4@K>MQnKL-R>Vv#s9Gz|9P`qfjQGq?Cadj;WAd~G?@#tZU{4_vmu#*c4b)*P>Pnp19`HdRSB)flh7>MiySLe(^WGC$wm z^lUG_w-f7*Wu2oW1|!8Zs@aM;(sg-SbZjsRITmR6;m>0GhmpE-!RapoA3CD%D|ec* z8#E5C61eORM3|bCGWMVcb(knAHMP+AW>6LsPfe~t`vt-W0-!Ag(LFq+lB{~=YKmPlq?4tyE&6GuBotxGAem5OrlO9oTorT*FM z7^aP`@SO&^gjd2b9N${1YtEYb^&9ncw8r=%;~P-_{6|99-0DSYdAPZKseS?`u! zijw_1Xt4?DL)xIvHRR_Wv7wZKx3{a|)?h(#Kx4CgSiLLPSu&ag>hrG5Z$M)~jdQ12 z9e^T(LRs0M;4j{;zxj*5-Xw6s-Mh4|v}y@xg;(mUS}&AJhH5_gih%n~|;!Tg=C>@O52`e44HT zzByYGs&doM0mn>nb1#{Xm{)29C5!{`wAGbo{E;X^F+U%Shm8A`?lAbEi1 zD)XYHlFy^xV_=N=MhQLcY)+VKsJ!)Vp$5neM~jPuY|!)3&eOfZgZt(B|JN?Jz*Azx zQ{XM+?eo*IsVb_q<2_rux|6(Z-64)a|BJfGtW@fMw&1K2G!RVYx+5ypb+G)E~fKiq*4c3 zVMG#%Zpx*+!FBLi$r!WfOM<}lato2hxJ)A~TjPR`cEbqO*RR@WKu`mg&DQRjlr8QZ zw=AN5alf-taqhmV@D-CWdHURu_NAcQz%M9>TOQG!wwgJ4AAf*o&pw^WoR5Q7m|`xw zoHykAamloTSw?<*exJ|u#VdhK_?> zcKFhtc%_s?_`3{F6-J|@p~;9&IVd$Krxf#5qm0y={M3s1(K#Eu?^tV=F_6usm{@SH zHMds1hb`1}$P*9nc-|06tKf6K;L56{tIs8h7Ye$e0;$XAvlc~jP3>2kvD zvU%n6Fb>IGX{nJxa>sR_JWZDsOoS$fHhT|&?{WG3{uT24uh^T{zjSlH=g3^_?xt6d(ZEyr{+bD*q|bWTRiWq9xNO5vJ*z99k>o)o`C`fImfiQOdmtKx`6{qtni1Ki z|J>t-Zo01fT3u{w8f|w^ zd+o4-?c=9EgU~Iruicx9xXsw-qn{8(vc$rV-5}Fy_X!L8U6UH?xq!mNcwYr3~0{m z_*A=#{oYG0rA)}ud1(PZR=EylxQ>GEo1nSJ5&F;0HQu`fli!CTT>|Fpg|tq|v;!e7 z>D2}iwE3>|);;|PhePV<`+>0#!WcurWj0I&ZV1NCUV*<=5Nx^~WsB2!@l>sBO@5qu zyBK_g$@HWPgK7gBqV2YTY62lzfY?T2V9W0HJB5>_1f0(W#Kp9UA%J4`3|XZAwc@{H z`(=&~E#+CXBv7xJ_!Kp{p4YmJk9VN^A5DaH@AV7R+KE~<7_y5+&iBvgG;v)Y?M_9Q zI6TEr77@&^-x@fvTVtv;yR_@rgKHK!NkJZ%s)@v>3Q%i5rPr+2UzDTe_G@X(iAzaA z)*e{ZX~Ve73olBjIW^NKwVot@-!eseNI2IuSGgU!pgfrMVdr!3Q!6{<-`oSQ#6Qt3 z6slFSCo1Z$1LvQ1-%keBH;ie5SdhecrL>EA9kh$De|M{gUO8^@c+$+(-f>;`lIl?P(CN?%($8PC2p%5q8(KRa zlPK?q)ouRy_$?^DwW-%%d^t04dFBa&EvV1usM1K6^~%Q#fQLj8FKJ{(;ZPN(zgZP& zrh>!sDoJw)z_!23Tfk06XGRxSu!a{9>T0y%Uu~uR1Qj=Z?t#((;z7R@;VMYPZ1YHxjO!jW!rA zJ4sK3o6C}!F?XGSo$JAC5kV{n#UGMqm&mDl?L~>qMJqmm2C|ft)&0jA6F7=8(YI+p zcK5WYt*5B!rcYoXLFz{?2sua6_3KlQ)6@~pAL`g~d4kL97z#X)U7SIoO&f2R7I1g` zHae$XJ{C4X8p5m%sJYQ;Cags)&-UoF)3DGVb%l zP~bmBjl|F0k$XiBCVJwqE@(N~y5wA7q*FX1)V>iV8;xb)kCj-Kin_I#Ns8&=SLW`olxezRWF{|bl z>R7vjcPw0=z-2>BZqCpR#C`J-GB`yNBS9(22i(&@e$OGC_p0~?Klv{(B9`wSXGP(r+A4y3KlU%zE1;A^T4gtwIRrjC2~Hxwl4VniWT#)cyt65V`gTWXA64T^maKaR@?Hwddt5P!EOFkKemR^d%Edv|JH$L(tKJ z4wvoEX|xm3?%ba85G@sB!^VkSn`&)!Lgseg(El5xAJPFX5+4&?YSpd0pHAQw6J(7W zE-GH-RsY$Yw#bU43>zg$O4ekTZaPOm;?y3m)Dx5LTWF_Ih5}vBIXs>Ui=HI0v$Kmi zvLo8|)DRe-kHwi>c$mdE=n~<(qR*UlReNeGb9jz-sWEa8GJj;%gQoBDQIPS1(@Pg~ ze(F@Wm?roltA<_Let^e;Ds#RPw^u)Y0N}eiKKtmV;I(as(C@Zz7HFruvl!rvR>*2mIz_KqEa9%K z5cdX-861jTFutwy&D8sl4=T=vmdpGQ+M+D!4-un+Ca!8Fpe%M(VyJ2HULz+pK0wv6 zRjpo1)&Tyu%PK^<_n1s5B8*f3Do#vmcJGRJ^TfF$T z{F9l&SpElHbx`9GS8`qNwu;Uikh&n0M0*tlk@?n8KSK8uZ}q0iOtfu2zS({}+U$wY zu+6oPdFsH>-hHITJlV5mzGd)^0rq)_{z+}D3fJgQ^s=3xjj+S0X#TeLf<<$c`K^jf zys9s8na?Yy1Pn`c>gi}9Mzj22CAg1!6OyoNE&E-u7JYFE!(1!R(!UY5OHXK3_FVhK zDQ?OU&k+%VY5%dg49sO7QNFkTXPd$(aI`{N@Th6 z4*6G&+c>X4=Bf2(=OZDMKTKI`z(g|%3T>$TC8c|*`n05Z<O8ZjtoyiknBl39sw0nanB7zZgQNsG* zuf|Fu?A?6N))ZzUSWI?hZ~#!pAzJHP1w27NwXrU~_k{xA1ZJ$f)db$y5~HZSQ{W!v zkFFmKJ&Q@@B%UmoLWo3t1wMRR&VU*MGTqd_<>GqYBrrzy7ijp-ah_&kS4T8VBoLQ3s!8)==p-*`VZPY(*ECm2ghfnX7 z23|%HryZZJO`WBoKMw53lHJSVp>;+s0TGmZv%stbB0ZGpogMhtDpdq354cQCdk%Mw z23HCTC_Wa~gM(`+e1&?mp#EBiz2hDD^qtS9j$ysT)`=>Wa+u%kk(=-o28~HLhQ}i1 z4R7CQ7!ZkR)n~EI|M=lk))>0E6Y11d%~iyG(ZN5`af2^{LVU|S#*rhwl@ncX z2Duf#?wVD(?YIu9$?zOWCBLqhjl;EN1s2W?r+Usepjd2P!SWFzAD#DMG`IvP&n5;L zIJ|2S1DM7xne?l?U)N&P$N=_UmcMwflI~;F^(7G{0U!DK?D<{FSlL6biCdW~3QvCx zE|s&v#?NJQgG(K|N{ktcrqd+eyy?m>RxS#aW3bkY+|`wzEy$c=a5;cJGj$(;#z634Mt8u zp2yX0qdKXlg^-keXlg26-GnFhQ5)HO#h^CZ0LUvHPs}-%YCE=;aZ_zjal$5(2A7wy zWDXG#%pt4%LkUhr&^gh2}!fIkSzf{ulx` ze^;t9{)N!|l&Dmys^b#1Was(k3$nKzLFp5Cd+)^N$rJ%Vuq;E2h3UB#kQaf!_L7 z77?TJtWaSZB`#dQte`)Lgm%2qDlMc9Q&$C?SPy?b%gmlPdMb%p#4~%Hk^2>Jka=VH zfh|33)PzU&J^Md}6$?o~Iz3>ZB1?W^2_+J~)pa=k-os8|vGbPqGn;_G<&SE%5ZGyt z`%B;?j- z9lWx!YCb>*b1GJ60wo<+(THcza9{~iI=gxieELZCY|nP5s4k>Ol&&X7ci*N^b_cDJ zt-lX9y;OavH#L7J-La4z8_l`x%0t(=nw!JpeIyz9HX4T2j0p4hEn{EE;SxI z>(%n+WsCnPUDd-LVKI*k*`Nde*C4B00TJ$ubWJmBhl!cifQ)XMS+IN&J}LN85dyjQpm@A&E0-^WU_oYu3X42@ppC+7lQOz8-A?^$ z%@br3w;qsd_6|ZwdDU^`XwEmaT|MME5*hV_@~SP%aZktVQU=t;7%HgAi8ZT1$xQMd z%`1+PyvKs5qdJ9eC7F#anxeEAG5&-QwR3xXyiNj1rq|i+p+z&&?cH84L@0bxgFXU8 zmC1~VWLdQ@xgEF*9uhW&+I01ksfE0qsp>CkEz6?Xqi}xOGAK9Lalk2=WW#j_$tLK^ z2xZS%r1jho0M^$;7(d*_w}u46SRO9YWM6lTR((wRjmaI=vG^AXtPmdCPqC*JDGfi@ z25o)Jx9!{Ndzh)*A=c+W1kAt1p&KmR^ZNpbab$v|%>g&`@ z+>K3`#$)B#S+K*bdTktaibyQSSK?bYCN=I*HTGO)gJs1EkB&WEapPo>x~*H$-2JUi z2d;(XI3njg=frxiB8hE`mL@R;!3DG35e0dvoV$#jGJ%HlrG*7bL|S=p#wXW^97fUe zes8kXTm^${&-hl~@jnkd3E;se<_U>#K=c8pqP@OJ)fvinQPIB-SNNKqIejC#sPZHY z@*ge$=l;s$0c!MZF>6SboSYt8IJI^*MzZn>S@ ztNj@1bhR$B`qpVnp9x-4n{N>~pXK@n)@z-*0e106rs9@i)rIdhr|@25^vcEBc)Y8N zQYD%ioRja86|06C=h5!H<*CFc!@1?m?X%GD<^MK+&Ll7cxRv=VC%*onTWdTsgHI79 zmaV@i7*SL%$M&lz?|0s@^=X!y37b4Esq-kK^v5W@$HHcBw*l8^kT-MJgs@QwDDDF` zoDK}pkQLNu;2+R}C0+Xk)2#=iE9TKz|_8*I4wJ)NAPkyl3bjVOT>%Rj}sX>SIxK0 zZO)@RFWkML51Cs+U{Bw#eC%uc>f<+a(R^7!6uI{4T(2p$nOwYkH|06$s`odpH1qo? z&9S%W-@GwuuwYPrJHeft_rw{JWJIWV94y&@O)Fnt|8}PQnbB1OCjQqtt>T}o-M&wgIcA6&PBR2_o39Tl^N->@Q8oRUcquLFr0bhP>Akw?2<8W;F7H* z@c35!5k0%!bU|8pOJ!c4(%uC7>R+hPDQ}e-ApJZnA`h|nzHJ9fL)_Azv^5P)%naR? zdJ!!l`r12rPKnKd=`fmidz-n(LLzuX~a&RZp1bOW=}Y47sQ5$C^zxKtb{`^I{q;jofJtiRh*p5BHd{6d~?m;S=V&9 z6=CKX)J|J%DlzV#e7iHg7VJU=zom9ih8aL!g2_vYcTCMRzhFd(FH(<6v%E3Tq47skW;hiw0d(h`GW0x~Q z7yA6*J|UAmvdr!SntP?%shrMsi&@^LP5nY?Rqgi$6}`trnNaW}WmJhbTHa8m@e;oC zAk`|+J>Ty3j1cIt+5~e!TwQ^x7_t!bL`(@Y7_O) zP29%|uBc}bX;>N6-HM`rNj~p&b!FoNInIk5DYfIl_8$1Q5Fp3?C+kAtX7^-7_T3L! z#tEG4>T<6_2QB9XRqR9@BxBSHGDu^~tKv{Kca3SS9_*228_l?{Y4;-Ly$Z@%u5$`X zcoJ2AVEUSH80}Am`;j`b_3(jb)2qHSq!cptcXmeAJ^H9$!JKs|%sfDGjq#=6yZ)|I3 z2K!g(>+2aQDqbjd>(oN}<$SG-z(<&^ot&pyb7k?pj6i04^&pl#>1^xL!fE!Ek&&UV zbo2C9cD9Z?KTpS9hHB5qasHtMZiHfFQ=Gf?9aA<-2`CI2>t04AU_wx5E zoyswR=A7G((Tl7U()*3E(e~eS8aBiyD!$quQcqWt%<^&YG9(#pRSbe)*?S%!SnArE z&zCF6-GOSjK8_acC!_j0JomBHUYNJol-cHRTQSh%X4(w&qXd`|0j7!+_iL?qtZfUE zKh{eXs&JTsh|PR!&3Vo=Ig)*q-%cZ`IA-t@Fdt8!eM{EJd@T4{rd?}XJ+L^sftWKW zdCRp0Xp;f{S;O9WJ~^d8H7bq!9uabIH_@DfPt-aS0KDENgZpvgls3O;vvvU6?%hA% zK=wIQ3OI+k84eFdBW(P8K4Z!mI=e(ToGHb!f}agjfqI9{*xrea6vVNmnSj};i>`~| z4~#=IU2E)*WGJXK`C_fvM^3cbi`Kshw zU+K`HuKP1e_4_f^+^6EpEyf?;t&*b99LErmhM|+86AL~!=^Fjl4K4> z4T%<}IjgHV=IKm8^UiQ3pXAGu*3DW>T{lb}jM)!&*?d(xwW$;l9EAus>#ug5=)fnt}W#;@j7So#|+>lf4(^?m+no8O_N586np ztW6yJ##WY9>JV6`*ta}gi55DN|M|~5{^fUoDY70s5*D(u*K`8|$zE-rhk9@YoM4sj{0^3Kv2b6|1C3DDV$Q}g__H3{ozD#hIpFLp8m4Md*Es7EgY%8{RqJZCVa`wXRIz_95ni4i73(|w1;#v#Mz}W6cN!eA%ZbUl-BNMQgnN2F`QS` z+eFsah_g_&>*#EKzIz<;j_%?hqSjxvIXn4~2XhWRwKAOD&`7|3A5Tr*S0zIq0&|PeIfw4 zt;Ifj!*o5$1S}-?c{umU+mof~V;oLvXT_%?d#CR-IFhwVts+~$i}TT%tN;T~u>E_K z(DM6Um6z#*9P5(|RV%}?hFZQ=hEg5!zHM^+GJG5oSs|O#UKZ_<7p4?%1hX`MjGI*e za0Af;bA)54g``$*zq9tsYSb6ml{7G7);^^zN%dF1{Oo)~0cm={EsZpi$1x0^GRh8i zodxMAY)KJ-JVv{eo0n5}LZg>JjnL;yJdL;N4TrpOi}PEvurGB`j0GaV-7L3c0I-8X zj7lxh0$@t!($bZp&*tJ_RApzBnHz^@niMrTeK+*RItX(~uE;LIZVu2?D59E(36~EX zz%`ptX&C-i^Rd=)aFksS9VN34$9sJ!8yxEmUR&& zk}IN)*^Zc(#N|lR*Nz6S(7F;djiya;>$NXeIjXZH9VQ_$r1ra%vzw)~VnnUorfc{Q zLFJeMpS0L~9ZKy2xEwC3P&_LYy%)!*YqA^-#JVeu^baYL4YgpRYfc1H2r~XDo9`QS>CgcaCI^WeDT#$@=mC2g=w4Em3`|PkY-g6@bt1USYwR)8VSd-YY49l6u)7^p@G11cUvdcnZbXOUoV(96c+!_)A~{3gJ_$ak37el?OX-Q63s@}JM2P)FQNjpU z?m&DBnkMh0$Y!&aZXV6IG~=^*_ia0kkN>t)QgRfvHnZYwIyIT281L4l(ZZC^!|*qb ztz22r>R{9Lm1E@d6C=74#VJl(7$4y;@A8MB-d+1;3!Tsn@fczu?5F1W#Sp`F( z5klH<%g*});PLax zI(JY`lwhi?>n$@Qyw{`3kADlb*QdZ8lGa{n*S&DV<+W7l_z2pnlGifU!fA8+-Jw;k8x#ivuqLA-ie7 zc{{Lp6PE)#aWVwUWJGWg1pS1DCKhHu5H8+LAvR;7((L|J*kh$!rW{id z8`?YOC7EGIM4g}=b>N_Z{1QEPR*De+y3zhphC145!9|{rEy83TEmhb3zUUJAyUMXf z(`h*V%@RRwuQ^|Fmiw^}{B-_Ys1+<#q-YRK0*8?mqBc{U1c7Fp#M0K5l~x8y^Px+s zJjBRdJrq~`L^`{ABLD1ZwZLYA8pA&o$J4^aO5zhU@3&xSZAy$G>>&0_m7MW@=o{2C z=M6E5V=9LqAWF-y^Kx-|uC&BkF*T9%tfv&0DRE{GjpXLfd?a&+=nlT%^ z6bHgiKMT>b*9ruW(o-b}ibQrfP$LkL=6%*dcS|7J@f=h85j6XPkwO1Fx%?+uFhPbB z;!~J|9(ww838Ggt?D#&TJrbIFkPP^=p@=cV;d;%~wu9naj@T7Oe4L?9NJ^|zpf0yJ z+hn#KCK!MV|MD2}?dxY%yPb!|B^Pd2@i{|=$x}@u>h;gr5gQ8`5z|nyLxVn5+^xm2` zq1qb!oi(8zH72eLQaP-e9~-=k!~EHw@KJaUF{lDWMj#CC67I zSH^I7vW|I$Y^oVw1T%D+b*XE7DS`drzCUXl*%$2&k+VUKH_bI`O)qb>Kps!+1FpU` zA!?Br0TVDwS>uX@sha+!7Yk}Y^HdNNN8XsVH3_9)0T+$o4)=o=;%|=t(Oj}cC)YL6 zL1&tQA3T4vD{&(vK{2O&G!5GW)Hg5Dl0`IV_B4>CtW@?DtJWVBlo2FwW0qV7a%d9H zv2$2)uEi|~%i^FbicS(LJd|`2zM!}qYpUyITYXA*rHA8qFu0-joa9nN_ukwkQx@i( z{pjUChA5abEW-%eZ6HslT6?Xv*EJQcbd6+}MJm*@0sG}!s*}&dvC}xK z*S?utgy?nb`o7%Nw@a|WvruA1tcT~yf0_jh1bsnSeFngIwm(bb0Zc@%ZB-y`MWA|y zEn&dp?a-vDo}AowwiJNPd^Gh)wd_zi7CR)5J);f?WT{I{?V6VQ(ugEz>jkoOw%8x{KnZodsV$*S@R55I@qRZPy0AecZ( zpS^)|_TF?MHa3C{ z{75;A(wv_b{8u|*c>>RJZVKqSbMIP=Hww3=WMwLYb2*m|FYNc6JD7~ zLmbe)4}WOR?v14q{lFg`t>?qc<4JcTznd<0VLwiyj9blr()l!F12LqGEsnqw0h@d~jp#lUpei!^R z*wTT;Y(QW|o{Me8D#8@>l7&7(OJVsKoGC)z>07W{XwVa~ zKIIzTU;`%goLIHD~W!X;?|#8-{0(GQ()f@`dN8fa zChDLb)AYCW$j3b7?w2A+r?z>T$>jjP=5rEm=1Ul(MDmJl!?_{cN-dGl5sxwd*J zMJ!{>_n>uW&uVUm_Rht3RDn2C2(ZcwI=!Hjm?J(bViEwsEpr{LvSk=VXt;kjZ!v2t zzjOC+{rV{HYQ}7K_v|wHpu!GsYQ;sL!s?v<+=JAepq&Ln$b9Lmykb}R3Gow!6;n2f zzOtoRYosKRQ}Y#(w@Kb*%LaviHBFmI`)EFL|1gu)AM`Z$j!NCveR}tCiaxxqJ;80r zrj;wrRC6ar{h^jQ7S7Gq{ziu5{0z|cg zl_WLb4VMNXTnav+7rF9BoGHAY)j7*9rRN9do0%9cBX?&u;wSu|rd;x7J97>lAnB4+ z>UaXYI%doOd+bS-JCkqLavYv8eksa7Gy-vJghY4Ky9I&-iM9gXu^Z=La~=CDzS4sut?40*K`^=3T2H_AKIsvh z(r#4{PxW;-{fL1O13s`ZP&Sv>_ff?%ZyjP7p*$MV&W*U)ETvwlVZ2yCsd;Nl%w|jb zW3(=eej@h|oSh|sku^dG?Phy-eV%i?enZUCw52f((v_I@6N&(v=+OA(6U`|R?j?v5RgpJEs z!x4H_PJ3YLqwBgtXXP^#uW8v%agD7pl0-*JLbd2MzKaf|XVj`1J+|2Z3Tfcui2^-o zrYK9wT1iP;&LQhSxW)RjS4;6}FkgS{2Xf~w2Ji+!)_nBou`e3Zq`3U!3=-4p!ZxnpSFVVFU_%Mzj8~tEqAxL9-8TmZ1o5xkkujH zO3Y*0EHLp0Dm7WW>+?w2E~Rf9+by2?h!DZzu)cR=diVouKzfRlSp1!At2nVAjVKBr zJuW2*t|8WIOvc+^)>aGsQ?_$ygR|zvIgg8r8I7X34W|}sHl;HIMAH-Ab!JK-zJGd> zO$-eQ$v(Mei&8NR;mjZR@-^^!dm2qH+&-qXn^|X*J=~s!toN@{WRIH%6;~9cZ1M}^ zM`)-LW9v9Wse2!!i_>aXq}Wzn>9bPf*T%07jV9p%h`i8(m;VNHplvv1$>QTA;}kve zRdr7ed#!l=dRJy!4<~_$G~ARUP}J ztpGvm77Ju%Q-j)#MU3V|(pECYp&^Od@!(};dVXJdYJyIx-+$MD^ij=}wvy$3o$PXo zo0G}+FPmP|t<=k6zn|asKhIA9dw%s6iC@oeai7&;TGFY)>$kUOaCk^t*4szgrg694 z#dcdqF5%en)n{1$%{9UkQA;pc%pOhR$&v9#%=wxk(t73QtA1Xew6Z*gX4C;*|2x#e znNdnmt#poMacm(h746>$qumIxb5|&<1Vnl;$?u}25WSnd}S?~ zNZ-=%*_9*ZmH0Zs?3g1-9RQt>)&aS87l`N~m$8UZ^Yr5eM~Lug;UaAy#v?^vTPZG! zQ~!$=ko%yKKJU*{{o_)ss2Z=IFm?5aXxMF>QSvM83FX~%x;hUN>fAlW{e7=2(-d;j z?^4us&>lkO-=7r9fy>u_=biUWeLtz5b^l{(Obr!VQcJni>P(ER)V8K(0_mFh=Rob5 zw9p%Ti=4*wy*T+3%C&9SQj)u8<;6_ZfmE5(2a1ISGHT0`NsRDmjdnCdw^yXC zQCB{c0udZ(yPUkAKyV-ROy@O9z_)iaWsT>q)U$Ny5y%d#SS7*x~JNEoOiQr*-U$kANn0 zI|Sdel80l^U=U04i^NN!E zM*L9T$hJ$z8;Jf`_|k{TYd*t!hP0#gjqV7QL3hFTutW;)(|<;b;@-ND*g2GQ#0d$) z4-l-j>fH@NKU&QqLLEDTT*l}sIV!=#g33|nR+H|6bpa&(wtU# z23tGB)Zz6rl1w0NSFE>-TI#<2VXvb+iDJp@r}`JCCD|u9&c|G4GYD6aJnG9=s2ktG z&}dP5x8R)&kG=YhXIi=^4T+{=6mTT>MG*qySUvbtxM7LBw&XoKQfxxd+1@@g8zlb? zEJLf7{qlP5#ZjKBtX}hP+d1>aTb;vq16xLvcgi`#E-x-#s-7>PP|%?Wgu;sqXHkBl zspdlTjANN_Q?jb0uXSvrI~|b0_%o>xhQRScOu<+egI_@EU43^77p=PRF$=W6dfQ|v z3?*1m+CW_t7tnaPo9TDd6Jn1OyVtN)7Q%qH*Lo~GAFtTf^dIkG>kf5y*;EISFH38J zW?Nxq0{N(HmY!Ig5P=#lNGY#P>kS?`XBAaI?4<~kImUk2Q88hIc!N~hgo{CLgEJd~FLJxo-^QtZfxXE0#-y0zUGo{u z&}@A!Gxth46SnTTe-NusRK{tkZw)es_4Q0wsc^9-xxD_-x7g+~OB-yns{uXXHfS5@v#@=(w!)%fPok+`a9lW#6R= z=qe;cA)VEXi@(W5#mvuA6OzgYxmsr>K zA!+w>!(3u>p7Fd`5Zy`aB*_Z!U1P_BT2tlYAQdxv z?kZnXF=;&CMz1*efaxj8iLs)^si-AFhjT`xHCd`iB$EuS`a>dZghF;xombaO`kXxR zg92b(6lbg11;?6W2J;`vqMw@~j~zCc4}k5t-nY-UX^b47IqIq=jhp|RuSA~vcF_W_ zf=k_D`@-*S*xAo_;r*(;k8lA@A15lVAqClPGGBKl+p13ZC<3j?cas`M%HKnu4G%(> z2N#jnrPxet5hzXZ0X&$2&k$G27xF<#3Pg5ko$R{{`C_%XZixEbwQ@4MhI%)tEgLtq z(~6^mK%W#)UQUM*!(8#4()oQ89f_|f^e`hRr!?RwIEcCNE)@Bh_X(lAl$S_%6699K zT!?S_YOxWQY!X4AutD8{fU-`{=F8s<2WAomal)U-eDg#@V%#Eo#C=vxOCQXfMs7_j zGJ)SSjhzqov9@wCYu;o2*tqXOEi-6_16~oV43H9tY~NdHqV{tSxTSiOl?F?#Y}JCF z?|#OY5wEoqDC`+^re>m`nO}d5-DKx}O4DrX-Zf6~7MQ1!Puhx3!+}MBl!nUb_#uWA zc=#D_9im5?j$Y%0L$>)i*1!%4`3tN#yz^A~dlxcJ%LHEZ<=EAZNiTHW1+^VdGnIag zOEuJGXCmBllQmZ>)!y$TF8sK!Oit8~rU-+o!;9v`4l^Evr#Er0$EG_9x0mAb#7gx`J-BnntkIm8F zK{MIl`et&bwXJsz3qE_QHj&@WaXMNx-C;%IhD;YNYF!MLjT#?B5LxCq) zsorpVppC0Vv_QR)&etXo5hMyT-#@e{5m$EjW}fbd;gb#q8}GhbP|QJvp# z{tAb)AWRlhfo{XrOExH+epb{^;g66e(SWX&8ETbXL|-y)GW0U z^G)u!h#FQP^~Fm~^*q?>XNk=TLpPt!&Wy5Z11bhXb2RE86dnWr+DCpY7iy{d>i<_1 zfxJUZVZZYg`k41DQsrd>|p4;>dl7fUf!9X}Zs@(px-hK#Ez&sx^RE8r#BjWp^ftqX3(l21^(rqK6> zk*l2#$xb#!!MdiFmz!9X`+UET-T$x7;=4k{wvLu?FP7T2^McV=z^f>v;`q>Ml$kv9 ziOwNz?hBr03!UAdRU8SM*EzklI+E1iT9EF0{PTO8qU*&aLM$iauGsd+qzPkYUyIGv zCdHc5EPw1KolN8K>~IhTxEo$=Zw94a*~x-+P=Izc-!K%hUS=j>XGbI->B4LArxID4 zVY?5pqyx~#exO<0bT7@~D_t}WGx5kWH_mhS6vc?oHJU9@$A|#T zN8MK8zz_vrn%nyE>2E~A0(-CbyXqZHhtFR2@nGdO&9~K_Q+KONHsmtrGCOZ1P!;a; zx)sJMmX?UezYh^oUEVg^;8Lr58l%NBU7WQQLt#1VAQzkemtEN8$MEZtoBmr7 zEWk$@Ym|{`V&6}mUY@8j?+LKD;0^PS5YB$h5k0xcmsrIj0V~ylB-v(#d2f_ez5wan z!7L{w)!D<%?@!*3T52M2c$?=1Bb$oHX&e=s?;`ZgEGVbm4s6v8-*;@aQ-TIh=aBV< z=ba{n3z;dj*=Awz%mv|-8vD0P3#7zG9Le5QIq46mNG#>il&!RN%5T|RlollOiMyN_ zl?xJ8iV!rBpH?J`@ob7fKP_Iiatasv57SsG*kIL+m#O?tmqftP&;?=e($1X_L`2Q& zmyAC@Kv>0?JnPf56AM6Rap~NEmX)AjAz#P`#>18??y+_hQrCZyl5WkceWNsJ=liF?u4yIY6nZ2zs?WFcaMti~kI9G(L95gE`PI@2nT$pXf6Z17(xTuJ%1 zxL-OvB(OLN7{^(O)%(_)G~k~d?+C?6nd)VJe?4wUqBtVI)P5l+y%|7rdBIc2`ipnkP zPdijL>v5Sl1BUE!^{!u=4ErN|OPU@-L{CRXX7>tcc)vip{t6X2jFs-uZ6}2F2wHp$ zK1Q+>lNv8Y{{uvWo{cPo3Q#s`KCWEo6kwiPxHh_~S>nA{bNE)G>}WZ8p?hR_>k+Sx z7}Rw0!vFKn`FN#q{c2!5`4?sGF4f-TF|E($-ba?yJtM-^SIWS_GSYSERQDQv#%&$) zHI>#|FK{7K;774TXxwM3MdRodD?L72LQL`v;TNDsvh`Zo>ZR7GrXw)R#J?VhyAg0F zPpXVbj2XNi5nlr20)(b&L3vx>Wv}&QaMdU{k$RXfDH7L6pM5tNJ4W_)01i$_Xe1go zSI2o`tXGv;OS(M;WHLj>1Ww3un2OyKvw|~X+sSV_^?} z*l*Zq2N)3naYff)UVVA@G3B4THk|X{j>?MBcN||w4(N8RbVGar2ZR*c> zs1oHSBZ}`U4EX1}BKHeH3LOxx`S|!XEqw~GojQx*=RuvlaDEdzhHw;tz+c?_m-R)+5{gDh>p)W%S5Jbd zFWT{wNXZ}Ts#>JS`M{DDe|M@4i?#u>>=B2+0DUEd^H4JJ{Gy|I*0qJrsqot6x-qA0U_G+JKGWD+r%O^Xw$YYL=?!0k}zWk3h5D23ofreShxWiP8_x)Ae3``>SBa# z=QU*_Q1bNf5Vx5T=q-sg=+#)__w~H+LBjZ=-EYn25lf^NltPGw(oKCPSnQlGfpc#j z@q~$zZ{n`jQ`Pf5olXv5mg}ze&j4)Tjd<-LUruQwv~p+rK+q?gUKc!dm+mx%hW;>7 za=-~9y79rA_K1gt75|L0tS{C-JpaFzV-ZZrz2f8qIQ z9&txNxpT!6;te!Up1g=xRB7cU?&~pi1a&<&B^!Ozt8~rjEpo+a#>Plfs&JVq{YumI z(nOEi*eDfOU@z*rO7f|{Tw&UoLgs@eEW-}Lx?oP&xMAdNUhdR*aZ$00)N2JpKy|%< ziYbidjBru1nJ_dUa{hCjDF9I1Z{$>{!gSTl%(sosU7Lhn4siBsGFpN(bt zIY5FzK+~dG&Tj$rDwh%wY0}$}w-J@>bTFw*Omf1h#a7&F)=DlRF7LO*yBjXH;39>$ z5aBm0NH|^SoRyaD))cPYw(B)Eryzh`wUZDpR&*Zklgv%~i1U&^_8!|Xxbed;lwN%@ zbNUmcvrT#2*P@ST5V&a6C-3D-b&>YHl}r{Ttb&ks7aCejJ3!O~dYSX)z|7gyCsQiCG4NPLSOwG)uc-9KhL6=3LdIlcb zevf5T_4?gJDLxP(BwLJ~QF)u=PZ$Pe#*ti& z1lL_Y4OUR^l5&zS1$k`+otF1^f}ze(wrnDnQqjP zKe=7MMxACo0q}p;Nc3fh0iI%tTk$o3Q@heh1XP89xww)9$p$WTARXzX*^S8a$iox= zW;tONtYZo;EpA@wxpCLXCQIqg46*~p%7D(kvt(!g26Q_08(Fa-lF{IchobqrPdQ*zqpQNZ5-fV z7o09~-J0Y+HrF*bI@;D)qcF>{8hmjoCi7qC%m0>B2yq4jv616$WKB^5GWXb#Dh~_1 zX>~e!J-BgS6hrsWL(UPErDmx2&9dHk+u+3?J0-g_EXn48)8(Ic;_xkr7bp$mSS zL4=k~D0{8*bSMG8OKSyXfKEyf?)!IZKPC(zjgbbEq^2Ci`DWC)AMDGoeLwTgeQByD z!RS(_QT#2ror@bdr)3=V-Q|be+>CCTHHv&*KTGzq)h{!8`ti};S8vU=sg^LKyc>JV zQgyk;haF#8d;FisF!m(rr%YJ9GoG^XVB3`7+f~hYmN~#@f#W{SaweGy+Sa${7c9MV zuXUa$y|Qy+N-+TETomR(k{ooD|7LR5#5G7o^h)sCv}XWADqg+-l)qj0nzfCrOx{i- zqKr{FCytUJ`Pf2$)640NzIC+8H7!j)a}6V)oV-if$k9863=oC8rzG0WXK#`RhF({X z+|wSORZxeGcFQyFAU7%`P@fM=JI14qpGRCXmzHLMQ!Bytph-v`_nPNh2H9{`xx_Yz z&sC|sgbmWldxMFq*pb!tpy@pFUH_m!F^#1h+&?(F2^ado*p!I($y~c_*hTE9O?Eda z_trO%nS*mNGB=upzq5ty+t_k%;x3eTXy--At`8Tx;0bvQSYOrUZ-EUjqr}4xa^WKT zLJv0qTO6^)kKJGQKd8=Fz8)q!)k9hkd)(GV9R8!OJ zCin}*o=gmH%Ch;%BB~mMdRn^$ncR%Ox9ZiASi*hN8+~Ee3NPuWedlqK{UX_-Zi*jHMx9%&@E+q!^37` zVMWY*Q4e@j1(-~w4wM0N%YBOi_Oi2CB)Mf4C7}8i=Xit|qCWd-sG#%7?F~QRr&fH! z`sRVO6_#nW4XY=Be7d~K7eFm+WD0UM)3(X)1+V z34|Zj@6TQHlx{!qKA+sbW}|Ac5<_J4KFgSeAfSkIifO1rNa@@5etFH3zi%x@hO zI+u-L28{T@WVkRPIT>mqQfGJ7Yhq`nh0-T|Z*z)dg{P<|TN*oT@L~{Y7bCd#d;LmADG3>^jrehJtR_uVMoIESixX9|njy zauWCv)^X_R>mI3T=I;12QhdJaRlg*f(FrTwRB4{&Ol5ZteC;{b&BAMg7?ISFeI#Y8 z-7U5fMA{{CD6&hWEQb=uA}up8u0nPZgMF)+XTe4|z$a|s9SRGaJJB3_7TyTP4K@b(*M@hrb)n{U!~^BOq;~7q2@2UCrAo3cfRm8Tr@W|VW<($&kQ49+nO>-kV{M}K8QiJOCTa?siJqUgeXvq~`@9t+j*UyVBRi zx=|uN``X8q@#dj7KA$ZcV$(byUz&jGAr{8 zpk&uBqHhg-t@Torx1|J10W8c!28=q|Y%T&D;vHJm4ufZmKPvc;QiL8DUTba0Wtz&Tt?_Xr^^|M8*r*#V&Q>wpPbl(qM*gP}^|G&e5pIMPHb1 zj6_7;t2i6g4u8tyVZE7>RB5~Mom!b-e}Gm|fWf5|Y8;DkyU2aJ>b$R`WKL6B4o?kU@BC!TAm?WW++#_Ge=TzUW zG}(P`-5$$zm1F!}eZ&jEMd2iS(C3t?1V|BvPIgfAX&>mr$(N2HZ_$FWJ&L z+S$Ll&2)URs)OxqqPPyC89$>|g69s>a11e%T#%ok* zd%sPozIQl1uY1hb8DXljAD>1p{|xxl)svPy{=gd0c#uu?vWoPI@O{Kx|GBn8w40a- zBCSrc%memj)H^v8*dawe1pGB#t@yvAlYTJg+p%haD^@9zulvA#W8FD99h1RzMj{P} z;IaNzBQ|6adva!9WGwuy$fY=N_}B{3H5(kYqjzkfdb90rgKabN*O(({5ekfeV2m0x z-_!y-26857_u?qAGBRv4o|t*9tY&%lJ~1ZuFl#!KQ~6lN{N(xr>6bJ%q~$}6gvpO{ z+lG<1PqKoD(;SH~6(aUb>VS)C0*;4LY*MEJPt4Ysm#ij*?M!lxMiS{t*rwL>ufQmo zjuuJk4#JMM6FH^3Lbopr38cz{tNL%wvZN$ zR}H`G=RW5p3?P}`wY>yCvNHSI7D*It&+}Jm z74RD>_Xz@qHUUVgdI0(zS?{h=hK?v_zzRho7Cp6fXl6uyt|PNHZmXL}t*s2%dFbt{ zE9LUAJGK0kH;Gs19GOwN$8A=+^Es4)07N67LjtyFjhd^_7Tf`MhSJVO45Wyp)^{rS zaa)<9{D%g9HtAS#4m8J#i(vwc8_>!bbqXuyT$td20QGO9dOV44I~M~|D8`GQ$*bHr zzl9}te?LqbzlQOM-W`fY6+IQYT~l1e1;2)uU0<;UWvQekq&AOnNC}L)6xloy7@U<_ zP&Su_-@?BU2N|xG@R5^^z;Hj*tM~BvKeT03_etU}7u%_IBb71GXq3b;N5Sf@9`V8V z3FzT9t~(QY=y4gF+-&nnitxi6Q_9Xke=zqkQsqP$8iO9H_@uyOQ}d9`WUI|a;-zDQ zwX-w1q2NTiu*KhY6nPLW)iQpV@-Xy;m6m#$N!qF#!MPS3{`6E1I^Y_PX5oc0D+5PyBq)$Fn=y(9iM3F=> z^NizixH$)5>p|#i7uf;O*l>syyLOo|=P}cUglTXVxGL9OizRmBg+u(Cw;C8xNr%Es zJ(64%QP>g0H<6R+2X2MkO9MQ9O9XIK@Lj7KHi)FyKm=?cihmmL@kPx#D>NWwwCJgq zT81P)w5xOewXN>@fuD_kz{7?5nDRf5iB9uR2v=iVfwl%cWH!O_TfLu>2rW`c z&0lp%YFi*ogCxY{gML*yncVltE1F^@aGV(@B=RC-Vphq5b#g64uUcDtZKf%MnzgAO zGmR73^|dXZgXkJe`iG5LOE8}Drv>Ws#$6_vaE8H;La+I^qMZ<~6qYopYu@dI0V1f8 z5fK?Zlv8H>qMnhcz2KgG%(`5Wf5Xzj$w~{&22E3Z%SuOoE!s4=RK_paF=m}uT`3O` zMJDugs1{8W^5bs<1>vKp=&xUbwJK>p56BGH%ys8NBM~5+4>RQ~#FaFuW(+!kPfUjM zY>S(o$gXlKW@??_rr#0%U_jTac33Rdoh5XdBxG%`H;BHY*0VwDFpL^g%rx-@VX<1Z@?@Rta9Saev7A><&MKzGgE2#~qot9g1^FLT z`}Oq>Zm%^&VBra{1nc88T4s0ipom5|RD zFBtO^#c|OhuccdJ8;8xOga$*Kuj@MQ+QTL>htI+WEMn#m$ME6`KM4gKpq_(z29fGd z6;qt}}DP=o2cc36qS`rytZXvaJauSgoIgJ)xw||7q5|Q&tum71P zl4#f((yH#(-qX8&izm0A^7IL;ya_^=JF9OF8TP?!sC99JiFFO$9Iyb&f9$ctCV!Ov zOsV_p+dFVx`-mlF%f^jFgLJ zo{~bFkv*g`Z|(5j_uf+|x!9*H+Y5>{<5lx2thgB5e>|4|(;lF(l|^cDMa^o{6s!t+ zD*&&;?UGl#H0VM{q!QIWxw}ek-9O#@Wl4~$rCfKGQ4O^bbKNJKVb*haYW?N*h2xeS zgt#uBg|Y+b#f=m?y*U)A6*#2yDpZccnOeUMuG4ue{71;CH(?>4jqAf26>|3=v|DyB zs+%OJCgDnt6Lbc5(d5Q^rXtk7oF_jO`8Idixro~J73fY%gbBv;JK`4q`rFcrOa&pm zFJJ&_Ww0$osO?EaP6A&ZcS$C?Gv12twe_lkkaV!HtaBFYhsndfVvxcL>Y||z+a!V! zTB~l&^g-Tei8YNgrKnqZL=gJhxUpTUt^4gR+pCh4DoCJRjoJQIETBC3vBNWrl2AA9 zjv2y?tC=bFIs-mkway$g7$f_wPuqKa1QZidZ-eCP{~_-WDgVd!{71+jL+~Y6dg2fZ z9eA8XGjnP!dMU#JQ)0zMx-8eS`X6idt0HGBb3f-FF zna>9YM*!EYk*XPKt1X7Pk9vF+%pY_aJECAKyrDWH$>}p6%%0xhiYS;vmXJB%`&RH$ zuz%D?*1&2j{L6<5T&tPP1*Y7QjK(-8Nb89{Mk8HabQdIVjt)&H+-?Mj7hUk{xpV=qPv#rckg9*w8)ZlTU$ z@;O-VBbb|G;Smc*+(<}mpf08Rh>zUajt+YFT+!GeOZsf zQacp)&3ZUr!aG{Uh!^C_-UQhAGH+9U(A{2^%0Gq0$m)*E)?wd9V{@^0jdKxQX=x;Z~0!d>0 zxltoUg8gNoSCio)w7Q0X$Irqo&l=H)e0QU%1$UQgXHQ*fg(MVn+1_A2OiNEX%r9HC zzTaN@)cxPBB`C0Kr)0Nam$W1m9<*yZ&hu$_gdFS&Ji4MVE9=0b;Y+Cm!r<~^7UT5x!ird1cxU2}gh6ScnZBQaTk1yEFw#`4Pw z#rXbDg9Ny2rLSo=>Go#Ir48{u{J`SzH}om>4zKkqM`JlF2-X_u>IjlGoSsY>5B7JW z?re)DX4Dr=jNUQyScRvwGA;_dDGfmCUW8lk0?y+&18p_{3F9AHVXKly_TWXU;J?II z@xVfvXkj<>#Q{z#&Yz|^O9teVth&B4#whhz$TL==q7gk!eoo1rx3cLY{eizky&zkeS;EbzW7 z8w{52U7nw%Qo9{Q=<9;EUbOfQUOs-j{xLGIb;((+IwG-;_hfnBKD>S-ryKD3egF>k^Y*pes}czVzyAY8wb}sy literal 133229 zcmeFXWmud&7BGwzr?|U2gA{j{Vg-s9cXziIhXSQ|u>!@4yAST}Zbb$koT1n|-Q9Qh z*=OH>-`{VpJCoc=&dJf_B)Oy2Rpl{INl;;6U@#OFWHex4;DOMjj*JMc!Q`yFf`LI7 zwUw4uSCp2fQg?He|=dz zcSZ2+i_YvW+NCcH6&F_V)s?R=79|W!)qXVnD;O-x_WoqJ8uVVodU{UDD8eC^A~>B< zmsU7%;sae@4Ykv&kn)i|C2m;tHgsP(Y5=ZX$&KU*%`Y@rm=YeU+tJa?zDNNKGlK)# z2;HJdGz`=SF~Wh zF}6k#PzqG8U}B{vHe=~a4e$BE6g5xfH8L5Up#J+a%ZQmg#&3lmuC-!q|KD%%%S$>R45h$S@qQn&xAOun| z>2i6O8&D~I);S8mB19Nq9{8o@>hyVrlAmxlV#LQiYW)&zC&m2Y2V651{%@a%W-12B zL`I|Jag2m_yP<$ri6I!DVBi%@-y$VR@L@IH@!j^Y%Bmr6!J!Nxz-^USAj;E?`pcXX zVa9ajVxdSpPc=*UR>9y&Js)G02?%{c_jS$-ka_Kc>Pis>({irQLP<{&lZucdAqPn~ zFkJHC+%#OWczVg9wCLnv87OmFE!dDpz}c%n)${kNb*yIZ?6X_i|37hOu(%0uZJ zE6kfmvfL->oBMOJi#orepNG24XrM%iOFCMLpg>pORsd?Mld$J#Pw%)8Y6(Dgq5fE7zQrK14W|Ete8ne>eJT_)XtPa)md7g-TJh93;qVZHBe@!$$};9wsaw13ok21YljKkB8PmYLPp7>_UMD*k}bzV>ccms2~yz1 ziSDCjRv`Hr9fifr4WAL2Op8CHZ-J{3dm{UqnlbT80m+TjH|mDY_Wi3B0`z0rO!QhfjX1AyRC}#UW6$Fi=#Fq4qjJvml&P(7i*X6D z7qPu@)v$!45~82zaE3#6B`)b@lbV0PX)xPj*fJgp9HN%SUVki?;-hc-Dm_$cf!&gB zsJJ01CI^%Xl6zL3{;vD3op~Bh%#y?s#S*PB!!3G7_Fj4Z$BKGjDaxF~k>Qb@o#@S* z8;YB_n3$NBm^7vG7NV?;>M`v+co}))NsJvE^;7giSMVFsj_^ELJyU-p+|b-8-8>zo&H3{( zkt~onU{nsU#j(UmlkoHY<~{sI`=)^R>J6do*_24ta)sn;FZ&c5#|5FnoAmf; z_5%l@1hE8Qc+j_vLY2A3>3th(`!sv-jML)T?DUN5tl~_@Pt8Jitzu2W*@lI^gZ(3p z>GfiN>AR$y8j81S-<#B{jKDD){!gaAVSmFtaX+p9Uc3<}=0yL5;f9_{{Dx$WzYpUS z!yKcSsFGjAaY9NJ}{X*QrI^S2ayr z&fn(kbr$+5R7-|NeoRIwbSNY%gfGl1)Zx+Sq3UV0AFyzr8Qb=@a+DygjkaDcEP;t) zTI5$lSqJN6!^q8w!phK>#5#GtxPZO=Ee00@u-9nznb=Ao&_DJ;2U86*TE0U*p}5fc zn{@+7rHGFwq9w|AB6bV^fOqvcYEj-96AT9q+z7rG_`M4`IX|SZEb(qK4gKUazI@;sp_E}IwmAx3S#uH%WV;^QG z6VSI3C7*bk_;qN1`rzPvdQ^Thwl)SwmRBy+M)msg;DL*eE6M!zAdb1YS(#bxKwMNN zwl`l6g*aD`{9{{KR~S8tH?AXYVKlqqk>bu*yQB?9Bzhe>?|4@V9`~_+yk0z0B~2D) zUS>~wyO*V{8rDItICn}Np|b&>%nQxI+*}g@YVV%u=p)<~+`D4znXj{6KLWSq-0hp6 z4zsS0uEi)an_})hQFa-3gRvo~EC`d_0X!_+tvrD|Y1X$E_tx*NZcvwd8hUh=O_xb) zH$gHWhf(4om5KFi`H8oq!gMn@dr|s~8Oq;;N~KSzIPkqyZ*$t++;ZupYI!M#DRVcq zzGDRMuKsA8G5&#x_Jmr7Dz2>ftv2}QzSi_yqwVc1fvUeYp2qd6M}UyC-za(=vAeZM z*6_C$TLNy@K8hBSZ5Nk~U?0q%^NY zU&s%77~8CdF{Uz{0=n$>@S=65T#Rxgw%MFJbvhEwI;qq8-bq*X1O12j79ls!S&~uSw~GOK znGLso?@i{<>sch@5RFx8hfHrF<{)>P6Q%sZE69~T=(!W1Uo z@aj8Jn17dD@HYNkLJAqFfRRW0OBh53JUo_^V8GD0Cd#`%*RZg(a65}#JeiFm=zhd@ zd~)Fq1jT3Fi3K0PT}kc8Cd6Vmo;e}~d%rxHw8{JT(oeosN$cR?_x^k&;MM;!GF&F9 zGikVE*yba8g2yBoz*Z{A{ws9RESQg*ryG zjO^n}7{0$ui!Y2i=F6tJ|Mup%3e2s;$5lW{mDuYLA`%!BBN%c)w-SuA`P~Pl4D4+& z6Z7-M>voTGXXP5uBQ-d8QljVxF-YtM4Z|csp-Bvu^xtJUSSA?wf7HXlz(m@@ApEP3Dm4G|`vOgWVE&oIe~o}ag1+HElh1d! z|JxfL_#OV=Wp!v9jHITtq9QccGmc=;DHhG5rP&SEj>)Bd>kE|+=YBZY5vhe2wMJA z4WOa=M;8x!Q5szpbt-9RH%lr$4o(hE8ZlHVDk>2-3o9WF8M%LfL*GPcY&<+%ga80< zZ*LB79u8+WYXFy^pdf&g8^F!Y4(-A2?(5`X>cj5jPWw+J{}+#prMtPCt&4}PvlG=H zyryQ(o*tq!G=B#A_wS!{TKd@jXCx>0f3XE+5b&o3z{SA{_&07SsK}pMA$40HO9wp} zTSutOpks&$yb%!jNB{q6`Ok=dfz)TBiuDQs zTU}BD!YSF`*X1N3gD0!sDvXESd6zLtc6+jp+jh4W6hV3CFg7;v+_azJ3(6*YvHiki z+8cpk<-A;LS$VB%|(`h_P+=b>7mq10?=b+|IQcP7a}Or(c43Y|BH~D z2}(V>pQ$d}|4O(I>-)J1y8OP>|00w`fvRi@t=H`Tr80?BLg2&gX%alr>!Cd9$ldep z-srr6|Ht4WC}hEp7hhR*IEFL%t9B=IH+fX`oyTf>2tRo*R(`;1vkjEL@cFx3U6NsB zT(*0{XFtGLD{i+1K6ov+c~?mW_MkAPry{}(LJwNpFB#}Q;$bf}yA~)K7b$1p?e+Hk z7n(2g$Yg?UeI8;xD+H-cFOOFVg8gu>P!(#-`e#l(>axx~V~o1SnLZpJdWHLLh2cU4 zA)sNU@E1XRkwxjkS@cpWDu#?}^bo2yIj&kcW&G-oMf39~R-l^xV}UBk_kWd-g(cj< zjptGQ^+DE{MvwP;t7nlxwrGdmeU0Lad%?NNi+vZ)UoF;x1FjK7*sC_02FTqHpXBaY zyuHm&Bkbrvr~9H0#jhF5c18ae^BEdJXmnb)6Jp6*oM~O;A4T3|H)u@no()IE=bk99 zy~OBse`^f2gu~HXdB(rOWg%>x*xjA2%T=YY>2a&5(TpM++wY^RnWpo^d_>TQg<7#) zq9yRJ64cA+f~po_B5JmGO%OWLe3?$B{|~KFjjUQGR&jRXtu?3(cgdPy|JCHU$zhc} z>wT}RG|!Y$SPE_Lp@QC9`)TXobyBZta1>3PI=Xz%#pfIr>BtDHTQ|LWvl#!;49--J7Nk$&vq zrxIYeQt1*a#{&YVxnTc-OoETmzu`095l5F3S6vA%VKg z0f7ah3n)|)UZ*RvHKaQnAt5Y=&77}X&{b=^ia}2U_C&`=F5-Wz!ovAq8Wj7R2ABD| zC$fbt!5ba>kM4UT^b;@31Ti~(nB+oqkWS}K;MBsO2_=z6R_fR=Dp$g9&AC0|!kBV^ z4r<^ZPgJ`W3Yi1oH&CF4*3FgS40mflJZ>?kX0coiYO(_4&xFrk9cs>i5i4K_HODXg1_F5J#IS*q#%{A5|>>~KJQ z6STwoIq;My^v@bwOZrd$_Su7q;$J@WO~2<3Ed4U{8^eGOoH`4%LRlZ=mMaagX=!J^R!ZYb7*)TB>9El%{ZpHT zalTADDziVQ<6$qeCH8Yj+vV4~o9r)|<;%9y`Lc0@pk|)Y5bU%nUFOZn2QI5&j*bI3 z!P0<7t6^5{%CEQCZJB}rn|_{twU67(M4}OT!)y1k&cR<7H=mU4-j~riW^SgQWQ95n zmE0L9-p?weHij9L>1TJaSj)*S$++GhmlRCH!(VAwo|* zxY=l)R{q;PwA`po(d%T5_Te>|mT9hz5*|C7b?!TZkrZa^0|BJh&+Nf$FSB#gsuh8? zL09d^b|1N|^BrXW=@dq{b9lhFsg++o_R0;iExWR89Az8nIJKTBm1;L=j6pK!d-D6= z?$#vkNcEHReUH>CR~M^yBAk+NF<#~HdjDIy3p;oMWIX!AwkqPQDh0pc<*p!CeGUQIt?Bqsk9Tj8Bllsyx0ZSq)w=N7 zG1@4ra}e98c4bo8QEma{wh(Z}YJceAmNNNSO*uLES&&VX(t*bE?VvGN`pq-p<>8|E zh^^<(;itPb3(j)Ax`9WlS3Dq0v1b{%1b@E$z0<|IOhXr=NBlwE9zvwGdfOyHr*PB@ zewjWt8zDIb_U+6>a8tP##_Z+oz0(GO8#H>av9p`BJ7G|%+#p@tbgoi%bq$xk(c=wi zCbT^LJw9_@G`josYVw>VAM6M(ul)5?*vr32da%dWI-4er#E`fqshcOyDeGa@`EnG@ zI!{tjZ|HiVmzeJ=jMDedX@KjUulx{l&tfWiM`wb^Ar_cfW^H_rNK#%N_0(Z6O+ zyB9QoYh3QesK##@e}hR*c`5Qb1~`iY@`ED}5hApUvV;4o=+lRlb$0ww#yHUUkQCink}wIjC{TRN z7)yx{R5xk4Q#7uj*niMZm_xY|6wSd{J4i@u%{yK1cH>teQ2FI+f9%k`^&&>i+e0Zi z;AZU#ukvBTWzus})&8hKU1xG@!%w9$h9-#O5v!9Q+Gf3w8h{DQowT8b2>fjKUiC8O ztKI6eE>LbjC8sp!_-d%@tb%S4CAx-$Ovvvi9;=3eopu>he+&UP!&+H`_5C6}YlEqO zMVA!#H!I+aJwP0A=HAPHHm{dEByQ*FU3VLw#-uH9R{vQ6&IuY{InjtM&T2pwe!A9j z4bI<1`1+DP-x=#Q1r<1~0%^7Eq8f`Sz?AxvV`!z+0j6*t3e9GaJ@(i{~rYMJb&~^^4Cj@}gQLwn_2TYO|}g4_^AN;ILOq=d(2$+}vU#ETZF`LUbc+ zY8k40HzJ(x0;M1By1;!L$ZrIM$ zHmihXWxY-MD)=Y((?K}ohE>WO|70^bA)T7v=wjn}i?x9!-8v#I&s1b)iraf7JT`4O zLHvco9)M6DKMX8Xk%y=l3bT-F~nEPuPtZ3YNc-_c%Fx%d_$IPVDhb zJ$VlyoIqXV92T&6p_I9!m5#Er)&7oxn9J&uQ2YI?i8T2BN==-CL^JC{IJk1%-?HTv zFOQct4m-2H8W`XA}URT7=lu}HFOr69#FRWlKpAUB&Wqk zuh~{7+(A|u&fBNS276E7Cb>}MgG{Mb%_r4OP3`za+kkdBk_fM}70Zdb<_Xu><0glD zRJ}T<4y{V9>BofRh2JbpM&%{M{B7E^Yqt4f>;(@6g22Lc% z_KW4zdn2ie{M)g4FhuZ8)?iro%~baHhJ%avbEw}5U8j8>=9{`Yi*yk0=oZqd^sNJg zw6v1M1^S~2wgf;?+A`VO%{vJ^1jG}L%zE*jop~RKXD85)4=qrKq#q+;rh`wXdVe0;u=_N<6q zc+AxmGX79_!eN^bayl<-ft}l zIF;haiVk}Fp=|m9g(u+h)=1|mhtAd?#{4@!i|JH5L|v<@?)nOiVo!3P!FqQ!orVec z8NSz3KRb?edz#Bj zG_dV_JdUwk6O^I$S>>{H>S6m~Oca}y{A^RFzUdC|v~N`A317w4bAT<^Zg>Qb2*&pA z>WF$E0qW6YPf|Y>IjsUm12h}n_Mux!PkL^Mw5%`F8w}nNO&)UuGVU%?yZc~v=_u8Q zfDiM6pQkS=DE%mDb1^cTGJfL$(fVlws73NYwfL5z`gc7wsQ6>Wo5^s~uZIKWp*!uO zb8Q9Z?bu&ctJR9FH^ewXNrN724)lw>Q zU*NFR4@&8y8k0TORRNPwG>uSGegscO{;<0FX(if*vMDKQFv?@+*Dl4n%(oTlmKHxQ z*klBOtXdnZJ3a9==7eg>Eqda zmf0%lMNDqEaMT%HE?%t7>h=nIgva43y(vxI>IAPp+N z{2e%Oeo2d(K=_Pho@~_I&fRLG0fSc(-=h>{&Bvd%PQ+_>huf)#?*1vk-2802`fU5PqeudAYGNe>9|#USPyC!Kuw32f zJ71w`aMspT<8e5z!#dp3KiY!-i$UW}UK+f)19j>e?0yLQ8BkGm#{TeiK~A77_!wj6 zV4+O80H?Bz$HZ{Mk$)~h_d<4$AjQyHq29er_imMP-o2hn4~zq7^kp}4y(+7 ziN`5J!ZwUfoAwf4H~N;lc>8&7)++b3mY0n=#7aOXT4#`gd$>?x+r>|`BoxTRQw}${ z=i1*=k&%NcydNdQYnw*F=z5cVs-*QBPVemf%-NmkzeFn-~1 zHguV^PJ1?&ic6n>obAOIoRYrz1|Xe4DkK} z3lu((l?nYSEHSsOYqS|6lU4lSb5SmR;z54yQCo5$&?L1pn4Grx{#`3STVS-A?Ddmt zK`|A2?165^<4jxa`C_5QOON0F)Ao`j0a9F6eve)8+U)r^i%oyhyHRk^*9>rg)rJ8C zaS-=;&YkFfY?Q&Svy%Nsvru~sevm<{J}~p8j4Rj4WxYRVTKqAfav`*7$XB1gRI|>l zR)7iQgny`G4$GYw2lpPj{WTZ3tkcnpqPsZ&fX&w$b<+XxMma`WQ&?dV|qbAGtoyhxsA{HzN zlfzp3y4J*bw_D?Rk07$20rnJ}$P0+RNN4h?XQB#vMo!TPOL-26*FLB|wZ3s`2?RNH zk5Y&>PHf#G9^wHZ=it>~i3yEFG;G+K_?pkiiDGNB)7*d}W{{a5NR`wJ<2BU;f@wu$?api}$z02Qe3Wpl>ugvxzTCT8FT1A$ODqGvd z2xt+-d+y?zHd9cNiodmU0JlW48%rW$2IIIvbpQm>Nh~c}`hY>Tpbx2)hP3l#TI%i{ zzx;9uwA8L5Jy!K;O{SJUxh7*3PMCxP&Mq8RAU<;IBt^d>Ko~pl)5o78nASi>+vXKm zD>>3p@KFb2bOA5glh5RB*PPm~nvGS(8!EF53u{l-+tjAuAJ^A>XZD}>-JW=Le6xdk z!ogsDlt^is>oJoo(~6^%aX`76cDa!?39+At!&l`nk*7y=^KrN`oc3a+6tI#=y66ik8X&_#)igPRsa!@))la)Aq*l5-jW4nGoS_Q*=^_%9s~)XyG0PM5JBee z#4}sFh&{_P9}uNk&U0kd*!&{>Jncvpc)|xnl99I6967t&@O~j|!djR7=()Mp{3*zv zVR=0#RvO0(3I8HmF)^$m_v#)tTL}&ScJqD7#!n318-T!qx@maTCiwMh$TUc3ZKuHb zGvw1NgdALCEM1DHlAOznN*VZ~Hf)|kP{v8$&RWPZ%H$E>BhaD2H(?NJth+w@;r!Pt zWQnMDzMe|sEc+sahfS!U82^0pGT~p}BCtMrohJc^Bp0fVpEUXk(p+vCH&LGD{dGS3 z-CE8rt!@2&yLTD;>uUI-hZT%s#VO$|Leg!XAyi=PKCqgb0e-M#nW4t%kWvZ*43Gzx zPNMitP5Xq^cIU&UI+(=D6|_0OeGckw=u)TEb>8wVFS;Sn-ReR`^UWtDxk)eM5Y+~` zrmiywOdrR->2G-clw&kTRcpD*5g6f?!8OiD&NjQTV2yW&y&-;}ETIO7kESqb-yz-5 z-P8?Vdh@8F3O(u<#5FdU(SYzdxO8ZL`|9`VT&k=0BGNDDdH>( z_yjCN26@}fVx&N6F)ZL4ccD^xr0?LwhdduoyZ32g>p~F=59lPOettEuG)-pVZu|5N z0eeSNx=SSUKb2l`vZVk30g8ha|ER98nFy&@XeC4|gmxIcXnUoDNC%ZMec!(6M+2+^ZoYSS+%ff=7#mvbxTwXR}W51K*V1;htuHEb&4N&@$;cn1{FC zDb#}GyYX4fp%u-LC}ypiw**gDbDqxMsf5?7f%b>>lg&{!Wji_eK4IoBk^^)3jSd!ec8k!Av~vRvc7?m;r7EyL}r`8c5JivT0ppA zx!EA1*0E`7>`d7UmAjfUiTJ>qRDns?$(#=T!&QLg zD4n2}`&q9WO%?S9sgD)48#Nu+)~AA)Vq1j4uV~5z6)d zWg1bm_x?Qau;SC*wr?uHd4|ls@U*QqOl@PV*rV0m%gZbCeX4R!+vh9g3JtRBDT^== z&Tbt!6hHxS1&xr(%^CT16T3ac4IZK8p?gpd5gD^OOf}E897 zAR?j%Z_GWJu$+?hSX@c>@{ORoZ&*|!v#eQ&PY z^T3`_o2>Kjyd;)u-KfTM(bTQS$8`twD-z_CQjP7GwXi!`TpKN4P)}ChZ?*b%%?VZU z32bMWL@7g^lsmKe_DA7)oHmsR%&7ry3fiPFD;tS&$~1hel2JF@{VS`fbPxe-N9Mtv zj702qJxamYrRr&-?P5!Uo?O{!T>&MUr~+qFgdQ)&NR0k{N7Ho0@0v=JUlV?Jw7xfS z-ecS>W0>{L21nUmF^vw+T%t3bfDcZ$AH3fO;vY0+?%4!uNJH{3VW|_o7k}?~7rFO^ z@3l#ek+sccYer)UrFq7B7#Mz>L?N4GkcH9Y>N(4KFI25_G4=Uqpnha{l%qKEJlrKb z#1k>V#Sb%Z;mwT6H%jF@^Ij`*cRq`2G%I|{8{Hi`Mzc4CVW9uh#>47?Zt*F1wVImXUAZ~?z3TRZOJt+lcuHC% zefUB6JT4B4y5M5TqYr-YgeHV52dS?3p{5t4W9yxzZK)J3r=&<1o4=C9w zY;QN`Y1`bu%@OC2~5-Dk!NwJee_7v$>m=p ze59)L#gJKPbxCDW)3aeWuY{djq&VDAdIXKfW^)Fs#ujdQXpc$-+`J^T7Elmm6Yy$UtuN!BdK z?!#2!rNcC(GS5Mbqy820^7DSLbRnHGjSX`8<=@4|08VXT-iAbYZ7TF`=p{Dd4uMk2 zyD$K%#s2q>sv00sFQrsHs?$=lqMOa}x?()D-?MI`6ru>9kOv1qM0h5hJ%6xKGvQ<2 zY1)SXpkY9_pdE?cZ~ztN&z9sxvc}W4>-mNAA4a=n9BsP#Z(4Yg2i0N;MsW*rd5?)^ z`7aJl_jU7-DgGRtiN3~dL=o+{9+x@v+?Vn)>c4ch=QUVDBRa z<-0K3T$AUhktUt+`Gj-Xgo6dg)%i!CG~2PBdu6RF6M=HKObV#!md!HQvIa}~|K2C; zSZd;PGDA4Q4MiF%EvAcm<&CC}w3J8>;iSL_p|b>7rMq1*pLwQz8oHqLi+=Qnht)<%`{3rfmSXio@yB`gDF#e7qw($(9Kp@u8^YW*O(K=k1FAwy@olbY4V_YKMHrU25IOADQvQvQ;Yw z-PtO=$iO?I-WdPW_)Gw%Al4@Zxh~PjKuwP<#triio-A+DCtE{}C8I7zc{cCouJvyM zs!N62qK;L!Nw3>N$L`7md2`A{kC-q(kudhCZ#?AceqQ+JFzg^aMax5io_c9^65#eP zIw)HwuZFa@_~#>1>gqqzYjj;}32gclmGm@U@^3sD{``p#H}FLmo(QOxag2q zDc!L}@0vpXEI&{UbIt9qhb0)(-H!~te5VbG_IB4t-FyoW(HV@Ob#Muu&$PSlS zt1>6U-fB3@^J4d4)6yuM^`*cnAJs0Oc`0jn<(DFquIF@F?Yh-3U<_=xy6HZ9YLII0 zJ>%}=%q=P1A3x|9E!!x~t2F^_M!r_OYWyHgnYHTFsy$B3n&ANn9RVL)3}%gq2-a7{ zKQR-pfE%hIcZJ+OklDNs(huHgBl5*GsE%{5kiQU|wnp$ZIIJjCmIROC5&BXA5Ckqh z$-i}RM}aiy0_OI^6nvb> z;IqV!0uA4d49{zLaxuiqxI3}5$xb~JRanZz5g{*RhA5&WZEaD@BC8Nzih;*Gkj?jR z(c6#<#MNH!*?Gd@_cxOl$^>sA`5KU6knxDU^VnBj`$gaVk8v(;dt}14;Q$f-PM#~v zNzf19%-43?HF~XHM^rjSUZumU%mJqRhQ->KF~l-VeFyV8h78%ljj_5#KH<(U-Mt>q zo0NNv22RNfeJb}>G1{f=Jt^*KK_IcJWB^*cD9G8rZmKiXheFQGO=(}C!MC7^_scC{%~pK z$ZffhFtQw#CWSw-$9pN=R?+;R-kMzWdKEPD(&5aeE_AqbMJoLemt)}*LCxY`kV|ZwY}<2M%szTNS274V z{r1RV)*K~i20vx6d6a(%oUWNg zsX*f+zJd}i=qAQb#X79V)bOawv_M*_!68F~+f5-?y@kJ|^kOc}YNV=@UeF);)P-G{ zb=LceV0cl; z5~*EsB}9pl#fiUUs%sFy3pa4hu6J8(=zs5P^}63D0k&%1h3S*)BGy=TfK{ zknlAx%ebO$qNpW&MP*D;OZE7bY56cDV3G@s-dhLnR-P6t@IN8- zFzQD^r{c27(6pv0h5LN$a&_R3h)n2JjR41hedqOx^2a;t;umBAhTf-TNc`$J`YR(# zD_4_sg29pbk*J|8N zM?NyyddJoDVvcBY4vI&?leQqaE;;F?*0@gr^y;f0$<@)dS@EGuw7wmV(Hp?CL!wufcb zhWhdH7`&HB8T5w2czwqt@$A;1GAW|T(79dQ`%rYr%5tAH0<@@**Nvg$kE(1P(3C## z*oIYk7LsFot-d-{>gb-GUz+oQw_~7jaFICx8d!6pK8~G|Wj+sEYmgZHxL+>#9!0uySid+C>Yq?T3eCj18?j;z5DTwI?rpj5WyTK@iWqSTx1*qSyK{YGBJhr1&VP`0}RS=)Hk`^ZRy zs}ngKXpH#a6h^UWRk2!XyRFR=e}_sw8M}oCq>T`>^E)}IIROuG?dW>YRf$71IUNg>=9zPrI{j2g6 z%;kEbCC?6SSr%BmR3@@4IL(e=v_ZD3IbBYdz`n>Sam1@Yru9X2}RixB4qhv z5?8W&hF@|d$RjM)lZ^KaKVs-lv{M&tuO^2LJZO2;e#HVOa*=mOVAYYnk336GZSuTM zZO7p-PHl3#<~&qG@m_dfQAX@HQU|_`=qF^O{E1Rd?Ym>}KFU}THm4N?CHof1YH@tU z10_SqJnJOo1|an9Z8arXf$W1*ULTS5TBT*upO0uRS6eQ}u3qZOxX%+Otb)wis5KI* z*1;Yl;f?~uc~AaCvpl4cJ^ZTMWffo2h4J>=4nCga=41-JC3vZs2|zbjN!YqRBC|Eb z^%I?Xz*cSi&yw;&3$0*dAqF(0$ftX`3K;*YumB0SVz&ck_r>TG1;j^K!%s}{@Tk;@a7>jnO>2VPEMaQ|-6 zQ9e=Vxr6gO`_vM!-mMCPtLiu>B4huNb{;MmcpQ(J>AzUky}P$)q!ar?=Z9Ni%;net z_OvRs!{!nwC(YYB*rsT~?`rSG_ts4Y7l>QjNgw?3q{cKkFhYodocJlwtE1?3Ofur? z!|P0weP^ei4E^aNL*yq!s@JVObL$aMiw4W3%k22}Wp%0oX86E9K@~gzACn085?$&U z-##TmEy#1eIk_vwwj{|ccMCiTXWMHcb22PhTwu`TECrHiu8)^vNGOfZhg;lVhZo^U zRz7ACiVnuvd0nj6z9)h_eBv5_pB;Qe1EHo$2h<6SCQ$>lD@;hU`edXFgf2hAH}0tu z>QTyQ`;#btQHlDo(sp1@f4^wu%m1F^2Vzglq?W9?jIbnR%ZJ`ON>8|`)P)P3pb5#K z-AU77jvC!dGff8Exz94gU7R}TN@89-2(9A|K=@`sLJFAnO5s&?V*-PEb)DStU7V!- z^VkuRg0mJNOVmv~qo->EVDomT#y0okmk<;r~SZkqT(`Mpw|G4Vw z07lXnX3ciRo%n*S%m&}Xx%Fl9_JA!u!ZpY^uy`k)nsY06|G_s!2V_}!Y-kaS0`e&!j%>&^2QK)PF_NV?&FY5{NRA; z@i4xUR52^R4E>%Y_q<;oEuIgHQz(=NMTKHC@(hh`^>Ia%$Obtu|XS(h|u8{M4~VCzo(RHTH3c z09jdgY1w=8J3IE>hHQw=>C^fG>f!Xp>rIs$qT5(}noS?AzeDK2 znU;cnOYj8!HvQC_pGP*6&$T_7?Hx^d`uYPpmU7LW4#e#Bfm6o=+CbK%pJ!{aqVt>W z)tzZq(;x~zu_d}A$a7UNL{DW#eA<5>VYV&a9!D*NN9g)U&W*_e1d%Ny@9F>JC5MA0 zP2fEtq^h)F_{`vPW8ok&%~zi9kaTN$2F6zrC_wKRFRmsqSOPjS7PoxVj{M~`Q`GD#oVpn@a=CNd+)Tmo&)*Q~2Jk z^)$KUeHs?4=L0W2Ig(-N=i$+>&fE+>EGfJrn4Jh!@JIE7IXJNHjXQS8bS^JR30R%+h~d0)y@Dx z%|Qa%tsu$Cocye;D3aJdT56~#;SNb@mjkAb$8@XXOg5NnV?Rd?s6l8^h zULdr4$)T8E6P*&W`FVMNhUlS4}?k!ftoa#PNo~C?l;C}lvg>|_3U9SqonRqlF z(1t3U-#{yDnhG)T2(QyeO#I0Yn2|apXtkg!51%yr0M<@gTX`?tUvG83v_-%R-HCDz z%T1DOn8!J{=}%PXFnTDnZIQQFEZgnaAQNyIb;pa!wFsB-&;ceV&pd9)k(}#XT=udI z$X&S@$m3$LaQG0O&IF3p+|V4~sOEK>Hci;aV5vY51=V&lw4sJvt7*0k>}^>A6R=%y zGV)Bo-n}pLcb2@a4iW65HtN`~$BZR1?f;D(0*2L9kZ6~)!!!D^W295H$^^=N&+out zZ-IgP>&2FqY9vNzjaDf8Yukl)=YqAd|AVG`uvw1&m=39$?$0ZP;6e;dpTUiwokHpt zl=SXxX1wA8CAXY4|$7|zb_ihU3!Aj91{KvO-N0u}lx}vaLcFY_zLlVL;qv z*A?dnW&CbS)zrgbKOB~86KO3&L~WS^b_7496G}r?&Ubo@E&9??ym(ItJE&hIMUF>t zx3S5k4ekzzRx;`~(iYzn$)nN75b`o~yD)qVc`J0fx40K7Xe^_Q*uB&w&*-Rkcbf`Q zjS?wV&ZVXdzD@DhslBm#&-(UGRcP7o`8>_CoWeMB+MhCrW!5-wwo+;Q=zU>sDt`Vj zdw_Hz4V#J3j|p=9|HIx}MdgugVY@*RENF0dcXvo|5AGH`Sa63BG`PD2cXxNU-~@Mf z`ykjUI=%N!cb{>_x%>Z%9-}TQ<0G|fuDRw~HQ%R1=Wr~lJk(e!PkRzu@(iL*E8e#E zeG^{;_b1ve79pcmXtzg2a;_&>TW>2K4GqwRbS|{_EgvI5>Q9dNJ|hr^m^v)CD`O<)HnTA+FILkfBEn_7z% zv*Vo9rfXQ-1AD6l%yB-5?eLyE)GhzSV#{jp+p2gI^X9H}&qub62kh1tg+=eXaPtxx z%^z}0w(CE&LQ+Vx16wq4>r{q4OFikvGk1%Qs*Fs?F1ghX%rO~Ylj?q-Mlk`2+?s#} z){@Fztbz<}gCI&)!*2vJlM0W56pYk{WXsqW0FmWYlkqYXqdtt0uNTwSS;`TL=L*Sx zroDO2y1fpaANmwu=(E#~H$LCtT)NHBeWb%EnQV7K_~GzlCWl73FeVq8(tV@7 z#c&UHqvQt-HT4xHgm>Biugm!^D$(@TyCZGCPY%gl9@krS=My1y@9>iHNPZNW3(VpX}#ZuO3c~* zzPnd*gu}VbWs*kjwB#AxD&8rx6lJtp0oF3WSSHF)#o&g0Y_ zstOnfql-U>8BRNd7EoChhgTfH8!Y-gw^T{!l3d51=+M$TnCwGyw@oew2#F=zBKgJN z@+MVK77gM7SFzEw`eIYn;U024=riKGNuDyqD{u-+nV)cAj2k6#HSg-^hiNipocxkB zgrrxOgHZ2bb$Q5Mc5|f!cjLT|JbdaFz5okl-=0gg@hLs6!(A;o zwD8WA#H-la4rzWQKR_e?O5T<`+K&@Ul5ozG2m6lfC7Qg_Cnfe0*XtGRJ{4+&@ z#P4Q6MLiP&xwErC9^>$iuDgT3Szw1-4;G_r%MZTL&3n5sM=J!)Fnf69fwF?C5lpmQ ztobHDT`)9aFXYJ68qBEbe?bE+ZPMc;8%s?D?*#NOfaXxA^jWZmMnuttA&dE2k@17>tQi{zqaS^h2KvUS2TltI#i@5mt344bLp z+t2Ssd=PQPMka29&mJ%L8y=)j6rl}Sqc|bNBrv}DQ$#%ew$#IO7=c4>AkF~w}IS(lJ z3c18CM=BON6eMG|jK$aDp{7{W$B~uZR^<*vj(IpY;+f~*auLpFSy#M4R&44SU;NXm zmfS#C$STr&X<2^rTq*4?!{3H(2tP=^;dP7TZ4w>C34L)xFp`zWW6Apt(yZ2cC8K%9 zjOOgCLXG5B!dPVLD0C-=fip5=%WzW70c4AVW0*}<*BKBjQwUsC$4sw5oH9T4oo~6O z+Lw0Q8fCFFb5_DuLwmzBOfNVcMgW;fi8gI#hNv>EJ<-c}P+Ok|me?P{B|lPmQ1mv6 zr2?~h?G!)YJ?C2yhHePz+daJXmX-Ii(k*pA#{_Enso$ZQ%H7t9w9w1EW(Y-{^bbbPkD$Pd_rvp3j{@L^6d^4n(I;kUMGUly@UO z!kn($FFtIf8NINpf3Jm$!S~Jd6P0{(c||$QQAow-%FGNbc*WcE)ci4k7vK~cNn4Gx z;)IKH;-coWn)>-w?i6%A)b)PVYZHU|$MW^Bjs)4FSj={5we;E&I0uu=<$WA3qJn9%C+M!sQcqPrHZeKots{6RsNr4J<#iw#s#dG1p~9p2pns``4*-EN5^nS@ zxgLQE?8-2iyNB*BD*0TSS6dR3HAhR!?v;#Ezij7hQa`$4p5*ORqN=OkFrmBRfu|JJ zMTjlDqAR|%+#d?^2+m)c(g>>G#h1~(3@L4d?fP-LVwkOKCY6vg_pFgEtw^mcPzW;> z8X`tNv*!@<+Wf42Cgvn;1wQ=hHeb+3j8>kB_x{;DzB(5PPR%r(=xj zSzyzav$@DT!6rT6!btar##!*gFAcO{>EDE>3uNUjpE%EigI0UW-dbWTp>35y=59SWptIthN))VzqK`V20pA{L=DBlYP?b`Fa zK6}#-4Zud1g1RfcV}04d7^4vo})dYK|_J(h??&-=vvw4p`m z>Z3b;S-+Api#XKm-%&=O81*ddRryocTlP<3ubzLS`7Aw4k9_SbtHA9CkX)1Ir7TQ8y}{w!n_=lE0MivlFGK=v87!psH4cFuBelfMT?A_eruQw=Cj zxzPNsVuF-gzof=O9m%VCq$SUaT1Z_^W3lJ1QBU|&5Z?dSo(+TfT>@Xp^{3>OheFbQR$}Ld69Otujvt{)}BVPt99P{H4eBH}?<_N)$&#V#n!r|!O*eirIZ|15@ z!Vg#41hj`!I@qLObQcbS-w4qFq>q%(BCk-ypW!9G>xRa^gBjFQp2-x3K()7NC$s7> zphf{a2LbDvBtAD+#$v%(vb^5{OHL%ct)Q#2G%;iwQG3nsTX~c>kAbzXd zuK^a^NB%rF0<5hS%_EeGBgQUk$*%FyT+#m>{{P$F=#5L-Qkl(xI*S$9|Jg-Fi zeE<1NqBkJpG_IGVCHZH`dcXs{$C-%!`HL|j0G+`qMH%`Xjq;1Rfs_C|P|sfapT9(4 z0cnHA{zcu)e=*-b>JLc{csxwJH~;+Q-)8;BGWmD3{^#}t|24w@P3QmbxfOBbdy*n2 z5O3Y~^cMZ8Rd}XUo1zJH7)c@)2KlQ0A6_8>4`y>XQ4to6mXab>NoRkmkP0KksZ`6w z<>B>LVom53k2}y%Hr3?jbfR_tsCLsk3}RsIGQI`)EO3?^;Qw?N7T`Lrh2m?SwyIqV zn~&QvWL~ZA6)X~2nCdz=t^5a;SX@8NNStl-VbN&`MS_4WEpQeAtUF}ZY0V!P)UcU$ z^nZ_~p6>}K-v~mjd;36bwtGWV8tlmas4xgP1T-7vc;NLzLU>!(uQ*HsFNP;NLE{6_o zPq_RR^x}=WFzCMrZ-3k~BZH}prhNh!SQOUyR7&5zq0(pw!)}gQL!Ji3(in~;)!6QS zCj#D=nj3Z-_)K06S7x8q@U`5Y??guzsl-m?Na85&)EvwX9WS{}pm8F~{syS}!&|7w z3TC|9KP=QzXLFz@PG+}`+M-eEfAqK`YjN`g=u15b%lr_pB&?41O4N(uf|eC3wKQ?q zt>&YYPw3Jx{yu<)l;B2^@iEawO3G(V>T&mvP4^{yZ9Y(!GIdOC>XJ8|ZWq%WtP$Ex zPEuF<(>d<9w&%&Rn$?<6YApYouK!u4vhlp%?W@(-%Gy;sF1f1L+83bGD~a>FTB|fV zy8&x9sGwr3ziLb_4uwooyoE(JKHW>3){WA2@_2MR^6zHQ{`N)Heu|?cp8DyeT&2SS zyV+!=pZ)DtVm^s1QCmT!;BxpkoGN!eIFH_$+?OtOeJcOJY1{{IW>E#YtQDh^JvFBOnu5cQV3SGw0({Eme>}z`tJzImkJcxrgt< zecmAbezhZlLFjTXmoZSW$px(l8+dTGqg#DVzU{JG&;EA*_QXsjxF`q z|IZQpS}Y=9Aqm|@Oh6^yMgyL13<^>-K&UQPUWy89;*nLu08uRLq(rSE69CI7k0o?+ zoEz=n|9u*Wx*xjSYRpaj@8~IwNy6(V!j-ymoxISL8E+v#no!l1P zmj6rTfrb#Gc$2QtD0~y-|B;ChXa}%*f-&xqs9Xyz0G?Uh%$^C3;7bRqd@qD2^EfJZ z#jP~`+`qR0i35zrU5@jS^GB6iodoEv)5RuF4xpt_xL<4zs|%53~SS60c?W$yb+)LdBvKatz?#jENzC?QDRrC)^IZ^7P0y&;i-U>8Z; zPzZQL!f?<(D**(kZwVve{j9OB4j5XoMJlZS7C?CRecRK77bE;j<#zqJHD1(gON{M3m~Hv62#d?Dx_ z0@2at7(tUCbjXs^CxkarD-!G#4JMQhy%3JJb0uCoSwl2Y6+t3~VCD+aw(ZHmkZPzj zf;@oc%&VEFJYVZeAEYU3Gn>&?|H<7dgLCv)ZF3{_>nx55TKEpVN$O_Ct;%R$s?48V z*Kp0;-?)5U!eL0%@k8*^6a_M_?NMwQ9{qS*UuUHGqueH1 z-SMg6G7~P_WCto5M#rgnM6*`%L@Z!X@`&sl_QB2J%_bVn>MQrFEA{jHslD9U0UFO{ z7b43OZ=p>f!?vaJtY&0@UE>|}4No$8%cf;>Ow6pDhFdeBj}T9m)js;T3yQ-jjSjQa z@P}FcKAHu$yVo^z52)qsPM8ly&v|bzSzo6e~LOXCnZ`~!M_y6(@bLu!*W8x2#< zY`@uMXQ{Mg-sy`UK6;*>hm_H%=x;)g&C#fE8g}n5Hplt-h9CWcJtIe3ev$PuI` z#k-XDNt={6NQYmDk2(jG=v7k%$|SUH(Sz~P)Unh_maEWdqviUO^XWuP+XNRRS9uyW-%$~0-}q@DRoyA$yu9@?i#0SRO75!;W>#S~ZB z=UX+yc}a-rbeEWDZB@&uma0N+XF5Ej&K8@dT=u)^?=@&wyZC;dbtu%y9(}(KP39Ov zwDXEV1Hhw*Ke0)^q!_ZSTcm8T+hV>m8Fkgf5y?$3x}%T><&A{5{R%&@fMA^I{A2_gXIS3)v=BbH4C~KXtxVsK$nAnj&`I*i#{^M#iq7TZC z1KN72c8QfzlW8O5M9Xmot{l(7XeyE9rTdD>qjhDW8;zy+3T5%Ij-o>}F`ON6 zqw$85Ge;x!bIyp7yXWjy&dJpum%DNC`AU(#jf3mVDW>D$d_)r|b9ZASvQ4^tx47i7 zb3`<0n1Hh4DR+_2=MLl^2|TRRVBL2|>*sxqTXQT)8Ui$3#w$atr z9>qOq@Zdp?yiIfSSCvM1H)?6R@ zJkcvj!17M7exmnvZH8%D$JNp$C+C|wThBE5I7S^Z9+=vDNsjo)BLaZobXMyHc^P-7 zp5Ym)?<%E_EK@|^8%%W7Z-&a`CwUHD1_m}BrH&lOcLlU~%y81pS@h~SOsQqEsg}Ok z1eifvNm*CuF-=By0TyxF94h$wk$fsCJKJ@wNg7w+PE0Hl97~e2u(}{+*z&aHP7D!I zIdyY9v0YTIIee)b9j7a_i4sL9VKxIo{KM-&EIBjw`p3m$1AKyyAVE{}Xq6+wmLYWo z-gU$eZZX%z%0(JIn||@c!~RDyW{5~~I_y@No{Hzh680_+uy8wKaK_D+`1{!7*(P&Y z5ATf2blwe)HE;@`Qn5LNT~>_5Gn6$y?Au>-bbHudXoChHAJ(?(sTv$_klJ{+xHkG> zK@%9dUNjH{IL9uU8MI>|_(WSZ4mkRwCb}QZt)kScWFmkU);hC8__GHXp(=9W;vba* zRxOvw&3G$#=zBrw*&A_4xozA+jKxG6r*2-NLvVNBH}2aXKm|9WL?=Z8V0C^%*_YFD zrPQ;!b~&(DPn%q9EkXtezYaw|3xJPu3ujx~6yu)J;qlleOcly63D>MBs9|K-OlwrY zWARg~Bj&3vpK@IE1~Z7K@lqs>rmki6CAreAw}RICm~Drh%M3FtM_s*_=Dhkh&Zp~E z7N*N}FVz;9=keb9GE8J1mbG#AsBvd5+nR3}uiJ+urgd`E?7xgl(>d!B z3r=qWxfYz+2J&u&OhfR3=|*W~wBavW-rFA5j{={JF$H6wr%|Jjag*0^cQ97FbbhG_ z!`9^Cuz!(JjR-n47%mdRu_sz?PBBwxJam`%Y57*_j{)LjuHxH^l>S6V(0qB^*y63; zqn7g2a-Xzhyr2(z$F1_Mn*|<59JR4Kyb6wepr=7Do-+_h6KLhQ|#cn#qT37{t zd4q5~JJc;!bZzOx0mqU$Dh@#SJm$NzLEst<$$a1WSs^=81lt8XPsY>&I@tU#=$r|~ z{&Yf?_&E65#pb+9AySlw(9&wh-KBQFv@06#qqH~ba< zA$q)ZuhvR%?Vwo_EPhh)W_dC*G{o)vEW*XSts{JBb_LITASoZgQLi^}bz10d)SLm< zwH%4@#R{Ks*Wsu8y>mUDjWhJ*=3bK2uzkMV{})>q3dH2Y3LT&N})nve&;UsRlLV%*H=PizhFUrB`vq&I`w6W*}~j z?7YUT58GSlEGqksH@XQY`P*P8S_*;z*~JQ?@lFi&E{yinx}^`x zCKcUfikF@4@H@Ui@PAsj7x-6{R!-aKUMI;5H=N{mf}aE-iB|6>n@4=UB)(gR5&FqT zyp!%$`*j|-%YLR<8O$U7R#uM$lGWEfTkqiI%}h&vtKMoi+Lm{hgcDw-U0<#3MvZE+ zzkcB1@={bYEr76}Uom zu@EG%d*xhEZSnNUG$_lo6C>BJYK3<@48L@W#KpYU8GF$lNJ%0e5TetXu5+tzdbUt# za+Af`6<0C0WD2oiID>Gfle07dhl5&68!mC^A>Pg)4~Y*TU#dw%6W=omf#D~4$0LOF znE@C6uasp3`jLkk`)Vj5R4~{nJK#)f>={nmZXb@{2!&D<=}G`&()QRY-1>8y$2*JbQl}5+elh)Q`>XSrJ0+Ft1Co)}^R^p!M@Qwp z)@?tzO^5vE>X3u7(3$V?W@9*laN+C&%lRZF;uAhgp4|A!j7@GNI({N@igDvi%>4Gr zW6c#f5ANyJUbGBUN6a2Wz%+y`@0l=P+_BFJPL1*6H~3YLMhY2qETx;yj_FAff2{HF z40X&*qaKXGMDewQx>28vJkgdHw~a!gx4D|vhi4AD87~g@=-i1U89hcyIF|GzPg2$? zlTICyade#yw3+()^tn+(5JgV+vFu=T)eMlCKnHwIY^*LGmjfoo*l1O@m*Ff7JC2}A zRW2l`5{o`Ohu$sO3jkH@%3WH?AmQW=a_uW^F|2@nWg>3olIo)WBfMPPk*?+~X_A@) z!B7kSNkjc4z~%Xnly5Yo>R(Bx*ciipT*)Db0G-&+!K!fg}=x zbT|H71Db4*otG;f!+fnNfn?CK>1KWS^IH7{`4jAl8rQcz)U@<0KXi@0CXgxKSZ~w4 zzvj`0;g#glHc@=5bVConAFzxMWZPkB-=?FLu97cA$|%^zmAbuA)j;_%h@!bzJg5>nP@PUVPDfa5#u=cIOEX z*h-x@-%61iJxBc$0_Sn&L9DD1i8|#;bb=-8{8nHo0hmgUBwHjciYhk zMe?Di90FVT9D=VS_!Uv?v2@z=&P=@;l780RKD!8NB$tYLsFB;5jygP(ZhJ|=GuxpB zjfAHuYu@N1?+nraxFC*;{T%d;)tC|IA|I#+`;`Y8=m0|44R^=wf@gcntk13 zf@|*m?yM*?8ALQK3_Wo8J{?B3Fmz!0jGuq49y<{FTK~z=kEw;#I!rih;rTqXT>uEO z{21?z&a9DHu!#4=6Nx^a`H>$%qh zwBPBfIeSV(TMwd1jwKcE%?yQd8S=0!I*g0P+(ysAXc5+gAO$E~q z2aQi|zxF)0&8-@uLTmjLi)e>Y_W6t|;baa=K|{wxN9~%1me8H(GcutT@B)?fhAUn; z?97j1?U^Bkic``UujTw!JmG30963cn81@<>;K8%cgeOl=EsL%TgvVA8WKSCs-*bbB zGjG3-z3n#_e%f;LRafA)h*uP zx zE`WiJ!|U`2o?LTV;`Fm1BZCL245>n=V+OAHR0MZ{$oD7xeoOfm*R=*x8b%&tPGo?t zHxB2iLn<`wQxpI6RTx&c%>kc5#Zgmo|0R34c-!8sOx|gzy)wAP7$p$Y1~jk?r&+eU zCphBMG3=;3C&*6jlPf!~X~D|oX1>gG*&p=d_6@cS=KR5lnX8i>VT#{}uJSqWZ~hf_g}5 zZAlt?Yq}l4KymQ0NQI{}J?crYy*sZos%Znl*}Pdkk+dn7Lgeq0E*p5DeqFBzqZz3< zN+N)M%{FBEQtY5)a+6?kM=uE+hX8pfj*4zFT`tK9D=o&lapO3!3wm|9VB`TrlxSjr zQhV2cA9%viezz^PPxVH&38}b8yxRSK8JH76wPUv#!o1g)qFFs2&!H4jh+rl_aJb^X zn}Y5@6}@?^Ia$6I+SSB&W=}55;nc#+>_OJvDLrUlD zO!T;mjac;E)-jK@qKP{EaDtI^$=8fefVja<6g6A7_CxGmM%cCucNVPf5TkfYdv54; zvd)UVrc-u-U3Jl$oz@Uiclk|yh`T>Xp(?HnYYVHr2b&$WB{Eu^wccDXI!HQegG2O@ zVvXc34PB4uN8B*4rg(&S(d>Dp#he3TDM0 z-YU+qB#JyN07juG3{ec%XR<)syh98DOi@AqBeltC7eAXHgD)l|X)z{JraD>n=6r?| zRv2CJj=|29p6P?TicHpNWaoW9;?*u4-&7QMOCz+-DBGuSFV2IS_g$mFIjM7)l;}^e zaQoS`ql*ek;Fy5UAT3cZF4gN^3(wM(0ZCglfe^vLNBT*Vh{qbT=mwY|J;B z?9}xPRqL17NQZ@A@;M0?367@iNP%ITj)VtJ^O%IT4;vqV#Xj$pE<&KKofzo~mi2r& zClezTO!f)i)0Y8~W53)}$Q5>Fst}`lh>-6&&N|ac9ufh z$<}4|JT>I9S)^p)ASUL2+{C;+jUJOu688ddAfnU|b-$8VNc{zg0cMNrk$Vd!`;?>! zTt!#sJOHY;YTFW3RO9?0yz@2wjVvp*fPiDn*8qJZ_-UIMG`dli9#*l0V`%-obF?o+ zV#h%23t$F0Pv>6S1iKUUBBwaC7Sp>c7U}2-0;I%i{14&Q;PmfB-?Va)Ie)BD#QmXo ziPAc^M?iYuaUFzVp6nq(oOVHmNrQJy(b)Xfw+DV! zhfJHh77h(#!>si|zjaviG#XV||FxVSfVeT+6**zUsJheo5IQYuxdx}`5pp#UO<{J= z>?%CY0-V~Ja{!FdtZUdX05croAaQ#gF!<2hhN1Zjp~Eh_GOh(`QEbU z2?R?+i?-9_Oo`$`pzeYu{Eo#g-lGg&4H}hFKj%dK{`t>d+}C@aAu_49N*dv?MY*gh2vOa2cF?|fnKk$;jH=?4zd_PZa5+9cpYdT z-6R+~1$d@T!nNLYh<)J>RBf-j8i~*K+kbUBe^{$leFYAjS_ye*hT#4*rPO4Fb=qI% zsZN{e#DITMCGf~VsCRu111#bQ2cnD!oO@N3S&0YS^J+I&d~)WM0ZwAyX}e z4rai6V)mmq0WTR|?1{51)vjsw93CErLMq(3TpY8Qu7A2v`3oh2^g^Yzy z6>xcihmxv~#i{bWpY_x38{|GPp0WUv#GTC97C--T9c^yEZMDc`bgq*>Qtae-P5 zoiu46kkCHPsn?mI99EYr{B>3o)temNL3vr`l3e+DjT`J8hpRn{-q#!RT6hM_$A_tT zY|C)NJD0Ua(7K^c-I{)7m;Q-)oFAocU=ds-1n#O8r*HH~F1y-ETjVFQE*~k~9-mS&2C`A#fIvO_7XpV;2TvwhH>nJV^3y|Iwp2nJ|w7=Uq zoXn#s%e+n6;?J(!IXkd!bJ}NP+fVx8=5rbw2zK^!a1NL1#Ql`1b;o+d+!5!UaCnb*I04Z1H2->8)_fuqy4>=IpvztxXNmyUpmahcP1D1+B5> z*K6jv-bP3-z>wzZV5)_0lCnk&rH=uRuw!ebJ%C2SWsn_680$_N1*RS}On-W4fLLfW z;Ojp41B3JRh&&JIkwWpq;3p!gbCA-q-AK69skKuO zd|pO?F7B)~-#xz3qvN#<5Vs^zFTC>t;EK{iw`OBE^Nuycv) zKHqK!lk7XY^^ciNR&bs1PYkBMhS`UcMHC=jCnGsC%&qMm#aH1>2%9#o%*)!{Ss^ry z*V_wtow=!Oy4=yEsM6a*G?cX2p~-@vx~7O*5neb_%A_1|Z*B7Z)ehEy09y!q%0qe%Dy{4dwHuP=Pd$Rj?y z0!ouk00(;>jo&Vr=O=rkvLLl$>v#TE}bX8i7+80|j*YQvF`&^Zj?>7oDna#F-%0ijc{rz5mnHKimA7 z92}`NNiYcO-zNV#-2aa9zlQyP`&`~A>EvJ~P5AQV3ne4r=llD6Rvo5)PHhtJq$KRZ z;=;`Hb6aXEI=kZUy_$fJ00*(J(R|?`=EeP>y20oFcZV?s9SBW7UzMl*lF_%!1XMge zzf9_$MNC3T%c@jU7v!c#QM9ZyCwoB!u|RYdi5Hm4RDkMnAS+GD9gBb zXgQ^@nW`Hjet)a1xA7as;FbF?U)T}d{7)^fOYC^R*;YZYTp!i^s|dzHWZYX!eO zKx3|}0^iUwG_Eld0y<;e%6iTG`g(hF`(rcnKfJbg+?&9Vz}1R2u&EgxUFem#6`o|j zYxLGsgG{P~Ji0G+vyM{bf156=B9O1ktg+X{K}BGwbYb+4@a<1 zX#PG@yF`S`I%hv?9qL(p%hK-himU5RkJ6CJ=DitBLOIa>-bvLcyAusnm31_HLPblx zA#ZQkMfC0bZmT3h|9h>mP^<3tQBRp{&fem=9goYctCMcHg0K_trN2HRy?-_ zhxP6hU($USPa=oBwhUgZ)nN6)Or$D!lYg|eIHB@R{CfxahFP6Lg1T`5@)-AfcV!$J z7TAJX+m(BdGx*EAc0g=9&rK~ia-p$piuq?KQ_Tj%3>e)+?%JO#EUe7eaL}4*cWXOc$9kSWp&*s6}!WCy(v$cin?8S zkRy=)LABLolD~>}cH*IsN=Z{kWP#wObz~l|9S=&s>kSnnd&+&*yZqYBq(a-^0(%4U zSgX;GRgSB|f12iM5MaD;%z)9gtFhOmpYnzKS=Z*UsaaBadx+dP@|k6ycW*yce7&Y! z_%Si$=+bQci7}*g=wI zUJYW1z>^>>7Lr(l-OT%r&XN)j?&JsGV1&%o){4!r(;B>PxVHmLG0r_5NUg?{N6oZ& zZ(uOwHcu}!BwbG35G+g0rqM-Yj>S^LvEPv$I87ddFzV(T?4fmCbPU2UrBhKd#XBED z6*N^uxK>JX`DheFW%gP2xQ_)_%dexnCJT7U;;C7J1M3ZlV%oBh-?&DHmm$U$4}DuA zxVLn|Rrya_>7LvA4gSxzLaz|{Kuwg)j(zj=P>>t&B#oDIk&$BX62+YC3s#|;5Q zrwa-cZZRb?tH^W`_e2xxdnu<}77){=@2B|QOW0BhNSJotkt!+h;-#Y8*3U6U`HG** z@k-CEWAyI8on|HRZGCi4an>>n$%xb|d=t(VdzOo4_VQ{Owa6R2c*w=$Hod0bSxHr- zSum;^_)wf78yT7~e>YJ(@-SskA>5$Sf}f^=NJS*%`*ET}W!P^?>$Zi1RJGbww`yxA z7|4bTsBZgUsEb8#TVqS&B14XIwL|ad>iQBvvP)gvl;`2E$yZii@T-3PP%v+8(s32U z;pT1`!pW4l2tj3A@|KTBQCm3_cvnc45amWZRxcUWja(A7SrFA{#tmm(lSK+@lX8A| zSW$e7#$z|l_eu3;@Pc8izFIZSk+0j2R3}w{A-Zw^xW- z1!mTVHx7>NknH9JgZS+UzkXkOIQ~$$X_pWz>`SV{E%6|l!~cX6z#pIB#G`$E2Fh6m z;f}4k^M=KI`uJUn9r#ucHgWp-L)3|i$Vbntv68&Dx1E|dSY82I+KnLvaVx9XkH^!> zJYTg|J;25@_T7$#yk<8W3I^#NZ$p~65o>*b?NEEG?DN`(=ljRn*HGhk!ltSvX_C&L zI#a4Cr#f688M3KDk!pirw6j?_BP=4K@YZ_+?psa)eo3!xdq(xc2IbBjn`B7PcNA|^ zRG6KGhcy8NhGvvkH0$CzUznFQ#9{8ED2eAOD?LC>!MHkV8w|XG?|$|utm$e}owqOF zqbNSvrafFqo||+~Fk}^$V-EcMfOVuE`7y!b%w#9aUtwyq)zL9Y(u&Lgjfa3rKN&0L zZju{~nfiz|D9{te95v&(SUkZte#1YSw7UY`Wlz@YNUn*ty?3a&rnKs6I6VISSrTiL zwv9=cGH4RF)=UX$jbsCH3Aufl)*W6nYRa_FKtQ1mj*~W7q)dJ@&3H^l!Yz)6;0<03 zs!-lpd{C%i`jv_=x5+VLi_O|`$rm`J$S^30geyOa8R9f$3a{EZWySk5w$BfboG--!?#Rc4 z7WcBI)f}t9Zc}4V@{3kX?X+p1O-E3S=*8N>y6n6ExEoM`7(q6SLEraahBi?Gk83~0 zHFLA5IAx)mIEy(MB3k1u#b#aR>F~2o#cEQK7W*VQQ)t~Y$CG!TL#Ao z1(4>Oqmr!mz~dx+H&ihZx(QO%=$3MLTX3FoTfW2Yt`r3upmgLOw=mGzuGMWY{je_- z^CEI%h;vG5|EHM$`}Yd019MUh{6CCQkqsiDDp%(;vq!)VspuC*GZN5kw1+nkOVY}h zLFwO0B`Sx4w9krzj?(j<f znTF7-a~qh*K?pL?sJe=YS@<{;Xr7_d!MbBUPkxVT>IEjUMuC^G)d&Q zgm@6dFMOjL#Gzui8e)ZQNp<)e9`A-$j`(OC&+U{lGtr0<#Mhy}2vQpvW1Y~kClfi1 zQFJQz_Gtt=1IAqME*T&?(1wMZ^FDu+V#8W_2RGa<{u;Z7+?~%Ip)swW*j!6)THk1! zXqJ3Ms$q6Qc8?I{Eknl01kr?2B=na}97NUW37xg~Ceh;7`)byU45{DNph%-boamRL za+;gZap-2L)E7g;Sj`unO-`Qf951qsf(mi0;K@yoiPoTk%qFdBhrvSFNg=iNemLI7 z#1iZ2ae8`20orS2%R2VHB~mub;~`BgLJ#eESEGgU`P9MtRp;zW%%SZW^j4=8M;1Jf zZdQ#;5K80LXrd*(`<5+>fVOB)5jJme@0=hq1Qp_g9>%;ev@VxyC*&jm6h`i(Br-o+ z_uFvM?}?7R`oUa~8${&Z<3pT=>Jqu{0IDEePP=zGe0!6_Kdu!1gj=BVr6+4vX|7Oz zAzIF)uIUD#Wg85xN0xBWUbbjMqXRP`xfY=1tb^$E368?qEj{u30kr*nwhV7lnN#V)-YA`*3Z*hdU>jregEln8hUfTViDMlQNm3%+iynQ^T=x zQMO@N_UxI`N^-+4dLJghCJxdzl=9xs?1V*foO?tP5uojbMbeM_gkNui;Ik@u8gaU^ zAX~BZ-G_`hiLmFz5_xnCgwhQi*fxb6_-sv&QbE$Tfl|nTjKJ)~1N$8M+uJ_}K*zw| z{dt>KLg!8)#~Xp)@`R87K}~FBfX*0_Z!J(E_VyJNKEEYrTNwd8Rx-3b2q729B?)vhr!@7jQD2 zWVGn6PC437sYN9`aK=E+{q7ar1J#uRpB0+)2~wlvh7M<3>Xu=G6uAAhg;@Zk` z)lm@DY+rEH9F`)Xtwjv43-yWy?Z#3B4VsU$}vL{hjv}2qB)J3;F@pK57d#u z#Pjsfx<3yp#5-={;WQWI>GiERXtcfR2yvJJzHj~?K8)L5$d_%wK~Rj3AlC13<8jq+l?i=#B|-kl#gWujoI7V&g!k;+>D{sXV3)w0 z13p%#N}8&RRf$O20e&4`PA^hkTL;K^q1D5>csAgV&HN`(AU455TYmK`z&3}|h9MQ)o6V)oBlPWCcwsuF@0C&lu_y;qr~6k+d?VGG78p_V0>(m=ydg zmy1XlM)^*-MW-Ff6O00EQj~A7b-ZAT9Jwvgy=J>OEtHxKb8uLweENE%kiE&*hn9%{ zANJldD9&wL8;xVZ-4omi76LSo;O2hQgLud;RM?7rbTuxD#` zK;2V$e{a53%@EuF>ZrMT5jBV*Ysh&1R`9n|{JIFr(G4*tgi#WNwDe#Q=}z?J@fZ-) zlC13Jla>A^p!S=xG2`}`Y<4}}{@a-2Za4vMy;St>Tr|q5ssMGzV;c_GO)Qp_)!<`I zaOPZ+ILc2?>-~dQbHBL%+N!*NZB?efx2nxcuQi~3>jbg_7KxFfeiajghi_BD#K{Sn zTJ%U1xxJR3drgTEbl`j{_QH75L?LlToOOdQ02**?)3`yd-~FRr5zmJ~HoZT~A?Se6 zF4`?3m&E2(ForzxXZV!UdJk7-PJLenx=|$)SLT>Z?{e|VTbNhjunH9qlO#x%`&I#@ zhgS%J@ufxx=$>gHd)+>u^m7q2CpjP_4YCCg?RCdW4hS~3D4E^Nnfp;{rh-q{{ z8ar`XGC(LWo)2`V+}V1ojXz-tDQ&|M@DNx4)U9iUGb5KqtD`UVaFC|t<=}uf7M+Pc zo{hU&f9se-+RN9bx)MLbAyAnCb>j?r^7^9D82AfPX-?zi0ZL`=xZDjJ>B0~UE0p4@ ztc`T(IeIOp362@V4gtCf_T&NbBCz*8CQ$~xkGS?5FaE|H%LMFD!Ft zapB?a0$*Sjso(G2r!Fp$>$W_GmTQ69Xs*OT;Xs%aaXi1;eOeg@yrTvor-~WX4(k-7 z@klt$N&?2T{CniN3&fBoCxfv~yTVewyTr|do>x`Oy9h(xMvVO{Wa)cKw=ofUy&25? zKCWgM9-ioiu`aRd#?u>r;bKg5h%fF&iX;hfo6JK&wcHaUlgX7O5cM6HqYYsTcc~tz z7SB)@kl!w+S*eKF9dsB}O7osw$Og59)d-gCm*T{mf87+nWaVNV`m8QFYe^~3(N*Uu z(%v%CGob@B%PGAW`)keYA;&tOlmbiw5TP=$8f8t; z;jE-PEF;W=ZaUy&lji!NZ%0T6lqAMH6N3hC4Rq-}iSVtS@4q|>p4h(D2T5pcuOA`Z zlYz_O^)AWjdWz`2#|wOmf9@Wg#mW7iAuxC#2|^LO6KA5Qwt8Wq5G9{3mobZ)H7NE7 zz=MC};NLG}@ITNP=aN~8b82~ziZ-Hb_Hn_AJ0Xm@oCz4Br^b-7}UlAjiHMTCyK5~;Dy*`$LKR<)!?^I`cG z(JT6ub*vH*uRgenEs#rB0AiNJcxhZ zmF3@1;4XOV3;&R0exwe=b=|PSS8fP+nral93Ys23AHW5Dn#FP9&Kn+t?1+b!KzI$a z2fj~ssKc!oz^<#G6pubr*io1f^;dANmwmIewIm(lSec#6xu08RQg`M-HjC*{5Ix>Ds44o1zMw|HHGy>WMqpn5Nrt$cM+V0YPDX%>1h`!S%(1OjXp60d!Lhb8s?pl%2WV-4j9fIaSu(do%p+aM z(M%=~Si*Y+NW&GVO*puv^XYD5zL*{Bs5w#^&yW}wuY=bFm?G+9B5u}|+l7js1e@?I zUOi&U))oWpK+Im&20-bEV#^a_-pJ$=F-J4|&wFLYxjRYrckAe(DUS0IhT4|^HVi9= z@#>B)m8C+&xVgK4tY#=*A$8drRC~y6ODGg`^ZK^!aXd2KG3jZ%{h;keI7DS|o=p{7 zHhT{bsFFFd%C{z_wuJ1=yN1S#u+QK6>{_*5p3P-D}rqmbV)H=t)bfc72eX}J27xv zSs8{_lsW3Ep~BJ?ei=p4jve=mBvu)}(kNKq8 z0mN@gA`&ssDqW;ckKXCU@fX1Il^^HcR}=pea&4BbMje$$4zk3@burMA@(i578bb z`S|D&gW+3&)`RGacSRU|{g7Jygv7VFJ!(dH8zJnp-y-Q=a1T`%g20K2Y8gD`>{Ikv zFz(mNP4SXidQgDQ@wyx2C$~#bu#=SWKXPh8eDe);rp4dDva= zP3(q2#_4P*ON_fmCo7YmPDLi*vVc5W&~KHhyBS|O;nm@qCwX_5)ADQC7%DSTs|c6c z)iL}fR%8ANjZa<%M+-PhSvm*DFM37-GC^TSy8`JM7Ixwh7bTL{S_e9M?(4bTX?>HM zI5QkW^Nutq@n&i&B+l$z}9vRaj z8x>cr(fJKp-^K7M2nvNSTas}Zw|ZgI`+mEojEU6QnvR0AUF?4kNxVi^ql?a(S0=bG zer|38RR)9kk3j9~16!)TKJwYqrz7uHx<)%5Gpax{gyUSb+tMA6k1UQ8*iZTp$D0r% z-woFhsl^&L8yB-`z+OP&c%v+a&|jrXHR`<@+}uxN+*k(knggJRM|QShMW)B|zu9qH z9E#nJ9tj2uq{#)uhR_xLa`@Rz{wS%aUwnp{tHH<6(AP+F0E9L1MhQ=+hnH?yk~ego z7Hx?ji@}khX!mE@oBRTrMd9Qy9qztR^H>YX+`5#}E^FnEnt&IfDg-ZI=6zVw>P=rs zN`rZ&3H1#Sf`V*tf5t4-;!D#dg@sTiOXbZT^^-ZT<_Vrvah-Cmo-z^0AFA{o(;H_S zC}QO6IMnEonz8k*)0|6JtcE7VnJ#p?oe9fQ(eK3_{-N0(kPJ}S%2!}n^|UyBmb!EC z3?;^76O$ANlA-&NQBu$dD1Gs2SF?v9iNTh1W>krhX!=W;O%)}&aqW&hy@*iNlq(9E zw&qoGtd&Tx+QgyBDHhpTy7w%aks0BcEq)eTG~ShEw8f^0B`exptq64VyXwJ4!le=$ zqc7O$`WfkWWI$%)%i~dd`sl|}N9;VFvL;&nW2Qhwc2-G45Fo5wpW2*Sa_|UY^L*Y09H1S#@y`9( zMV_kQW2fM|lsOuzf?uT{SGzXiiCbWx-u0EUT2oxJbe*IyGxesJ~xNItN+ z)5>~!pOFmnK0M^;q7VrYKK0g|_W7NeI^&emcuS5WVR2BX;U{(H^<=V)+m0SSy==NC0_|rEw zacUgC5$?e^WPcGVe%RcX{r>!`?1usW_3Lc|vdM9?87z_&qjqIqk&s{A#}Z)I_@PVo z-Ge8*_)%QNK*7lnt#7!WV*T%eqF&;C(HBsu{j2C( zeNdgYxT6(+uoj?Y8ID*HbvL*ge(~Q(4%5{4BdOc@`!~dqdSCxWNB^l$0(`(4;%{=~|I_*C>gtTi%%mnHB2?AXj5p=f0@m~YnqA=g4{x+5PoAilNIaPsA6Jq3 ztd+`_Us|e^UQ}9|&?_%Lada6kKf8PFKtpXS;m!I!jp*-F+91~m0R@3Xo@t(jp5Et~ zFwOtAu7EE$H+uB)eT7F_;-CbSU>{m#ndD(8p zcNL$I?40blTJ5G5rhn}IZ|ets{!x4q{%Yge?-7fIxEW;t5c7WkoSgTexckqcP#8JJ zzq2{n89umq&I$JGl3^{)EzeDT_(dK7T{?}|dUySLo}BI9Sd>-N55-U9FlJ}xST_O= z2+>nQ`B9DP<9>FdqGMocYCkXmQws(!xTi8nbWT9{qQ^=WyW@I#0*9UqzoH`^>%yYI}Y+6c7MjXl_rj zO`Ai$ErYhLeS$!mjPpNfq`zz)ap%{X4`sYo{A_AN5de*s!I*4TM3N=aJbDuX5kOzf zAWGgK{x{0hgC}~iUqcpp3t3n;EW&2FJu8c>{0^KY^GWBLHIc7Z)V`qp_csGDXc7R} zBD16aAG+#4YxggP?(-#bJfhMOmVak}-Mig@2LX2So4S#K2h|ULv;6y%x;+HwJQ4g4 z|A$=s4=e5eQ$F?d5L!nUgPPj8$!v6rSn>?%l>p{@A8FcQ+5+NE=RK*^8rvU!ZP$@5 z?sZgv7vrS6C!Xj3%@e=jN_cU3IXa*X?`(UKK;?bw)7vxPQq=5?;`~xn z)QDwK{hfsn`hp-#pT${z6&`!=ws(*vs||#>raU}+85)k3mBjITwU4#h*}2NbxU}}g zNgZXn-!*fA8E}Ky`}&gx-v?Atl-xNgtg=c<3fz8=H@R-3}ck;JgvXYb-9ao7TKjr zw0AKKCn8F+GtKNyf*5A1KaL0NJHa}0m{=I5Ynm&vgGz-qFy<~>YF>OgJ(I?QRE)AT z99~0H7Op#}qIr)CXeSOcTbpBiZc4XWACG?jvQy2&Tq94>e6$}{l`P!)S0ouuxhLUNv2A0>Z~D{p(5Q zlUyw=K29g~P*pdLN1Abjqxto3f6#uIGt_LUa-dteKMK8p}Z=T=V~8?EPT zD4bm0!)alc+B|)BMz}=&hx)DSf|qDuV8B=(0;H^8!^ckZ9EsEN46QlS{t%aUCz-bX zcq+JJ^n5s|T316;vmKYi`DEg%=p-Y&L{YGbn9{!Ot%x#%H*(uy?+nv_kJ&2^6D2}8 zNl9SeNlsBYZ^O{N-<(L~KCJ)HyzeFGn2ipA0wG^f^p;KV15yVo^;kWwu#iRf`WYS& zYJ&5h=En$~XYYXPGFjeKAqR&z?Y_|uVeKV=Vz30ZR0~TA@;Qyt2RVJ#GDr`~&VG%I zS*&)*GuzC4x;$?56b8-SY~!@-SI%l%WsJ~%7qsshNIP-rE%K>mC=K ztfYK{_z0dwTiU_psAbJ`J9{N~8TYQrSsY8){v2UTJvARHo%ZIdl7O8=k>~y#km?-? zb@uC1W&io{!Q-}?(PE=CZk?vx{;vZt-9uD318%)h7A+e5#Vzg0A4=sY&z(UN z^WJa4qun2KEZ9B0;6YteHz+yrmNkh7dpsv3WS*POaj`84J~!71S`7`)Dsfsc*~+SX zagyw}2I#)~ilpAWylKAX1apwJP0_x$)oxk6MB{aF;2ya6BV-x_L|GENx zlbo*r3Qs6Trixr#3fCggSnkoluMohtgy|<`Zm{URgr1HRbY;r64%{WXnB^4}iMU=$ zUd0_?E}KZ&t1cAizX@KQ)KGI#70g>hn6F~tJ^d2HfcA2qXeK>Wz>B~610!KvgA&ll zPayly=bMI}Zd=Bb+L5uHn%ag40XeR6a$qA9AAewM<~Xm%;Lj)$XQhkc;)3k#QLowP z#&{NifEm5;>3vTDB=@yimXb{^Duc z!!hv8Y9Tva+0vsYb2jsh%R3v&OCvo53wgD2Up1pDBjiH4>l{1FYXAmVAzM!G5smcY zeD;UmvIua;{Aqvf1!{4vOKgnmwRnrW#8N*F%cdzTE}<2$dr_MggTJd|BZ2bliy#X%3qX-4>uYZl zf5I&IN~M~swZd<^E~6fKXvq|esV^_{g0iw71>(DBjjUe& zV#wQIm+Zn`vRQSVLAYIZK(5U82!G0vqrAn{I*5g{#Ft}N>4V;(>8}O6HsEIe}C!vAkyx}P4S8y^;6W>vk z-E>%!qJ)^tZf)h1l;96vYyLA^&ig^87_SAxhwsMcAa8xG?l!{-{S30-qe_rTpyWQ2 z7nh>;(@n@qLLpIwn`+4)yeTf74vLzD4(6U4>RDTWbklm9Z5SVO_L&v4F8xM9s+#PgLofJH5g`@Z(16 z`iM+=pQIEfyzfL*M7BkmdN5xMB>#iI4xePS50>UgD6!9->6UhON6!g?eueW6)s5jg z5p@aIU%A%^Z1@fs#+(N?=8r@CyQF?U)YR(IYYLPZ%n-d$)Msxx8_Dziy9+>03*|zKUwOe0@v0YyuK3B3`>#phg)oy9a~Bp29c`0&nD%L1`tJ#_K5P+jQoQqV`ZC2)voOKt zVKmba5hL!mh3t58Y2(Up<9e($=c9{sTmHrt>b;pySVR#}7qZL`18bfR>0e{V?-Cva z0TTTqPE%3uV1;{Q>8o1p*)&@%AH{!`RfKX}dZMLI@FYh@fFU?{L5S`BBZri7CxI~Y zREwjHnv5~pWF;8|jZdS~>RpzIIRlH6#WRA&OPJ4!<9HdD)8Gk)`?Wd!!o{$nl2A~1 z!=T6lVGH2Oqr@$O#|r5!P9{99HesHSFEz{0vb3YLIlYDtsBQVXA%9wK-(SHk1f&9v(I}|Ak@k;6u2ifgFKvBp zY-zo3ep~LV@Cd(ozjA>MIkw9!sMuq=3cL`tvlrOceu6l`kQ(i1_n4vXuma9vn~&E` z2E}aNL+EN7ZYu1yW*ZsRTi+SjbZKc$9Mva`X4f;<*bEZs(Rk(LeA+A}M`(Y}^j@={ zjc*y7VcxAd-CT_Q{C*P0p4W45<75MVyu1D3uPspwM2Qj!y)qyjedLyc74bZB$sT&H zLg%U6$0BbrP)c8wDhz%3?c=y`10$vaiINegXXfqvN#z151XDOUlFTJ^wuZr()MjW# z=987i(KiBIJlTugEzjlPxd}JD<8MJYH~cnFG5%zoAW8{$H5X+K+Kep}px@<&IcB*N zMU0N}FJ4u9tq1g3SVMaX(^FlbS#fD4+mZsWK^Z~L)QYLxcX{V`mzfLp_&WVvQgnqj zOTSf}-hv-r&^M$ISyvGod-jH!?*}1vBW-$m5Bxcn6Zw5jX&6dd@d7#nNvo`iyh+yA zUW>x`?p;biHaQA!sKRM)T;4MlJzXtB8^zb-+}x+sYwwJN7x zG8$6`+8=S$iyWRYoTmS5f>rNQ-rO#PO{=Gy3YFGlq+fKFSPk9UQX38|wz2yTIXC*K z6Al2igyLXW=Sae`a8;~u?YmvYEn+GqNw%}Q%1_k;aSA9WzYbpRR%8BnPUIct;85^2 z@FR2>Ck2nZZ>$lgxtTq%MYafxS5DcDaeipuPD4ABqhHkFqGXzI}NRS5>DI-7R!F3sMtc+wV` zBh5uhU3ooy`{JTp5+(#%Jn0sk?ljQBQ7(jIN1cu4*i*{ego-N+=PwRLd~dPL@NZqz zW5eeQUikTJmwVf2Vv}Tc>+ZIjk2P4YJ>_%JsC<=nljXe$Kp@l$m%~|c{ZkrRT8d#C zHrh7(6y$O!N~Sew&YlAm&o2?QzGR=rH)J=SYb%&aHZ9S-t#r5i5kD{Rk%Q*F_Q9!s zn46`Y@2bk6Af;Fyn~AnV`bl~q0p8;G7*ENODAmK0nK{nc-q zubf+02DOAOyXJ{rvX~{&M&=EAB;b191`BNBM3Sr54Geb8ZF=d5QK zn&hH4YZVS!rj0xF?n^E{#N2(LjHF-d+UCe>J`iz)kX)t&vcR9LL{W4p-TpQZ>O{%*wl5!*(m;6WqLPq|P|pVkTw| zkfGg#;Qe4`p{=VEUR$oBt7gfj#iC;jYpVIJ-FKp?!duH|8TB3|>=Jr~U0-C*9CM@# zx8kVuTff~7+EcyuB^|O7{JOz!(C9)1E1181{=E2HrjOe7aI&5ys7w3o?xOGY z+5`_xkEzIlE}KfH`o;X?WAhu9tH_KwDuHm1(;WrYJ6ZKbgLX$!oImo~3nJg2fj9HT zoH85lup7syosV7!Zl!&UOVv~WFPsVyt|b=T#4um<>NAd%jT~Cu^qp%RJ4uo6Mm8^H zF!O%VNjp+$z3r#L8nLab$zt0qZMNbL+q7)hxTG%lDqiiJXoW~q5XTN-bj{xuSReoG z)TS#QZ|;4$=(&4;VWbQp!phU)IY5HOKvWe2X;P6j+M(58xuEugUG=kG~)?w zdEBV-%GF#(I#3lbz#XC5wXw1D!Ro*|l(KX8$uViwDcg@H?TI^-Pk@7i2)&oVlh!!P z{rN(^;CDYuBJLQ+$U2=P)Bz5jo%++ZT4u3nYyhbZ2MPc@ECch;mgW?`q+rR1Zprdf zTzsuKTZUo}pIM)K+yW8pdvh~H?In24`_CLXC5%{+)Qva&)wcCnf5PyB(fiIb^0u+( zOQ|Wf=@~Z`2@CPvZg6R3U-9pAjO+7*85=={S9RSImqT3O!pn1SZ+38(4Gx8i6q)V} zaR8!o6Mkap;Q+e!?zedZo`zZ5tFi1B0(P1uL?#4*V8o# zO{)%awEI)_s;p6sxQ;-LPL*LiTzbw|-7Ui<6J96=9a3uC_ z%6a)-H8OT(jlzM$F`BE@E}R-7R@|(Ll+)jEXr!lTDyNw`JeuaRY&t5QxEq}n>q49a zHhVgtIz1|3ofmh7)|}&!)j(U9U(3nKWV>Vd<{^A+Lu6i^?OgH#Ob0VW-Leo1M+G&t zd*5UA0!~i~Q6F#8fvfVD*G-5Y98P_Yg9|^;doEyCrHZExNH(RpiijxMcpM~TPShD0 z->pD1-*StbSJrBe*xmDSWrb2(63ZY*YHWrUpT3)(&qk%6w>iZt~>;f-VG zlYy>%?~RhzWcse!$e{8vug$fUpXyPf!tI8Lh`U+WmRP^4?68H zoM<4=Ht`i*L0UsMJ&nE)c7T$W{)wn%`5TdPRejo*brr$Smml<6%!!*XHN?A0>mwuA z!iF0Bo?%l+^=WfvVYiw$7~{5Sqc~3kv=K01Y%otOKpNpQkAmX1XoM1#w}_{w`c@D1 zzSCTrJ3cfkx(DBUDZyx~k3Q1(i%@XqXnL1u-tNNr>2sn2OsZGnNV(0EsXmIpg<||n z^^a4~LC>_;pLv@$pIxGi&_ce49Oeb4`exZ_dr4^SlAh(dH6EOHTF%8cYZHW{viA*O1g0l~8BxFRrRCRHY`c1&>0`Rg% zE!+znCwkT=R1S0zLc3B}{)Wn}J}xmpbqTg>Z!vO8;&-{$jUXN87O~`+omJYjm@^0)lc^w zK3Dbk*8G>ZiBOAuKO=G%b3<-`3X_ZX4Y()Tfd3neI&JsQR&1`knUP3}3xXxv(+)Y} zk)-E)GO?mjw?{t2o=@*P>H0N5(kYt}4pQA~HG_fUdOnU%9(A*J6}&PBDE;|(F=gA( z^B}@2)ZymNU|(tJaQR$j>9efrKAz3a;5!Y^XAvQJhTe@N6Dikh>;+}`7weDb30oWn zcg(1=+nS9&L9O--`5Q(IEvyo!aRjeIx#*TU`7`eFfN4c+&ih9$9ei-@Th63{#6?7MY5@lHIRCxmjdWV~iX-u;AA##7);RvpJ zxUhND(wx3)-?CNFnm7~aPhMSGkCfV;$iZeeY={!MJEJwOJX01&rUYhR&~22xN(Ghh zgHaYFGFz%gYvf^BWHUh}S^ZLZb5!dpo44r}ua&QkA1mL{cJ89J+%|C*_;t1Dh21m8 z4SmMmIsJOKP%@ET+Ltt)JT<6#m2dP$j6TspZ=?s7*8i#DD&^9+q!GwA)gyQ1%?w<= zo_jUyg;gx{k0a*CCSm0_^C)Th03vT{tV{u^z+p{NdUe zo@SJE9Gv~_l-fpK!l(NqU?R?|Fp;};acr>E-<ui}|DU-)!shbUjG$Z08e$3kb6 z&sE~xikAKe(l2fl-=@(CRTeGp0gbIkOoFSq(i+Fw9B%PEwXgR_2IUNX8{blN zHM+BSF;WV}Hk>ERM3{QHz{YV}GzsZXI$0rt8e2cxwDB~A%NIp<$CsAf+i7WoM;<7- zRR@W?5epp7rhub6l%!lX20;rWRx7Zd3sdX{vW>kIT}Fnp5Ms($97H@oky$1#lWr<- zz%ug|;VTeYJK&WzayVPh?`VtlwXj^kX^EN8 zt>D+crywti9zNo@3lldI@T{!lUfK88TsN&Wr|M5mg0AdwpB-=Wh&Z~C81Nr|;1ii< z@v`$iP}y!@QRgomPujhCYh=-KzXVLx?95gRa`fG3(!nj4qH+X%4PKgRZcsG@il?CgP&`tsh zGYu%z=kC}n<#>mG^79AE`#N_OaBiRQD_=ytuVxOsa(<-zk=OK(Y88i#Kr`1JX)Swy z((70cmn~({(hENy-JLi2O8Jx?Csq7$%^N=Ti7pOjra6El6WQxko+fp=(+KJ|b#le* zhYQb&tcUA6bwTtazCVMyS_N4bIlO4yu-1$ReGT|-=4v_rD0C+ea^&>b06SPUmJ{+Y zM=7hyCQS2F5rcABt(ZOr{ADnOc+8*P1vM=-38Q)b_JwW5NghxOclwArIfZzC$unDu zVK76Ni?dZz(S=Tr)AeBon&p@QsMJ{)Y*(GI?%~zwvMm7(Cokz2NFD6<$XKVV<<94+ zn5`(K9${Ca-|qdqRL_;LZEJOCjVE#S?Hf7!tqp6ru4)$MfCiTZoLA}5e+UW40E#& zFP9u|R{Cx~Exq_N9rC1MZ@Ozd|EgtKLL*O298LzYyGoAR&WDT{=MLC?lNIVhl9z&58$n5GTI-Z_^$yuSpvp||-Hz3p4 z@IwFq_yk#TCAUf~hbj-XI88|M|C|t_YKra(6-1ZFv6UA|Wd(e}V(MVCLwHJt+2r$$ zkH4kxil#Dk737I0vFD;LOf%ijO(s^aY?0r&T?hqv;rAUIU?F2BO4r#BdbKRE8NPq8 zgI8uh`8T$?{)#GfTJct&ATdItEG@Dz+{sUW6{RHXTQ_C_PSfRu8TJuqRJuK{ZtMhP zSj1{28nz0BG-46H+qNt$mfbl^+k#&8;_UUF%5(eK!hyi`5? zh*a;Ag|vhcAm>y#d<<#Hh7sK%YJ)ATw8Udx96NV|+AEa`u>+fKD&>C`HjFkkP9y+E zH~Ljv**)!3BQ|7j$2Y&#w*WD6UiDEJg+dNL@)~>Xvu&=CNPSCBJFUC*p{iMHag61_ z#%}*Qa~PRWT}hzb2NkBLK|!x4>8`v%QZ;XexWtRS>CdM?r%19krO(XC^N03cSJ#YNPMS&{qPvW7(9k$~td(2PJ=0H0pGiM*ueslE0^PG(f zvW>&)*N`V))atGfZfUE>Gl^6=294^e#`!(QDXdDf~@<#OC+HY*g1A0dh(7fI*@IWyHnC($pLTH9jzs+5ZUC{TZ`mA zDq~MbyQ(K3jcxn^Pg_i!iL&m_Fz$wzMb%O!Iu23Je}t8iE6?$7j2gRMPv%B+tX>vR zb3dK%r8fA$Z>nmH0!ZIc3V89Rdu~g{#mCBmTmKju27Smlzxp;uU28Dg=DR+o4fnPD zKdv#XJ-@O`8`i&`xcbGfXv2b7na6}f98bESyrIbDbwHonR6QIvud5<0@8cU(1HJ0p&*dJh z*9VV`)7!o(vFBch)=1cjGSSP`JIlSf+`?4i5uGDli{}a+{Lvx~&WjP&t%|~b-_z8z z9y4wAsAs-Oh<~Wo22fkE60#R!C&?Z$07H3?Yu-J!@Jb}n)7FqshQcM>g(II$-b;K2M>SEDhFvQ6Wt)9pIY9&pW(<>hMmiO zVl^`k#)O)vz7r7Ua^x^I8$XUN@GWijz*6e?SYBb}r=F2cDGdSOr40(X3?C{Yr z*}5h^Wb;LemyVrYBe%bcbx*C$RP~>GQo5pWK6SeNA=3mbv7K>k_Fq~6neS!h_}6Cm z#Miqh`Rh@>N4e66n`W3KbLzq*L|vw!wg#~#b3`z_&o{mJ7!$xW<6~3D%G`pcj*cWT z)0r1vctPLXk!??z;dtL2Tcd^lkUW_8{PDVbRU-p6+i^ex&=ue+IPF^y z&y>E;&x`gw8YaPx-1Rz-owC>qnyB&EtH&WDk^HAnfSe72_ z;R}V7uDfVy#2=`&+7S;`SFO}K!$;FJBhEii3wsGtimXaFGvh5A{Bp#d zvbQ$yvEcB&tTmplxkyQE-2HwK@A#b5^EKw0z!%BY^<(7be7~ZGrlGKsxL#y(j^z^?%_*TQS&1(>WLc>&HY7IJ9=>}=hgPgb zOrYxFP8xW1rT)nC!!wD1q6;^KQDdam`kdz@#LBBbA1Scj8>-6#s5et;=hBz6N9P*> zx&@~6K>22XjN^JfqFD>yudl@-|Ix zX{#Cf)AA4T3f((ed+RSTTX@|}C_0_cG}V_ue8;XCdR-!E0xy1nZOyn6r+Grm%Ro34>`vq5eeJb5JI6Q{rMiIR4|~I`&0w0#jd6<`S950KGb($q zqD{WJgZ=()k9S>-=&;es?BP)Ld-zC|hlSw4)$bM_Wjzi@RJa@bW!yAvXe`>~D8qh| z%$#ob26}F;p(;z|8N{ySkHP|GS556f#15Hqt)XXPXqCsG?~Mg@<1Lll6O?FJSf*gR z8yvcV$^(SxR*^tvU18+jJx$^VD#@kfVtk+c4yF8#Hiw0}AgC{}iKdQYYwI-G2LG(( zPhIIui>F}90VS6SLAvWDy`q@+)ykCHezT_Hq*W2R4=Dd6B#W`Az|W**K1fYE)#a`T z)UfsRbY+n23>Q<0L>2;WjBE3!wMn(wu{7U0dwQ}~;hG+V$FGf)Bid5$GVC^lKkPNO z5_-ug(|rocAhX!N6lj{<)bZ?$@L{O^8_7q4_C7Anp>^)9b4 zl)%TQ$B-f=ryIa!ayhW1Hk=^aCZpg>{MuylP(orcm z;wo>5y4Rm{4)UVdl_^*`@p-yJzWA}_bh}L_)>`LfP#k%CeR_leSGYv1m%wc2HgG}w zWhOpna8D83AvnZr82cLGoI$G-%2yw+`)clay$;gEjK#Ym=Qjq!L<+4J=5fsCwl$!{ zf%CyyEpv3=)ZP8WM(>$!^KTbIcS+bquba^!GIT@R)dKJkHBR!VkTAQXA02V^Hv0Ul z!{kFZitaP?>jO1wO22QN(1vh9)(U>x&toY)(fhX6y6&=RmC0lP;#Apzfu!h=OFu6a z$)+@8I!`!*;!dBVucHFAAOyv&Q`90&)?JuTr|EaT<$&P{ki#%WOK3Bu@ujuVJ_6LD zD$@e5X4ke($dw6Afi?oxpo%Erqqujx)*2v5SG24bpBYVWhxE7FwG)$zW)p61ytk6Z zf`+rY&eSRKVOSRn`mKWMHsVnD1kOres+oNMvxDz^3vnw5zavy;MIWuonWDNEew0A>RBaESzpJZOe zJEBP0y3?ChoYzJ+r$!Kxj?E=DHxYXEGhn%wE+1@!d7N7VdI-%QsD$Rio;nb={)gax7a6T|<{n2L}4Gq%#`9*!GAwuGTxnw9CbwV41ZU zg*nw9P0jn$#9%WAI0+UC$ApKFy!@w<2OjFxVsaY9$v#FFV;%j<-j)bbw|beRLf63 zRG%=3u1I!D+RnZ4>Q!|b&+00;)K{+=mbVk$IV=B(3N%9B0gccTZituv2+n@H3HmD3 z=Gyx0W5Y0yk_Z?UNg-|LgJdb0tAkacguN(3;3sh(z7o6*iQNo_x8%Ur?^Z{i8h9U` zjyFn+I`@a!ffSjA$g^ER+yT9SAG#vEC%e`H;v#=5=}y}Lth9apS~6nvN9+tZzr<0g znpV(`R+iYvYl?HG;8#XrHf?`(R=xwYZdbg6{-vUOMh@hKR|6%mK)<(PXird{j(xrL zk55l8U`}eS?UeWkWRBGLnIi(|qyJl3w+s%X`wMoqd>jP-klbe@05nJHMe8?zjQ=f_I4lMX00ZVh`>)4=QT>D6r0xBH1xBQ3T*;U~NO6SJ3|7`_<)pWzSw@%k=fJqn&7KmVo%oLk*wax>W zvcvoR&sm^Mkkx(RtulWw-Qly1wT;m+PEonFHB&O?|CD{+q`#L%H3JmpbAlqWuKhrA zvJ2~PnYdbn416zqH8zjaj9Rncch@snSg-%99o>KbT6+&nxiJdH9N3`uRVU6%2*-Mk zZ9B7WE+{XW7Yd%;3sn8r&)dd({pt`OU%VFLbnmB_q_4s!?eygBybda)LjO}$+5_mT zv0SYeMT2|VdMCBD(*XVRWYjPIT_e?;@O}f8?{fmMVDs`}{8o5|&z93jWF^yao%%I`l%ad|%qli86#C>V@w;5NBtX$|d% zUtL=%t0*c){NMiuSFPPg)rZXom+BfSNziDj{}|5Oo%<>5uBOF+TLe=mN-GH`^!Cba zwc3fauXynA#`yo6+$_+NB7FY>GcFoSLiX1Lcy@NCru5C1`(bf04T`jU|2{VlzD@qM zz;@CEEyhxj5FRB#ZPPCa7asgJ2GD4d|HF6yWrB(Bx*Rlk7J!~!K#a0co3FOWt6Xka zBC0<8hamZE(7kIKq?ART?FfJ65ZGWjIzG+;w|XQdl;~wg6a42tn7cQD?gqeg<%b$m zo}Ez^Z<1ht=h5h-_uOn@+;^(MnEP+7J-~MT#fnOj0`&9TxAJJFPC~8qH!`sKvrDhupH25eI)R)35#0?wj#REmf&r?nWC*3;IGw)XvV}0(rTa z7-_<_2@X!^`B%WDuZS1SVf@T)a~4i~R`&P_FD@$TLC$o*tHPp^oRjhF&-!}_B=0^h zeTz%i6bp1W9jIA}K!Le}>5N3Pcf&sw78f7F7_t>9zkUUoWqo`Y*ACC}!#bn1+&$a8 z#I)R{n4aRg4+l+Pz(Ah??QG!v=AY7PoS|UF9|s4hK0Rl7X-(F0igWMoighF=CfsHw zk;q?hfxlLb%~U^S`tR0g#SxBZL(^>mZQK$H2PaX%;~3TL7^-`St|xm^)BU!6i-2TP z9(&;kKQEu4p)hDK1x-Q017SM*Tdrx-7qWu!gg7lpE( zsL9BD!$G#%4c71O?HQcO;Vcg#5_f@XL3a1&7LqRvFAO6fJr7z)vD+wrod?zyswao2 z=+z%E*%-KTpd z-P(Bh!nx7ISG!O(YLQgMNM{D6wX)yhZ6U}gU8?h^Ct|i&k!Yu!KW4L0c5bWxkR)s` z`KEi&SoQOHq0xBa)9-WhW!w*D@x-&}fek&5?h zh0kd}*Qd`Qc!Nc?XmD+7c#-vFZL_r^S|jAcQ{M_3(uS_mK@4A!KPSzmW`E}Px6q$^ zfy~=O)dSFqRB!e1k}e&Ik4}0!L&dH#K&5hP@MkU9+aePV4%*bYw%P~;wurZ%Tw>pb zmL1^(_@n{N=C8#*rzIy)XD3~3Ef@tn^R$556ZRw+IXqBDK-Ss25rEWaPL!K*XB(w` z@))@t9Wy96gN9u1{a?&|^;=y}lPB)M-2=hhU4v_IcXtbZad!yr4#C~w;%>p+Ex5bw z{l2sB?9A@`0sGT=?s@ulSJ$bo`czeSb#m0~T+?1WnAhtgzL?;qVB_6%NTbm>el|L5 zd7BCZ%#~{?J4tLaabraTIDp9eqKa4Yswls}Q6-1nHs~U#%cGvv+=~yCs&KmU;`O|1 zzcBff#cE)?dS?=l+|#e3xXJ_D@xyx3mVN8B1K)DyU7cCw-xKw2z;RXRrhd)d{+AKmaqnp_Zd#E43t(++Tq5RjT#K^(?7-+xXVo0uPrsS$w&ym|#ZDsZJcu@jO;6--Zui0(ZK537u+Fjr8fY<(f z1|U`QANQqu$h-5R#ARWQEb?gSU#KOHslyc?+{Vowa-`fS%Cy>vWMHB0Gw9ws+9vGw z-aSahsn8}m#CW(T+bYn{&0T7tVHi0+9GLCG(#}9DCB#sn@lnY54Djqm#!dl@P*Z!D&%5d0dH+k9V@f*;IG1o9_ zjgTj5ONc$|E_wZ1az6G)g-OFGwUL1RBhi&JuK$)sn-(Qx|8@^P23BuRvw9q7mxiVH z;U4Djni3^WHz{dkI_mOEO58BnjS4;nb+!Q3cX+48cR0qL1&iI$I@=uE=Vof#>jiQh z{wN4&$ids-;@!JCf?d6FneC`o24z;1gB^G9Zz`la?R|dDaQnh37^r6qmCM(*R=uwp z(Yf*-JHqV)_9sejx@Uv#CbK7dr&eEy-=q}U$#?s!+*(_Er?*r9xir#N*jrV$*jo;a zz_6kLzO&G>i+=g0KVg{tTq#=`wml6Z1`rj>>M84OF3RAPoQO>5BbUw!Xe96sksa=r zEBp*OlA66>v;#gfKGkl=y8L<_8B&it5BhqJ27>FKMYU%FPi;w2NEWAB=-E7IPLsd#|kE>R?}pUN%K&Ee(J()9TH#8nvs{N=oc$;Yny z@Gme%Moz8U_Jdxz8qw$P?^=Q)n7C)+EK7;UXQQ~lTz0L&PE|;Qkp|5&R0KN0o+aDbfnjUoHXb{`EEcYD<)B>A;*qa&uUzg&w3UIrNXI+|glVQNw2J#)bUxXOU;4UD5h} zh6F)n>g$s#-`;jTXVsx3G=)0g$n;MJN(gQwi3I~8@3rn`yxRLz4&yedN%y< zE@7n2keKuQk{xw8$KBi$@#AIWEdSQ&<${@VhU3myNwwo$4@U-vXXc?;p^y%~Ox@s4 z>2b%PX};6=EOuCpfp4I1X4lrPfH1U1uJlnVt;+3#8N*a@*g8T_=aK*Lps6k~lK<_- z(OQ{);;uba%hzipOp*@u()3{w%#;Hsztr~CZ(bY4t=V^@QuxunG(IB-rj@Ft-tbGe5Pp)9 zcl!N!Xzc*|BQVom>476MUrHarrD8R+{#_k`XP!ohGWe=XSfq%4rV{S;;kHVBy2z~b zX8!tFrqN`NC-V20X?A6&=*s;P^lJMK(mnCA6g6k9-RUaZ-CpB{W)t-f=B_sdhVma2 z6UKZ=elFcBlphIF5OKN z&UpZoU9IDL=bF_(4PoLipxcnedTK3TVK7~AMDMW-h%L~aeIE3ODySkKK2e$$anm*a zgdxLbgM|8&W(oWXM&7npCgbPJ{<)d@be(xn!F-_uQDj$+7^G*n`e?6A7W`Ht&inY1 zNz0#rja8H2m*vf%w2|noVWLdNKaVOc74ACki)`4VJfa9em+l5H{pB$k_fbl5zD*$o z$8#tjjjIO!uW3imJ`DY18m`jDKR)~CiTGh#3pOcy$%D%!b9uAAlJ*!2h4%s90R(hA zjWIl6<8!`T2|3884Zo841NhZ7>YmK=tO~lk_C2~l4Myj+0CNw%uE8Z=^kE1ke4JypnD_hLm^+tLBJ&V~3 zZZ5~Jk_`ZgV5VZqVyGjbUN?^2%946O$8$OFiYsTL0GLHx1jYsxu1 z&nV`Xs}xc>`cke{5YRe>p@A~nMo=1}M$1l`MT=FfKvhjtlH2TS=cG#nbDJL!GSCc` zYgn#c$ymJAEt?rv)BHPiAfF=3~ec=G$fxQzv2Z zx8b=HgI8;Pb9KnA&X6dT571Sl(^XB^_S*Q_t9AM|sj_QXPOh6R@94>U(k~a2ILpQf za>brK5x;eXb%!Tt)&}<#^f4(T!25M6`04bp660>zVLD7G^7cG!c?M~ zW`EQjYf+4ZVGXsq`;;S+MpBlAKpWCZF=gTFjSC#=?ib>;>>L~`Pt|VB=+x}&Ve?QI z*A%x5%)}8Os?PoECdB}RY4nOj9SSo_5lLYjofNnusTHdJq4!!M8qXd&gKFD|r?aI7 z&Dh#zO`<)EJO>ZMx%9mlOBuF$ozmo+I%aeA?+Z+NAru!QTN*2~nIrym=~cHt)k6KR z;F`P7k7?jGRh7r+PsX#kxg2NS&AO(t4)i*d?`3X<=nz*y?=BA-DesMR(@>A5 zl@ueNTK8ZJp9MMw>yE83@ed_k@l#PRjtrM`_yIwK4GBG5$yHESsy)ur%~7^((xtR- z8<=LNEW*%2~)3^^4QpErx zaMgfUY#{{}Xvf1Th(BxYj^x+xnM2Vp=i@KtF4pRr3}NDx|ac8 z;8SSsU}4=2N(kGWBhw^33VJf$pa0xrPpqIn736oVG1hSn=v{P2B8q=K$>n$cu9;52 z&OifpC0WB%SL;kJ{>Pg<1Fi>2Vxw#Qi1MaGyGV?UaOC`~;9ts$0q89Xg}aT%(<TA#03=6P-c1_!(c;x$2AbQj zu@02}R6{R?umyu1untLq;*e#|RibyVl|GGD_jnbE1Au~8zNSI+rMuhn%elLEBk zdwlyrZ7@I^1~Mj!t877EI@e2;s0+s}q?!be2X&erVf@HxD-*7{d>@V0TrQERi!SSH z7k#SgK`@|toY+?A83Mp)<^Jxj=nnw;_n8SA*(93&i2T~(Ok|Vn1XF?_jhS5)&dGgI zIT8#ApcH6j3YIPxonlkbC*->HA3hY5r+#ueJU${6De?joa@smAuYo*`*UJdEK*O!h z`3evi-@_55dzdcdki<@ZG!lm}sQm1-!#@{j!Kx^jr`ZT@Uj!sy)W6F}gf>y3H9 z@GRdDs5c_4jLl>&^t4!?mX_JK5HE^0*HKWg;Mt#V@!71Jz{?8P7-xTDT)U1y{9j?>Ft>AQ2PCde%yap~TW zCD6!by&T@h#W0G#?O#Fgi!q~)qMH_L{+jBAr$zzRTVzSt0g%<;^-pVgS;Dypw8X&H zY`PK48J{V3%%sDXdwmqs65wj>LCKyM)#T~My~iOslun>Wf7<2JJ-;H7=Cb!dxifAv zzNuVV{k3o${cYQ6XqPU+^XhzuKov(*b0a&j%&6hl-FhYml*nc@yv|=-o#bR_8D7oF zd$VI(l`&f$`&W4lSwq8*IGqKPRZJ;~YePUQ) z&pw^c2{SjnjCF`ncRr;*vhdwTksVUjWja$6nU1Nq&#Z7OAIgCPlKr*z;0&&T|7QS3 z24Za`%z`Be2qrBScat=8X9G}bmA-_>hn{<;@brAZ*3j2G&$uCcAd| z!~^uN6w=uz(4|DmX2ZH|?%JL;h{IJhIAnbgmFs@LekwVS1PHg zTV>L&nMsCMfQ;UTCQ*ocqi0wiZQQVMF;zNY3X*ZEKITPw9)+kQVoaaTcD)0KE|Ubh zo)*Bt4|Q`6bKksI_M%4wQK1@oM+V6e=|GB04w_Aq{ly+zj(%arF5A^c-98j4P(APkd zj!DdIx4s*2ThFO@jetDSJEPOOf{Uw=E^gwbRjk$Z_?To#w5MJ5=7x&fw!#!_Yl0Tb z%`DJTvo!ret5pSj2BcRNZ7Ae3xLBB~Gsr&5ZoeKGyDhxUpd%THB3C^y#J&zd4Xb

A?ZBmAX7o$ADtqY(CZwD3}_a8+l~tV%hf9=+Z}fiE0`Unyz&N)%I{0JFkW?DEcc* z|CN#=E$c6Xnhj0~*Xt6-;*dzzuBgK7Ju%a%w7h_BmxQ0?^SRV^RBN}0K&rO9|0c;w zFtLdpmu`+N8@POo= z!a2m`GV$ShY{SAy6}0(_^hj*_M=-)Jyk*fk&c9W~83>$N7)Sbomv9Up2l3pcFS&*O zKOQD!YOC#4PFtXWSKD~EGx$-owdTh4ahjKCm(}xks{WuTi@z(fqbs`W3tqM%*w?Y*r zVL#Kz)~mZ$m~&zccq}(Bk9Xuv+99|PiWsOg=6?CO(8MtG$0mV9yKlF{@sLe@EM($> zuOh&~{KyX%B*Yb1T#=f~31=Bm5KAhSElrVGx@NAt&p&yudwjXH`m#8lGI)QixdJj;^JAMM8ffD|t=5tkgRz>-hlgDq*8C9Y0ikkTH-tY_WDkRfOUj2$&d9jMy z$UHvTe;6;Srm-N<)OKi~%3QXSd}&uoPm>MS&tBQNbIT{+Ui2$ZT`07#W_NN%DdDTU z4%%92ndA)MSO!Tyt z=3w*R;m_QV3b+QMFIK!}PLj~K$$y%L6J3RV*xofZw=1jm2J&C5A@`~2e_7vl1-pdQ ziInvW$Tp~?k9|bBGjG`;6%h{O*7bn=-Bq;DGFJRH#6}RcuX!dHUDH^y*SY0F&$M2X zuQ^#M6^GHfeYt7vwY0FMd0LIeIVVmNaOp5%Q*XZ_-BAj4HK@t_?5FqJ+XnJ!6-(Wm zuYvALZPOjux8GW$MpAE8u>blu&tJcZzn!`1*(9N}2_g=VFx{|B7bPT|iZedaJ{ez% zjh|&~+F1+HS}EerIb|EUTqofWjp^Y5sUPo%RYKPCy3Bd!9%Iui9YVGlaR9R=O@zGZj#Mk0%ym(USXWodb01~^PKnGg=IF*WEktU7=h&?Uq}0Zm{k zOKwZ)rAf9qL7Z{hB^~fzafbB$)1z@7NPUUGSZacImj|Xxdz;mF;KaPHln##%UDp%t z$~TEL8gA1JeIjng^_GaOQtMi-S9`|6#1I(1hW~V^OxGfMUl-nFztC36!>G|k(rv`@ zV^~{eyTfwoD^Sp8TwGq* zM9?_(5#8*jePcK3CwUroZ=_8{5A-J=C2FF$Ho&O(^8V~H1B077HP7^ACn~!!+hq4V zdBWepG)6S=Zd{+>#D}B-8r|ug8vTkJ62S88d-~l`Ilk7=z|dyLDz;y!Sx9?epltf| z#KFp^ujTq<9MP3)>H1l!c{8QK*-V|2bSq!n<=NY;*$bqhQ)@Zg@N~?SibSR0Lo*v` zA&KnA?{n#;r-Az42g=qUu5UI8@uGCWfuzUyJwDu;14_*L z*}G5Aa}#)Ais)~Pv>4{D>=;v4=Nk5NWVtF32CgHKH=1pXCV&p0a)|HSET*}oCZPBy zq3#Ece+{N|n7X1;5O2)!ONgL&wskY;xp$URCMh?3PJqfYmYnHv+ujo~0o0TKpcFZAA4W`C*OGlfz>}E~BhM}(*oCIq&zNWwp)ZD=i(0$W^yLNi~HK2fj=kp z#D6_mvGlC*!Ak8KCN$hn?ShVLRWy2l6ssyShmApOdncyVwNGI5*~(IdmS(`gBQyj% zs>upnnOsJ*$(-jTEl4I&3%{6`7-D)yPis?w@Q)I7IGs=Y4KHCEC>2s&eR>?U{mf?G zF5SzU^-NZ+Tdz*-FAKh?gsCHAf~p>4J`Euxq$t0nQ{|mt67j1CVUJjt1b0%B_1b72 z`t)?hTGsw_sOLO_(~Q-X!OfK38Tx6roiuatOkSzM*9dXZ6*a=n6oNTAY>ZuZ+a0V7 z9|5kfV9Mg^M|e!R-(R*X2HGfeP?D|?3J9koCoO|6kJqC?qXfJ7Dcge+tRZC;d^7s{ z@%Vx0y*davd_KSYoF_!7(3#;_YFfEj@%j0d#R@fAYW>Tkj1FHwduri_toSd%mnf<-?oI@?OfNwBw1 zaWwr`U2_>2WfXY}tLTQ)?0W(}wY~u8*zM&>TW58Yf1z7`Ty1()SV(t)P=aw!U`1-X z|2I?2j+lJvD$NrwM?6Run+0C+-;8XIfnV^&>0nfRD%rZta>R;S{h`Gj!1pM_t(ccl zOqcd2bSn%zDtH$hv}NMURpFP#44iT=kdCp<~;oJLTz^K)Tv~?Q<`|!q4ZYqTDMUJH#OEwB8`w zpX@fe9}2!XF?&r^HsgC(Bu}ry+rq|_xval8a2P$y7UzQ;;>3E+|9m zq~(g-LY6?qRdUGvQOCNZh1}4?$n-X#&CM2dSiMnfwE%j@K}k!8BR;foF0OitBv3f^ zR{~(vE0Lwi`3zDx&`~w&0q8en7iv%yPnwh|^E!fN5LEH!UsKtXU!-OSsAI)R$`bIY z8{CRr@$d8I=f|Wk{%R)ST~)0O41mQwc~aZM1zK`&tn9OxfEg5v5ovxhfp3MgVjV9WZK2QNv0jij2d6bs zB8QKktDV*zG|EnD{Po(!!tc2IzHu%zE%!$XvGM&5=EbKJew!8r`3t=iNfRCw=aj_g6F8*oo>w%`#A$zSW#8TUICpYi7~OxzC!;UdFl~dgRC8 z)2cOwy;{%{zA&$=31%fh8%8b2aN5MHhmKS`;KQmT43`Ld|a4C9qr$DdKo_)M(pUTgo; zDT@M&*|MyOwfbhM8#?bE9LCTQ9s2Q5tkUDl>_ygo-`Wu04;25W?FI1+gmB<@{D?-m zW_qBdMGt{&WscBhHw_^ETj5`&YWsXea(ssf zS9Y&I#jVHfZ@l!ho2ud0wr3!UAx4gE56IPs=}eS}CXEo zz6jHC@rz#8V78YfWAJ{@ZvS%Na6B1gN8(u7X_~FE==77mua)bkGa}jzsVKkd9ck4H zUD103mM4-cQl+ehga55><(YDOJh>X~%?E8iM$%*aN;^1!E%68T#Xr)jVAnpg*MvVi z3FZ4tg*+x&cH+Rx-^%Rs#~PC)KGEDh%QB&UM4wK6tR=r$Ehk?GX<35VGkLX-*5!?o z_4ejUyo+9Nxe^Q*PD8w678=g*;dO4wOJpZ~&Ugv!85;I8i_91KsSCEWo25;B?EONw z+4K+I#I{OQLYr|F&Tr#voPpzdgeNaA=pRR1@)rpee%^7$)x=Im=Lw}PB%UwN#}0|! z=Q?!{RP8SWF4ZM`{+F^2OL<;|biwm1xPW_XGdcU*qr*8O%IJEHZzG~aRcTFAOll>E z=i@iQ%qdi%FC2ear;9UMrF|HtYI(_r4Tzdk?DbtjUGy*1xvXxvD4qIC8`0MY^~#c?Xvr6Mr#FC1{50s*JwFqWinD%e)ydj0fcw`uZP*zSTD zU5Qg@294N{`Gfn2bS9rlltcR77$WJR5}U&{S;VFSrSLPf;aX4xv}1+}HBRr5#mbCH zxeGsh)eYO4U;%zc2ZJ!`#?*+)=Z3qHn!>fb7Um1n*4t4YO;juAN^}-%>s?z%qZE%m(8g@g*k~#3JP#(DNt~xt)M&qC>0#B4H+3D7YGBh)r=<^Mk zB;^Fhm=zelsdTnM0CpfgE*#A-%`3Q;jqQpnl?*CgTB2b;f6bYHO|>)^AM&-XV_V}} z)Y?9kAt~x4mb}Cmrp4R1CJ+m~?0SP$cf|ok!1kNCdnzXlDxAgkOn=?4V5>AVdPLrN zy~XmN8%&es`eS_!-$IE+M>Bio1d>2Bv{!=}MXB2|VuPN^UH=uz6H zdnE-(`WU1!VUE@7mFWf=18^H+Du$W0rWa?yfX&}-!I~|owqNB+agP5+eE<1(8GP~0 zRL%QpE9xt<@Cgafk_3L=Vy1|?FH!RPdu<`1IH4QyDJYKSge$fwE zYvu`CI7iSTIN|N6e$1AeI!V9GSFT5F$j5q%bhcQ850g+|eGlLI>Db)bJge**K2$5; z5}};SU2m7)c{iZygKn@3sdyC)Z5;EsP1L~+*f&p}L6orwNQ@8QK79dZR8Fj=bTq0~~o! z!_Z8;oW`F56Qs6HZE8=(q)92m(ny19$5V>+*vp?%7kV`6XN;8v zvhd;##8$()>Gmn1t#Bi;uLcKP##h-6P4><9+K@B;h_;5Vx+J(^J{9;J1LJ(RORYMp zj7^L@BP-GD-852`z6HQ5=K=)G8&F9{t2-rHEboEk8CU1+%m3cyVyk!(2Sjh9L%42S444^E_ z*t!w-lL}U|3pMUUrPKTu}E+{Tf_Y<`R z0_W0WN<6wXq;((n#V)LAt@$R0NDGDLM@oi}T|Fb!kY0gJ>IbDmilSzn_0Pi*T3VHr zpI@}#0f@=J#qZaUahwCkU3TRYz4zJ*ZT>EAKF6*rH2*$D-aef^%O_v9Lrfe}jcw@w ze9hTNm5;2(%F@9&8*PpRRbTS8>^7+`g>wk^fPojf5mVO!nGxQ?PH2c_1h1&ri*6a; ztXh3^^)iuMe*JclfHb%u^RpOCT2=P=v05wyFet+-6*rRTxVmCeXTm3$Q#{JDG{R$s zG_d|JQ~l&P!$QXvCeWu>-bf!>HPo|*XIq{LRJ@NN#SBS%MV#-R%KiqRC32AnW}KEq zelNp~VJxl+k7H-8wV>-sX$UTXPpWlAIHpD`EENFsOD$ew(RE-lU>^(>)nf6FFxk$@ z`FV;=wCbWY;Hhr7OXo-VBonP@9_5&KCFqY6sP2SmDy`wr81jgTF$(5;DctOOx#`o( zs~sd=YzuCHnnB_8Lg!$h2;8J5#<)}(EQc0TkViF$dG&}1&sEo_qaV%Ik5;uW7&!?E zF2?X@NWaue+0bE(bQ#~8VsvTXyIFRSYjaBIenlNdyC9fkPL|D?7E-0#7?%DML6B1k9a3tH$3^Iq#I1%@&R%U3IfH0Lik>H zd^D!Z^{#kOrzqc6^}_p2KOOgO{LkmIivW9^`t1&uFj2ZGUckjR|Ri*!`u* ztkKI6>;7QoTv#g#PG1VxT~T=dnJAB5>zn}no1|l*&|mi)zr$wB%mF;fA^l2G`iY$L zMkwCS)w`+uO3L5+QOj45YtP}f0qI+Cm@o@01f`kNf1tPN%LyM|NC0SmiDMNjJ=i7N zX6|?vaRoD-;kaZdJZi|D@OI1(oOCZZBc>oP#s;v$llEp`p_OKO*K_@qPJ&IbE81Dw zy=4Xher!h+U~lx!k4{e~H%R`^9zzGG5i`mGQS&hNi`1mSl{z>(sUerjy|wOvtzUp6 zH(P$HC+bFe;H)zNNv51d?C=d=j#Mu{3-?UdoI|Kj(zs5G?%=rwT*~<%*fHvu+UOjyPTmoLg(1F*;AIVNTN5@eP$El z!V0gxF&k56J}Qwk%tZ3sAj>TCvkyxon!>mB*x)#_s!Y2u=PYCItF~N6q9_##eM#ag zjuL3Y*g$h7SuJL*JPE#D3vSlcK`wp#oj-tS{7Z*sNTA)iDw9lHa^9hG9& zLW(h@ca@S@oQ;D{NE)Z4%D`k*q};~;yn%tiv`dSLsQUW3@Iq8AQ^VIALPNI=R#bAp zkW(VS^!uza&7Lv2Ter*g)4o4pP(XzcPZ-CV`5e^q9y$7CP_;RW2Km&|Pd>Xb1@-gYZPrp&o=F#f2w>BpkdN{r zavg8;1Lq4|Ja5^82`*TtBoPj6T%8Wm*)M;j#A_%krgI1H8DJq`%B_3dm3<@;9 zeuNedwfIsI(B+{lDS~b6wB}kRJjt8HHV%Dl_M>Pbtu^L^onFSyqkFYUsh)QaFZ$E8 zN(u)`HjW-FaqcO@q`+ZR{;+tKVySaxD3aBpGKRLD3lgd8SwuhtGbjj^4Tba2fy%yE z1S1o^I56elp~=^^j9yUz5<-5fi2v&*iDsZv%!6(lkq>3P553WIh(^%2^2FC_W-x<^ z>IH3X9@?6WwY5To*oBZ3iVV3L=Z_Tuquin7| zvr5--o)%kou@@a1c=#3zNe>J249BHm`+0Rg$mv4$Jw2rLkc{Fcts93Bk^;BVM0RET zyH*x7(6WC;P|DM{lFuu53hW=Ne8f{V@O+y7U0Vi)FixLpKp;tptr0gHa&ggK#*P!FDmcM z>#(UDVtb4;zw-H@!)L#DOjgsUX`~AEW9Fp{j&=y!ZUQ9<8q5c@D-Ijm?ZCH^d>yuK z^Pr7MnFJ*-#=&-_vtRw<07PADfY7U#D?XQDdMi@@ZiO#CuOA4@(m8-iY3Bw8iBk74 z`I{JAD%q}oiR{3$+4-P96||KFAoT*DX`)BV?6M2iD** zeb~mv#%xZxEt(;Vg81qF@TED|e_Gn!d@*+cO1N*xZSGGrSrP4}uf>`8$lly4?u`yg zU-+}GZ#SI~tRcY*L&(HKE2981p|$!iE-wewb2KLdbQpN#a7CAI&{0QHdV^Kl(Xvfl z>VFF^CTy|VYs$kUYY}V$k&-+`Ax}#ghW<>f`irwyqCU2L1^!HEI(w*Gu4kaQ5(hA2 z;ta}!!D+C>d(i0Z@3UyO@1;|(x%?#3hY<&v|Dh6R`a^ld3nBC1U{bAb~|_>4hcIdL)DRSawK<26siQLrfxbwnP^h`8F=!@ zHa%iq%X{kci}%D#a=T)$IfgbA3JD$;y_OD~W29c^*XBJ9n-WR8^pQFBv@D=z6NV(&qTtbYT~875sr{8u!uy{t`0>%>Q|_>A7YqhGt4I!S z9Ad;#8sw6e%t3J~c3oZ235_TSc4V$^hEk+DGTTbvT7Q!IPl5xk&muI#a>PZNp}ZPO z2v|nE=$nu^>`Uvx0q1bTA)xfCtBA)?ekfFZIuxpeKl&hJ2g>Z~X*BLG4u|1dp7s8z7SiJw&09*0^N$4lRNC+-}hedu4$S3m{-5B*RpgA&syK<1}0R!46 z0l@(q)N+M1-yuLf$3TJo;}R)$a2n)YmfBBqKHf90kHF>%icpO27xHXr9)UHx`wX$w zQ4yiu1uHQrKqmFb%|UKzT6fpiErEsv|EC*bczE2NrI51)nL%^z z`FFGRZ{Uzm?b7j9Gu%%mXeQG-z z*xW6q>^CpcZ8%$glV&>KpQyQVQd3iBsy}|JF7SR?Ak|%8zx*^bg$nd1C53~7`0oz{ z@EGUKc2^7z(-7nwzU7DH3}AlD8RLIqu_c0O%9FX|LHBzUjYv8 zdI4Svn|we+l36_If9QkvE9rm+6{%J162K%ELWc!=4fX0GS5rhA~ zNCvgZ!}x~|h+l)C!TvWPA;jQ927anFx){XvIgU=Q{Zj&;+p`BzA-=Z&GL zq|^}P?z!)wqXbVlFYpywzf(Cfmd*t%D#)cFe|m29CakO~>Uy+&Sb zHbq4k{vQsZLcxK9xFZM?lKtd%xr|svY!wzAjkLVB_C35N7DbU*Ecu2Zs)a9B+*+Ge zg5HY(1sy>mmG+)QGTXdnckDU)$>QKI|Ce_2y(2@5%iy`N)UPyxWQwdsiN0{E)jzP_ za|rx{2Rx#4SapSZ$)x}NVLyaLPy;Eq?TgOYlQEnKX#sHvDSvPwseL2_x6QEmd&Oc!bhOicjErp$V;VClK& z%;Rv`SkAJ!y`Ip+BZV}t*Hjf?8jBJRDv1k^Y`2^w6&E*m8`--Ag0hP7&h}r3?!0nG z=bM3hn^H7I+>LfK9#$N8KLiQ03WcPa8LS0-{)pOb$mQEd_QWA8u3t{%6jMd9D7IEv z$g%d=_gwbh{%AIIldO+U<->IX#(EM1jf+uZ>(Gu8(on6wDpoi;Uw@+uCzFy@=!t0* zTV7r1r^;jH@02Bd@M5kG%LVSa5)tZ^DT=pxVM5#bt9l`WUWzyud^{=OopPQVx4e(b zzp?L{_;Ez8V06)pCq+7Ip`T{@Xmv$~pX3=Vm6JVs9Gz*k>|sl>Nc28eq~DPvU7Q@` zNcNnl@ukU`@=^^rSYDu&y5s1C!i{#I1dY{z*g`~~#LtBXOhM!EiMp zDTFTMFe3?Rl{52OI3XwXnjG3Hkp-90Ob$s*N7;L6MrUZKna*#g9Av)0sDz{60;t=> z;TaSsdv{GHY27|4(%qC|hmib{6};{iO!IUbn0PI-b>~TCqn-d~Le6Ymt644~SaI2T zkqUhbOsg2Ob2IAawZIXt2xs~21B0A5pu_g%;CBWxN}B;L7Dl8g`;VU=+@eh9#g@Pe zYPI4o2ln^kfIG9w_a-4$>Vg_|Yk?bdy>We_7tE?)|6L9mEG25j+_h>BC7swmgwAf6 z(nKU4FUcZ<+Hv?N<7($cjkWG%Ko0y*6pj&+wDE(6H8eaoq$&0x?anFYzeA$s8@ug8a2!L!M0GrG1;56k#x8{8YMnX61XRgm~Cez_mb ztd22_t4c;x5xT=YlWcGS#i#xG;jk$_pN-<(ovKNd`Y6?=Z3%PeB%WV16o|*HZV6jX zSAnpr&40t`j8a+dPZgcl74Z@N{p~?^FkS;H_~{UfhwdGL{MzSW<>R+@ z^l%1U=aQ!#R#YoY73bw^33>11G z80sroI)C*A$056vbekBg6X?dDx{j3qc=`>u)5!EszUnTkb{MU-%y0qg(hcX zJb&>;{_Hv72Hi#I=8$F$kU4KC(W}9f+t|wVS8l@B)+MiqbTQqjvtN9wR5)t;$mR;o z7c+z>W;F(qWuQn}(@vNCsXmaXH(#uRn`fwOFy@6ICnNV3z795nVkd4z%QoDR;)|y zr;6tCS!jV1!S5L>V$r(mxu%0R7e4wX3$^JC$g;mP-`ORVdAl=29-IKT2Cpx0(aIQf?o^+Ugy?lKHEnFY<3yEO({BnmBl6pr2&EyN5&@=WXS z!>XO!i)0_ZOA!#jQq~Sl2Y@zKQ$5yf!Qc%|@tuKgbN@7x(E(;O4mvH#zfX8~y%0pU zdX$L=Y|mxNznu8|sQAwGgvpd>Qn!<;u=iB5z+<1Q_FW<1aCcwS?=|PQRu?1wqFr=r zEAGU{Go5Y}++=y?{D11hf3P9JKhPlP*W2BRskJf){JJK2`HAuHbr_EHC^_aeiWB~! z72Ij|v+)hD>BwX%SGTuvRi4?W^EzB-tT=L3Ug=bZ@)-FfIP1xs&fe08cSEpg zL19pvX+hfFeU+H8R!?I2HF#pHsQ_(D1vd3p?j@IYlTpP^Kd?Q&_w~ztXQ9;``6v>A z;F+)V$B&9Wb^ULCoA~=n;|G1kF3WZ91hIrd)X(0CYcVO$|A~1~nEzpFCr?Pkli*BZ z;P(Za$YL98qqV6?O6r5Kr~16gM&R?zL;bqGn3oRfvjBQM4(L4UQ8{693ojsg))%WX zgS7#SQ}$y&f+V?;i7T1|KDrofD;d_WzXYR#zM8A@74s=^`XZ}p&T)TCF!5I4R3IuP znXimDb{oKQgTyG2HMm3PjV9yU=S~Zne0_Hnw%W>ik`{ppNQETO{KO*MWPu%id@E7= zP7Yk0$ZJbrOE}08%V?wjJm#t3aRW*F`4!Y;z9v>h$ppV3U*zV7dyn(x;ET|v%E#D= z|HoYTWv^fN@TgBzqji7t+O5zJ_OspPX6wq3T<3_JxIC?;xFkQW*JlZp?WSj+bbt zyA|YzAt6uLDD)BTTY19bOXMu4rB*To7DyPmCW(Vzbe49u^mO7yNKU1tBZlPbH(E;W zCu^EhnVyVqTa+41A#H^^(4rnEM%|ExsI)T2wKoR6kBnc_zYLWky(UIHtzv+4Qq|&L zAN-!uQPg_*Z7vDmiC5dZvHQ~~s)OY*?#RMgY<>fLxgvA?d008tMFxyn?T&I@;QhKk zA%xlG8Mv_1c)~&)V20nLyH|#`Rr#{20(CL`%A~})B9s z2H?;X2TWOc+gnusiz{Xid6*Ja0Yn<7t3^$3t4~nQzumS+zFHggwpKO! z)r31tQZnUv6_z^11jgEF8w-dlhm`_@9fT_V-v5mfs(7ID z1uR-uuX~FFnn+b7-9MrWJ8*Ch^UfXZw}9_#|BJo1?22RS+D4NQ0)gNbJh;2NYjAf7 z65L%waQ6`0J-AyF+}*Wtg3~xO^48wZeLs7jKX7D>^QAukqp4a|bImy~nJYW?y0bH| z#G0x>^`Xnt4qWTc$|=AogNkJWx>B zosv(jQ`iz#o!}#}#P_{=VZI65{_eHZw+qd#-=t7O+|qxQ_0#7Ht4Z>BUXz0Q7s~a^ z(6a0~rPbwMj>z6h=`#!3E-rlctVz8(51#k6M~c3zQ3ZM7u-n{n!WOkgBs&{6(w6R* zcXluJ;jb*niJqr2gm9+yr#L@VJ}lK%F~vV3EBfRPu61k2>fAyqZniu%bZJ*hw9&01`n`?V`xJIj>aS) z_wS!N1wm;(@<-*NjVWgDypn%!Fxo^|M-n&s*d^3Tw-q(mrkAZvc8se^OGgiAAsF-( zt@KNbK=2jgQwHeq;bWA3CAW$AEERj`WiJgkdCd2RbL04lwq*?cxcuNhOE;6^x!A2q ztu%?0cgm2L+fCwCvr2_(co1>s1D!RQS zQ)OjY+@c)4CYlnw=h}(P&Qna7L~`;qQ9(?)#|z=e-(R#4upb3Y)F-+%rQt(Y5voyLAr?3W zw)BGHB2o&HTeN{Qm)B!u$bec0jJl5fsrQx>n`gjG5(@!u|LJvJRgIM=J#Amvz%o})aUCh*W{|x+>NymE2`lmzOn%|ZoXEd%b_{i z?pin2$#U|CCS2qN($ng_fppES5gxCRd(B=@B%j;`^um=#7zgff%Y}ywrz2pep4^t( zTo)gq^;!VURBBl05pkE;z}n5AvxhTQUUDj-!SQ6+__6NMM2t}fXsGKCISgPMTb=yi zp0#=Uck=psQ}S``by;+F>vkox{LCgRCyE_hoSMSk+0q9EnmeA;$2_)g#<~xpaDTNd zi!$2@y5r?-&V!CP&w3~v8wQE3fVjdoY8oj%a4%GGIPX28g7K2354vkOu+7&E{LH2f z4yx2A%WZ>>%(|PZF-btdy9&en{|(!K?|}f`MR=Bs3SJF7Fgg=Y8=hTtAI%Fb&&Pjg z!WUTvCk!?x$J8w-e4^iD%?Mw8=b0kx5kvtb$s*JWU#&450k5xD zfMM6osuJh{2HCyKb8Y){)|9K}ge5qaLR0eT+M1!cS_co9;fw0K8~Rcr&8(yKNB1Nk z#f}DzF*@4gk7Ep4#s@fBNPc}~Wdy&`G-Ef;ghJzSn@cIa8&ASI6zioTcw82`$0eji z#bXFje`AXy`KO!|77_a^|G3KmA4Yp(NtqRdyz?G%g$P?dElnc~8I(?4JkC}9tDFOK zmZP7dL?rn8*h$0Di+)I3`kjr8}ly-g)R304%A z!0^oQcNzT}qj{1>OTS+fG#tf~`2g!S6bAwf@1wB84K99m>?EX{8b* zXStcxHE?d7AR;WR5;2O=V%(NqGpwfuS;~|L1pFiUVK_FnHjV-`=*sUG;_UVe)8@3! zqy!R`?7^%B+MwW%2<@(993&&gA2Gm$M@7`~WySW|5`OtrnSIgqz4XxaGmOe4lf|AY zb`^A!WU!ND{~9EB&-0@0P}0*c(-QJs##hDXExJiJk%iBNyT8r(^Q+oXczAJfHEv{r zrO2S5w;8iSry3D21pv{-vkaRO+97^OO(x2G@32-~&Lru@Hck9y?;iLz8NAbMG}5 zmwR(->-I87?Qk=qa>3c*Tk+<9Ky^%b;ExYI(t!{7qA*%a04-*~Y*MBq`PT&s2T1+( z3O6bJ^$JInhz1D%Rn_S96jL+LQXW5A%jW(}loS2ua)50qXX7u7e!!dZ|85ZfpF;V6 zn2P_$*o6PDT*xWB2e)_6!Wc0CM>{gyM4Vn+l2(^|b!_HtC8Z^K<2W?siRQTQ;BnuY zW08}d;14-=Ehs7gH&|ndcPS{`P^(T!Aqnu)zn+Shfpx@VHUBSWE{y6S4S@0G+tG}2 zy$fAkuWi#@2eC7MHd`F8cap7eI$d;$GkdfbG;V&0;T0<0|Mc4Z*1HDR?XRZNLU?;L3~ z@5A)()#Z-dUY{^=#>F@1{Zp>5+$1BBcWaZ)PIijszQ+A@=-E<(OlN((_M}qpv=|q$ z(ehl*i&p#J&K7vm=l|K7lz)a*Mb;tqBc~@Y@OGszZH=4>jx461ol`zK3*>iBlpuiTOZLY(tijBGa$91j9%#+FZI=j+fkqnsrWAmR2_UUPn(= zOVC6*Lmau7O&+n|W;e}-w6*YT6}qRP9x#|sDV8rjENIi;xpnf=tB>Q86`6MaEWBo0 zkHM>dhn5TJSGO_@tAZt0`By~$Z!eyFXSdw=nrm8xAub|15-qw4miD$XFUelJea(?x zWhQ~;%apZydo?PUPtt;P*z1;Unh;8*VTN6Khe<#%KhJcPd-&7Hq&=f$5C^s*DIJHv+F z25(t8(7*Y-ML=gN)v7G{W;n`{|5yc>Ysq>5ywTSeHesd_PK~7 z57O{Tg7&}V53t?*{(HO8)zAt*8%PW#VHvv0*OginS0e(N<#eeHr$q+f;(w2i{Crw+ zOQdV|#_odKUPdKxl@j%#4Y|>ciMrA)i%yAUqx4%NY;@!N$!5akX4hiz=SbAlb8!b* zTz2hzp*Hc(dEL0DWtij5`RSkeX2)$xN)+8#I&qINMCiu5l(zAW4GY1Xe83EG4;YhL4SJTSBG~bb=VqQ>9*d( z@kuopu9jmOSluJr#g$$r&5_A1o2|++GZ@+I}(TH7s-7osrH3!4C zf%-s~EA-~-oi@%_r7!#$1R3(@;#4Zj{22F%A^ko-5{g$}KIdnXGDLlM*$VLUXlTtnXD-J&W9S3ddKpdQX-tSphLE)m|KW+$P z)&t>1l^n(Ml4>$bSoWsKtTxUZDK9tiTl&(GY@6fB4`TC8*njWTRaPT)A`sD;Qq(|Z zNwqk8$CRVpccbQx0mpbE>M#r2%-fP@9{xZro2EsXmt9E|V@k$glXy{)w3h_i!snf9 za8RVQAk?rf?)D!dMx_`Hyis!Lz_b;-xFenMp6{KM_g8lEH>X=WMg2UUbEt^6&V6}v zT?Oe4GpjFmb1>{;x@t_yD8H5zCZv0Qby97p?C>O7^YS!r1TrQ9Wo_V5Qtcn3bH;)= zMJJ?)9lg~i_N_z{toU)pGH2sYpj~R6%eeQcZ*MM@(;fE2gSsu>r1C%?+KjIAwzZyD zlrfI)zWD|gKWDUj>!zHwi5V@lZHn;NDr~j#zX(IZeErb6JTc-A03hGfuF(FMM-TWO z@^{c`8B>7vP$6P%>TJQ!WpX4|wCp7q`+oskTQsRMBtT23V+fb&;h+ zZ;aP(n8H`Trs1uuEG2T@3KZT8I-h*Je(LoIv(T;JYn}5;xVQ>2*?Xu7gDM8vezlIo z(N&_&&*3e58iwiAMRk>*d?E!MyIb3*l=dlpo~ULPo9`dcWtddc@T*n4Esxd694==J zG&BeaY92LmWb-?LfrI0tPy2lEO+%{)<_iWy+n+x-tHQ8zC6?i6oEA502cO^E3kTD& zu{cKyck%gFf`F9aq9svTT7FC)vwWn9^P4NlV5el|Ss^yxVc^H-CliJTVMbl(02a)XgmDYM+rN9^ z7CJ>OLD_ZLIMLnpIh7{{+Jqm2@OqAVcT!r9@)8Xl75wGRH14_U(pDIcD%C+k1Zt%!dCVWk#A;(?@i9Bdl4e zhi9EegmU!E4X^xA(D0I^G67trA$gl7lV+(%ztZ_lu6w~^&T1rW>y|fG6N*9#;lMp6 zME-?lh)+81_grbQR`_Pwt)gJ?Xx*0N&QE90+4$F3=Iu4nV;kiATzPeW%1WAbur>}3oBNNjJ5qqNVxyRc@yk;Y8I_#_|y=X&i5sl;g*;Xn? zbgJymcx2xc*+*%PCBTdnI@kZ6o7gX*KJ4b_V=s!!xJLY_157+Q7T!WFZS*kW7#s~4 zeBkd}Fq)%YIOPwZ1#)t!IcX_h(?9_aW@*OT5G*Zu!QVQb1){oFmUrlt%9E8e<)M~y zl)Cce0@?5{0Wa{K<%xX#H(7O1R%BMzE?FBJT8<25g5?%8MJi*wwGUY9T=puMocntydj zl7Dwdnur*XF=T9fQu9CqU*ba9q^{CBs`It>P}QSyG;kFsYHl=l>8F|Rin!^Bor{kQ zv-C@o!XZok?$Qe~OCmN-cCTSumfazSiM)b?bPxg0YgEw6MQU(62+2?~5y6&zw0ub| zRsKgsDyy|9yZr5;7-Bd#ljdB1n$bAh=zYjo*N-lkT^#rlut%PQ!VB z2Fb-ksJ^_!pdPP!P4((6kFUQoe45v6;NUdj%+5AP?l65e{-v9CpOMT5QKL!Trp;D|9oJ`tiU@H8M2uVz}BUIR;htxbSUAiY7lw6A$ z4teQ1&I#QnR_41VoC;S}ZihAik*>RdH1K+sJ^I)&HMjD9S*nt%Hix{AG)G2m{0TYQ zF7rFpY^yPuk%;7+r%kJ;jmClF&?p9Fx2mQJ>RJ!D0$(61dH63-f%$(j<~=hSxc{11 z1WYtReKKF|c%~FrF#4Fs+kO8#a+nTs?TpfUeyTeA*w5szxO+S{V)_>yq|(N;ta+3h z#*g7;ErIA~Mv%z^V2i^5IQp@^=oM=y!OtUA)_6Bp=lXM``DF`T5)dAGE!O|;jRDj!`obXt|!$GDSkcybzd zS7UpnK-3!Gk*D=cn@SYivW8p|LpzGw97Or@WL%9fV49=?a17h3AKD z@@iKnDA20z>p}68S;8h5se0jPuYkqoLw4+EQ<*Z3*SBeR50g(<4!5(6v2k=bmaiGu zWSetU-2SP2gi$AP0U;s+WbXB1Xz<Y=E+ zZ_12r?-}lV7j8Y@Ow2675nrcOJ|OGfAxux(o6=EL{e^bdIcyKkF86Vxvr7f-b$3;9 z!~f6-aew*XcPf!v=reujsoUR){;pwyJ#ixDZoSGyvfrd*#?K(!e(asdN9JEVi(DQS zox5SN@+>X0!1kRhV|`I5gcnnq&xJqEql}k7yW`SRbB}E8GvGg`e*ZN7Vvf>iTTR50 z23@n>TB#e^wwNktFdodOLXi?putXK;ky-ku9s!hTRDVV1Tk=R6;6dw#W^sFO*2{h^ z5FqE5a_4ftI(;U$(x?z4KH`Gxx@T`*%&i<)H;?tGT!{I6R-(;z=ZjUR-0D1gM)MxG z=Lm>~;nQT)Ks0-#H9A2Xagj=mwv~2%6d*VzsCoR&wCLni5&q#a5Xdq=@(WFQrIbrM zi^JxAneA;IZ+u@E>`YPR)}A4^M$6q!G+}Y>@erpBD)o!GkthMfC6zZP@cLENW00yuc>Wi{quwcVHJyi+|gW_xg5F7hKR z`P2R%i%<~LoCMI4$7T6pY_C5dE{N8}9Mkt|iYYYyt4a8YHpv}r;p5so0#MALmp%Bm z*hr!(PUv}+QlB^lv9nCGwCF#fA|uBjRJi(Abw4l^wP?G3118W6qCj?K8mrb3^{uXp z1n`H?ywOOMapDrP;Dr{10cjo#6ON%?1b-ycLhKNFB4Yy)6_3E&J-jRqW}-{x;MIT7 z?V_~1M^r<~#;27JFc|YCK@Q2FaQOzF9IRNjdr9;{YrNRWpQwp7yo)>~tNj7%g>gw~ z-?lZ8Njb<;ALc^v3;7~GhX)AV^9%jzP3bC=*&BR%$3@m{71{g~GlPfdHTacg673Pv z{Oain(Rbp`RZH~LRGG6ndv+x)D#}%13u*dpF^rA9&7j)k$BonYd#+ZCQvj)OT;9q0 zNxTZYQRUW#?Dng}%u%saC}Lk!zHe&%U!tcO|8G_6T(`InaenNKR|9@mOIRJO=mKeX zwac|=29N*n)@qMhyy4b}R`O+)D36n&ILpKq<>Xp{^x$9Gx&5WFkoIOuq-Q>(i=}!| zYj*mDh>Oh!8rGp=Zm#nk_0;(M20s8*r|$uip-ym~peU%C>M=@Ybv>RKe#I>q3HR~M zE+puhi&!YMD;O?Hh(nLeZuAXzQ*TrD75E6(r-BsqOgCCIzRW(NdDDXkgGc&lP`_N1 zHI?=34$6;>?pfIIA#uxa6v?(#Lp)PbWH@7Khnz4dq}TY~UdquZrO>d!bH!WU$I##J z7446zvJgj-JATl^CgLT@(7&=h{F_#Qg3^?d2GYHmmJJPjVyFEpJ^j^2}C^Y+49E(EHK>NT*Oc%Y|O`4tvwQ* zxfM7g&8G>Z3b^=BYY`T&a>h>lVnaC^3x~Z(_Pkg{Y2d1OHXAqv$H7Otx#&u?7p&iK>@rA^{LaeUR3lJ!%Z}e{v8U#^0Jjoc~IoMRF!d&M#)F=qk=q5sS|+ z&x*Ph5Y|l1ME?oTbK$@9>M4+#IK#QJ|NGOYxUO08M+X7~p!iYAVGGjE&G&|$E& zj6CC8wnUnLqn=9Df8#Pw=zrrf;%dqh=njr9B5I=CTL~rzgC!LxbpVi@7D+co@qG{7 zwj+La?_&T?wigyh**uG-(9H~5*yk{|(!{{-Na5fzzv{X=2>_0()QezX$GE0D49QU; z!oK8jWhW>dI>5eOQop-v>0X*6a-13pi*1Y7pLyfUSRF)VbMh^0^6hGKymHQd!rVq? z#))!mJr1kgdT;Q|LY(n|}YXV$)YXGZN5Jx3i%Fw%eBOfP?7eq8l@b9_Pw znGu=+XpRekmc6IuFjO$~n-{QIiuB3G%^%ug(riVY4_YsF_```->XFU}@V!MPu~Tb$ z@2AJC8&+lEbJk*z{I))6LBQ<;Uw;tqhGAa^JBRA1W{b0b= zYPu@W&@XAsgZNh4eHHO$y0Yf@sQ%rGj4!%i9p3+<7sa94xd3)MzL~&R#vXza#Sgf1 zHZ?Fgx1ewCsprXw`w&yc(Yl`A4bl7%@wBnA$w@_8g&RDBQb=rjgYCOuc)k&3dgbqu z+18wG*gdxH?87-l!P+Xpp1_1cuz=OhVm;cP3%t`wc{EyZJJ3fG$S!?-vzEo{br~qI z=*`Xx{5$wR1O`Pp9XNp0_`H8FHx(c{zx@C+0)<+wS)6ZiDzE_QW- z5tnx+Y3BHK$QbV>&{x{6yi?i~XO4K@y`;~n`r!$pvw`&oL zRrMgrP^Fh78@MB&m?ho$nk2a(BR%%vbZ2KHD&qCr#?DR@a{>S*X+$WsB?#_rob18j zcasZJ{Lo-vQhHU%2SxYt@(L&_mtBr#Cr`*e>7Z_*03EhKXb_ojgf0f0B*j-bg5qTo zLev%dk2jBlg(niuNiwz)w;d=bwFIQx53TLL#=g4!3;zK7_a%FUqr^N6@VFJ z>7A*wt7BkbV8@|zVpeW*vo}TC29mbvnTtRt}f(L0|{!$9)@0V3L4ejX_u4V=tRvv zEI)i)O=_?A*+H*c=I&ZOxpCb!p`|pI?0Xplk>{i*UzB7N?_irhaZ+ND;FvfFkREl~ zIs>ig7vF!laG}4D0JFnidELrbQ)it{3#G6_6Lsuo*{A z@A@kJ3gW8_>D`)c`9q+ui60V}&p_!n19M6gbLX^*O(5hV&u3P9edGL^>03JH1O7;< zMmjX*Q*>ujRUN_ume|Bm@QkwdI?f5NjgBGxAYtFZ`fA=l2&4rYJ63lm(xw74x04D- zlj_jkl3%zX7!jfiN=8b+w;6=wdcEW2@{FoiJj^Xp4#Q2aIc zqsjisVU=IGe#R>G&v^>3SbY(lkn2V4$Ms8xn_Td7`qc?~Va{#Aw$tlmnjfP`daZur zR+CB{>xeB+Hy2Kj!u|dq{Vw_)#P=%&8UALwVq{PL$|wSyQy%G=$u+ZdZU zpOXK1;>rD8rCw)=daBKR=%3vmXBhGH)+H1FP%lgGnzo1=s4V@|-&o^4TmW)>hGjN5 zDC4uWioMTYE)|y&$VcRNXTA1(oqf(@?@Duw9#tlX*DqJjk1CgzbC)mlRy5B<3YL}% zh?)zT(>g38v^x$qcVdgCP#h^YdAznh?LFRfSO&Ja%;sNiTP)SP#;}7XxbUU5W{bY& zg!NgB>+yx$zl;z6cm-{Nn|5A6F$u&zQ-Du*HfxTk#U6AsY+RqNiJ3sWk8Ki1TEFhGBg^wE1PrjQ~X;=5I9p`SbQJ4uJ2?@ zl%<2)tbfJkIj2PTm9_jqK>!CRMl|xTbuHGiFx4d$P-KPj8Q@u;4 zt#gh?Zrf1xH;-L+jnsyHD3_f}k?7)YblfYArhR7)XYNc+Nf1SqD%@DwIm!x2ZD+z4 z+qqhiR{8BQR4ARI#_m83=X$UZ;j6>} zoOhg@2mUwWZ_WKBC*sgJ`)kK;b=?_biw!DbHxQ?m9yqK)BmGa#=&KRoPi$3lQu)}0 zb9s@DF91V5tmd_QCKX+d1T~|(|Mp_w5ir;sWEef*ZfMi=FzR-!4cn1j4oC+ojfUFE zJltLAsx2EezEo0e9u2*e!M>>&U%mk-CxYtBaLKCQGZbuI4IwZXi)%QI8xsP~4YWN! zIvKLOO+UrY(}wV_%M|uK3f(-01*W+DoV^sG0Xyx0Sl`ibC9s$;eQKBN5*Q?mF5f)ZCqa3@pEPB>zyy+Ad> zyKpQ9cJ6S9PoiX-k7cXJo!un6CaiUsK!MK-J~YR|&0g8fo;j*H{zfC%G{LH229cZL z+B~y+Xd3}H2)*!Oq*NI)+u7AH^)9?gXfp(~4`(wShQd$FNHtzPPLEF$hUbtQiCqNs z&Ar2zYU^Cg`h5bxsCp(?f^vsdPrPBGiHz!58eo!w61T_t(eL!Ng;FDK1@f}-z>>W9 z2mkt?G64NJi6Z7*))@|y;x-kr2s{1lZ~C#omo7jHq3`+Na8p`=O+Mw^D?PVFx(f}6 zIT54&C4@w4OdP@S|3Q5;JNc)oA+f`{X99(~-P_di1J&q9e&cdmjQ8KHn5fu6yYA39Svp=QX9Cl!*KZZ^&MwXyny|0($eyWOXV6>37&9Yimv>a6oB^)RmtgBD> z2xr)oS0cBwGB<^kpMuO@-_+>b8FrSV36?rYFoR6Q$ZIva)imVd9v1QQNL7SoAqYf; z-7yz-d_A!}QHlNoi&~NuXz3r_ST?nTl7yq%o^R0aW2g`pMV-)9e%fv|j!2MQbszWZ z^>?I&k=2?meA|1TGKEksM{-l44z)qv*SPQnI2zGgu8zRLYl`BM(Vq>nVWRIY5Jy+$ zQVf26b=*1>(Mfg_dzy|dk;pi2R`LP4y)|~!J(@1?p)7g9 zwZyXWyn_M>SYbZKToaJXc=G#3lZq~Uayr;POC#GFL4>LDpOiyub(jtzChOcduNJ?1 z*PKUM81n^b|E|lQ<|LbQ-6`3Z#Z;89aE{NFoM54nGOo%F?@dHYp3G4#?KErpg#v!v zQtx4oC$yGYXH_g5a^WP|gIy?%=!%g(pD`s~Zp&|({-R@kA29f~RK0j55;eA-q5N-` z-x^dy%KZXv&&lByi`n@4!d0ZloFbVsyCE?jtZg07DN6&I7ok=6X9Fke0$G(ZX^_!af286JR4@)4 zC+XwJCmI$cD&*iz{z9QzlEf@vdKu^g^?zpp5S4sZ1}RQ=JY->ekA67Q`F-ZsBteoBN3_JHMEI!hZE1+*|2u7?`;kz~3 zLni4MgTF3$K`+gi`5eG2S2T>`;L+^#T_VPRmG05Qlwvwl)tN}6z)xswY4&m3TiGbZf z1u{a!e&{6T;xWl^+S(x8w>w6~qEl8SH^ir_?XWbm9=WNzm%c2FM=^}bj%@Xg~HqBY+ieUoX=#SN5bth1GUW_aD&b3r4l{o#U4JSr)&mWy5xvYUyU7#&3NOKh&^_F7hyvk5 zK(jd0dlL+d3Xxc^i5&G^MseB+SR!Ia^ZWGeJr>11WmFOyv!*3?DmkB(CFsr>?v#x?Sa8V@2bE3afO zfB9$k_p)5Yd8||6mpR9Tuyl=gt{)}JLzAo1M+5x8w)Zf4%T@fF4hq(GuHHgnOvNvF zd{-D|=nWoy_J9{GeXhnb84#HF7)%E_O;T=m|2&Tj5<=$gz${K>Wwg;|E;uq}wY?c2 zd6>L&U1&0uwM&C*aBR`I+H^vXf4>mbmPaFyPN1JqH55-2eFn?5lj6!j+PN}e!+emk zurEvoqK^_n*t360yRoBLdVJ$s{$xSgnRORvP~TP?=8{TmSP7Nz(Jt=`-u_gLP1iPE zYvOtQu%7^%YmDB#^Mh=!Qr8RN^ByrPT0WX#<>PhR(_-!EuT7r@-oD>KVI1iu(sZ8D zg2#Xp&QK7!jUaSF@;N#vXmmex=s@^Tvqkcin=KM0!=XY&`kbv@SXIlnj3Tx#Gsi53 zZW^XG;2YG@%$5~WVn%D(34+K^tUfDF-<*+CJ|%97K`XT^I#QMV_!}@%$@z@>gZ#s! zL(@z_g#pXPwpLZSm)=qw~C1*6s~gva7`})q5NJX$<5= zv1?yg`2kh_uF%nhNmr9M(%Ytw3=Tf*4QzkZ!w$ANG0;%B4y=8C6F>9&F&>!ijaz0B z?Q988`LtB?)Ijp`8d%@}+lzPR09}HqElIjrL*+EmQ8+y=&OBr7k9Zuz&SmEDbK5Rk zUbOgAY4J4qf&m8q*ma&JoD0AWcA}Neb#$iqVgLT=Mr1(|Q)bn{hi9HZXK;*O)((t# ze}6L_#?;AGTtzHaG^Y7s`yNbYUly$G%utfs<D&Hz&OV%I21TVJBiKQGVQBhI!Yabe##UHrT|w2Jo02y+hSgMt~{&QTh_2$hN@ z1=Q#@wbz2q_9wcB*ov4o;4V*BGnE0^mgZ?u#kSDkO0Z@ncN!7KPen}>RS@IyQWIa4 zBn_$Ee`GDQWk|Y|xmEREhWGJ4%_Z6Ir`XwRYkTOz$%vlxGI2rG*+a4Oe+<}?h0bfA z5UKa8OU-{g(cA?O^kv-DYQ*oS`jEZH_|a*d8?Yw`Xj>xD3-tB;U1;WsYGxg*dQ(=O zWsAnWnI3!EmVVU4`W9-$?azGgeoY$UNdx#Q-@S|Tr@z8>$n-s*Yt<&8xR=O|>fOKIIIaem|apI!@pk5&z-{#YwE1nm$g$ zAK%^QX_oh~570c*zO>e>-zQ_Ie4AZ?YwR;zoxOrWASSikV%WRj@!@{ytLUxXOGpH~ z96{~6c#@=#b|A;aSaL|LXT=nBdpVACme}Uv5gH5EU?qXNIGZ}sUUjZ8z=*22X z{$|e^BE&a6hK2zE-IjRS4|n_h&h3vftZ!CTu=qv%Q}xR*!MzDyEK51i?^ucAO{x4X zB}tTNZg2ujeoX`An^VPB)F;p9&*k*+U!hWTn-H8s>JRTa>(%ZXt+waF&I+9uSS(8p zzGFe53NMARq-iE#eQznG=aLCtTJRDq__Sxfv(`{=wsK-61Kp4^Ex*`ZLqGIJH(=3X zMncFWwI7NlT`uIIr>oBKP{9FDMhCaut$_fjebY44te=4>!Q0%ds;XzkA(r!}vO#`X zxrJ7H+K%tr_&j|Fz0mqPSBLz-5$z;FPfP56>uQr-wP~?0ZayTG;5|y2XxD#+Z_vBn z=TiYxwKqZn3L3)w5^SXc1ns&l4!GGfH_lLl!HK36Ngu9ky=W{rzqyc{MjP9O&NT<} zqTcO%3j4GSHbIZcaHd#Sty{(978Yysv9Zx?Qm(=f(>>d<1Z6VNucXxKE&WLMsoytb zFRFijQ3a1rywhr3@IVhFIzT&c>=vH(k3pLmoOV%#2Jb3c8$dCY`w3 zDPfNI*3kAcp`UW=Eq_`4!<@&NhbEkJ&NoGd4$7*EMj?!**!b`(e~ zvPMZk5AUO4QmZlH;p9Na)IFayYSO}PDSwJLCTqOE7x`06$JBb)01d1Ow$1CWHCyAE zUe`?{hvERE4Om6?SdSa9#N+HSB%|-1J0g5q{aGncSDzE@+j=6i%8%cuJGP}=4{~{m zBkm&dZ$+!iejdH%q2Zwb`4AU9uj*QA-M8pJUUm_{a+;LG-yoVJ!gAg=YSeo^Gy78A zJYv{bSWOgr^wgk(nptPd+tPVFHpLFZ|D8GM zJC)|ocu=WVVE#qdUjU!eM0uO;!e zmrK&nedsPwYiU2RARh@z+*{(kDAi_@Lwk1W>2p45_6Ov1liEefW+s8(L08Sy1+_VX z@?gFuSk3p>YWzUl7v|t9-}SPkn9aCzIxk!<#B)yM!=B%f*Mop0_<$&7>uR)kG?Wd2H$!?xVA|oQlLiiH{{2V!W(Dbpv ztl|RFG1K4+95!v+AcZ8zJilD`($FGwxxt8$tcaLsK-tN|!10;$cjOpYBW)`_53ft|M~4<_5dqK0<@Db*A>_zLh2q~;s2UvYq2 zaC+Tm_X~o_6L-OW+`=smbvKu+#Q4OTIU9!h&;&4kYL~hCjU8gmq3ZAnASff`jUV-( zyGMuAvYYKWR)?QN8A8t)i+q~V_7&Is&a8TGCp<$3_ZOX}Y>%VHhcz=`xE;S0|B5gt z`Mnb>V`L|*5Y9Am3{@elKhls1|7z%zHR2hu=VOE;aW_Glqf_-VC%QjSro~}4-*5T* zTodnQYh`;O>}=`@z-Gp#x5DJRmdN?bgJIoO4GHPDqJDq% zcGmK^U0of5l;ymP^V02{H$Z}W9#6l!Ytm^Vu*Esfi1x*y*DrVa?89TyLtSXxpbB+~rKvl{?+l@ZL z>JdbXiK1JY$|5NB$j2!4X+D0VFdmlsXZwvB*R3AU;iD;c3(iH`tHHm7rg<28pqc%p z8wzrEDAP|-Bqw%OUbSi8g$i-4)C<{C75n1vXI~{+MxR|q%jU+9Zuh;k@{KJW9!~pBJB7L)GX%1`Fwuvm>Nh$S zpPic{PLOe75@GhGq8gVj(a`x#IhtY2;p66)5wJ@~c-0MIugU0B6OOk0BhK7CV#J{h zQIM=XP=SFPO)XQ>osu{}n0j;VJ3sE6{0#{9C7cx6>i5opaklaoPrGVz+P-I2VEDb~ zj%5#a9Kjekw#Qgab&i3bsTZb2ZXVF3=m<6IlM36O18+^a%nB0c>_Y?$h;QZDNQpeC zT}qK450g2SxL~i^kJSqAo@04CrO(-6!(n{%%cvRV)pk3op@I-w278xY)L6XpcUUQq z_mA(?7HDxiymgM7$*ohS5#4=1@9;Wj1<9v>Pi2ga@D-r#QU3{VKl5_Q%YvsHrO3d(k`5H+!a8a|(yL3W` zK4eAtmyYQHv=`0VFbBRhegU1?=^Iuw)BQQJ&v0wM`_{sm8Z(Xc>#!*M$&ODTG7IBx z@2B&4Ft03kEw@L$wh7&gFv92fRB7Lz3ts97)E{eY27Ceq(uCn!7uU6>5YV5Dz^3AX zhkCeFPPG9KnqSyix>)**sBql$$GSc4CJL_J1+7N7-NZ`0{1R5aDxJEL2;s4ShW@K3F_kN4w$Ea-qU)Ha>Y2iUMdwq5cBP6wQP7nCgxT-iLvhpk0sS(vGI8DRpFN@JX*2e@@}g4ClrUGbU5Y`Gk00!?p0@lC!gs61?=AbO5}hKQ+QQKJkbj9 zm>DcAUA9~w6nv#59Ep~;oe>7p0$4t;tF(BH4HN+{>}5B^U^KFbg>&J~Z`HX7!On85 zcu_BeXaJbK3Dfstib=V(Qp&Ikv7Lh@(PT7!Xv)^f>3xnmUKljnLowX=a_$+)i6SOp z5XMyH070RK>v(YLS+wb?OE+1pTd$*Kf97Ph)&GJ?AZ)Gqw-lDR5IH)$3i3JHm%f5R zXW_eHDuy8gZGKB?g4`l+!P)K40J8h*(? z)(d*sWdFGrVlP|3^hQ4J1{_RgGzl;fjz%>t1+e>=%6o;r4OxFwppNCeDeqY@OpqzN zMI@YbqI_%nm3T|Ir`h)l{!Z;o#XNVW6jE;N424g0DyI9fNixtldLN(94@q5o1%&&v zI0VfMT!rE_2@YiXQv+xL+_@M=~EXWC9eG383gcQ-NtqaeYe=aQ&T%KF^oWh&kh zI{25$oXdf#`aN8FBCP!O2oBpV&Mq&01f_tl0dX?#pT8VOA=8JZ>O~1m)oi=OAXPr= zCuh7l?MwgNu=dW;@g>o6L<#HXt^I*nGq}$7QPLc=Y!7I@Mu{wqQ|;W{kK6w9Awo5; zV)v-}z4^UFb$x|AUT1Q%n38te9?#^IB|Qxm*=x2mQe9`#N(A)KR+jiO>k2Bw*)`CKIX@% zQTr~I&*0iLH$`vF6K*J1q1)pSv#LOtz1{j>ILwyFk%&*jt1t6;=J?;HJikt3fayB* zkmEdy^_rWQYy*`AipxHrfbG&myR_)Ob#B+zE^qnaK^m~{A|{&1kT?hEc|MnNcRqWQ zYL<2@7x1L9>q2Y`;Md*T{u;Tu35Zjld|{ZcDq{ao{0s@7p$@fZKNxUqkmWePcwv2l zky6Bs3F?*mKkU8bSDRlHC0wV40xc4Xx42ViaVy1&dvGZ3(BP6lTc8xz;L_smE}^&+ zJa}-2-~ob6e(QZ_&CFW!C(K&Uw|vNxn{)3yXYYOX(KMi5;dq6u=)m4)bF@Cd#__6@ zn~4Y$xyJ*+b(vXIuGb8w9p27D_nc(rtAo8%TuV_d#d=}u_E>+-5bjh;R|1pi3Kga{ z(_v(QMC3hE>WuUTlt5s-x`Rxcx-TAG=`#!mR)>FHY<{|Fo zwD|w;zTVS4rCr;eq{_XCKC8tEV&jNu_8j=zO?O z6_fViN>chUK^~DIt3UXu-XX*p?11}A;~)L$8CxfFz0Q@RK#8c#-1xk{sQIe>uydUi z1lQ$b%TwD-=c0m<7ob9>HD2-2tOwj5PK!S}#ZCFCgp>njek<3>;Txtq#@im~?+b{T z0(IO4?M5l215>cG?fd+%)^?2I$=y7<5+`UNyv@zAr_&$8ILBFR5ra;t#H;g_)|O{} zWp%h8`EP1BnC4UxN;fVoT`&JigCoopHWM%Hyxptm7H5Z*Me=cuH`4xP!gopmhC=~G zwoF^#))3m8psxd(4u*n0LKqfTa%JqK^RfkgC=A(EZ=KjXmL+e`$Il1rKU<8qxE7^Q zS<0v8j0~vdAl1VUQFiGSvZ^bOCFR8PgpPk#(B<&8z6icA5wH6A{WL6^Hh4E zg(yZsn+q70HKYCK>{I>iNeu~q8f8+z1IC;szshQfp?j92@A$8oxHh}cF}RMba;`?Q7hwdX{wHr}g=vS|i64gwwxm|9#p*xq( zH&P$XnOenmZ=-%DxvObbW0BKgj1kixEPYt}bKnYk6_ia%N!L)y?%q9Cj0p#KeSo`g zZEy8iWMpPbc-((oNgS5^RP=PJ?srBKV(VYh<$n&JwDl@{N$%C;ci%ner-CQI1E?Wx zy}j;V;-WBS<+ki8LXJHMuRX2Xsz`L!c2y>8YMIJka8rHXO%h(*5{!FNHnl9-KXo=) z*cGFV7iHRw>h;or%5o~KZPZi7S?vJCDH;@Hf~H5viIICTAqobA>e-FojORV&>VbEy zdbY8ALM@OJXp_xEE?wEP-ql`i&mZ(#n>Fk4m%M;%@jdA)BeD2GcKfp=>;MbCN$Mt@ z9@CSR$?=6F6pMX!m>P+x>naMXyhliQN$2{Qkz*UyC=CWs19Q&I&4#J^_G^PLjyYG& zqC!k0aLIIVZfb8x?ryFwKFeUWm%AAajhb_B*!^0t()cAmt~V0ZlnxG#94BJ-Yw&)4 zEDlgRNLqZYv9$X&EUlw-N605MgPG|Z)mG8f0Z+IzyZ&slB5=O7oTjpeV? zH(o)POIHLge`JguYMJeeuwv90nW;zmM=;y%?fvagm7Mdn8tI-~sR-j7e5?fEDGy1h zXVyFWC-=9osg&fIC~d4lyw z!;eP}{Mx3auvWTEGP_Fw-t*Qe3lsYmmF|lL874P~u7oN@ixe?~57t|<*kS}Sa_(?* zpdZzy%Bn`5+U2SsHKO&GRL+No{`On+1&KHNdcdh zzA|x@J^>ld{C4hN%{|_&zFpZ}{q?)xTbh`E%1=ANKN?qT0~T975tNs!sq(+W2j-q| z(S8H`F2lB&i8fwL`TkWbU8=E`y8B4>`g0%;qu6V|vL7rv2C}w~xMecB6XRKo*r~ih zER61+`OkkU>8luuh4*!-#h-DhhIALlmTytu{+g8G6JUlpPz=SSUf~2z;8M4_yecH` zKMT+`keLiq3{ihwQ2N^Bq8*$){5}`5{s3s*r}N<_QM8Ci!@Ga1i~FX!T$I-#JhVS^o#PgyAg*}cVUN`BZc&-lO{-ZFjyf&Tn?ijxr~ zD33>h)hn$j-py@H;&RG$uK%Ii-0+tM@4bGw*)dipmBl?;>-;YIi}URF&@%^W4LrP_ z+mmZ5o32FVeXK=w(MN;)j>vYXcn)^E%Dk4dhH?!i-B6n7%%e2+K-bMXg#=euYcj7@ z}g#@RJ0n~;)~%4T?^Dz*6%44 z9$q!5J%T=wWu8f)e6=n|38emNZ$)D?%9hZj&*qpcx=%(*TT=dG)_&vnr@Ay_c{=eN zs)fWn4mi&2D$}DW-L7;*aH&tzZ(ZD|m+O#my^0LVKH}GoB*#^)3?@YEZr^^>T3V&$ zIEr?U$4D`=uraB1yDONn^j;a%7T53luYVOTHS&)BtS8F9^5l!RX#LbhmxbMYqtD+C zor~7U{J5r+#h%YMHiGvO0na4=B8s&Onp=$k%L}xqYqE1 zVT&rY0r$3#r4h{+o6g5c(#?W{$C0J|B<&Ng_-sk@7y5%Hs--r`lJ4>uI&`dc0Rq0D zdTu9>_9edqg_LUeo~%%sw7m!#(diJfHKF~JA12#?^-rF_?dPGPoRGn{`m*4&IwxgE z(ZZIQ{|%Hmw4Q9g-3Wp!Thy`2(J-y$$_u<2Ez(YKq}nGN+iM_fV7XnB z3J_PnmIN^Ix>8w)z_*}?UyMB>^EJU-Y*FYt`qa$QG}7B}_C0@7fpywh>RG+94xNQU zOQzS!1oF?$H^?hNEenL~h1OahxT|GB!`_?ElRG|q8s4oq-3F?hC4c5M%71y-8;np3 z=5#1xu|9AyBv{$|lJg{!J>`g$Wc37$QTEgXPd$OH^s8c(6%O!BmwmH=O4n?DpGE&2 zZ6ryWW#fmzU59o0*-&R2&%|pp%EYiFV$*szOvfX@d-BSb#@p}y{%R-a*plC2b;CMN zL);6z2ApX(ozag%G8ts<4$@R$^0mMg<-2nd_Lb%^tI^yv@5&d<;w}Jzy}dO#M9sD$ z^`3|3ac$2VJh4kegZgdcB)Ua$?VMutrg z)*O+NLHe&b5x^3hD@IjIynBmTN|`3^Fes+O$7nXaEli>AZ~mv~#)@uyq~5XH3j2YR ztGfH{d>b@Wb#g1F=d{M}W>Z46)R0R|s4lhYn>gRsGUHNXcc3*Wjv(rJ7Q5h8RJk*( zf<$10Rvh_7VtCe~J_kZwOzG6EG>L$Z4P)>ILJCO-r_Q5 ze4Q3&VwowJOIEDAVef3Gka%uqu|_v7-G6j*ji*?!#>lr#Vch0&y!41}5%{9*b(rgx z;$A^XM-0z95{k`yAg#)(L)~Nlk4|=}cYRKO;|P(b=P~y^bWWSG?Ybk{WR-K=81wp+ zVj+S0<*z27Am`_VbV_Mcn!||wH=4y!2fM|^9Xfe^O&d$oX?^UndSemigI@=KItvt9 zScv9X>KD0GRbi(?XgwC|!T0#)(omnzooz0MC*GG>f7IHB?9^&=y8GA9H4<`yyCr)( zslizVSR4u=Bfiv@VE$rY`QU;(BU`(~J5r_#rF_FNQ6=l^2OL5R$2oQ>T#_T_Ej@61 z&7en|BdE`yjMkD@u#QhB4u&H@7xJ{o=aK8kgPVt)gfnZl5t>oVaz2L;r#^s5CBM$f zdQt2TeUog^jbV(_5s7Pwc7|%#Q{w@Kx=AK$8jppp3q3rO7mK(Xthn6vKBWf>>y64B z|JoRZRWDcpo2heXYv*q^=Z11o;srseelRLk= z_*W(Yat-kDzu7pmw*||DVM~DWL*i)Kh$86P%p-t;?Y?Z<&}@oo#(<~D$MWGYIi2Dv z?FwA#HT6pR9Srom9X$V2@$r=xFCDXhs3#gq+ffkxCUhg!lYp5*cx1Y6l2~q0*smRs z%pFsiP_SGix=SX1w;!9{(<`jcKzZ6U;9~2w@tk6S=R{l_R^x~O%+;CWS)MMy*by8X zN&T*b8%@e)5s9>&75}~|C@l6umXnM(PKvt@dyb+~x=t)A&hNfmzk@c;LUBLebbgUN zgS0?qln*MxKnrE)$Js~F8MnqVZSN-nNn+0~D(j_IAdAos1#jm2KJsZ72UUD~nFVpE z6wc6?5qo=|7J* z+}|4#KaBo$Q|eroG*56hy1ZnsJHEKcd(oN6Y;q?SeX`p;A;#67G3%}HCSEi#@Mzi2 z4#+FPPNmf-K2$d~xL(h}B`WD1Ky5)t+griXnx5a%bicpB%E_JTu`Os)DcyFm*Y%mu zjs#|w7QGch5pzD%1dh%3pEIyPjzI_gcy2^V$VrAXzS+j7BpVh8A~22DxGQ^XtYme? zeI1CPiC(6+4<0>xRGM0kwSq)5^lugpe$Wio^w|{hRB3I=Y7@pqhWf!Qz5OCP5L4!< zFHCgM-5#U?-<6_1?nKx__b$Va{VV1xTf<=LTaW z{*Jg~eXh^0F;|)dcg!j@%-%~x(Os7GVX{Q5%=z4__U5J$ePp^$d9nR*d4b^HBN3>rd!?p;7xopqWE)p$sc9<4?$s9Qep^q``jI z>3@xMkqDX6=`gnPzqs&EdZMy8@#162T)0o&btY~qQN4R|&k1DYVfFDp2^oIsj`}as zb@*?=jx0ydo_u=ngpKA$vDf%Djj~Tw@gxyZA}h(>^OqT;>AN3)=S3k|1aZEZ%DvXv zk`w%^E!^8n&y(C#N{>wMm63u;ZCoO zgybK=C!^?4DSS*?`IAxP;MRcTrG6jvf2+JDuMJvxL9$FK&6*s{Dkf68U~sUtraDDu zH$GeKT_fV{+gOi-|KOqZla7EamQn8CyqCUl-n@&mRy38OGu(k4Kj~Puvs&*LphCLPDpnsNurE4xrcJ zA!93!_hB-$#d6DBfPBkk3g84EvIad%;a?PELXsl3te&zsM!PgEv0 z1NQb4^o}2PAaFzPr`2Nuowp*5SXtioF$#wzaORZkb0pT4+E9v(LRhAv92HDT!I^hU z7mAIU#*f05n9I^W<&Uh7kHT@{eSHqa5^543DoOMg*D4`*dHZn73 z5r6xg?)G-a%ZZCxC|Sy0bHe8KcrAW#`hE4PjCG-u+ef~a_7EwaQ+!4j~4sW&)X4* z#9yMqp&jgU<6+f#qdx+Cjf&>rh^QWMv5=da8{6ZmwrzNBn})2_Gl`P4tZHv>uBl^_ zxdO#(_MIkR{n%zs?b#+R{60}-@x+zW2^of0t`bo01FW?^+>P3f8kW#o;#V!KXh6SJ zwe`2HTLbUmbRVE{`zva8Gro21*?srz`B_=R>>WJOxd7>3bCay)_t>jeu^KNZr>!xt z>c)9)!p?GMASXiv>!hWXi+QciHRio}^*TO7{cc(%k;491_7x29*u8-3*VDbdg9GPZ zK5yAGM|+HfkNgIXq68Ik7K^xxCR zl>B3nLrU{a@|-D}ofWUng_5711h50g$ce?oN^H&T$jBvqRnq=2-|5-Ux3wS_X38X{ z!W>Hiw@%Xi<858<@H)``)TnHaTJFss1)4Q$-{`3O1#{jwiyjd=ZozZan+zw@%UZJt z59X=^jJ>yH5((976{zt2yaG=E!(WsGQitj3IOF{jLT9V0*#k#?7r|_f zEAy33WV>?>%#I>0F);n(jN5khnf%p@)>zz(ihs{9qKhQSg?0w)xRIKwoLgZ>)Zh*2 zljGxT&-)Z(tBhBS2RN3H;jnq+U{gAf3a-7v{w(MBvW1S=b|4e&o;{t|097iylBikDd=%kdVhY*q$U=WK z2#{E44W7=;t<0UyEGq^^Py`2Qj3kRvoWUuClj5>3_;5}1-n;I3Tpt|8JUaI&I%=&S z{Ax#n{5jC6Kc1&z9g3%@R;HB8_z2JNw;5Lf^~CoSpuKWGIgafP0pi*77IyE6co^#F zH9ISNrEZvFbDto5^oKbs8*j?e{h6|UTmQLa!mo3RiB?ZhrDSGaoBepx+{H;V1UDBb z%INN8x+qk+v#q6k<~-i5cN_p)q%e^ZGq{T)@{V3VkT9bC$Fk!M?Y-+h@a=vrYWf4Z zb3N^;mYyU_GJtXy^1XP;X%Tj;y4RL7VXd;)O>?TB=BwuY@vboy$z9HQ==+hPG?BeW_;=5R*1f&fzVNLzFmBXwo9zIt;-M{=A2NlqMnW**s z!|Sg)cZ5v<7+w5El9@bBUxI~PHg}-&k3qE+GU?!+v5E}MZKWl0EJWEluxl{KyjWpO z4=9fst(+uD`DmVIz%{^|GY zw3xEt{Aw_!`7$rH@-SwyXfudGNTiNdJ_q5K?sg}677dWP1VG+}&LhLh8qFLYt_&i0 zSXt$bl%Jcxwc|dc`EtR9qI;{c8nrkNv$lQB;Six_c#>t)VFqc41QcF%zRNWB=5-(1J%t=>%M&E@~G@V+gIVv%C;S$ zi=S{^|F_Qc{Y@&aL_fphp4OjYQ}EGfwRtW*jx!fm)j9FR?$nMzXECSwc;Ik+_eDZm zVp0>eh`l)~@JUm)2mZi%QjbVt3Cmk!=MwdFr&2wmZd_!up37{x~gxM;0#5%vlq#j zXavM_<%ws|H8zF{l27t5(&Zu%A+~)WsrG>^H7&Duw9d45#*l6&irUW=uZmBTVM;W*fiBT0GB&|*UKIqCy1An#Oo zkz7pLvOLGd&TMaTqQF$7Q(wrx4)58#&%|E+b(N-5EL>I3HeALl9y?ISo^F+E|5#;R2Ea$n}z-B_8ps*U1#SY9sSOM&AlIi z`zYFf8OB#HW-PpAt%UEb;{Cw&#Sr)m&>Izb+f~3j`r?jnUR`^M@L_yJR+$ zt_4iC$ogJ;?d;XqA?W6PAZ?0k>v}Hb1w;V&?ca=RnnRJg!82p)`DA3^F{C{eg{KD| z?$VSDWsoCAk4!9BqZyn(C=YEMihU`WU4rgMWfN>3G2e^q%Onf+;w|`Y`09yO@uOw# z#E$W_;0(cn-l^430`G2GaaVmSxunXIhXCRxKA0%7?XPnWTXkD$wvc$%SC1ANX=k(t zXcu;HdLRJ-pZgMVYIDB~M4g?j^-Senz#4AFCfj(stL^=yzcElNsb&QfVw6xORp||> z*6TSZ?&0cfgP5p;b&S#7dGwQl;~Reo^kTqGi!E^B0H=unr2xGoKQZ(l9ZbI+**)(; ztl}aEpq=tBDK%6!GO~zgnNK7HZ)C#DA4kW6OTLti1c9~@Xd1hv9L7?^>Tq#vp=Fv1 zymZ&U^c(Ik&5|k}XT&eB5ZSU6A#(vwH|G%wyO_tUv!qiRTGbO)u3tkYL{sW7@Fs9v zW_4*oed-T-2@jX*Af8n-N%e<#J~_QCcRbaqPE&$qPZuZL-`{U} zLQROa#-qUCUX2fb0b)L=uk)+UTM&7FP6Hc^A;1}z7)Dmbc*$D#JdB09!Xa0IX~QnH z=C{$%i)!PUmfC+#=d)AZE@4)7R~5B;wu(N#lrPJy6St9sv>TVpJ~d%$UN}Ns#|a5X zjzdlZt@CG^vzFA9X|djcR(HI{FNj*pWVNV0h^g}>0N2;;t2#ErOSw<$UVF}M-6!6+ zX5MtZ0&s(h@Sy=CFYK;jd=Jp_Zp$-H^LMe{uH(wiv*LRKGK}>;hnt?dO4n?NMt&-8 zUwNr3nAUjn#Hu5n&4>hTinv64Jl^n%JW_Eq^-XJFV~S;I8R0)P!k#Bs*0Z z-B>k??>74sarzbk^zm-@nsEH}l1iCJU3)wDDRLYY21s&Rb1=pFmu!z19CD7YvLDX# zzN++^FJ}M+YpA$7tPkS#sKbHv1;O5WOps-$33HOTZf)UWveU93`%Q%9-e3H)u~@yE zPfilsn`{XBoA)e`aa}s^=sf3O->L68$9~Ce!+O`|gQ{n@yKp5`txFWFa&d7Irb1>8 z-JQ#|q{cQfJM$?!F{0<~^)Ivu*F8i|f)_q8?+k9B#)}risC8lv_nra;IWB!M<(R=%W)@g_N6@iSm=f;rZI@Xr78jA^JWe`)*m zol)s>reuYJ0tuuVL=^_RT- z^(1(_K$5t@)qBDorIJtGTn~+&yJ~F)z~qE%m0#i^Ykd=s19k{#UY992UcED-nL(fo z>*Q`{IU-0HT;C7lc{e69#qdNN)$teB$0e*Q2sDF@9U+iMaduocL8{i%T0d zVWq7+rj=|VkxE-{55AGWy4JpC`?MBt;L>uhjX4BUrcaWR6G_pRK_r*PyHL-@crskN zE4`YIO3A5|xa*w$rrfrdweBahAdgAX{QO#tC_`Ty<-^g3`KoA=p+L&@wPB}8>d8Az z0mr|L{rf7{&Mxe)Vek^w9G&?(pnEtn`b)7UJc1_i*AXdRvFMwSAdvHb${~({m)qT2 znWHZd{5q8ozLiGW4B+6Id>CJ!prEVdXG+Et%TZ|#vK~5#JhLEI4%rn94H|C14gQX! zrE+p7!V*#H$FqR$ro)WTa*yW)*gH0d$;g=Pxy8_0?YNfVBF`~EwSXeB(Ooe`Rw%~X z=%U2tpZk}qXimXm^h~hf?>_&_@fZa)nq^l5cx9}(L%XA1Ha#I{x}}P`UHXR=_I|z^ zcTJj-b<=v574{b)MHQr)3M>Y0`qh~A!v_hvy|LYeH4xh47ZUG(x( zZ}4zJp=9va`>%FA5cNFRtKzvy?@pHauX>(Pdsz?RTi6xG6=%)!`W@SO7mtVe;+Ot? zZPybwfbYzaSQF413eqZ>sP^-(`(Eq)k5N^PIPw5c$!12!xc1zjhVmQ#NgcRtq-`tJ z(j8XQ@9yRvma6;pAWO`__O&X_G1n`5<>D0TsqY)`y{*w3e3SXw^ArFCI%Nn@xF@Y- zc&tlFRT9@c`?(>qjj%^!!JJ}`g?nYs4*8)@d#RbtOaBCY6d6X7)mAr>?+i?*EJ;Le z**PqRRNv8WrSxc)g;+K{HE7?!a3F^hH=}A#iwel* z1Eu%3T|k|K+V=^_C?%NOn?X3`<_yP@k2mNL$H(M$*G^(|eh+a%1Uo$QY-AqbgSO9G zT&%~UAkPeTyUpektnrS_)`HK9CHU_PRKseHwA;j}3=BRLaozjzeSJK{x|B!6xp*bg z9oSWbR6YLWedz1kZj$ErhmZ?FcYl}BmIGN-oIK?SEN6nubJa&JrN9DP9&0EEi#gvXrH!O;v)5{*U;8d+c$^VLtM2Op`D!Ab~i zT#7ffxEUlSPEO*@_dU{-?1eIPs(8tO;(L=ZU~jkk*7RoE!yh+CxN8@&oY#Yj!os(DpX*>N4TZy9Wb7b*ldlQbt*Fi$Wy0;XbuBf@* zn=tnYmbY%cXZE021M;A93nL}bieE7O^Ne(|9}SN-D`g}%4_$$V!@DJ=Ur*i(q?d*U z;~%=#A9t4gR{X$TP)8K13)zC()&+k8)%%@Qsqadv%<)6+-tc`}E=jLy5hT}M43R1A zBpf9)5&qm*8j*Zz^AKHo7R2EmCGkFDvTMlhVcmA?E;~Q+7%vL>rKcOShYx?%b*=9$fhpTL;{pr8K z9yZ0J;x=)6Pg($(#p^;1iwyZ$gs$}WG_y*M#~P8jwza^?%+^=yG-8LTKU6yP7nGeW z`*{ZYSNH6U&pDOYF_iov59q7MtVz@V^(?S4z#&VyBkbDUPYa)9 zkY9tJN;miV%LkeU^6Tyge5eBT%K^SPKW?t9Cd0)Wrly)5ce_7cL}>TwiWi*V4Zq}$ z!<%ZdR;AvTr#}>DWE?iU<{U3e5$Ah4I){=S=9BIdv$f)}7HZ>T=?1&8s9dmw#BzHF zA3;D+`mTuryXU>pr?k-gE-b7L4B+9#PZjkQWIyb>)CWmKdo;`uQq3D0cOcU5$})Mn zU!Alg%L_2S#0hVySRcE>A?S~UT2z|FHAlCgMIEZ1vxwCXFx9)7&uva=#iEZbJI7j2 zFar(FG_|KMtFvgg`I}Ov^qjfNeJaKmOGYX#DOeN6F!w*Zb(+U-Z{`VWmZMzhl`I2i z)(Enl6^M`*LkqpQqPmN4E@m^Re*f|3%x??PT-Y5GE*F+MDse-9Iu?sKGn+4N2<>Aj zy1}NRTSCR<4T8vjWu7iluM#amI=l&YWD+XMvo2;#;O;qrBE-j~h2rlrI(~w`&}n%z zM8hT4*Kaboz`5x}))=?AUv@Mmi%#Cq!oWMx*bez(0!_AF|2JV{DSI5O2@c!$cCqQ8aFKSSKA$05Zlz>|fSF;E7#K`wP}pVOF6h>wdh@Qn^Mdgxyff&5Wfv zRGe z5@u#iIUaO}G97l$3(AVo35Ih1MHDswuOj08*aIA8SN1MNxEzm8U;F_@yYqLhkBO+5*o?etOoJVr?gn#(RoTp4c;v;C`*UkHW z!g%vB0W!HTdD_Um1Fd`B{GW|t&H5LP{!xWTP;(phnMWQ%*S5Eax=uSX*2eZob4kvQ z*%B`w7xqOflaY!A`Z_lEA|jaxsm{rO24m*_V&kQz0AK~5ZsK!5k+Y{wzPQTP<&wmV zf&*}AZziDwd>b#L%h4H$6*ujqt3||FOyx}VMowHtgcPMC>cv}1iMP#LO_3s6{L;NhMA##GAei4E zvU73&S1kUY`ZWW~Bcb!|Zg>XJ6V8Hh-L-)8v!~{^+`$@2&`l0w%%bRb;)%-o-b>~o z{z?N6vffkUf1p+kixDIvJK30zN0fLsh74HKjoyJD)@*Qjtt6nm6BR!0hxs~A@5&3b z_B*2U+cPgTxw=+&#gp@eV-6UYJ6?MX!nsRg8-KG`#EZ=0>gevf%LkTMko+L->F??~ zFj6qc04gpZsn_T-%@ivFiGLT@neXTBd*byj)Nbf*WCc3EH#qIMN_ux^3XX(Y=rkpm z|LvylbcmL6{O7Mg2gX)z{&irSXV-g7@%k>ss~2JhoeN&X)EZEkLoL4afi&&vsf;;; zO>U3Jx0^`Is?UTu{g@S#C3uIxpvvWl@eS|2F?ZsWhs=GMFy-i22LkkVzATnbynzke z9V_`Y(ItNV88)ry1A#TF`@1XN0jhRBx){E$hi zUM)JR-St~8p)TVfe1XeIi@XtK_1^c?*Y7XIVwmm{r0^JTdx?8={0S=VMDj3Mxwt-0 z<=kgxg959@@m=n#6RsH%oXNxID6hcz6DT5-5PSC6NJkGB`Ax+scd$?s>j{wH9jkj# z=yTyfvteObXvAMyNk~0*9zV?<=xiHP+puJCy&&(XUz6=9Qa`$fYI6V`Y*}Lw6=7U? z2>-BsjphXN8zcU%Tvb0R3oSh&$D~GqofvUY5KRZy;9RyLvfys!gnsyTE6x2gtt!ge z>KN+Cz<*FS5>-fB9)c7zEk^sN-Q*gjD{5u^Dc9MQpxPD|JE*N#2U~reePnOQD(QGeZRozr0Qln(eFhP<00{KaNiPCXC zTIt6}uXEwK;dkqY9iL3@b*h!mkL0c=)T?uj^uxB<3Z!2Cm&Rv?ORZWfa-V# zmFsboS@2MICJ3<7UrA~=yL&pi)e?~r)!)RL{*$j~N8+AkTyL{>=$PTi8A%w4xrq<* zToBE(%9zPypL<8^o$14?4n*oRh)aGc*FognWWMKY$^9CpCGRuuF9?WG0-ULJ z+&pe##7XNK%if#AS>+50ELSq84{2v8ThNPn13LB?V>D^NVX-gQg;0mpl_b9~89OS~ zBQcrVrf^@1#O%V&TFKa9{~g)-Af;-L_?{{(+p}6DQ`Y$Wq4{T_7wpkTkL15HqLqwV zW@07E5K6cN&-qAUBYx%1hwr}&Pwo_%p@z-QYL7Svly&Pn_ouL=4`x@A(ig?aO);@& zInrP}3y59zqLP1tNOz^I*=m1#y!)P=eAaege#jx6!&UoIVZVqJ{n+~8C}#sp*Uc3V zLS199#vzN**aM$OFN-EE`5c?;f1CMJhb13B`7t@)hc8~aBk-N%uy-ni6q2R`QZrw}z+Zzm_3i`EE?3A8#8CRT>pJJmA!F3KT_W;Uy?YgDNP`;K_ z7w^^VmH|zTNGVb2HU%zhpjAG$RtSLID9_Vyu4p(wp}g+Bc{#OgBbu~rtjx@IL#B+f zh*7ZpWb^K*aKdaQweSc+>GHy6Jgm$PM2~VwFwYS9Mi6|EHq4)n6%ZHLHC4ThB#5va zMEkOd)R`}y%wku!n`d}VeQt1J$G6*7vDe3FC(q;YzL~z$raz7V5ggF?mZ;s)o^zx6Ya#Y&qMcEFa5gC&;=NbXWWgQF3Lf>_tqzRp647IX0L z(H19-O+eWjc!%Im>4mb{`n1Sucl7#>!_-33sF!#zyS9c1D9!_DND2ck{+B{%CN@tX z8O!uz*#=NEbFD!J4Beb2gd}z=_EZIp!JS*{;>@mEiVzJq69N4nrMoyO64=_(^d1)r zM-WEcOcqL!?Ly9#_p?cz77m`Z@VNrJH`gHanpeK zGhxzsg^l@x%a6DQuiJHFZTbT$%*S|Ku#xFdZe-yO22s*1w$^suK3%A!-n)p0OHl}9 z5sbyK6<1m4c+|gi9REEhC*yMC_^fv&L-7+|wxgoL^1}?2VC7V^h$mSA|2RBqX?GOJ ziO@?;e}Q~&VnVvd&eLY5cc_yOs0|BO1NEp1D!FSdf9lqKOL#s-SEPBmOD#BI&U}7E zHw7Lc|DFiS`)Zw=gH^ftTH+?J#$!1qGSKugrJ!%ckbxkS*k1?$%7t9?2uzx(62XM^ zLM+~9yhnqeoZbwoXalPc)Y6LH`-d+#5d955cu4r_z=*tG=a2v|_Iq#`rt~qk|Fdx?>lsC-i+S=j$wRI40`-q_u`dqCyD-QJ= zvulwNE1QS~t92&E-joviq_+%E`MIpIDP8U+G0$3Y+_Nk}j*0E`8I$FXP>yEr+>9UH zJTCP4tUUirE{+gXf(FfRRe61g*&25oa@`$KRLH9L*!RFhw+cQ(t3n}>Y`?o(Qjdb0)mztk)xD(s`wGw@ z^8(rI+#0p04DUujjt_d>IQV3AwoZy0_VAm)qTR=ntX7((Z`jAP|3yx`ds7brb8|s^ zyuo7Xm%Bgclk0sZ5riaP9$61b@5^`SJnKBGF(=B@4%m8^;IKCWLq#Gs|K3HZr>C4x zQNef<%SCeC2QS?0QGP{mG0gaz{APg8WoUg!gY@9r;c%0T%0Ua%*;gj^BDv{R+m@c< z8JS8ZGT|*-i1#3$Ez7S%e?F_q{mCT3CpygXf-OL4TdJwLNLi z9BXlX$)j#XlzYOl0>)O1 zXX1B_?m2CVk3xf0CH`Q5v%x z=b5s913}-69D(DF=c% z#gM}t)5n)l`~`B0X2sD%v+U$)xq{V~1HzTB;Hxj;#w8?Z>-4wD=DNI!BGs2FZ^WS% zUnLV)mE^P0Q<^&R9k}v_D<#`AACoa>n5j&m`5~vPtG8fFpXf1B=h_BTDr5A7F`dKisZ280d zh=X3-ui=9GQnV%;GiREhWBe?WogOHte80q;J$+bb|Lo5%(yQs=8@1PB8{ww4iv}Uu zlZs;yQau#%8Yl*UXhW5Cro-M^mK7utLL!QJmN@J=b0?<>Uz8Ule`O z`$((f<&AgX^X100`OH**x_-jdBo58YfR<29{d&Z!zb)~ch#tBC?bY13hgUK$OdNUq z?N?4cP8%rqCQzjfwA)Rgr}{v>bn5v{JAZ_{oXlm&L+LHZw-WfVE4IqhzWr2RDA*w| z%B}0Y@P+#DWvrPny>jbI6LzeeXQ#=aKq^&5w7dIVim>Zva-#DaDcirSoVT3EzE}~P z(D9!Sg9?TSR|3s9+gE!Qi@yG?4qFP$z$cYVUqDJ9xU+LQePDfD(J|{u%WM)LC`0`* z+vFGoBH93x#Ur;6N6ZiROz zG}8p_aF`=`6E44hqL^=a0jZV<@e^`Oa=}0K2xT}N!ANvHN?25~>6t#Li7u^d`d#1` zXO!HjS5da+?cbe#HPoipJy&Uersh!z7-Kfmldg{M2rMu0FYq(kRp$dP6;%a4Jt8ii z-i`7oKg2ajX7E!TAZQk1%>68%!GAMnJCOY^S+PaDB9cCyc5+7|>MwEQh3L6Q58_nv zQo+}KA-zikt}oaPP~@(3Lc39SrQJ;0dZ!$T2^=JSERWTEm`i~=Vs3GH5&=FT-&hqq z4pL8BW?MAH+oCmsykQSH8m8^{|Amt{Ql+>pQe(E2>46^$o2syLjkGVePIO;#qKDCn z_VRSQ+-{cL{my@P-S1bs5;uw7kBBuA{`2ovW78FeS?!%{X|D>y3hPS-ulhYlPU2lY z>>rNJoyuOglECKZIQOW6qIIJg17%tuIV4PA_Y9n?h@|#Y9hCBH?gbCVe2RxX>xk62 z(?`6#%1#2a7+2?;b~7^YAP7d-=fTVDqwi5PaOl7UmigXtyMn}wI?x=Oq+o~^aSVu~9aZeOA;Fqy-$(Qb#C zJw!c~v(z)bri1OZb-vR7fB04kVu2ZI@DxKRo~jz!@`Yx!?MW!xE11k{wxDxtKgD(R z-iD2e-3E&G6B3>&g-3R;kGnpCWW%N#`;}APIbLL{pV|_;zqr|Gs|Ze}1;q-eqRk{M ze~KHV>wcnf;6EkYF^z6&TOKXOwHQ&C^U$I`?HW%- zW^usiA{i*1{+LADMe%Bm3>2F$_42wfjJktBJI@2IR8Eejzzk&*^N|oeu zt%(IlZL*#tlMnO@H<;n;V|V);b#+#8gc5%z3GkWpxGlRYwNh#-m+wl22++2G2JG;X zZ=wQ;{CU=D4&NoFUJ#fTzZzRzC-Jd81pvB=Qs{!p876!h9qnt&_f2z;rm{C;E98h` zso@HL1xMob5`&B$s4CJCvT)yg9N;g6_=O$Z4|K*1S+m}LTKGwrcTlbDU-_N6Ng#Fg z6U{~F+Ac>1Zcp$~3Wt;QgD>IfJRxK6oB}{aoasC>>FYq31Q#dXC=b3n;{i{OkhpLC zQig_Jd;m!a^paG#|W%^9)a8y6W*Dwv+ zs651k_Aus1`)A)E=?LnB)vd(t zc74>kML+O|SKmb(tE_WOoHUzp0I8~50?V%XNQl!ay zfT0IRJ?Og4(w|{~zqV zbx>6Q`!}qJ0wU6&gmjm*bhm)CQ{eINXM)sKFE zGtWQI+|NAs+%r4O&MfD=-|wqlSDfoQ?l{f8oH&WhgPa63;9i=;XzC!dEhF2$*fu4< z#1>-WARwV&=&@7B1{6h=yy9GdXNE8|Mx6EzC%=ElT@of(BW`j>NiBO6R#=$Uj_k)u<y&E+hRMHPk)c*B>xPOViTRcv1MyEiTzVC1^K-My8z%g@|C z7B=ZncV1F{^)lK#s3lReoXV#Uf^3~px88PMLA+qlybCHGamtyDSxRdumbKi4Z+VcX zSLIN$zll3gXB(#4q*q1~3h}p1cQ+*ch7aYR%r0gvh40@w$!ip z*4euVMshV$Z*Lh!yHfhne(Bsd+o>(W`>;#0=K>vzcAZcQBjcPd1j0{7{4hc}MjG~* z@03X5S#jDm9u%{^u@AJy>*H<)qi;GcGmO>bAitontdCjvh$|K=_jDUy(fxpnWt84o zU7HqOLw#vo*E_>wWdUk|&&@17(4^Fr12vS4hYTqmAMHl~&Ge_Y;HmO@yN*+pT?=bQ zJqGdi`b8P6CeI};g}=lKKi_AZ?$s=wU^WesccQi~6G|}XBq$@mYqZX}gx<`np zE=kILfAx*MQvp#k0S{i?>~UYe6LM_gIv1W4ixX3ID39Md(4gCHSVEu zD_^&es6ce=M%_D>UGZSQA^WiPEM9v@-c97Ol^;6#^$vhCNZA7LbOGOCdgAtpYHEsJ z>Jf_O{?i-w<3vfRHkm-b@&=2wNMD0%jg^1>Wu52!?pc`Q%S8I#ASRb^E~p*GWC8xd zJXMM?Fn?e)Se^lp@ute?2#u-@qu2TTt;@^H$(ou^w0!oLWwbrX)1N%rmi_+nQAErW zu8ca4R%%QmjV2s=X7Z%tN0aRYwafy+t+P$FJ7dAHhkx>c( z<3vWZF5N`b@i7^$SM;GMJ@ej)661Uh!G%>59^;l|iyY$(PO^_P?Qrrv1lwKvwOXp2 z$Lk66b6c|gPyP2Ko)eLF3Ywq3QE_6~@1km-i*yl}MVlMz`oNffpv^7%InG_a(=o|L zg?*xDV)82XEElb}`)oZ4({!0=HDlxW%ze*6wwa+wo`h79PdtAVvV=?#UuGmjnMtBh zF*}s5e3=B!GhcpE(G$Q(IQV*}c4wwl&nl3*Ca-D4vqAonhq~aMe*tR@FLiQ5Z4R;bE)N8@_Au#T_xS!Yf4lZ8F_tb zVZon#1Mc@JKvtD0mO3uc_PB@29J%vHE37W(33mq)FjiQTDnfv+F?rcf%%>?WM>9h^ z)<%4Uqx$W!wO3=0pqNXmmX8H)bIw~-kj8qy6+rGtZ>Swixf-YdS}zQ&fcCqW>3OPD z8#nO3A!`}Ux`5-RJle?k4nFB6oCQ2$mZKGO zmS3j5phXj_w6I9)dG#d5Kc;W5rCGd*o|-z^$5&zLW?I3CAIZoMnsb)S#BR=5Ipf6w0`>L zG!-0eB9cbUvB>g8epJz~I5mbB-i?ia z_RHH#>I2%OY{m08@LF~{BXQ@r0wm7A9NSMiV>XTI9OqylcO>2bniaKf{Ag$EutPd& zFQ_S{VeoaLvB@GE^)iZ69NoW_E{;VngT&#lID7wAj`dSRiIP~sM{9Cf8np!W6-zdH zp~KAEgKf&jH-scq) zA&Y(@K@~;lp#JFb`lr#3nUb9HIWTazi_co&jgiW5&X4B7>-M`jK?R=ss~f~Q-Fn5M%M_!UMjxBhhra5-$2 z>Y7K~koQfaqoZN0mXq^}cPUh)=Edk4! zFZ5zhp;hD29v?Gvk~C(*rwI<@{b&3UG3(gd;#B``-2}dOq+CmT7gHn*0~PhN80P(q z_b^$bdHuQtWu4TjcX{7iRPtB0a}&3EueNs2b=0kW8%@c$ z^~gB6VuM))6ZP$le|<#zk%7Jv8f! z{IO2ElX9H13C5K@YQj$+aVB4P2nF+I4b0qf7tGW)Mfuk)f!m8d#0A<>v0Q*=s5s~P z1lC=r^1yXc0mlc)eD>c%hw!J1RBX%Wlvn!Ro1jb<9z6Yl}m3jzP&E(c+_ z;G{|2%|8|9$<+`3b~8r8>Z_}u}@a@DGxKD!yrB-S|9L}#PRXQB;C zk6+(c2LU}FK`%3zWsOT1E<7-D=r*dioP@$QsQFzGZ?`#T{vgH;)Fdx}94vLl05POx zzF!-DY8xAyQ&^|7S@)?1kE(%z0oQ)}o_aj4tej82&5FlM-BmdoX%X&-CUM4mWIZny z{WaA=anMsWv9=a3iIq>PCra#dg93J;8@aa(^pI1oYW7Z@bL@wAM{Sr`mt+0d_~0F zgt<>xL~qV~snv+rDfggcUKhfJ)37jur3eVO#ZcDGN?}nkZ!ydG%P1aOpQ5g=dmUXp zpUcV?v#j31xWD=M{~^S046gYI+t=WlXVRS3Jw41=%XuK*E1N;p9-u9GM{StVHagDv z9Rb@_l;?98O9OmrNjb70&uDPO;bm;xm88wd$?|tPKgtl~)#g><0#e&1Tr_*Wps=vd*zpV=gskv1be%l=2^D`9#3h z6jGaccV9=$oFydYaMv1}e93fPjKxR_-h4p%q$;eifw)ir%lt2k3o}L1=}Zzzl;P9X z&MQnDDWD(Zakr)FA#iE|y3Nb^fpH37x;s4d0jaH=d6ONuHx0F5>UOh{zFDD2#FKGZ zIRh!EzkVXdY<;Du`L+{t^KD)|cXa)+3f!O>hsdoipcAeGw)Ol z!=xJFw+pn^_An`{I=nHG`lxes;vA-$5fFxwL#1)wvB7EY;Q>as0_v3aG ztDBoLHlB~8DlBKWRP9@YbU3s&?GD#o@<(`xd$lnAx!!Uawd$C0V zhtaE@aw~zegGw_}lmaJ_s zysg-t5)Zgfr}FICWA2>EkKz*IG4!5>$4?_2Q#1kjTB}xJ%QaT?bQL6B&i$yz&^@-` zp54E2Hm+O7Y8%2-`|3|2y>Szh<_DbTUhD9CBlv(q(Wf5Ln*B0qVW-c>TeDKL7hC~= zp){+UQWGA^(Tut?1CKWE`GTh02RwPAXRZ^*s`VxFOs9OieabT7u@$os)%Q^vr!myu z9qEA05RCcZ+hnDqfkM6my~XL2=?ol#fh8rS^fX5~34~e@c=Tu$=<;Zclkl5S(LAkM?+J&?CbB0PM`1-<@2vhXN5C>4ua_arPQMF6 z$Br@AAS^Yi86D=G2rULCikzOF_3As>A1^;0UJOutxmf`z*$*t&DuB}eLGl|&tGw43 z2O+y29TB9WA?ZRbCG-86u`z9?Nml=df~S?{xmwvbh2E@+miJUq=49Bp~0E;i?$__ve38=6?%W6s7Q>6pa)^#fo%! zIy5PaTKBUh0x$=lpM?OO!&qK=tt*SE;r%x|*RihIX#sdrAsf7DS4U7^aUTivXZ$Wt zKFplY;RA@o^yNPKzXjy_``4&{96|t9@D;8NFFiSVxYN$K(g8tN=8~Zd15XyCzVkAM zIt#0JXl7R5Qe0{pr%BIqS?vGX0T7%3!np*@rm|rps3Zi9DQY{UdYIiy7WSBs?f`Pv z?}UUySsE$0&PpqzCrhnp{&pp~FX=dR_oF)2L3BMsRUF3QmA`P9a4X)g0>7 z97ZzH+iu=*Tg}kEJz{wCZ>e>;`$N?v0d(rU7yndDtnu*MRG8U#UIY3w^TBk|>48kB<1aBTOc}D=JEwvF6=b+)N#18U|DEOZ`c&TY?Ki!@}4s zOYJ~ffY~pl%8E!$CG*%nIx91`YP{cHC&#og>iqVV@IPLv_Re|#jXz=OCe~xBPc(FX zkcXtaae!49SWBD7BP51QC4HM7FLu~=U^uF)tJD#6TtVgsABHc|BJTa^hy!C$#IA9t z^BJ&#ZQi5oSi-U_px_F)nW>c-OUuhrfLjo~kguuM337Ml-yW;)wk8JuH3#L!P30dU zS4@s<6E6kyj*!!=8Z{++b=K<>=n^6KZBH{#{Xr&JuHI3M45bko7Hw9L2grzVF-@KgpZlMlC2 zjwh()`5nHBNB;K!mV)abgS7K59r$+l?GW8(@SZpo%a|woM|+vTP@Mh^M<%o38hkEW z7byDSTDt^2)25$4_5WbGWB>~B$KtCZ%mo+rnXS9Cm6BD1sG;z7lz`mcW?I2C-sZp1 z{06EE$&WZhPRibq^MNdFeHXr}A`-MiBAvjIR8gY?NeA0*$k?J(p1 ztU_Yu&+qg8OUHD8fjk8J1*T1vD)qFCS-gq3y6ZUj4;8QB`-5 z{-!RB8cC=0r$c7;!y%(}`=1;#Tqu0@gnl^BAmBc!knH+HGj$sN*mNqxAv_s|-1fu! zy6%`{Lh3tH|1FgC!Ea-eu%P}bcDC1n*yujEKG_9oAZMPbU~SE6HCgU2e6>Oa1YWs> zi}-&)3~*Ax*lUc8yM|&hD*NLOb!m#mG$18cw=k0w7iU7jt$zD&8O~GyI3x}Qa_2hl zQU1$}h*n=4GAx1r3q1eZf#?4Xu-Ayk&H+`jOR3+_K1v)>aXS9MA;5Yc8OccO6W|u( z5v#>i?2J8a9aQaH2!C?tr*6GP`QhrOU#E=*oAQwAm{cr9$#1*6=j&iDFZC5q>7j=` ztI*)ShfZU&pPo#|!La(&;KTh#53!{r9+66!t($R~eSgBAs8w<*KlC6VdDGud)vp0E zJuql;V0u)%=+p^ITS891xImoEE97P?sh;Kz(m?ur%}v!C7^dyde50!zZ`B|4Gh>=R zO!(!7Ka0Iaw9g*GsI$Nz4>kM>Pg(7H>)S>pE{u6YvN=*m=Dg&t_(APE^#Z1Y6_Wg} z9N9VgosJ$KA($9BYKg$y7sJue@mi-r-m|E!*kolg;cW+s6OH|JIxR@%bUaOI-|?ov z+XP-SDSNNegiF2sM46Wl2CA?f--ni2sND%F5r|{0)P09ZL-$GB>x%_j_jp6Y6299r z3Db!IN04Od$V-K1VwyFqy3(<8^ALh))>6Ek3dki%mE zUGA4a756g9*wx;^a@q$xUL)wbNH7r>W8`{KBcAVPBM!!JJHO0k;Du8Q9h}Powa#7{ zvg|rgqKtZ$sfgEbaMf4Qnlv|VU@V%8#`VM&HAUh+xr$57QxmI3487;75&n>*OQ~(v zG+`l|EDyOe)6>l;eR3bgU$&Hy=m)gt(A}NA<4CNsYhj)BF^6&Esd91$4G1K11O=+` zKs@ar(R-C^)0e2wZBb03;2M`L*Vz7aZQ90qfpF7ATNT6eZP zI_R>2=ilWl_k>=^ix#vrKO$3zm{;kzt*Q6Y@x!Yi3gUSUKv}aG70-QW* zU^}Ac?rO6!u&%08?Do*(xElq3wdKwA9KL@(tblvwh!$l*?3xa%UuxQMI6Y+0fx4kJ zq+~q^wU2r&tqKe@z!^OIs((w4zm2mOGdsBJ9FDFcN%^ zzuS5u^jrS|am%(T3Bh-(y%j$#ZPse-O6!?W>-u>mdA``EQCVS*f|B07*q+cNrOu!M zrQ}xx$5yX0_@xlb?%1D8CJ(h|dWwl~la*zm_Ye~%TEiwxyP$JCN*bt<)RdAZlI z8U+j4gKJ%|4YkS~`PNT)wM@?xAZ)#IyDl^}vmXoCJbIHyj3bUVg?S7spXyGz#o@B} zTyJ~Rt}uzlE{dN-;l3AdQu%OIVOc2=ChPFs`{{zvg<8&1zG(7JGqTayn5ZN{mgKW= zaBp6zfAynO3yxHHMex(?Sve0qKI4l%th^@ht@v%*V*|O44%^%Y1=6GOv*kB#sIjt9e?x6^Fkgk=sv%UgTjkLXhh)4o$`e*%q_#W=m5 zXyt?}CA^uQ8FDO_@+Ms<#ENPV57|l|U*F!*E#*HdR7oZvQ_PC1w9Xa_A>Jn zSr`>G|2RiQ!d#WFtItj~z7jND5kf$!SggxRrsJoT#onEu+R?5@)IbrDVm9N~bcrDq zepCW}wUCA6i&S)cbcElpe!+>TSCATOtKjB_5&P zS=`c__b&9cQ|y9;=XPhG3$N1mP!}q2VBS-dn-ZTSg&MkfY__4+WLsP15n+8I95+}# z-~I%2>B3%*-FwJ^vB5Q(Vk!#}O^X^_FG$Nc(AKsY%md{^)q98F&$xLeBBN*K|tvZ5t zMf%F_7-)llB67HJw7w3P5xjTjOZZTxkqfd08q7pR$3@d*JwGFXM`IQjJD2Hso92F= zGqo-Av`DcfZKb5ZG3A&)}fx5gWtP1*EY$7vsHX)>D_=L zgmf(&c$)Bad%hjrj>^;g1_Cz~|M(e%!ONcH}Uhf7T{e zAsjkqL1|r8b6BYDTR4pt-QIM0iGMX#eP}+#5)@mVFzhOyztSP(s=d$d=6PV8NL*3o_&nQ`9>v3nhjz;v{LX#IT877uVZMXru-u^<*@2;`t#huP zhdo*1b~1>-XD<030!HgN&MR#29i}&WCg^3T_|8_glRN~);$eoosvk1yf~NDk17BBp z9M4+7k7Xc0w0TVV&63QcD^drXx$|&qqYehcE^U6IztRr0VmQohj-|ACxQtYg%8xx% zZgDA`9dFc}{cNuZ%77)e>v`JGr9-k?HfBmKjczI<@r4R_OpmcHx&y7XRd19{J-sKo zyP6n_+tsumD7gBdyg!DCMzHE20;Lc$%lYb8Lz_#E;s?f-q?nn!<5D2KqY$a71pz4; zhN7lQ>dY$^xLTBS_ZnGB^Z6oVhD}amjPPgRI4Ag{n0Py1w#j*GuvbO)4XTI86|qhg zg0QBh)lm==wtSr~=$~b}e6<-&s7QKNk`8YlEj1gSSWwJ(Md4YSH-&wRLopPU=|iS| zmvwXKw;;v3SLIPw#=8@Wvs)r`dcl)5RA7rYs-NO?D%ERe+tvDjfzBht=~6jWqCv~u z&#CY14?7hOr$d9{zHFL_ojJ%pqYokFkh5Cc7-BvB2sBu|+S~56{Tiw%u*mnZ9{zfs zNiM};rNvnF^%t=_q$Hh&7@KN@DIBt=V-}M=t}+k&clEoZbls0GBat_#QeqV(k4&8? zoE-Y&wx`xNYYbYowETAQZ8g?0zI?yDaf5?IPEt($(#MSGez0%*GF#4$%GnNCh_-8&cEaa&Loo6 ziR)I_l>D#~GWY66i<3(>YV3wUGHVcGw{DkY> z>I0*=tyksK8RFlWcYJ(kUWwV@7B^C$YgEv5STAfW=fBI-qb~G1#GcS{(Dy)GnE<*l zBancbFL%70NXSxA4I}E6a>tkLs_0@W3?hK~Z!_I`$nlBYS3jAsq_fn}HX9w>b> z@kyDo%#fB7>xJj%QY4sGJXMBMvxv+8bc2|!=QXT%R+ABH%?tgqvA5~2%NDnbfU-pv zMnINe3DT0gy%X=Sc6H=rDduRrcDZ>ozZX=(FA`^(TA;Xb-A3US zPq|T{!>!&``*b!l=yiSUlD-Hn>C(-B^v<$MoP7&F9W9(AV zbv>*_s(SG~ZSkgz1=uOfU>b(e=RG|vwpF}rImDjncK`FX=Dx0`IQUK%YJL zxZ)`%=rtdeHqwh-(u`c{D6SeDC4~>C>SIIs+lSnG-V49e5A6or(f>>GE?V2Q1|G%7`@<1Q=}F6 z+%>zN=R*&Si>qes=%FA@HxS@x?ew|<=dPi;L;W(0ddJqG*8wj0+5qVH0taR<*(M!~ z7PA`at-Up3qL0Z=wk^k_71y_Qj9t{5**34K+Z--4xw3XU>0S*IEOSC3Yj1DB8Sfr? zp5SLYkU?-F7k0{`{e5S0_4LDxk}ep%lwiZE+rYxU?gYIsG2blHTE9fSKEZ0Wsz7HL zd4D;#@N<&!_cP4u6v?h)R+Chtnbr91eM2zK&0+SGyw>7-3zn0~E*%9YB#Q!_a>0;s z=&Q+dFL!4okd*7L*Lj>D7OL);9Ql?&dR6*b;TiONvPNUKJjgL)hrBXS;VAE76a!*W zUu0EZspVc+p%GN23n>gl_jy}D`9hrB@}~Il)GBX#QW9?Do7hz#%3kG!#3jY^arPc` zouSp8uf)5qG~5^Ia&5KOJ=WTbRs*>^K=;B-KF}f_*%(u#S{qZ0#^dDcCJb!GRc3%W)+V>)!{o;-Z@Vay7D0Ov9 z^s59%WGvAeH<7VWt8O%ozCuA^Kpbyqlk;|0O~AmSaAG95%Q|QHAPOH` zn>eZKc?G*OuUM7bJX5<DxSw`DxcDY2(;4l78STY)Kvz;+_jJc|?Kt%QvcONGe!3=V_8kTUW9K(QJ=R5O z<0Q99FqsMMs#&;9 zcfREeXRp#bwr?jVEAiiFuq%T%;5Y2Q z4yh-O$HhI_O&Y%7XFABt=x$LomR_gMvsmN9P0%OnBSAUizmo4QqQinxUdQXBy3R zT!c;I^Gj=;!inhzyQ#H=+z%r=I`m5%zP(zX%uc;W%+d4^E!64N=l9}56Ypsd=1~sf zDcXyz0vUEhqOs~*SQkT&1-TmX@9{Qj#T^@9f1a)Gb=x@A#I=)m*5XUktlZ@kt18re z3t_MP>e)Jllppl2Lqot>PQuVPx3rcss(7X;7s7HEWQh!7*=;jxZCj`F1ZjGeia+u= z^@cGXKX(>7LQkHvD2`9AigP7{c^XSER(A5VF-R$9}@}Kg#FCZV3npo@d%J$bE#}#I*Sg~+=8B2pvc*?DszpGZmBLpV-ndd$96=my3g98Z@#^a941yU2RukIdj zKJNExiI}d9m$@nV$e?(YbIBSuZDepzmH}1T?_T?I>>6_N@T2N8@>`0o{CmSk#vRi~DPlJQ0O~2QbvA%7_5bsduHhhX&fXTVc znf`y^{bpd|QyA&ce2h8p-md;E=h}B+%I}+1b{| zPq)XP%yVD|H8b@5(zNA$pQMm=E|EBw!y2j`;uRCZX*+?f6apRY+DT%AC&pJdOm}uo z(S0-#WFz7hKO8a8&+B3-ha`+UI7&~`b(bdBP+QnBWxqLSUGg!o+v!VNA;dmWTI;`X zvnURAs4%eWLR}**-Hn=3s_xOUxv(ng^4J_63DBM#feB0p?+3DrIT$v{4>yYW*9Z4*p>!1c-|D{CmMj5T z9RR78aa&XgU?=J-yQc`u*c&S9{C5sNg*5;I?_dGPExesdux$&lihx@#ENgmjiqBE>kqjqgYI|l((+|p za&YQQ^`oX1R)AN(WGn|q^+cbfdQtaYt&i6eR`|e8_j+3O;jPtJi!z|8`zN zrUPFjc|N*qQn2Bo^UMbO;_30g_+e`3m~(G;MET0mb1Oxs*+@5VXM(H=%fK?3E)1&L<(NFK9Vy z?R(ge9MRWoWm2f=NbM6AFDEA1Ium!h5A?~(@WCFVZCo~e5dmaO*{Lvn&WWqQx+C7J zi+i8>*t%t|5nYtr3b;K%ZQz^*c2qi+?6ViAVUSoAs_$(@9m#g97Y*SF_fu{ve#xs+ zrbB#JZ2j;LAIRT|K1D*F{aD2>{Bdrw7;~0#F6OQ9tb2wlsg|`8o$E#Y=+cE(-J-@Y z`>+Hou0`OVAAoP3SmX$ut=m2jsi%SBKhE;=4>KATm_^K-9WdY@ z@%;aN4eE0o;3A))SHPLs8Segv!v8ooU#LZ4<;c0;fNNi=;{9tORPq;cfY_m_22mh% zT0YbN2e<#hiLa3WdgFX1kbsrHms9z@JK)<}nwvfl8d;Wi|IqfI|NqY(6##Tm2-msS zI7&$?_2;=_0fxkqmp}M_I9Op|USY0vd4S>{+ac%oj-8vNKXP>Jky9Y-3fpgz)?j-MJ6EgT)@X>zvk^+qTr-@w4imDB*WUUE&+=+c}z^LYCrOZw#v=%cr2ZTm?-@4PjAERKjS;11A z)KUBo0a{q*q?InH5#PJV9MXxwXUCg#+S=oa0;MH5%rS#MMd3fx$H6guWMO4#8Q#6T ztfUf*_|6~?3&9N?{D&+5p_=#WyIA1u^_s>?1y4`Y7TzFiko(tYzdv}}LeXcJZ||$F zp~+A4c!3z@bBg%?a3gBqMl1_B|Nmg}|FP2h|JA{~amT6)#TlKqqBlCGRdv-^jvSA? zYo%FpJiL>X_#y!xe}BJL-ZN}xp#GD|8H(=Zwem*)rNBrOea}E_y1cQS$NSyL)1rqt z^+A2)Q~4m!y3nW8*Q-loOjRL~s8FjN9z-x`jr^6AxqCIcJ8G!@L)$cP(M zboQ_%e>LG4&(y(*o1aW^vqs|9n}&4p_3=u0O7`;!z_9$cQ4-Zbx75>G2;Q$D?8kFL zt0_WBrL=y)ZE-&!^zuGEtNh&%T`fbyAFANUtp8Yq!LeM+G}cT~VajGPCo&Sp#70HM z4r?NZqevflwrcDN+Am8;{sM`3q#%k^w~`yA5nC1vyR#);O~QnvX#0f$=Xgz@-1i-! zE(32J7Ox!+xLIRC4}b-4d;_^E7m6CDTjW`jm%{m%m9vwmp0cgYbI&%eC;WoEVu-Zs~1y&BrqN2&tvYEYrBG*3W>Xt8xp zz`D!yp@4C8FsV>YW|~R?3#fX4&-^4%qr_5b&3ewPkqgm)736sr7blQyylf1~@8egRitb??NlY zA)WT^F`QEx!oSIb^&aq=q~Cmb`NN|baANnwfbNBk_0((}m=sjv2-8TByDmv(&`4ORH zBAS=W0jrhPnq8A1=I8WR2LXhJ!o8ii*7e)c>(PnCdHX4~J8|2Sl>rrt+7I~)p0g%; z+P37vr?_P*tfvWzdp9wBAfpQ^BQmfMoWSPaQiMbkzA@*%&p_8^@8!btQVpY?Q2&Y0 zyj`UBSD<1?%?7d03H-1KkFyz#^Q&;obcgTQwGH`-pE>PJF_3v3%9++4b=*Wzig2C@ zN*c^Aw9`$E+p_YpDe+%q7BOwqdg!q9JnrlfxaDLC^OtA?jyO6XOF`5&0ts`qyPi?Y z7nn2mxL@tXDZHLYlL@HMg=}%UMuK5sl~hh)kJ#mStQf<_R*&v9j#})|Z=%0~h3pUT z-TTEda^Kskq~I|AQ-S@>)<>qLDEqa`3SwenYqfcK=Hn%<_ND^hJ>t+ZftM@es6ODyoB=)nS>4}`E|$onVH$me*y)lp_c1$zXp zNL;t}0>lIA_D*%}M&P)BjaC2D%G8buZ3gTU8-WLjEsgJ;dvVh-wN%Hh^hx^z#IaM644+;!1IXWJdSm}0BEBpKVF3m~Y$MLW} zu6Le|t7CPIoGrIlLrhH6+?SCrEh+hIGb^07=xB7X!ZI*6_MjM29}?Cd^Bw}#Va-lCobIcr(3gQuXPUl=VAembu3ZNovpisSbacc%tD7N5xUoDk z@>qWW=7yy>?SDucC6IE>btfU%Wr{kce^2_`3YyVjeV&_iJ3Q!=3R;FWhep`<2&ozO z)JQwrF>~&p^j3bd_uO@V9aLMJwEC(wcq)6ET)=7~jRSrp5)cY%*wGy~S@7O|M8^Nc zH8W%GtbLWN?IZo2GGhbxdcl(x&b0J1_%0n&g8|8ewW(?Nj1aoSWUdYcB1_(r?I_C- zhT*l{Z@_8;0UdN?)Z^IxVh@(A_a~HD1-5F{8Bcim`|;>Uq zn6S2R{8fDI!#&r@ZQf4qQ3LD=_%2+8xuNRhxbJvIGZGu@ezZYj(V+h*ucoF(`pzNC zeXDG9|G7lQllq}V>qg#lp?ZLQkytoiW9R(tH6)*3!X_FNa27&i#^Y@1a7&q? zQGXL#Gv@l6`i!}JPQK0eHnG+EwL#UlC-o0`Hu9!5cCz%mF1q&8 z59?>{3c2*9j1u#I&A|78$n+I!M)frEM)aK`B{AQR$w;eEurpd~m+izhXM( zWphAB6WeNSVu|JWUB0ESRN|BU1rB)N=>tQLWEJ26=GO-mHq(Pfow301$u&fuQ=TR& zG&gcqp?;kNj9aZ3KUW(^b`L83)3zhAVja%a&K!HL99Tww{q^l- zT1v`er@-jw=yw&4%aICRjPNOVXP+=B{z(7)^VrwOph7PTsob>|gPQ1A>+n6pWBU=c z6O=~Ym{ZarMVL`br7syK^j92ua})h)LH0PyGi@1Q4*adX61 z%9tjUKV#^1Cak5o{NCF8#2nTT$T1)6(?v4cmnnm!v(eFIlvTYsYyK!up>{1Zm)J;l zDwwsE#8Gwa%v1|V`HsdFML!a9d(!>9+AfCViIGm3qWpv{uuwm(=9g5T-SzAw`uQlO z^%xf3-nn-T_Pk&_CTmBff?d9!ISs6~*WTnPAh@G+|KY9)=v+cNglL_lrq&L4XCy!C zA#_SjSwPP7YRX39+Z5~|ak*dS5vG+)ZDhe*?P+3W8XTQXdq0N6sV$00b|5n(*fB7OxTLWbz7%&A-;s32`(C!JEKtmM;OEEJfHB z;Jum*6>BVw&P~o}yvetB=h*tCWLWQ|fSsp1t{V}yPs3*(POw{TsMt+B%x>Evz8W6a zQd48fka-$;jn$zajA&BkHsjj!UR5gz#m*7uf0Sv(1;-DMXOMB{iTzX-FpVh8YCZJw z;_QPkTmJ6x@N$K&7ejWcXCTR&IXsiIVJ(BG11}hriBO72IvNz0HaH4%^@=4OQ8B|r z;wcI-s9y@ca?VrN(h91u9WBzI2W7ubo=e0zt_M6f8pO^;wjb3`kHC8l$oNp59r_b` zv9+eYv0Um|DI~js;kd4U6RAAW=Mu<3gX-5hMGS;kB$)(FbAT>8LCYUnQ)8vj8@T2x zXeq}C@bME&qD1c2w^pX7i_?Y*h&pYJ&8MV9D*M>TkHHNX0R5?jr{aYE%HsIYiNZp* z2Cv~H#bu+vE!kK>MnwiAmA=+lYkN<>OaM5PPHZS*qs>OQv&#Y!N0;hCdpKN>3S#1& z278$50&fX%ixoT=+NJ!Bx~Nd(S$Z$^C%@bT)M&t)ED<=UUGBU_29f5t)l_#e*6Ou= zm_9p1h8Uc!D4=fOu}#z7(=(G1I?@O)Stsn&hfiVKPAPlY#n-_^*rc`&+Q;%4+aw{l?D!nF+7lIb#m^Qy$Vc$oF}VS#ijaVc4A^mr7tFVLw%SPyX~2gv ztsI&9LI?z1XFZlC9%^-@1w5j>g@W-WMZnt9GCIHLBQ|@!gP53i-Bn{Ehr{#Y!IWz# zpXED$z8bssk=S$(`8xJUl*-hF4O@7fr}2%TqC!XL8Bl+&EX#CL1Z7rTOc*v-zrTpi zhN=P5tmqfyt!)?@9`-+Wtxl(E5OO;V@92=vEi9bQF!vaR4dtRJC|ZSpkJo*KpvvFw z``9oJW#n*@`r07gTj9lx?NIp5IGG`key)L9cTLYAnNSjnD+Hpx@3qS5_H;u6mGg|P z){?iSBfThWJDkoD1VFb2i%0727<&duRdI$)D{>WhSza6ZDu!9Nm?P`p$%CJF6eWKG zUDb*fk*O*{|#B_PXW{NI4?s7kfp? z-vAc_erO^gwo|jf$wq!r)U4ozC4zM%q}jVFp=Zv z0-$iFy6vm?q;WL6UIDngwU7DtGM|AsB&s8^*dG_T=Mgd})#+aMFL=U|%>(F|TlY}+ z`eOa-wg1n!xWJ%Ha$|FYhKZ?jDC4S_JUmAlp*AVGnF{QS(zv)Ev@ncG}HZ6T0mzm2pRTWHsW+{k+y z;ayn5fN*N>ja#tIz=6tNXHsyp@POp9=x5a53@F1Lt16PLh_i8;NCvVBPTSdym$;^P z^FjuIMAO4(Nr)TtK;4)O_s>kG=mhH4lqN+c$ZN4IZZ45$dS&xnO)s1v^a1TOx*P43 zrjJdNAIt5(qhjWpDF@vJmr5(cH5v64DZ9fJK!)`A!C&d=&oN(D1~|q`UShcK9>h1qqq6i1<4RIH2?Cs10IpulFL$F^)EEk0ql{ z$Av@MZCV-^tdEACiVQ-3kM}zs0}>k^E0uMh%Uqk7;3W>oRYueLi=4Q~M9D!85;^YQ z_#-rcq+fpTVU1C3s&(?I=UiTgya{~Z_Q5nn=%kAy#1zLgy9P+zttO_Yr#pqhTCIH` zBB$P(zv>~V2pLfm_nDevJwRrx@!wtyO6x=t-NdNl@0fHK6|pGgt#qcbUZO@+(BUk1|*+5W1N*rIXWp3Q>aIpEKzLe*8edwaI%Br--3W)<-g0!Sx>06c8*w0QbQC7qulKid>|EpDznjW42)l11>n(m-^1_gvtXS@ zYdAVm)z_z~N58wYy9=FXkbU8^TTOT_Nx*tK@NlntX9y4Mi26|lr0kXQFGRUMF)A8Y zNGVSUf@f%0K~b@MOTd-P^>W-qyw#-`=i}U&O+%f+?pa4ewyWJ{1GsIX{qdOQn*zg~f6jAH2=Bm1H^h z*$W>?UUl!u%F1#)N>*a(ffdodqtBP@67}Di$7@Qz{w!+0#;puDM+{FU6L%fdm#^@w zsteBM>tp52oqcU?h;2;)PsGzOk9O^B3C?a#?QiKZ0#kXHK>Vyk{}u^B+&9uLZjXNLlAl_`X4lSCu3FI&*X({lFXElZCNXqJ z{4f5KV`Yod!x9dr9WS`9hDV3x_4SiEC(cguy&`v}YrbjAooC->L@+j!T^$luua8WU zMoiW97^mkat$ZkQh*NSIK3pgHO7@o&#v)VN*pA$o>NB;rEh@6@XjmLcT<+RUd6`=@ z7Ko+?8}4*AaT(D~7H}Ma<(CQy6px-*US_!BRdIie3fA3y{VUM=N3y=U{;z50OElXZ zmcEs9%i!bnn>R1qP$)GuJ+~rXE3Jsn^z<4QU^ZioD?jY}>D8UeXIz`l_?(}ssvVtQ zp2xQ}kE2ZW#IAKL^HJRBP{O3!89x67uWCYUeolsovBm6(amKHzU!7DxwfF!3z89x_ zE(JF7?tAsL@6W5MGQVw4Qf6P5Np0`__exv`#UutMPR<<%!__ye%3oo;*}~l7>C&nt z*Y~b)V2|JHQTy!szWVwTGe3B3|N8BDj&R-AQulLj&!2PN&+~H?FE?sh-P+(6ch%<7 z?F#|=ylP)wrG)Kzk=>mZSDbok-pkxt-bVg?RR^tZe-1wX$8TQ!!=nKVdAtYBP>g7B zNMe$zIB)y<_ovJA{}`wO3(f1ldN}qy6#xJ1_WM)!?f-a)>Hqb*wl-S-wzk%s`#vr5 zhY`I@a6i!DI8&8+?)rJQOLtUs_{=hhTPAB2+GqW2MW4Ud#qE;fHNj7OwxR`qCU9DM z8OOXVq=8yc#O)CT4s<>C(H&KdC`txXn4H-0AUZNqb9edsX|rZYtz5l&@~>Z2`Ab%^ zA{RCS95WpJ{Q62>UGcOkf2RZNhfe+TrzSow(T(N)v14vGx8=@$b7$w|1+P!bJ4>Og zR&W#m&MNM$F4xr1n6PGz&i$C62hHo-?yimA-o~{4pV=bs>3Wlu634a`qy`NZ*v}$6?u3wypeC;Z1enS zveso5Go&i2zrA_M5_i62CA?1tE~ytL{js0X&M_V=*_0{Nw!M2~IcRX0VKT<jabh4FMw5C*|_V>59 zeh;obINb!!zi?tgRike7HVb3>@2{?&u9Ug@S`1i@uZ!M(PV((l_T{Bw>0;yY+O%m_-+R8lyzKtz)2BsE z&lONz!kEtjjBeNYU$5>7i->sPyY%c<7PTLrYSu5eH%F^ekEjHMhpW#v%bgTr^IUqy zgWYLorPymPEO6AEDQCS*?s)==$qI*Aq@<*ltXXqr=c|W@+pDX-HgfNa5EFN~4o>96tC8%mB(NELVmNae_n8Q_Lgu!(aRPz56RS SzRG^c00f?{elF{r5}E*5OOXBm diff --git a/rest-api/conversations/delete-conversation.mdx b/rest-api/conversations/delete-conversation.mdx index 1757cf7aa..019c0d88e 100644 --- a/rest-api/conversations/delete-conversation.mdx +++ b/rest-api/conversations/delete-conversation.mdx @@ -20,7 +20,7 @@ curl -X DELETE "https://appid.api-us.cometchat.io/v3/conversations/user_cometcha -H "apikey: YOUR_API_KEY" # New (recommended) — for a user conversation: -curl -X DELETE "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-1/conversation" \ +curl -X DELETE "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-2/conversation" \ -H "apikey: YOUR_API_KEY" \ -H "onBehalfOf: cometchat-uid-1" ``` diff --git a/rest-api/conversations/get-conversation.mdx b/rest-api/conversations/get-conversation.mdx index 2d5a87e92..b849dad89 100644 --- a/rest-api/conversations/get-conversation.mdx +++ b/rest-api/conversations/get-conversation.mdx @@ -20,7 +20,7 @@ curl -X GET "https://appid.api-us.cometchat.io/v3/conversations/user_cometchat-u -H "apikey: YOUR_API_KEY" # New (recommended) — for a user conversation: -curl -X GET "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-1/conversation" \ +curl -X GET "https://appid.api-us.cometchat.io/v3/users/cometchat-uid-2/conversation" \ -H "apikey: YOUR_API_KEY" \ -H "onBehalfOf: cometchat-uid-1" ``` diff --git a/rest-api/management-apis/error-codes.mdx b/rest-api/management-apis/error-codes.mdx new file mode 100644 index 000000000..616d167ab --- /dev/null +++ b/rest-api/management-apis/error-codes.mdx @@ -0,0 +1,38 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the Management APIs (Multi-Tenancy). + +## App Management + +| Error Code | Description | +| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `ERR_APP_CREATION_FAILED_MAX_LIMIT` | You have reached the maximum number of complimentary apps allowed. Delete an existing app or upgrade to a paid plan, then try again. | +| `ERR_APP_ARCHIVED` | The app has been archived and will be permanently deleted after 30 days. | +| `ERR_APP_DELETION` | The app is associated with a paid subscription. Contact CometChat support before deleting. | +| `ERR_APP_NOT_FOUND` | The App ID does not exist or has been archived. | + +## Extensions + +| Error Code | Description | +| ------------------------- | --------------------------------------------------------------------------- | +| `ERR_EXTENSION_NOT_FOUND` | The provided extension ID does not correspond to any existing microservice. | +| `ERR_EXTENSION_INACTIVE` | The operation failed because the extension is currently inactive. | + +## Team Management + +| Error Code | Description | +| ------------------------ | ------------------------------------------------------- | +| `ERR_ALREADY_AN_OWNER` | The user is already registered as an owner of the app. | +| `ERR_SELF_ACTION_DENIED` | A user cannot add themselves as a collaborator. | +| `ERR_NOT_A_COLLABORATOR` | The specified email is not a collaborator for this app. | + +## Webhooks + +| Error Code | Description | +| ---------------------------- | ------------------------------------- | +| `ERR_WEBHOOK_NOT_FOUND` | The webhook does not exist. | +| `ERR_BAD_REQUEST` | Validation error in the request. | +| `AUTH_ERR_EMPTY_AUTH_HEADER` | The authentication header is missing. | diff --git a/rest-api/management-apis/properties-and-constraints.mdx b/rest-api/management-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..7c65f156b --- /dev/null +++ b/rest-api/management-apis/properties-and-constraints.mdx @@ -0,0 +1,24 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the Management APIs (Multi-Tenancy). + +## App Management + +| **Property** | **Constraints** | +| ----------------------------------------------- | --------------------------------------------------------------- | +| App name | Max 100 characters, UTF8mb4 (supports all languages and emojis) | +| App version | `v3` only | +| Maximum collaborators per app (team management) | 25 | + +## Webhooks + +| **Property** | **Constraints** | +| ------------------------------- | ------------------------------------------------ | +| Maximum webhooks per app | 25 | +| Webhook URL | Valid URL, max 255 characters | +| Webhook ID | Max 50 characters, alphanumeric only, no spaces | +| Webhook authentication username | Max 50 characters, alphanumeric only, no spaces | +| Webhook authentication password | Max 100 characters, alphanumeric only, no spaces | diff --git a/rest-api/users/delete.mdx b/rest-api/users/delete.mdx index cc33ef820..9f31eedba 100644 --- a/rest-api/users/delete.mdx +++ b/rest-api/users/delete.mdx @@ -12,19 +12,40 @@ openapi: delete /users/{uid} | `ERR_UID_NOT_FOUND` | 404 | No user exists with the specified UID | - **Deactivate vs permanent delete:** By default, this deactivates the user — - the user's message history is preserved but they can no longer log in. Use the - `permanent` flag for complete removal of all user data, which cannot be - undone. +**Deactivate vs permanent delete:** + +By default (`permanent: false`), this endpoint only **deactivates** the user. The user's data and message history are preserved, but they can no longer log in. + +**Deactivated users still count toward your Build plan user limit.** To free up the slot, you must permanently delete the user. + +To permanently delete a user and all their data, pass `{ "permanent": true }` in the request body. This action **cannot be undone**. + + + +```bash Deactivate only (default) +curl -X DELETE "https://.api-.cometchat.io/v3/users/" \ + -H "apikey: " +``` + +```bash Permanent delete +curl -X DELETE "https://.api-.cometchat.io/v3/users/" \ + -H "apikey: " \ + -H "Content-Type: application/json" \ + -d '{ "permanent": true }' +``` + + + For the complete error reference, see [Error Guide](/articles/error-guide). ## Related - - Temporarily disable users instead of deleting them. + + Deactivate multiple users at once via `DELETE /users` with a list of UIDs in + the request body. Restore previously deactivated users. From 917e58c63a1bdc7ffcf5a1d48b3afacff1653ca6 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 10:37:33 +0530 Subject: [PATCH 26/56] Added AI Agents API docs --- .mintlifyignore | 1 + docs.json | 382 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 304 insertions(+), 79 deletions(-) diff --git a/.mintlifyignore b/.mintlifyignore index 26f5c15f8..6f8c9afd4 100644 --- a/.mintlifyignore +++ b/.mintlifyignore @@ -1 +1,2 @@ .github +.claude diff --git a/docs.json b/docs.json index 66b7848b8..b31b5b8c0 100644 --- a/docs.json +++ b/docs.json @@ -37,7 +37,9 @@ { "group": "Docs MCP", "hidden": true, - "pages": ["mcp-server"] + "pages": [ + "mcp-server" + ] } ] }, @@ -89,7 +91,9 @@ { "dropdown": "Kubernetes", "icon": "/images/icons/kubernetes.svg", - "pages": ["on-premise-deployment/kubernetes/overview"] + "pages": [ + "on-premise-deployment/kubernetes/overview" + ] } ] } @@ -100,7 +104,9 @@ "tabs": [ { "tab": "Chat & Calling", - "pages": ["chat-call"] + "pages": [ + "chat-call" + ] }, { "tab": "Platform", @@ -191,11 +197,15 @@ }, { "group": "User-Roles", - "pages": ["fundamentals/user-roles-and-permissions"] + "pages": [ + "fundamentals/user-roles-and-permissions" + ] }, { "group": "Guides", - "pages": ["fundamentals/user-auth"] + "pages": [ + "fundamentals/user-auth" + ] } ] }, @@ -211,7 +221,9 @@ "/widget/html/advanced", { "group": " ", - "pages": ["/widget/html/legacy"] + "pages": [ + "/widget/html/legacy" + ] } ] }, @@ -223,7 +235,9 @@ "/widget/wordpress/integration", { "group": " ", - "pages": ["/widget/wordpress/legacy"] + "pages": [ + "/widget/wordpress/legacy" + ] } ] }, @@ -246,7 +260,10 @@ { "dropdown": "Wix", "icon": "/images/icons/wix.svg", - "pages": ["/widget/wix/overview", "/widget/wix/integration"] + "pages": [ + "/widget/wix/overview", + "/widget/wix/integration" + ] }, { "dropdown": "Webflow", @@ -538,7 +555,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react/upgrading-from-v5"] + "pages": [ + "ui-kit/react/upgrading-from-v5" + ] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -883,7 +902,7 @@ "icon": "/images/icons/react.svg", "versions": [ { - "version": "v5\u200e", + "version": "v5‎", "groups": [ { "group": " ", @@ -981,7 +1000,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react-native/upgrading-from-v4"] + "pages": [ + "ui-kit/react-native/upgrading-from-v4" + ] }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", @@ -991,7 +1012,7 @@ ] }, { - "version": "v4\u200e", + "version": "v4‎", "groups": [ { "group": " ", @@ -1154,7 +1175,7 @@ ] }, { - "version": "v3\u200e", + "version": "v3‎", "groups": [ { "group": " ", @@ -1176,7 +1197,7 @@ ] }, { - "version": "v2\u200e", + "version": "v2‎", "groups": [ { "group": " ", @@ -1204,7 +1225,7 @@ "icon": "/images/icons/swift.svg", "versions": [ { - "version": "v5\u200e\u200e", + "version": "v5‎‎", "groups": [ { "group": " ", @@ -1268,7 +1289,10 @@ }, { "group": "Reference", - "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] + "pages": [ + "ui-kit/ios/methods", + "ui-kit/ios/events" + ] }, { "group": "Advanced", @@ -1294,7 +1318,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/ios/upgrading-from-v4"] + "pages": [ + "ui-kit/ios/upgrading-from-v4" + ] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1305,7 +1331,7 @@ ] }, { - "version": "v4\u200e\u200e", + "version": "v4‎‎", "groups": [ { "group": " ", @@ -1469,7 +1495,7 @@ ] }, { - "version": "v3\u200e\u200e", + "version": "v3‎‎", "groups": [ { "group": " ", @@ -1491,7 +1517,7 @@ ] }, { - "version": "v2\u200e\u200e", + "version": "v2‎‎", "groups": [ { "group": " ", @@ -1519,7 +1545,7 @@ "icon": "/images/icons/android.svg", "versions": [ { - "version": "v5\u200e\u200e\u200e", + "version": "v5‎‎‎", "groups": [ { "group": " ", @@ -1622,7 +1648,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/android/upgrading-from-v4"] + "pages": [ + "ui-kit/android/upgrading-from-v4" + ] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1633,7 +1661,7 @@ ] }, { - "version": "v4\u200e\u200e\u200e", + "version": "v4‎‎‎", "groups": [ { "group": " ", @@ -1790,7 +1818,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e", + "version": "v3‎‎‎", "groups": [ { "group": " ", @@ -1815,7 +1843,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e", + "version": "v2‎‎‎", "groups": [ { "group": " ", @@ -1844,7 +1872,7 @@ "icon": "/images/icons/flutter.svg", "versions": [ { - "version": "v5\u200e\u200e\u200e\u200e", + "version": "v5‎‎‎‎", "groups": [ { "group": " ", @@ -1933,7 +1961,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/flutter/upgrading-from-v4"] + "pages": [ + "ui-kit/flutter/upgrading-from-v4" + ] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -1943,7 +1973,7 @@ ] }, { - "version": "v4\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎", "groups": [ { "group": " ", @@ -2119,7 +2149,7 @@ "icon": "/images/icons/angular.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎", "groups": [ { "group": " ", @@ -2309,7 +2339,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎", "groups": [ { "group": " ", @@ -2330,7 +2360,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎", "groups": [ { "group": " ", @@ -2357,7 +2387,7 @@ "icon": "/images/icons/vuejs.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2450,7 +2480,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2472,7 +2502,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2504,7 +2534,7 @@ "icon": "/images/icons/js.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2520,7 +2550,9 @@ }, { "group": "Setup", - "pages": ["sdk/javascript/setup-sdk"] + "pages": [ + "sdk/javascript/setup-sdk" + ] }, { "group": "Authentication", @@ -2578,7 +2610,9 @@ }, { "group": "User Presence", - "pages": ["sdk/javascript/user-presence"] + "pages": [ + "sdk/javascript/user-presence" + ] }, { "group": "Groups", @@ -2633,7 +2667,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2756,7 +2790,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2859,7 +2893,7 @@ "icon": "/images/icons/react.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -2982,7 +3016,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3096,7 +3130,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3198,7 +3232,7 @@ "icon": "/images/icons/swift.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3321,7 +3355,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3439,7 +3473,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3546,7 +3580,7 @@ "icon": "/images/icons/android.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3661,7 +3695,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3781,7 +3815,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3884,7 +3918,7 @@ "icon": "/images/icons/flutter.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -3998,7 +4032,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -4103,7 +4137,7 @@ "icon": "/images/icons/ionic.svg", "versions": [ { - "version": "v4\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v4‎‎‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -4211,7 +4245,7 @@ ] }, { - "version": "v3\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v3‎‎‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -4321,7 +4355,7 @@ ] }, { - "version": "v2\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e\u200e", + "version": "v2‎‎‎‎‎‎‎‎‎‎‎‎", "groups": [ { "group": " ", @@ -4945,7 +4979,9 @@ "tabs": [ { "tab": "Calling", - "pages": ["calls"] + "pages": [ + "calls" + ] }, { "tab": "Platform", @@ -4966,7 +5002,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/javascript/overview"] + "pages": [ + "calls/javascript/overview" + ] }, { "group": "Integrations", @@ -5027,7 +5065,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/react-native/overview"] + "pages": [ + "calls/react-native/overview" + ] }, { "group": "Getting Started", @@ -5079,11 +5119,16 @@ "pages": [ { "group": "Overview", - "pages": ["calls/ios/overview"] + "pages": [ + "calls/ios/overview" + ] }, { "group": "Getting Started", - "pages": ["calls/ios/setup", "calls/ios/authentication"] + "pages": [ + "calls/ios/setup", + "calls/ios/authentication" + ] }, { "group": "Call Session", @@ -5128,7 +5173,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/android/overview"] + "pages": [ + "calls/android/overview" + ] }, { "group": "Getting Started", @@ -5180,7 +5227,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/flutter/overview"] + "pages": [ + "calls/flutter/overview" + ] }, { "group": "Getting Started", @@ -5249,7 +5298,9 @@ "tabs": [ { "tab": "AI Agents", - "pages": ["ai-agents"] + "pages": [ + "ai-agents" + ] }, { "tab": "Agent Builder", @@ -5312,11 +5363,15 @@ "/ai-agents/crew-ai-tools", { "group": "Guides", - "pages": ["/ai-agents/crew-ai-knowledge-agent"] + "pages": [ + "/ai-agents/crew-ai-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/crew-ai-product-hunt-agent"] + "pages": [ + "/ai-agents/crew-ai-product-hunt-agent" + ] } ] }, @@ -5329,11 +5384,15 @@ "/ai-agents/agno-tools", { "group": "Guides", - "pages": ["/ai-agents/agno-knowledge-agent"] + "pages": [ + "/ai-agents/agno-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/agno-product-hunt-agent"] + "pages": [ + "/ai-agents/agno-product-hunt-agent" + ] } ] }, @@ -5346,11 +5405,15 @@ "/ai-agents/vercel-tools", { "group": "Guides", - "pages": ["/ai-agents/vercel-knowledge-agent"] + "pages": [ + "/ai-agents/vercel-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/vercel-product-hunt-agent"] + "pages": [ + "/ai-agents/vercel-product-hunt-agent" + ] } ] }, @@ -5361,11 +5424,15 @@ "/ai-agents/langgraph", { "group": "Guides", - "pages": ["/ai-agents/langgraph-knowledge-agent"] + "pages": [ + "/ai-agents/langgraph-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/langgraph-product-hunt-agent"] + "pages": [ + "/ai-agents/langgraph-product-hunt-agent" + ] } ] }, @@ -5378,11 +5445,15 @@ "/ai-agents/ag2-tools", { "group": "Guides", - "pages": ["/ai-agents/ag2-knowledge-agent"] + "pages": [ + "/ai-agents/ag2-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/ag2-product-hunt-agent"] + "pages": [ + "/ai-agents/ag2-product-hunt-agent" + ] } ] }, @@ -5395,7 +5466,9 @@ "/ai-agents/ag-ui-tools", { "group": "Guides", - "pages": ["/ai-agents/cometchat-ag-ui-byoa"] + "pages": [ + "/ai-agents/cometchat-ag-ui-byoa" + ] }, { "group": "Implementation", @@ -5411,12 +5484,16 @@ { "tab": "Widget Builder", "tab-id": "ai-agent-chat-builder", - "pages": ["/ai-agents/chat-widget"] + "pages": [ + "/ai-agents/chat-widget" + ] }, { "tab": "Custom Bots", "hidden": true, - "pages": ["/ai-chatbots/custom-bots"] + "pages": [ + "/ai-chatbots/custom-bots" + ] }, { "tab": "AI Bots (Legacy)", @@ -5426,6 +5503,147 @@ "/ai-chatbots/ai-bots/instructions", "/ai-chatbots/ai-bots/bots" ] + }, + { + "tab": "APIs", + "groups": [ + { + "group": "BYO Agent APIs", + "pages": [ + "ai-agents/byo-api-explorer", + { + "group": "BYO Agents", + "expanded": false, + "icon": "robot", + "pages": [ + "ai-agents/apis/create-byo-agent", + "ai-agents/apis/list-byo-agents", + "ai-agents/apis/update-byo-agent", + "ai-agents/apis/delete-byo-agent" + ] + }, + { + "group": "Tools", + "expanded": false, + "icon": "wrench", + "pages": [ + "ai-agents/apis/list-tools", + "ai-agents/apis/get-tool", + "ai-agents/apis/create-tool", + "ai-agents/apis/update-tool", + "ai-agents/apis/delete-tool" + ] + } + ] + }, + { + "group": "Agent Builder APIs", + "pages": [ + "ai-agents/api-explorer", + { + "group": "Agents", + "expanded": false, + "icon": "robot", + "pages": [ + "ai-agents/apis/create-agent", + "ai-agents/apis/list-agents", + "ai-agents/apis/get-agent", + "ai-agents/apis/update-agent", + "ai-agents/apis/delete-agent", + "ai-agents/apis/search-agent-tools", + "ai-agents/apis/list-agent-tools-and-actions" + ] + }, + { + "group": "Tools", + "expanded": false, + "icon": "wrench", + "pages": [ + "ai-agents/apis/add-tools-to-agent", + "ai-agents/apis/remove-tools-from-agent", + "ai-agents/apis/get-tool-actions-for-agent", + "ai-agents/apis/enable-tool-actions", + "ai-agents/apis/remove-tool-actions" + ] + }, + { + "group": "Custom API Tools", + "expanded": false, + "icon": "code", + "pages": [ + "ai-agents/apis/list-api-tools", + "ai-agents/apis/create-api-tool", + "ai-agents/apis/update-api-tool", + "ai-agents/apis/delete-api-tool", + "ai-agents/apis/add-api-tools-to-agent", + "ai-agents/apis/remove-api-tools-from-agent" + ] + }, + { + "group": "Frontend Actions", + "expanded": false, + "icon": "window", + "pages": [ + "ai-agents/apis/list-frontend-actions", + "ai-agents/apis/create-frontend-action", + "ai-agents/apis/update-frontend-action", + "ai-agents/apis/delete-frontend-action", + "ai-agents/apis/add-frontend-actions-to-agent", + "ai-agents/apis/remove-frontend-actions-from-agent" + ] + }, + { + "group": "MCP Servers", + "expanded": false, + "icon": "server", + "pages": [ + "ai-agents/apis/list-mcp-servers", + "ai-agents/apis/create-mcp-server", + "ai-agents/apis/update-mcp-server", + "ai-agents/apis/delete-mcp-server", + "ai-agents/apis/add-mcp-servers-to-agent", + "ai-agents/apis/remove-mcp-servers-from-agent" + ] + }, + { + "group": "Knowledge Base", + "expanded": false, + "icon": "book", + "pages": [ + "ai-agents/apis/list-knowledge-base-records", + "ai-agents/apis/get-source-pages", + "ai-agents/apis/retry-knowledge-base-source-indexing", + "ai-agents/apis/initiate-file-uploads", + "ai-agents/apis/delete-uploaded-file", + "ai-agents/apis/create-text-detail", + "ai-agents/apis/update-text-detail", + "ai-agents/apis/delete-text-detail", + "ai-agents/apis/poll-knowledge-base-status", + "ai-agents/apis/add-knowledge-base-files", + "ai-agents/apis/remove-knowledge-base-files", + "ai-agents/apis/scrape-single-page", + "ai-agents/apis/scrape-website", + "ai-agents/apis/get-discovered-urls", + "ai-agents/apis/process-discovered-urls", + "ai-agents/apis/delete-website", + "ai-agents/apis/poll-discovered-urls-status", + "ai-agents/apis/retry-indexing-for-website-pages" + ] + }, + { + "group": "Variables", + "expanded": false, + "icon": "brackets-curly", + "pages": [ + "ai-agents/apis/get-all-available-variables", + "ai-agents/apis/create-custom-variable", + "ai-agents/apis/update-custom-variable", + "ai-agents/apis/delete-custom-variable" + ] + } + ] + } + ] } ] }, @@ -5527,7 +5745,9 @@ }, { "group": "Reviewed Messages", - "pages": ["moderation/apis/list-reviewed-messages"] + "pages": [ + "moderation/apis/list-reviewed-messages" + ] }, { "group": "Reasons", @@ -5548,7 +5768,9 @@ "tabs": [ { "tab": "Notifications", - "pages": ["notifications"] + "pages": [ + "notifications" + ] }, { "tab": "Push", @@ -5679,7 +5901,9 @@ "tabs": [ { "tab": "Insights", - "pages": ["insights"] + "pages": [ + "insights" + ] } ] } @@ -7065,7 +7289,7 @@ "metatags": { "charset": "UTF-8", "viewport": "width=device-width, initial-scale=1.0", - "description": "Learn how to integrate, customize, and scale real-time chat using CometChat\u2019s UI Kits, SDKs, and widgets across popular frameworks. Get step-by-step guides, best practices, and implementation details to build production-ready chat experiences.", + "description": "Learn how to integrate, customize, and scale real-time chat using CometChat’s UI Kits, SDKs, and widgets across popular frameworks. Get step-by-step guides, best practices, and implementation details to build production-ready chat experiences.", "language": "en" } }, @@ -7074,4 +7298,4 @@ "redirect": true } } -} +} \ No newline at end of file From 1eb0a864b82e2a5c35198dbe337a1f9c76c445c7 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 11:29:28 +0530 Subject: [PATCH 27/56] fixed medium and low issues from audit --- ai-agent-service.json | 6 +++--- chat-apis.json | 4 ++-- data-import-apis.json | 4 ++-- docs.json | 8 ++++++++ rest-api/chat-apis.mdx | 4 ++++ rest-api/messages.mdx | 1 - 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ai-agent-service.json b/ai-agent-service.json index f7214bd83..592cc1c24 100644 --- a/ai-agent-service.json +++ b/ai-agent-service.json @@ -1416,7 +1416,7 @@ }, "constantValue": { "type": "string", - "example": "" + "example": "premium" }, "defaultValue": { "type": "string", @@ -1517,7 +1517,7 @@ }, "constantValue": { "type": "string", - "example": "" + "example": "premium" }, "defaultValue": { "type": "string", @@ -1629,7 +1629,7 @@ }, "constantValue": { "type": "string", - "example": "" + "example": "premium" }, "defaultValue": { "type": "string", diff --git a/chat-apis.json b/chat-apis.json index 2239420e8..65e5a98ba 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -16701,7 +16701,7 @@ "uid--conversation": { "name": "uid", "in": "path", - "description": "UID of the user whose conversation needs to be fetched.", + "description": "UID of the user whose conversation is being accessed.", "required": true, "schema": { "type": "string" @@ -16710,7 +16710,7 @@ "guid--conversation": { "name": "guid", "in": "path", - "description": "GUID of the group whose conversation needs to be fetched.", + "description": "GUID of the group whose conversation is being accessed.", "required": true, "schema": { "type": "string" diff --git a/data-import-apis.json b/data-import-apis.json index bc9c072d0..fdfbff91b 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -3839,7 +3839,7 @@ "uid--conversation": { "name": "uid", "in": "path", - "description": "UID of the user whose conversation needs to be fetched.", + "description": "UID of the user whose conversation is being accessed.", "required": true, "schema": { "type": "string" @@ -3848,7 +3848,7 @@ "guid--conversation": { "name": "guid", "in": "path", - "description": "GUID of the group whose conversation needs to be fetched.", + "description": "GUID of the group whose conversation is being accessed.", "required": true, "schema": { "type": "string" diff --git a/docs.json b/docs.json index b31b5b8c0..4f3696af9 100644 --- a/docs.json +++ b/docs.json @@ -7277,6 +7277,14 @@ { "source": "/sdk/ionic/3.0/bots", "destination": "/sdk/ionic-legacy/3.0/bots" + }, + { + "source": "/rest-api/messages/list-reactions-with-a-specific-emojiunicodes", + "destination": "/rest-api/messages/list-reactions-with-a-specific-emoji-unicode" + }, + { + "source": "/rest-api/messages/mark-message-as-interacted", + "destination": "/rest-api/messages" } ], "integrations": { diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 82a8db049..bf8723a7f 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -27,6 +27,10 @@ To get started with CometChat's REST API, you'll need to obtain your App ID, API Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. CometChat employs industry-standard authentication mechanisms to ensure the security and integrity of your data. + +The HTTP header name for authentication is **`apikey`** (all lowercase). In JSON response bodies, the API key property is returned as **`apiKey`** (camelCase). This distinction is intentional — HTTP headers are case-insensitive by specification, while JSON properties are case-sensitive. + + ## Endpoints CometChat's REST API offers a variety of endpoints catering to different aspects of chat functionality, including user management, messaging, groups, and many more. These endpoints are designed to be intuitive and easy to integrate into your application's backend infrastructure. diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index db90dd52c..50dc81731 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -40,7 +40,6 @@ A **Message** is the core unit of communication in CometChat. Users can send tex | [Add Reaction](/rest-api/messages/add-reaction) | `POST` | `/messages/{id}/reactions` | Add an emoji reaction to a message | | [Remove Reaction](/rest-api/messages/remove-reaction) | `DELETE` | `/messages/{id}/reactions` | Remove an emoji reaction from a message | | [List All Reactions](/rest-api/messages/list-all-reactions) | `GET` | `/messages/{id}/reactions` | List all reactions on a message | -| [Mark as Interacted](/rest-api/messages/mark-message-as-interacted) | `POST` | `/messages/{id}/interacted` | Mark a message as interacted with | ### Message properties From f6e042f18882ac4a75f7405392cb070754d5a015 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 11:59:46 +0530 Subject: [PATCH 28/56] Added missing moderation docs --- docs.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs.json b/docs.json index 4f3696af9..e5e6420a5 100644 --- a/docs.json +++ b/docs.json @@ -4677,6 +4677,11 @@ "rest-api/moderation/get-rule-revisions", "rest-api/moderation/list-blocked-messages", "rest-api/moderation/approve-blocked-messages", + "rest-api/moderation/send-message", + "rest-api/moderation/list-messages", + "rest-api/moderation/get-message", + "rest-api/moderation/update-message", + "rest-api/moderation/delete-message", "rest-api/moderation/create-reasons", "rest-api/moderation/list-reasons", "rest-api/moderation/get-reason-details", From ec1264e9d39c358ddcba465d4d5baa4a4f2d42c9 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 12:38:22 +0530 Subject: [PATCH 29/56] Fixed consistency issues --- chat-apis.json | 31 +++++++++++++++++-------------- data-import-apis.json | 4 ++-- management-apis.json | 17 ++++++++++++----- rest-api/banned-users.mdx | 22 +++++++++++++++++++++- rest-api/blocked-users.mdx | 15 +++++++++++++-- rest-api/friends.mdx | 15 +++++++++++++-- 6 files changed, 78 insertions(+), 26 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index 65e5a98ba..9806f1bf2 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -364,7 +364,7 @@ ], "summary": "Create", "description": "Creates a new user", - "operationId": "creates-user", + "operationId": "create-user", "requestBody": { "content": { "application/json": { @@ -2027,7 +2027,7 @@ "receiver": "cometchat-uid-2", "muid": "16Jan3:41423PM", "interactionGoal": { - "type": "anyAction", + "type": "anyOf", "elementIds": [] }, "allowSenderInteraction": false, @@ -2818,7 +2818,7 @@ ], "summary": "Delete Message", "description": "Deletes the message.", - "operationId": "deletes-message", + "operationId": "delete-message", "parameters": [ { "$ref": "#/components/parameters/onBehalfOf" @@ -3834,7 +3834,7 @@ ], "summary": "Delete Conversation", "description": "This API is deprecated please use Reset User/GroupConversation API", - "operationId": "deletes-conversation", + "operationId": "delete-conversation", "parameters": [ { "name": "onBehalfOf", @@ -4015,7 +4015,7 @@ ], "summary": "Update User Conversation", "description": "Updating User Conversation", - "operationId": "updates-user-conversation", + "operationId": "update-user-conversation", "parameters": [ { "$ref": "#/components/parameters/uid--conversation" @@ -4166,7 +4166,7 @@ ], "summary": "Reset User Conversation", "description": "Resetting User Conversation", - "operationId": "resets-user-conversation", + "operationId": "reset-user-conversation", "parameters": [ { "name": "onBehalfOf", @@ -4564,7 +4564,7 @@ ], "summary": "Update Group Conversation", "description": "Updating Group Conversation", - "operationId": "updates-group-conversation", + "operationId": "update-group-conversation", "parameters": [ { "$ref": "#/components/parameters/guid--conversation" @@ -4715,7 +4715,7 @@ ], "summary": "Reset Group Conversation", "description": "Resetting Group Conversation", - "operationId": "resets-group-conversation", + "operationId": "reset-group-conversation", "parameters": [ { "name": "onBehalfOf", @@ -5770,7 +5770,7 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array" } }, "type": "object" @@ -6466,6 +6466,7 @@ "Blocked Users" ], "summary": "Block User", + "operationId": "block-users", "description": "Blocks the specified user", "parameters": [ { @@ -6546,6 +6547,7 @@ "Blocked Users" ], "summary": "Unblock User", + "operationId": "unblock-users", "description": "Unblocks the specified user", "parameters": [ { @@ -6626,6 +6628,7 @@ "Blocked Users" ], "summary": "List Blocked Users", + "operationId": "list-blocked-users", "description": "Retrieves the blocked users", "parameters": [ { @@ -8552,7 +8555,7 @@ ], "summary": "Send Bot Message", "description": "Sends Message from a Bot.", - "operationId": "sends-bot-message", + "operationId": "send-bot-message", "parameters": [ { "name": "uid", @@ -8844,7 +8847,7 @@ "receiver": "cometchat-uid-2", "muid": "16Jan3:41423PM", "interactionGoal": { - "type": "anyAction", + "type": "anyOf", "elementIds": [] }, "allowSenderInteraction": false, @@ -13793,7 +13796,7 @@ "type": { "type": "string", "enum": [ - "anyAction", + "anyOf", "allOf", "oneOf", "none" @@ -16407,7 +16410,7 @@ "type": "string" }, "createdAt": { - "type": "string" + "type": "integer" } }, "type": "object" @@ -16438,7 +16441,7 @@ "type": "string" }, "createdAt": { - "type": "string" + "type": "integer" }, "conversationId": { "type": "string" diff --git a/data-import-apis.json b/data-import-apis.json index fdfbff91b..d4537b57f 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -3545,7 +3545,7 @@ "type": "string" }, "createdAt": { - "type": "string" + "type": "integer" } }, "type": "object" @@ -3576,7 +3576,7 @@ "type": "string" }, "createdAt": { - "type": "string" + "type": "integer" }, "conversationId": { "type": "string" diff --git a/management-apis.json b/management-apis.json index 8bf14133e..6d1674030 100644 --- a/management-apis.json +++ b/management-apis.json @@ -17,6 +17,7 @@ "App" ], "summary": "Create", + "operationId": "create-app", "description": "Creates an app in the account. It returns all the app related information.", "parameters": [ { @@ -128,6 +129,7 @@ "App" ], "summary": "List", + "operationId": "list-apps", "description": "Lists all the apps for an account.", "parameters": [ { @@ -239,6 +241,7 @@ "App" ], "summary": "Delete", + "operationId": "delete-app", "description": "Schedule a specific app for deletion.", "parameters": [ { @@ -357,6 +360,7 @@ "Extensions" ], "summary": "Enable/Disable", + "operationId": "enable-extension", "description": "Enables or disables the extension for an app.", "parameters": [ { @@ -442,6 +446,7 @@ "Extensions" ], "summary": "List Extensions", + "operationId": "list-extensions", "description": "List the Extensions.", "parameters": [ { @@ -1715,7 +1720,7 @@ } } }, - "operationId": "create-chat-widget" + "operationId": "store-chat-widget" }, "put": { "tags": [ @@ -2169,7 +2174,7 @@ } } }, - "operationId": "delete-settings-for-giphy-gifs-giphy" + "operationId": "delete-settings-giphy" } }, "/apps/{appId}/extensions/xss-filter/v1/settings": { @@ -8030,6 +8035,7 @@ "Team Management" ], "summary": "Adds/Remove collaborators", + "operationId": "add-collaborator", "description": "Adds or removes collaborators for an app.", "parameters": [ { @@ -8121,6 +8127,7 @@ "Team Management" ], "summary": "List collaborators", + "operationId": "list-collaborators", "description": "Lists all the collaborators of an app.", "parameters": [ { @@ -8626,7 +8633,7 @@ } } }, - "operationId": "adds-settings-profanity-filter" + "operationId": "store-settings-profanity-filter" }, "get": { "tags": [ @@ -11339,9 +11346,9 @@ "type": "string", "enum": [ "equals", - "not equals", + "notEquals", "in", - "not in", + "notIn", "startsWith" ], "example": "equals" diff --git a/rest-api/banned-users.mdx b/rest-api/banned-users.mdx index 181e7ec47..b76101810 100644 --- a/rest-api/banned-users.mdx +++ b/rest-api/banned-users.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Ban and unban users from groups." --- Certain actions can be performed on the group members: @@ -16,10 +17,29 @@ It simply bans the UID mentioned in the path parameter of the request. The banned user will be no longer part of the group and can not perform any actions in the group. A banned user cannot rejoin the same group without being unbanned. -## Endpoints +### Available operations | Method | Endpoint | Description | | ------ | ------------------------------------- | ---------------------------------- | | POST | `/groups/{guid}/banned_members` | Ban a user from a group | | GET | `/groups/{guid}/banned_members` | List all banned members of a group | | DELETE | `/groups/{guid}/banned_members/{uid}` | Unban a user from a group | + +### Banned user properties + +| Property | Type | Description | +| --- | --- | --- | +| **uid** | string | UID of the banned user | +| **scope** | string | Former scope of the user in the group before being banned | +| **bannedAt** | integer | UNIX timestamp of when the user was banned | + +### Error handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_GUID_NOT_FOUND` | The specified group GUID does not exist | +| `ERR_UID_NOT_FOUND` | The specified user UID does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/blocked-users.mdx b/rest-api/blocked-users.mdx index d98d4ee4e..f31fc8b25 100644 --- a/rest-api/blocked-users.mdx +++ b/rest-api/blocked-users.mdx @@ -1,12 +1,13 @@ --- title: "Overview" +description: "Block and unblock users to control messaging access." --- A user can block another user if the user doesn't wish to receive any messages or notifications from the blocked user.\ Once any user is blocked, all the communication to and from the respective user will be completely blocked.\ Once the user is unblocked, the newly sent messages will start to receive. However the messages that was sent during the blocked period won't be visible. -## Endpoints +### Available operations | Method | Endpoint | Description | | ------ | --------------------------- | ------------------------- | @@ -14,10 +15,20 @@ Once the user is unblocked, the newly sent messages will start to receive. Howev | GET | `/users/{uid}/blockedusers` | List all blocked users | | DELETE | `/users/{uid}/blockedusers` | Unblock one or more users | -## Properties +### Blocked user properties The following table lists the properties that the Blocked User API supports. | Parameters | Type | Description | | ----------- | ---------------- | ----------------------------------------------------------------- | | blockedUids | array of strings | (_optional_) Indicates the list of uids that needs to be blocked. | + +### Error handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_UID_NOT_FOUND` | The specified user UID does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). diff --git a/rest-api/friends.mdx b/rest-api/friends.mdx index 4b1e6e757..a14988645 100644 --- a/rest-api/friends.mdx +++ b/rest-api/friends.mdx @@ -1,11 +1,12 @@ --- title: "Overview" +description: "Manage friend relationships between users." --- If you want to associate friends with your users, you must handle friend management in your app.\ Once two users are friends (i.e. they have accepted each other as friends), then you can associate them as friends in CometChat. -## Endpoints +### Available operations | Method | Endpoint | Description | | ------ | ---------------------- | -------------------------- | @@ -13,10 +14,20 @@ Once two users are friends (i.e. they have accepted each other as friends), then | GET | `/users/{uid}/friends` | List all friends of a user | | DELETE | `/users/{uid}/friends` | Remove friends from a user | -## Properties +### Friend properties The following table lists the properties that the Friends API supports | Parameters | Type | Description | | ---------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- | | accepted | array of strings | (_optional_) Indicates an array of UIDs that are to be made friends. Maximum of 25 users can be passed in the accepted array. | + +### Error handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_UID_NOT_FOUND` | The specified user UID does not exist | + +For the complete list of error codes, see [Error Guide](/articles/error-guide). From 0bd5d8416a0b2dbe8672a9398e529fa7d6e5bccf Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 13:43:49 +0530 Subject: [PATCH 30/56] Fixed consistency issues --- .editorconfig | 21 ++++++ .prettierrc | 7 ++ docs.json | 175 +++++++++++++------------------------------------- 3 files changed, 74 insertions(+), 129 deletions(-) create mode 100644 .editorconfig create mode 100644 .prettierrc diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..611d00945 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.json] +indent_style = space +indent_size = 2 + +[*.mdx] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = false + +[*.md] +trim_trailing_whitespace = false diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..4d8e2f7b1 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "tabWidth": 2, + "useTabs": false, + "endOfLine": "lf", + "singleQuote": false, + "trailingComma": "none" +} diff --git a/docs.json b/docs.json index e5e6420a5..1994fc6c8 100644 --- a/docs.json +++ b/docs.json @@ -37,9 +37,7 @@ { "group": "Docs MCP", "hidden": true, - "pages": [ - "mcp-server" - ] + "pages": ["mcp-server"] } ] }, @@ -91,9 +89,7 @@ { "dropdown": "Kubernetes", "icon": "/images/icons/kubernetes.svg", - "pages": [ - "on-premise-deployment/kubernetes/overview" - ] + "pages": ["on-premise-deployment/kubernetes/overview"] } ] } @@ -104,9 +100,7 @@ "tabs": [ { "tab": "Chat & Calling", - "pages": [ - "chat-call" - ] + "pages": ["chat-call"] }, { "tab": "Platform", @@ -197,15 +191,11 @@ }, { "group": "User-Roles", - "pages": [ - "fundamentals/user-roles-and-permissions" - ] + "pages": ["fundamentals/user-roles-and-permissions"] }, { "group": "Guides", - "pages": [ - "fundamentals/user-auth" - ] + "pages": ["fundamentals/user-auth"] } ] }, @@ -221,9 +211,7 @@ "/widget/html/advanced", { "group": " ", - "pages": [ - "/widget/html/legacy" - ] + "pages": ["/widget/html/legacy"] } ] }, @@ -235,9 +223,7 @@ "/widget/wordpress/integration", { "group": " ", - "pages": [ - "/widget/wordpress/legacy" - ] + "pages": ["/widget/wordpress/legacy"] } ] }, @@ -260,10 +246,7 @@ { "dropdown": "Wix", "icon": "/images/icons/wix.svg", - "pages": [ - "/widget/wix/overview", - "/widget/wix/integration" - ] + "pages": ["/widget/wix/overview", "/widget/wix/integration"] }, { "dropdown": "Webflow", @@ -555,9 +538,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react/upgrading-from-v5" - ] + "pages": ["ui-kit/react/upgrading-from-v5"] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -1000,9 +981,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react-native/upgrading-from-v4" - ] + "pages": ["ui-kit/react-native/upgrading-from-v4"] }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", @@ -1289,10 +1268,7 @@ }, { "group": "Reference", - "pages": [ - "ui-kit/ios/methods", - "ui-kit/ios/events" - ] + "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] }, { "group": "Advanced", @@ -1318,9 +1294,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/ios/upgrading-from-v4" - ] + "pages": ["ui-kit/ios/upgrading-from-v4"] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1648,9 +1622,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/android/upgrading-from-v4" - ] + "pages": ["ui-kit/android/upgrading-from-v4"] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1961,9 +1933,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/flutter/upgrading-from-v4" - ] + "pages": ["ui-kit/flutter/upgrading-from-v4"] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -2550,9 +2520,7 @@ }, { "group": "Setup", - "pages": [ - "sdk/javascript/setup-sdk" - ] + "pages": ["sdk/javascript/setup-sdk"] }, { "group": "Authentication", @@ -2610,9 +2578,7 @@ }, { "group": "User Presence", - "pages": [ - "sdk/javascript/user-presence" - ] + "pages": ["sdk/javascript/user-presence"] }, { "group": "Groups", @@ -4984,9 +4950,7 @@ "tabs": [ { "tab": "Calling", - "pages": [ - "calls" - ] + "pages": ["calls"] }, { "tab": "Platform", @@ -5007,9 +4971,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/javascript/overview" - ] + "pages": ["calls/javascript/overview"] }, { "group": "Integrations", @@ -5070,9 +5032,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/react-native/overview" - ] + "pages": ["calls/react-native/overview"] }, { "group": "Getting Started", @@ -5124,16 +5084,11 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/ios/overview" - ] + "pages": ["calls/ios/overview"] }, { "group": "Getting Started", - "pages": [ - "calls/ios/setup", - "calls/ios/authentication" - ] + "pages": ["calls/ios/setup", "calls/ios/authentication"] }, { "group": "Call Session", @@ -5178,9 +5133,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/android/overview" - ] + "pages": ["calls/android/overview"] }, { "group": "Getting Started", @@ -5232,9 +5185,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/flutter/overview" - ] + "pages": ["calls/flutter/overview"] }, { "group": "Getting Started", @@ -5283,11 +5234,11 @@ ] }, { - "tab": "API", + "tab": "APIs", "tab-id": "calls-api", "pages": [ { - "group": "Calls", + "group": "Calls APIs", "pages": [ "calls/api/overview", "calls/api/list-calls", @@ -5303,9 +5254,7 @@ "tabs": [ { "tab": "AI Agents", - "pages": [ - "ai-agents" - ] + "pages": ["ai-agents"] }, { "tab": "Agent Builder", @@ -5368,15 +5317,11 @@ "/ai-agents/crew-ai-tools", { "group": "Guides", - "pages": [ - "/ai-agents/crew-ai-knowledge-agent" - ] + "pages": ["/ai-agents/crew-ai-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/crew-ai-product-hunt-agent" - ] + "pages": ["/ai-agents/crew-ai-product-hunt-agent"] } ] }, @@ -5389,15 +5334,11 @@ "/ai-agents/agno-tools", { "group": "Guides", - "pages": [ - "/ai-agents/agno-knowledge-agent" - ] + "pages": ["/ai-agents/agno-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/agno-product-hunt-agent" - ] + "pages": ["/ai-agents/agno-product-hunt-agent"] } ] }, @@ -5410,15 +5351,11 @@ "/ai-agents/vercel-tools", { "group": "Guides", - "pages": [ - "/ai-agents/vercel-knowledge-agent" - ] + "pages": ["/ai-agents/vercel-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/vercel-product-hunt-agent" - ] + "pages": ["/ai-agents/vercel-product-hunt-agent"] } ] }, @@ -5429,15 +5366,11 @@ "/ai-agents/langgraph", { "group": "Guides", - "pages": [ - "/ai-agents/langgraph-knowledge-agent" - ] + "pages": ["/ai-agents/langgraph-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/langgraph-product-hunt-agent" - ] + "pages": ["/ai-agents/langgraph-product-hunt-agent"] } ] }, @@ -5450,15 +5383,11 @@ "/ai-agents/ag2-tools", { "group": "Guides", - "pages": [ - "/ai-agents/ag2-knowledge-agent" - ] + "pages": ["/ai-agents/ag2-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/ag2-product-hunt-agent" - ] + "pages": ["/ai-agents/ag2-product-hunt-agent"] } ] }, @@ -5471,9 +5400,7 @@ "/ai-agents/ag-ui-tools", { "group": "Guides", - "pages": [ - "/ai-agents/cometchat-ag-ui-byoa" - ] + "pages": ["/ai-agents/cometchat-ag-ui-byoa"] }, { "group": "Implementation", @@ -5489,16 +5416,12 @@ { "tab": "Widget Builder", "tab-id": "ai-agent-chat-builder", - "pages": [ - "/ai-agents/chat-widget" - ] + "pages": ["/ai-agents/chat-widget"] }, { "tab": "Custom Bots", "hidden": true, - "pages": [ - "/ai-chatbots/custom-bots" - ] + "pages": ["/ai-chatbots/custom-bots"] }, { "tab": "AI Bots (Legacy)", @@ -5750,9 +5673,7 @@ }, { "group": "Reviewed Messages", - "pages": [ - "moderation/apis/list-reviewed-messages" - ] + "pages": ["moderation/apis/list-reviewed-messages"] }, { "group": "Reasons", @@ -5773,9 +5694,7 @@ "tabs": [ { "tab": "Notifications", - "pages": [ - "notifications" - ] + "pages": ["notifications"] }, { "tab": "Push", @@ -5834,7 +5753,7 @@ "tab": "APIs", "pages": [ { - "group": "Push APIs", + "group": "Push Notification APIs", "pages": [ "notifications/apis/push/list-fcm-providers", "notifications/apis/push/add-fcm-provider", @@ -5872,7 +5791,7 @@ ] }, { - "group": "Email APIs", + "group": "Email Notification APIs", "pages": [ "notifications/apis/email/get-sendgrid-credentials", "notifications/apis/email/save-sendgrid-credentials", @@ -5885,7 +5804,7 @@ ] }, { - "group": "SMS APIs", + "group": "SMS Notification APIs", "pages": [ "notifications/apis/sms/get-twilio-credentials", "notifications/apis/sms/save-twilio-credentials", @@ -5906,9 +5825,7 @@ "tabs": [ { "tab": "Insights", - "pages": [ - "insights" - ] + "pages": ["insights"] } ] } @@ -7311,4 +7228,4 @@ "redirect": true } } -} \ No newline at end of file +} From efceb57f2458142a245b9051b5fba1478fc984cb Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 22:01:17 +0530 Subject: [PATCH 31/56] Moved all the rest api docs under rest-api --- docs.json | 997 ++++++++++++++---- index.mdx | 14 +- .../ai-agents-apis/agents/create-agent.mdx | 3 + .../ai-agents-apis/agents/delete-agent.mdx | 3 + rest-api/ai-agents-apis/agents/get-agent.mdx | 3 + .../agents/list-agent-tools-and-actions.mdx | 3 + .../ai-agents-apis/agents/list-agents.mdx | 3 + .../agents/search-agent-tools.mdx | 3 + .../ai-agents-apis/agents/update-agent.mdx | 3 + .../add-api-tools-to-agent.mdx | 3 + .../custom-api-tools/create-api-tool.mdx | 3 + .../custom-api-tools/delete-api-tool.mdx | 3 + .../custom-api-tools/list-api-tools.mdx | 3 + .../remove-api-tools-from-agent.mdx | 3 + .../custom-api-tools/update-api-tool.mdx | 3 + .../add-frontend-actions-to-agent.mdx | 3 + .../create-frontend-action.mdx | 3 + .../delete-frontend-action.mdx | 3 + .../list-frontend-actions.mdx | 3 + .../remove-frontend-actions-from-agent.mdx | 3 + .../update-frontend-action.mdx | 3 + .../add-knowledge-base-files.mdx | 3 + .../knowledge-base/create-text-detail.mdx | 3 + .../knowledge-base/delete-text-detail.mdx | 3 + .../knowledge-base/delete-uploaded-file.mdx | 3 + .../knowledge-base/delete-website.mdx | 3 + .../knowledge-base/get-discovered-urls.mdx | 3 + .../knowledge-base/get-source-pages.mdx | 3 + .../knowledge-base/initiate-file-uploads.mdx | 3 + .../list-knowledge-base-records.mdx | 3 + .../poll-discovered-urls-status.mdx | 3 + .../poll-knowledge-base-status.mdx | 3 + .../process-discovered-urls.mdx | 3 + .../remove-knowledge-base-files.mdx | 3 + .../retry-indexing-for-website-pages.mdx | 3 + .../retry-knowledge-base-source-indexing.mdx | 3 + .../knowledge-base/scrape-single-page.mdx | 3 + .../knowledge-base/scrape-website.mdx | 3 + .../knowledge-base/update-text-detail.mdx | 3 + .../mcp-servers/add-mcp-servers-to-agent.mdx | 3 + .../mcp-servers/create-mcp-server.mdx | 3 + .../mcp-servers/delete-mcp-server.mdx | 3 + .../mcp-servers/list-mcp-servers.mdx | 3 + .../remove-mcp-servers-from-agent.mdx | 3 + .../mcp-servers/update-mcp-server.mdx | 3 + rest-api/ai-agents-apis/overview.mdx | 27 + .../tools/add-tools-to-agent.mdx | 3 + .../tools/enable-tool-actions.mdx | 3 + .../tools/get-tool-actions-for-agent.mdx | 3 + .../tools/remove-tool-actions.mdx | 3 + .../tools/remove-tools-from-agent.mdx | 3 + .../variables/create-custom-variable.mdx | 3 + .../variables/delete-custom-variable.mdx | 3 + .../variables/get-all-available-variables.mdx | 3 + .../variables/update-custom-variable.mdx | 3 + .../agents/create-byo-agent.mdx | 3 + .../agents/delete-byo-agent.mdx | 3 + .../agents/list-byo-agents.mdx | 3 + .../agents/update-byo-agent.mdx | 3 + rest-api/byo-ai-agents-apis/overview.mdx | 23 + .../byo-ai-agents-apis/tools/create-tool.mdx | 3 + .../byo-ai-agents-apis/tools/delete-tool.mdx | 3 + .../byo-ai-agents-apis/tools/get-tool.mdx | 3 + .../byo-ai-agents-apis/tools/list-tools.mdx | 3 + .../byo-ai-agents-apis/tools/update-tool.mdx | 3 + rest-api/calls-apis/get-call.mdx | 46 + rest-api/calls-apis/list-calls.mdx | 36 + rest-api/calls-apis/overview.mdx | 239 +++++ rest-api/moderation-apis/add-keywords.mdx | 3 + rest-api/moderation-apis/add-rule.mdx | 3 + .../approve-blocked-messages.mdx | 3 + .../blockreview-flagged-message.mdx | 3 + rest-api/moderation-apis/create-reasons.mdx | 3 + rest-api/moderation-apis/delete-reasons.mdx | 3 + rest-api/moderation-apis/flag-a-message.mdx | 3 + rest-api/moderation-apis/get-keyword.mdx | 3 + .../moderation-apis/get-reason-details.mdx | 3 + .../moderation-apis/get-rule-revisions.mdx | 3 + rest-api/moderation-apis/get-rule.mdx | 3 + .../moderation-apis/list-blocked-messages.mdx | 3 + .../moderation-apis/list-flagged-messages.mdx | 3 + rest-api/moderation-apis/list-keywords.mdx | 3 + rest-api/moderation-apis/list-reasons.mdx | 3 + .../list-reviewed-messages.mdx | 3 + rest-api/moderation-apis/list-rules.mdx | 3 + rest-api/moderation-apis/overview.mdx | 73 ++ rest-api/moderation-apis/remove-keyword.mdx | 3 + rest-api/moderation-apis/remove-rule.mdx | 3 + .../review-blocked-message.mdx | 3 + rest-api/moderation-apis/update-keyword.mdx | 3 + .../moderation-apis/update-reason-details.mdx | 3 + rest-api/moderation-apis/update-rule.mdx | 3 + .../email/delete-custom-provider.mdx | 3 + .../email/delete-sendgrid-credentials.mdx | 3 + .../email/get-custom-provider.mdx | 3 + .../email/get-sendgrid-credentials.mdx | 3 + .../email/save-custom-provider.mdx | 3 + .../email/save-sendgrid-credentials.mdx | 3 + .../email/update-custom-provider.mdx | 3 + .../email/update-sendgrid-credentials.mdx | 3 + .../push/add-apns-provider.mdx | 3 + .../push/add-fcm-provider.mdx | 3 + .../push/change-default-apns-provider.mdx | 3 + .../push/change-default-fcm-provider.mdx | 3 + .../push/delete-apns-providers.mdx | 3 + .../push/delete-contact-details.mdx | 3 + .../push/delete-custom-provider.mdx | 3 + .../push/delete-fcm-provider.mdx | 3 + .../push/delete-push-token.mdx | 3 + .../push/get-contact-details.mdx | 3 + .../push/get-custom-provider.mdx | 3 + .../notifications-apis/push/get-timezone.mdx | 3 + .../push/list-apns-providers.mdx | 3 + .../push/list-fcm-providers.mdx | 3 + .../push/list-muted-conversations.mdx | 3 + .../push/list-preferences.mdx | 3 + .../push/list-push-tokens.mdx | 3 + .../notifications-apis/push/list-settings.mdx | 3 + .../push/mute-conversations.mdx | 3 + .../push/notifications-logs.mdx | 3 + .../push/register-push-token.mdx | 3 + .../push/reset-preferences.mdx | 3 + .../push/reset-settings.mdx | 3 + .../push/save-custom-provider.mdx | 3 + .../push/unmute-conversations.mdx | 3 + .../push/unregister-push-tokens.mdx | 3 + .../push/update-apns-providers.mdx | 3 + .../push/update-contact-details.mdx | 3 + .../push/update-custom-provider.mdx | 3 + .../push/update-fcm-provider.mdx | 3 + .../push/update-preferences.mdx | 3 + .../push/update-settings.mdx | 3 + .../push/update-timezone.mdx | 3 + .../sms/delete-custom-provider.mdx | 3 + .../sms/delete-twilio-credentials.mdx | 3 + .../sms/get-custom-provider.mdx | 3 + .../sms/get-twilio-credentials.mdx | 3 + .../sms/save-custom-provider.mdx | 3 + .../sms/save-twilio-credentials.mdx | 3 + .../sms/update-custom-provider.mdx | 3 + .../sms/update-twilio-credentials.mdx | 3 + 141 files changed, 1668 insertions(+), 186 deletions(-) create mode 100644 rest-api/ai-agents-apis/agents/create-agent.mdx create mode 100644 rest-api/ai-agents-apis/agents/delete-agent.mdx create mode 100644 rest-api/ai-agents-apis/agents/get-agent.mdx create mode 100644 rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx create mode 100644 rest-api/ai-agents-apis/agents/list-agents.mdx create mode 100644 rest-api/ai-agents-apis/agents/search-agent-tools.mdx create mode 100644 rest-api/ai-agents-apis/agents/update-agent.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/delete-website.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx create mode 100644 rest-api/ai-agents-apis/overview.mdx create mode 100644 rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx create mode 100644 rest-api/ai-agents-apis/tools/enable-tool-actions.mdx create mode 100644 rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx create mode 100644 rest-api/ai-agents-apis/tools/remove-tool-actions.mdx create mode 100644 rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx create mode 100644 rest-api/ai-agents-apis/variables/create-custom-variable.mdx create mode 100644 rest-api/ai-agents-apis/variables/delete-custom-variable.mdx create mode 100644 rest-api/ai-agents-apis/variables/get-all-available-variables.mdx create mode 100644 rest-api/ai-agents-apis/variables/update-custom-variable.mdx create mode 100644 rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx create mode 100644 rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx create mode 100644 rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx create mode 100644 rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx create mode 100644 rest-api/byo-ai-agents-apis/overview.mdx create mode 100644 rest-api/byo-ai-agents-apis/tools/create-tool.mdx create mode 100644 rest-api/byo-ai-agents-apis/tools/delete-tool.mdx create mode 100644 rest-api/byo-ai-agents-apis/tools/get-tool.mdx create mode 100644 rest-api/byo-ai-agents-apis/tools/list-tools.mdx create mode 100644 rest-api/byo-ai-agents-apis/tools/update-tool.mdx create mode 100644 rest-api/calls-apis/get-call.mdx create mode 100644 rest-api/calls-apis/list-calls.mdx create mode 100644 rest-api/calls-apis/overview.mdx create mode 100644 rest-api/moderation-apis/add-keywords.mdx create mode 100644 rest-api/moderation-apis/add-rule.mdx create mode 100644 rest-api/moderation-apis/approve-blocked-messages.mdx create mode 100644 rest-api/moderation-apis/blockreview-flagged-message.mdx create mode 100644 rest-api/moderation-apis/create-reasons.mdx create mode 100644 rest-api/moderation-apis/delete-reasons.mdx create mode 100644 rest-api/moderation-apis/flag-a-message.mdx create mode 100644 rest-api/moderation-apis/get-keyword.mdx create mode 100644 rest-api/moderation-apis/get-reason-details.mdx create mode 100644 rest-api/moderation-apis/get-rule-revisions.mdx create mode 100644 rest-api/moderation-apis/get-rule.mdx create mode 100644 rest-api/moderation-apis/list-blocked-messages.mdx create mode 100644 rest-api/moderation-apis/list-flagged-messages.mdx create mode 100644 rest-api/moderation-apis/list-keywords.mdx create mode 100644 rest-api/moderation-apis/list-reasons.mdx create mode 100644 rest-api/moderation-apis/list-reviewed-messages.mdx create mode 100644 rest-api/moderation-apis/list-rules.mdx create mode 100644 rest-api/moderation-apis/overview.mdx create mode 100644 rest-api/moderation-apis/remove-keyword.mdx create mode 100644 rest-api/moderation-apis/remove-rule.mdx create mode 100644 rest-api/moderation-apis/review-blocked-message.mdx create mode 100644 rest-api/moderation-apis/update-keyword.mdx create mode 100644 rest-api/moderation-apis/update-reason-details.mdx create mode 100644 rest-api/moderation-apis/update-rule.mdx create mode 100644 rest-api/notifications-apis/email/delete-custom-provider.mdx create mode 100644 rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx create mode 100644 rest-api/notifications-apis/email/get-custom-provider.mdx create mode 100644 rest-api/notifications-apis/email/get-sendgrid-credentials.mdx create mode 100644 rest-api/notifications-apis/email/save-custom-provider.mdx create mode 100644 rest-api/notifications-apis/email/save-sendgrid-credentials.mdx create mode 100644 rest-api/notifications-apis/email/update-custom-provider.mdx create mode 100644 rest-api/notifications-apis/email/update-sendgrid-credentials.mdx create mode 100644 rest-api/notifications-apis/push/add-apns-provider.mdx create mode 100644 rest-api/notifications-apis/push/add-fcm-provider.mdx create mode 100644 rest-api/notifications-apis/push/change-default-apns-provider.mdx create mode 100644 rest-api/notifications-apis/push/change-default-fcm-provider.mdx create mode 100644 rest-api/notifications-apis/push/delete-apns-providers.mdx create mode 100644 rest-api/notifications-apis/push/delete-contact-details.mdx create mode 100644 rest-api/notifications-apis/push/delete-custom-provider.mdx create mode 100644 rest-api/notifications-apis/push/delete-fcm-provider.mdx create mode 100644 rest-api/notifications-apis/push/delete-push-token.mdx create mode 100644 rest-api/notifications-apis/push/get-contact-details.mdx create mode 100644 rest-api/notifications-apis/push/get-custom-provider.mdx create mode 100644 rest-api/notifications-apis/push/get-timezone.mdx create mode 100644 rest-api/notifications-apis/push/list-apns-providers.mdx create mode 100644 rest-api/notifications-apis/push/list-fcm-providers.mdx create mode 100644 rest-api/notifications-apis/push/list-muted-conversations.mdx create mode 100644 rest-api/notifications-apis/push/list-preferences.mdx create mode 100644 rest-api/notifications-apis/push/list-push-tokens.mdx create mode 100644 rest-api/notifications-apis/push/list-settings.mdx create mode 100644 rest-api/notifications-apis/push/mute-conversations.mdx create mode 100644 rest-api/notifications-apis/push/notifications-logs.mdx create mode 100644 rest-api/notifications-apis/push/register-push-token.mdx create mode 100644 rest-api/notifications-apis/push/reset-preferences.mdx create mode 100644 rest-api/notifications-apis/push/reset-settings.mdx create mode 100644 rest-api/notifications-apis/push/save-custom-provider.mdx create mode 100644 rest-api/notifications-apis/push/unmute-conversations.mdx create mode 100644 rest-api/notifications-apis/push/unregister-push-tokens.mdx create mode 100644 rest-api/notifications-apis/push/update-apns-providers.mdx create mode 100644 rest-api/notifications-apis/push/update-contact-details.mdx create mode 100644 rest-api/notifications-apis/push/update-custom-provider.mdx create mode 100644 rest-api/notifications-apis/push/update-fcm-provider.mdx create mode 100644 rest-api/notifications-apis/push/update-preferences.mdx create mode 100644 rest-api/notifications-apis/push/update-settings.mdx create mode 100644 rest-api/notifications-apis/push/update-timezone.mdx create mode 100644 rest-api/notifications-apis/sms/delete-custom-provider.mdx create mode 100644 rest-api/notifications-apis/sms/delete-twilio-credentials.mdx create mode 100644 rest-api/notifications-apis/sms/get-custom-provider.mdx create mode 100644 rest-api/notifications-apis/sms/get-twilio-credentials.mdx create mode 100644 rest-api/notifications-apis/sms/save-custom-provider.mdx create mode 100644 rest-api/notifications-apis/sms/save-twilio-credentials.mdx create mode 100644 rest-api/notifications-apis/sms/update-custom-provider.mdx create mode 100644 rest-api/notifications-apis/sms/update-twilio-credentials.mdx diff --git a/docs.json b/docs.json index 1994fc6c8..f216d7c16 100644 --- a/docs.json +++ b/docs.json @@ -37,7 +37,9 @@ { "group": "Docs MCP", "hidden": true, - "pages": ["mcp-server"] + "pages": [ + "mcp-server" + ] } ] }, @@ -89,7 +91,9 @@ { "dropdown": "Kubernetes", "icon": "/images/icons/kubernetes.svg", - "pages": ["on-premise-deployment/kubernetes/overview"] + "pages": [ + "on-premise-deployment/kubernetes/overview" + ] } ] } @@ -100,7 +104,9 @@ "tabs": [ { "tab": "Chat & Calling", - "pages": ["chat-call"] + "pages": [ + "chat-call" + ] }, { "tab": "Platform", @@ -191,11 +197,15 @@ }, { "group": "User-Roles", - "pages": ["fundamentals/user-roles-and-permissions"] + "pages": [ + "fundamentals/user-roles-and-permissions" + ] }, { "group": "Guides", - "pages": ["fundamentals/user-auth"] + "pages": [ + "fundamentals/user-auth" + ] } ] }, @@ -211,7 +221,9 @@ "/widget/html/advanced", { "group": " ", - "pages": ["/widget/html/legacy"] + "pages": [ + "/widget/html/legacy" + ] } ] }, @@ -223,7 +235,9 @@ "/widget/wordpress/integration", { "group": " ", - "pages": ["/widget/wordpress/legacy"] + "pages": [ + "/widget/wordpress/legacy" + ] } ] }, @@ -246,7 +260,10 @@ { "dropdown": "Wix", "icon": "/images/icons/wix.svg", - "pages": ["/widget/wix/overview", "/widget/wix/integration"] + "pages": [ + "/widget/wix/overview", + "/widget/wix/integration" + ] }, { "dropdown": "Webflow", @@ -538,7 +555,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react/upgrading-from-v5"] + "pages": [ + "ui-kit/react/upgrading-from-v5" + ] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -981,7 +1000,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react-native/upgrading-from-v4"] + "pages": [ + "ui-kit/react-native/upgrading-from-v4" + ] }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", @@ -1268,7 +1289,10 @@ }, { "group": "Reference", - "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] + "pages": [ + "ui-kit/ios/methods", + "ui-kit/ios/events" + ] }, { "group": "Advanced", @@ -1294,7 +1318,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/ios/upgrading-from-v4"] + "pages": [ + "ui-kit/ios/upgrading-from-v4" + ] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1622,7 +1648,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/android/upgrading-from-v4"] + "pages": [ + "ui-kit/android/upgrading-from-v4" + ] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1933,7 +1961,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/flutter/upgrading-from-v4"] + "pages": [ + "ui-kit/flutter/upgrading-from-v4" + ] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -2520,7 +2550,9 @@ }, { "group": "Setup", - "pages": ["sdk/javascript/setup-sdk"] + "pages": [ + "sdk/javascript/setup-sdk" + ] }, { "group": "Authentication", @@ -2578,7 +2610,9 @@ }, { "group": "User Presence", - "pages": ["sdk/javascript/user-presence"] + "pages": [ + "sdk/javascript/user-presence" + ] }, { "group": "Groups", @@ -4950,7 +4984,9 @@ "tabs": [ { "tab": "Calling", - "pages": ["calls"] + "pages": [ + "calls" + ] }, { "tab": "Platform", @@ -4971,7 +5007,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/javascript/overview"] + "pages": [ + "calls/javascript/overview" + ] }, { "group": "Integrations", @@ -5032,7 +5070,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/react-native/overview"] + "pages": [ + "calls/react-native/overview" + ] }, { "group": "Getting Started", @@ -5084,11 +5124,16 @@ "pages": [ { "group": "Overview", - "pages": ["calls/ios/overview"] + "pages": [ + "calls/ios/overview" + ] }, { "group": "Getting Started", - "pages": ["calls/ios/setup", "calls/ios/authentication"] + "pages": [ + "calls/ios/setup", + "calls/ios/authentication" + ] }, { "group": "Call Session", @@ -5133,7 +5178,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/android/overview"] + "pages": [ + "calls/android/overview" + ] }, { "group": "Getting Started", @@ -5185,7 +5232,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/flutter/overview"] + "pages": [ + "calls/flutter/overview" + ] }, { "group": "Getting Started", @@ -5240,9 +5289,9 @@ { "group": "Calls APIs", "pages": [ - "calls/api/overview", - "calls/api/list-calls", - "calls/api/get-call" + "rest-api/calls-apis/overview", + "rest-api/calls-apis/list-calls", + "rest-api/calls-apis/get-call" ] } ] @@ -5254,7 +5303,9 @@ "tabs": [ { "tab": "AI Agents", - "pages": ["ai-agents"] + "pages": [ + "ai-agents" + ] }, { "tab": "Agent Builder", @@ -5317,11 +5368,15 @@ "/ai-agents/crew-ai-tools", { "group": "Guides", - "pages": ["/ai-agents/crew-ai-knowledge-agent"] + "pages": [ + "/ai-agents/crew-ai-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/crew-ai-product-hunt-agent"] + "pages": [ + "/ai-agents/crew-ai-product-hunt-agent" + ] } ] }, @@ -5334,11 +5389,15 @@ "/ai-agents/agno-tools", { "group": "Guides", - "pages": ["/ai-agents/agno-knowledge-agent"] + "pages": [ + "/ai-agents/agno-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/agno-product-hunt-agent"] + "pages": [ + "/ai-agents/agno-product-hunt-agent" + ] } ] }, @@ -5351,11 +5410,15 @@ "/ai-agents/vercel-tools", { "group": "Guides", - "pages": ["/ai-agents/vercel-knowledge-agent"] + "pages": [ + "/ai-agents/vercel-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/vercel-product-hunt-agent"] + "pages": [ + "/ai-agents/vercel-product-hunt-agent" + ] } ] }, @@ -5366,11 +5429,15 @@ "/ai-agents/langgraph", { "group": "Guides", - "pages": ["/ai-agents/langgraph-knowledge-agent"] + "pages": [ + "/ai-agents/langgraph-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/langgraph-product-hunt-agent"] + "pages": [ + "/ai-agents/langgraph-product-hunt-agent" + ] } ] }, @@ -5383,11 +5450,15 @@ "/ai-agents/ag2-tools", { "group": "Guides", - "pages": ["/ai-agents/ag2-knowledge-agent"] + "pages": [ + "/ai-agents/ag2-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/ag2-product-hunt-agent"] + "pages": [ + "/ai-agents/ag2-product-hunt-agent" + ] } ] }, @@ -5400,7 +5471,9 @@ "/ai-agents/ag-ui-tools", { "group": "Guides", - "pages": ["/ai-agents/cometchat-ag-ui-byoa"] + "pages": [ + "/ai-agents/cometchat-ag-ui-byoa" + ] }, { "group": "Implementation", @@ -5416,12 +5489,16 @@ { "tab": "Widget Builder", "tab-id": "ai-agent-chat-builder", - "pages": ["/ai-agents/chat-widget"] + "pages": [ + "/ai-agents/chat-widget" + ] }, { "tab": "Custom Bots", "hidden": true, - "pages": ["/ai-chatbots/custom-bots"] + "pages": [ + "/ai-chatbots/custom-bots" + ] }, { "tab": "AI Bots (Legacy)", @@ -5438,16 +5515,16 @@ { "group": "BYO Agent APIs", "pages": [ - "ai-agents/byo-api-explorer", + "rest-api/byo-ai-agents-apis/overview", { "group": "BYO Agents", "expanded": false, "icon": "robot", "pages": [ - "ai-agents/apis/create-byo-agent", - "ai-agents/apis/list-byo-agents", - "ai-agents/apis/update-byo-agent", - "ai-agents/apis/delete-byo-agent" + "rest-api/byo-ai-agents-apis/agents/create-byo-agent", + "rest-api/byo-ai-agents-apis/agents/list-byo-agents", + "rest-api/byo-ai-agents-apis/agents/update-byo-agent", + "rest-api/byo-ai-agents-apis/agents/delete-byo-agent" ] }, { @@ -5455,11 +5532,11 @@ "expanded": false, "icon": "wrench", "pages": [ - "ai-agents/apis/list-tools", - "ai-agents/apis/get-tool", - "ai-agents/apis/create-tool", - "ai-agents/apis/update-tool", - "ai-agents/apis/delete-tool" + "rest-api/byo-ai-agents-apis/tools/list-tools", + "rest-api/byo-ai-agents-apis/tools/get-tool", + "rest-api/byo-ai-agents-apis/tools/create-tool", + "rest-api/byo-ai-agents-apis/tools/update-tool", + "rest-api/byo-ai-agents-apis/tools/delete-tool" ] } ] @@ -5467,19 +5544,19 @@ { "group": "Agent Builder APIs", "pages": [ - "ai-agents/api-explorer", + "rest-api/ai-agents-apis/overview", { "group": "Agents", "expanded": false, "icon": "robot", "pages": [ - "ai-agents/apis/create-agent", - "ai-agents/apis/list-agents", - "ai-agents/apis/get-agent", - "ai-agents/apis/update-agent", - "ai-agents/apis/delete-agent", - "ai-agents/apis/search-agent-tools", - "ai-agents/apis/list-agent-tools-and-actions" + "rest-api/ai-agents-apis/agents/create-agent", + "rest-api/ai-agents-apis/agents/list-agents", + "rest-api/ai-agents-apis/agents/get-agent", + "rest-api/ai-agents-apis/agents/update-agent", + "rest-api/ai-agents-apis/agents/delete-agent", + "rest-api/ai-agents-apis/agents/search-agent-tools", + "rest-api/ai-agents-apis/agents/list-agent-tools-and-actions" ] }, { @@ -5487,11 +5564,11 @@ "expanded": false, "icon": "wrench", "pages": [ - "ai-agents/apis/add-tools-to-agent", - "ai-agents/apis/remove-tools-from-agent", - "ai-agents/apis/get-tool-actions-for-agent", - "ai-agents/apis/enable-tool-actions", - "ai-agents/apis/remove-tool-actions" + "rest-api/ai-agents-apis/tools/add-tools-to-agent", + "rest-api/ai-agents-apis/tools/remove-tools-from-agent", + "rest-api/ai-agents-apis/tools/get-tool-actions-for-agent", + "rest-api/ai-agents-apis/tools/enable-tool-actions", + "rest-api/ai-agents-apis/tools/remove-tool-actions" ] }, { @@ -5499,12 +5576,12 @@ "expanded": false, "icon": "code", "pages": [ - "ai-agents/apis/list-api-tools", - "ai-agents/apis/create-api-tool", - "ai-agents/apis/update-api-tool", - "ai-agents/apis/delete-api-tool", - "ai-agents/apis/add-api-tools-to-agent", - "ai-agents/apis/remove-api-tools-from-agent" + "rest-api/ai-agents-apis/custom-api-tools/list-api-tools", + "rest-api/ai-agents-apis/custom-api-tools/create-api-tool", + "rest-api/ai-agents-apis/custom-api-tools/update-api-tool", + "rest-api/ai-agents-apis/custom-api-tools/delete-api-tool", + "rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent", + "rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent" ] }, { @@ -5512,12 +5589,12 @@ "expanded": false, "icon": "window", "pages": [ - "ai-agents/apis/list-frontend-actions", - "ai-agents/apis/create-frontend-action", - "ai-agents/apis/update-frontend-action", - "ai-agents/apis/delete-frontend-action", - "ai-agents/apis/add-frontend-actions-to-agent", - "ai-agents/apis/remove-frontend-actions-from-agent" + "rest-api/ai-agents-apis/frontend-actions/list-frontend-actions", + "rest-api/ai-agents-apis/frontend-actions/create-frontend-action", + "rest-api/ai-agents-apis/frontend-actions/update-frontend-action", + "rest-api/ai-agents-apis/frontend-actions/delete-frontend-action", + "rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent", + "rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent" ] }, { @@ -5525,12 +5602,12 @@ "expanded": false, "icon": "server", "pages": [ - "ai-agents/apis/list-mcp-servers", - "ai-agents/apis/create-mcp-server", - "ai-agents/apis/update-mcp-server", - "ai-agents/apis/delete-mcp-server", - "ai-agents/apis/add-mcp-servers-to-agent", - "ai-agents/apis/remove-mcp-servers-from-agent" + "rest-api/ai-agents-apis/mcp-servers/list-mcp-servers", + "rest-api/ai-agents-apis/mcp-servers/create-mcp-server", + "rest-api/ai-agents-apis/mcp-servers/update-mcp-server", + "rest-api/ai-agents-apis/mcp-servers/delete-mcp-server", + "rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent", + "rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent" ] }, { @@ -5538,24 +5615,24 @@ "expanded": false, "icon": "book", "pages": [ - "ai-agents/apis/list-knowledge-base-records", - "ai-agents/apis/get-source-pages", - "ai-agents/apis/retry-knowledge-base-source-indexing", - "ai-agents/apis/initiate-file-uploads", - "ai-agents/apis/delete-uploaded-file", - "ai-agents/apis/create-text-detail", - "ai-agents/apis/update-text-detail", - "ai-agents/apis/delete-text-detail", - "ai-agents/apis/poll-knowledge-base-status", - "ai-agents/apis/add-knowledge-base-files", - "ai-agents/apis/remove-knowledge-base-files", - "ai-agents/apis/scrape-single-page", - "ai-agents/apis/scrape-website", - "ai-agents/apis/get-discovered-urls", - "ai-agents/apis/process-discovered-urls", - "ai-agents/apis/delete-website", - "ai-agents/apis/poll-discovered-urls-status", - "ai-agents/apis/retry-indexing-for-website-pages" + "rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records", + "rest-api/ai-agents-apis/knowledge-base/get-source-pages", + "rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing", + "rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads", + "rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file", + "rest-api/ai-agents-apis/knowledge-base/create-text-detail", + "rest-api/ai-agents-apis/knowledge-base/update-text-detail", + "rest-api/ai-agents-apis/knowledge-base/delete-text-detail", + "rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status", + "rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files", + "rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files", + "rest-api/ai-agents-apis/knowledge-base/scrape-single-page", + "rest-api/ai-agents-apis/knowledge-base/scrape-website", + "rest-api/ai-agents-apis/knowledge-base/get-discovered-urls", + "rest-api/ai-agents-apis/knowledge-base/process-discovered-urls", + "rest-api/ai-agents-apis/knowledge-base/delete-website", + "rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status", + "rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages" ] }, { @@ -5563,10 +5640,10 @@ "expanded": false, "icon": "brackets-curly", "pages": [ - "ai-agents/apis/get-all-available-variables", - "ai-agents/apis/create-custom-variable", - "ai-agents/apis/update-custom-variable", - "ai-agents/apis/delete-custom-variable" + "rest-api/ai-agents-apis/variables/get-all-available-variables", + "rest-api/ai-agents-apis/variables/create-custom-variable", + "rest-api/ai-agents-apis/variables/update-custom-variable", + "rest-api/ai-agents-apis/variables/delete-custom-variable" ] } ] @@ -5633,56 +5710,58 @@ { "tab": "APIs", "pages": [ - "moderation/api-explorer", + "rest-api/moderation-apis/overview", { "group": "Rules", "pages": [ - "moderation/apis/list-rules", - "moderation/apis/add-rule", - "moderation/apis/get-rule", - "moderation/apis/update-rule", - "moderation/apis/remove-rule", - "moderation/apis/get-rule-revisions" + "rest-api/moderation-apis/list-rules", + "rest-api/moderation-apis/add-rule", + "rest-api/moderation-apis/get-rule", + "rest-api/moderation-apis/update-rule", + "rest-api/moderation-apis/remove-rule", + "rest-api/moderation-apis/get-rule-revisions" ] }, { "group": "Keywords", "pages": [ - "moderation/apis/list-keywords", - "moderation/apis/add-keywords", - "moderation/apis/get-keyword", - "moderation/apis/update-keyword", - "moderation/apis/remove-keyword" + "rest-api/moderation-apis/list-keywords", + "rest-api/moderation-apis/add-keywords", + "rest-api/moderation-apis/get-keyword", + "rest-api/moderation-apis/update-keyword", + "rest-api/moderation-apis/remove-keyword" ] }, { "group": "Blocked Messages", "pages": [ - "moderation/apis/list-blocked-messages", - "moderation/apis/approve-blocked-messages", - "moderation/apis/review-blocked-message" + "rest-api/moderation-apis/list-blocked-messages", + "rest-api/moderation-apis/approve-blocked-messages", + "rest-api/moderation-apis/review-blocked-message" ] }, { "group": "Flagged Messages", "pages": [ - "moderation/apis/list-flagged-messages", - "moderation/apis/blockreview-flagged-message", - "moderation/apis/flag-a-message" + "rest-api/moderation-apis/list-flagged-messages", + "rest-api/moderation-apis/blockreview-flagged-message", + "rest-api/moderation-apis/flag-a-message" ] }, { "group": "Reviewed Messages", - "pages": ["moderation/apis/list-reviewed-messages"] + "pages": [ + "rest-api/moderation-apis/list-reviewed-messages" + ] }, { "group": "Reasons", "pages": [ - "moderation/apis/create-reasons", - "moderation/apis/list-reasons", - "moderation/apis/get-reason-details", - "moderation/apis/update-reason-details", - "moderation/apis/delete-reasons" + "rest-api/moderation-apis/create-reasons", + "rest-api/moderation-apis/list-reasons", + "rest-api/moderation-apis/get-reason-details", + "rest-api/moderation-apis/update-reason-details", + "rest-api/moderation-apis/delete-reasons" ] } ] @@ -5694,7 +5773,9 @@ "tabs": [ { "tab": "Notifications", - "pages": ["notifications"] + "pages": [ + "notifications" + ] }, { "tab": "Push", @@ -5755,65 +5836,65 @@ { "group": "Push Notification APIs", "pages": [ - "notifications/apis/push/list-fcm-providers", - "notifications/apis/push/add-fcm-provider", - "notifications/apis/push/update-fcm-provider", - "notifications/apis/push/delete-fcm-provider", - "notifications/apis/push/change-default-fcm-provider", - "notifications/apis/push/list-apns-providers", - "notifications/apis/push/add-apns-provider", - "notifications/apis/push/update-apns-providers", - "notifications/apis/push/delete-apns-providers", - "notifications/apis/push/change-default-apns-provider", - "notifications/apis/push/register-push-token", - "notifications/apis/push/list-push-tokens", - "notifications/apis/push/delete-push-token", - "notifications/apis/push/unregister-push-tokens", - "notifications/apis/push/get-custom-provider", - "notifications/apis/push/save-custom-provider", - "notifications/apis/push/update-custom-provider", - "notifications/apis/push/delete-custom-provider", - "notifications/apis/push/list-settings", - "notifications/apis/push/update-settings", - "notifications/apis/push/reset-settings", - "notifications/apis/push/list-preferences", - "notifications/apis/push/update-preferences", - "notifications/apis/push/reset-preferences", - "notifications/apis/push/get-timezone", - "notifications/apis/push/update-timezone", - "notifications/apis/push/get-contact-details", - "notifications/apis/push/update-contact-details", - "notifications/apis/push/delete-contact-details", - "notifications/apis/push/mute-conversations", - "notifications/apis/push/unmute-conversations", - "notifications/apis/push/list-muted-conversations", - "notifications/apis/push/notifications-logs" + "rest-api/notifications-apis/push/list-fcm-providers", + "rest-api/notifications-apis/push/add-fcm-provider", + "rest-api/notifications-apis/push/update-fcm-provider", + "rest-api/notifications-apis/push/delete-fcm-provider", + "rest-api/notifications-apis/push/change-default-fcm-provider", + "rest-api/notifications-apis/push/list-apns-providers", + "rest-api/notifications-apis/push/add-apns-provider", + "rest-api/notifications-apis/push/update-apns-providers", + "rest-api/notifications-apis/push/delete-apns-providers", + "rest-api/notifications-apis/push/change-default-apns-provider", + "rest-api/notifications-apis/push/register-push-token", + "rest-api/notifications-apis/push/list-push-tokens", + "rest-api/notifications-apis/push/delete-push-token", + "rest-api/notifications-apis/push/unregister-push-tokens", + "rest-api/notifications-apis/push/get-custom-provider", + "rest-api/notifications-apis/push/save-custom-provider", + "rest-api/notifications-apis/push/update-custom-provider", + "rest-api/notifications-apis/push/delete-custom-provider", + "rest-api/notifications-apis/push/list-settings", + "rest-api/notifications-apis/push/update-settings", + "rest-api/notifications-apis/push/reset-settings", + "rest-api/notifications-apis/push/list-preferences", + "rest-api/notifications-apis/push/update-preferences", + "rest-api/notifications-apis/push/reset-preferences", + "rest-api/notifications-apis/push/get-timezone", + "rest-api/notifications-apis/push/update-timezone", + "rest-api/notifications-apis/push/get-contact-details", + "rest-api/notifications-apis/push/update-contact-details", + "rest-api/notifications-apis/push/delete-contact-details", + "rest-api/notifications-apis/push/mute-conversations", + "rest-api/notifications-apis/push/unmute-conversations", + "rest-api/notifications-apis/push/list-muted-conversations", + "rest-api/notifications-apis/push/notifications-logs" ] }, { "group": "Email Notification APIs", "pages": [ - "notifications/apis/email/get-sendgrid-credentials", - "notifications/apis/email/save-sendgrid-credentials", - "notifications/apis/email/update-sendgrid-credentials", - "notifications/apis/email/delete-sendgrid-credentials", - "notifications/apis/email/get-custom-provider", - "notifications/apis/email/save-custom-provider", - "notifications/apis/email/update-custom-provider", - "notifications/apis/email/delete-custom-provider" + "rest-api/notifications-apis/email/get-sendgrid-credentials", + "rest-api/notifications-apis/email/save-sendgrid-credentials", + "rest-api/notifications-apis/email/update-sendgrid-credentials", + "rest-api/notifications-apis/email/delete-sendgrid-credentials", + "rest-api/notifications-apis/email/get-custom-provider", + "rest-api/notifications-apis/email/save-custom-provider", + "rest-api/notifications-apis/email/update-custom-provider", + "rest-api/notifications-apis/email/delete-custom-provider" ] }, { "group": "SMS Notification APIs", "pages": [ - "notifications/apis/sms/get-twilio-credentials", - "notifications/apis/sms/save-twilio-credentials", - "notifications/apis/sms/update-twilio-credentials", - "notifications/apis/sms/delete-twilio-credentials", - "notifications/apis/sms/get-custom-provider", - "notifications/apis/sms/save-custom-provider", - "notifications/apis/sms/update-custom-provider", - "notifications/apis/sms/delete-custom-provider" + "rest-api/notifications-apis/sms/get-twilio-credentials", + "rest-api/notifications-apis/sms/save-twilio-credentials", + "rest-api/notifications-apis/sms/update-twilio-credentials", + "rest-api/notifications-apis/sms/delete-twilio-credentials", + "rest-api/notifications-apis/sms/get-custom-provider", + "rest-api/notifications-apis/sms/save-custom-provider", + "rest-api/notifications-apis/sms/update-custom-provider", + "rest-api/notifications-apis/sms/delete-custom-provider" ] } ] @@ -5825,7 +5906,9 @@ "tabs": [ { "tab": "Insights", - "pages": ["insights"] + "pages": [ + "insights" + ] } ] } @@ -7207,6 +7290,562 @@ { "source": "/rest-api/messages/mark-message-as-interacted", "destination": "/rest-api/messages" + }, + { + "source": "/calls/api/overview", + "destination": "/rest-api/calls-apis/overview" + }, + { + "source": "/calls/api/list-calls", + "destination": "/rest-api/calls-apis/list-calls" + }, + { + "source": "/calls/api/get-call", + "destination": "/rest-api/calls-apis/get-call" + }, + { + "source": "/ai-agents/byo-api-explorer", + "destination": "/rest-api/byo-ai-agents-apis/overview" + }, + { + "source": "/ai-agents/apis/create-byo-agent", + "destination": "/rest-api/byo-ai-agents-apis/agents/create-byo-agent" + }, + { + "source": "/ai-agents/apis/list-byo-agents", + "destination": "/rest-api/byo-ai-agents-apis/agents/list-byo-agents" + }, + { + "source": "/ai-agents/apis/update-byo-agent", + "destination": "/rest-api/byo-ai-agents-apis/agents/update-byo-agent" + }, + { + "source": "/ai-agents/apis/delete-byo-agent", + "destination": "/rest-api/byo-ai-agents-apis/agents/delete-byo-agent" + }, + { + "source": "/ai-agents/apis/list-tools", + "destination": "/rest-api/byo-ai-agents-apis/tools/list-tools" + }, + { + "source": "/ai-agents/apis/get-tool", + "destination": "/rest-api/byo-ai-agents-apis/tools/get-tool" + }, + { + "source": "/ai-agents/apis/create-tool", + "destination": "/rest-api/byo-ai-agents-apis/tools/create-tool" + }, + { + "source": "/ai-agents/apis/update-tool", + "destination": "/rest-api/byo-ai-agents-apis/tools/update-tool" + }, + { + "source": "/ai-agents/apis/delete-tool", + "destination": "/rest-api/byo-ai-agents-apis/tools/delete-tool" + }, + { + "source": "/ai-agents/api-explorer", + "destination": "/rest-api/ai-agents-apis/overview" + }, + { + "source": "/ai-agents/apis/create-agent", + "destination": "/rest-api/ai-agents-apis/agents/create-agent" + }, + { + "source": "/ai-agents/apis/list-agents", + "destination": "/rest-api/ai-agents-apis/agents/list-agents" + }, + { + "source": "/ai-agents/apis/get-agent", + "destination": "/rest-api/ai-agents-apis/agents/get-agent" + }, + { + "source": "/ai-agents/apis/update-agent", + "destination": "/rest-api/ai-agents-apis/agents/update-agent" + }, + { + "source": "/ai-agents/apis/delete-agent", + "destination": "/rest-api/ai-agents-apis/agents/delete-agent" + }, + { + "source": "/ai-agents/apis/search-agent-tools", + "destination": "/rest-api/ai-agents-apis/agents/search-agent-tools" + }, + { + "source": "/ai-agents/apis/list-agent-tools-and-actions", + "destination": "/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions" + }, + { + "source": "/ai-agents/apis/add-tools-to-agent", + "destination": "/rest-api/ai-agents-apis/tools/add-tools-to-agent" + }, + { + "source": "/ai-agents/apis/remove-tools-from-agent", + "destination": "/rest-api/ai-agents-apis/tools/remove-tools-from-agent" + }, + { + "source": "/ai-agents/apis/get-tool-actions-for-agent", + "destination": "/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent" + }, + { + "source": "/ai-agents/apis/enable-tool-actions", + "destination": "/rest-api/ai-agents-apis/tools/enable-tool-actions" + }, + { + "source": "/ai-agents/apis/remove-tool-actions", + "destination": "/rest-api/ai-agents-apis/tools/remove-tool-actions" + }, + { + "source": "/ai-agents/apis/list-api-tools", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/list-api-tools" + }, + { + "source": "/ai-agents/apis/create-api-tool", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/create-api-tool" + }, + { + "source": "/ai-agents/apis/update-api-tool", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/update-api-tool" + }, + { + "source": "/ai-agents/apis/delete-api-tool", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool" + }, + { + "source": "/ai-agents/apis/add-api-tools-to-agent", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent" + }, + { + "source": "/ai-agents/apis/remove-api-tools-from-agent", + "destination": "/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent" + }, + { + "source": "/ai-agents/apis/list-frontend-actions", + "destination": "/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions" + }, + { + "source": "/ai-agents/apis/create-frontend-action", + "destination": "/rest-api/ai-agents-apis/frontend-actions/create-frontend-action" + }, + { + "source": "/ai-agents/apis/update-frontend-action", + "destination": "/rest-api/ai-agents-apis/frontend-actions/update-frontend-action" + }, + { + "source": "/ai-agents/apis/delete-frontend-action", + "destination": "/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action" + }, + { + "source": "/ai-agents/apis/add-frontend-actions-to-agent", + "destination": "/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent" + }, + { + "source": "/ai-agents/apis/remove-frontend-actions-from-agent", + "destination": "/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent" + }, + { + "source": "/ai-agents/apis/list-mcp-servers", + "destination": "/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers" + }, + { + "source": "/ai-agents/apis/create-mcp-server", + "destination": "/rest-api/ai-agents-apis/mcp-servers/create-mcp-server" + }, + { + "source": "/ai-agents/apis/update-mcp-server", + "destination": "/rest-api/ai-agents-apis/mcp-servers/update-mcp-server" + }, + { + "source": "/ai-agents/apis/delete-mcp-server", + "destination": "/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server" + }, + { + "source": "/ai-agents/apis/add-mcp-servers-to-agent", + "destination": "/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent" + }, + { + "source": "/ai-agents/apis/remove-mcp-servers-from-agent", + "destination": "/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent" + }, + { + "source": "/ai-agents/apis/list-knowledge-base-records", + "destination": "/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records" + }, + { + "source": "/ai-agents/apis/get-source-pages", + "destination": "/rest-api/ai-agents-apis/knowledge-base/get-source-pages" + }, + { + "source": "/ai-agents/apis/retry-knowledge-base-source-indexing", + "destination": "/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing" + }, + { + "source": "/ai-agents/apis/initiate-file-uploads", + "destination": "/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads" + }, + { + "source": "/ai-agents/apis/delete-uploaded-file", + "destination": "/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file" + }, + { + "source": "/ai-agents/apis/create-text-detail", + "destination": "/rest-api/ai-agents-apis/knowledge-base/create-text-detail" + }, + { + "source": "/ai-agents/apis/update-text-detail", + "destination": "/rest-api/ai-agents-apis/knowledge-base/update-text-detail" + }, + { + "source": "/ai-agents/apis/delete-text-detail", + "destination": "/rest-api/ai-agents-apis/knowledge-base/delete-text-detail" + }, + { + "source": "/ai-agents/apis/poll-knowledge-base-status", + "destination": "/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status" + }, + { + "source": "/ai-agents/apis/add-knowledge-base-files", + "destination": "/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files" + }, + { + "source": "/ai-agents/apis/remove-knowledge-base-files", + "destination": "/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files" + }, + { + "source": "/ai-agents/apis/scrape-single-page", + "destination": "/rest-api/ai-agents-apis/knowledge-base/scrape-single-page" + }, + { + "source": "/ai-agents/apis/scrape-website", + "destination": "/rest-api/ai-agents-apis/knowledge-base/scrape-website" + }, + { + "source": "/ai-agents/apis/get-discovered-urls", + "destination": "/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls" + }, + { + "source": "/ai-agents/apis/process-discovered-urls", + "destination": "/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls" + }, + { + "source": "/ai-agents/apis/delete-website", + "destination": "/rest-api/ai-agents-apis/knowledge-base/delete-website" + }, + { + "source": "/ai-agents/apis/poll-discovered-urls-status", + "destination": "/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status" + }, + { + "source": "/ai-agents/apis/retry-indexing-for-website-pages", + "destination": "/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages" + }, + { + "source": "/ai-agents/apis/get-all-available-variables", + "destination": "/rest-api/ai-agents-apis/variables/get-all-available-variables" + }, + { + "source": "/ai-agents/apis/create-custom-variable", + "destination": "/rest-api/ai-agents-apis/variables/create-custom-variable" + }, + { + "source": "/ai-agents/apis/update-custom-variable", + "destination": "/rest-api/ai-agents-apis/variables/update-custom-variable" + }, + { + "source": "/ai-agents/apis/delete-custom-variable", + "destination": "/rest-api/ai-agents-apis/variables/delete-custom-variable" + }, + { + "source": "/moderation/api-explorer", + "destination": "/rest-api/moderation-apis/overview" + }, + { + "source": "/moderation/apis/add-keywords", + "destination": "/rest-api/moderation-apis/add-keywords" + }, + { + "source": "/moderation/apis/add-rule", + "destination": "/rest-api/moderation-apis/add-rule" + }, + { + "source": "/moderation/apis/approve-blocked-messages", + "destination": "/rest-api/moderation-apis/approve-blocked-messages" + }, + { + "source": "/moderation/apis/blockreview-flagged-message", + "destination": "/rest-api/moderation-apis/blockreview-flagged-message" + }, + { + "source": "/moderation/apis/create-reasons", + "destination": "/rest-api/moderation-apis/create-reasons" + }, + { + "source": "/moderation/apis/delete-reasons", + "destination": "/rest-api/moderation-apis/delete-reasons" + }, + { + "source": "/moderation/apis/flag-a-message", + "destination": "/rest-api/moderation-apis/flag-a-message" + }, + { + "source": "/moderation/apis/get-keyword", + "destination": "/rest-api/moderation-apis/get-keyword" + }, + { + "source": "/moderation/apis/get-reason-details", + "destination": "/rest-api/moderation-apis/get-reason-details" + }, + { + "source": "/moderation/apis/get-rule", + "destination": "/rest-api/moderation-apis/get-rule" + }, + { + "source": "/moderation/apis/get-rule-revisions", + "destination": "/rest-api/moderation-apis/get-rule-revisions" + }, + { + "source": "/moderation/apis/list-blocked-messages", + "destination": "/rest-api/moderation-apis/list-blocked-messages" + }, + { + "source": "/moderation/apis/list-flagged-messages", + "destination": "/rest-api/moderation-apis/list-flagged-messages" + }, + { + "source": "/moderation/apis/list-keywords", + "destination": "/rest-api/moderation-apis/list-keywords" + }, + { + "source": "/moderation/apis/list-reasons", + "destination": "/rest-api/moderation-apis/list-reasons" + }, + { + "source": "/moderation/apis/list-reviewed-messages", + "destination": "/rest-api/moderation-apis/list-reviewed-messages" + }, + { + "source": "/moderation/apis/list-rules", + "destination": "/rest-api/moderation-apis/list-rules" + }, + { + "source": "/moderation/apis/remove-keyword", + "destination": "/rest-api/moderation-apis/remove-keyword" + }, + { + "source": "/moderation/apis/remove-rule", + "destination": "/rest-api/moderation-apis/remove-rule" + }, + { + "source": "/moderation/apis/review-blocked-message", + "destination": "/rest-api/moderation-apis/review-blocked-message" + }, + { + "source": "/moderation/apis/update-keyword", + "destination": "/rest-api/moderation-apis/update-keyword" + }, + { + "source": "/moderation/apis/update-reason-details", + "destination": "/rest-api/moderation-apis/update-reason-details" + }, + { + "source": "/moderation/apis/update-rule", + "destination": "/rest-api/moderation-apis/update-rule" + }, + { + "source": "/notifications/apis/sms/get-twilio-credentials", + "destination": "/rest-api/notifications-apis/sms/get-twilio-credentials" + }, + { + "source": "/notifications/apis/sms/save-custom-provider", + "destination": "/rest-api/notifications-apis/sms/save-custom-provider" + }, + { + "source": "/notifications/apis/sms/save-twilio-credentials", + "destination": "/rest-api/notifications-apis/sms/save-twilio-credentials" + }, + { + "source": "/notifications/apis/sms/get-custom-provider", + "destination": "/rest-api/notifications-apis/sms/get-custom-provider" + }, + { + "source": "/notifications/apis/sms/update-custom-provider", + "destination": "/rest-api/notifications-apis/sms/update-custom-provider" + }, + { + "source": "/notifications/apis/sms/delete-twilio-credentials", + "destination": "/rest-api/notifications-apis/sms/delete-twilio-credentials" + }, + { + "source": "/notifications/apis/sms/delete-custom-provider", + "destination": "/rest-api/notifications-apis/sms/delete-custom-provider" + }, + { + "source": "/notifications/apis/sms/update-twilio-credentials", + "destination": "/rest-api/notifications-apis/sms/update-twilio-credentials" + }, + { + "source": "/notifications/apis/push/reset-preferences", + "destination": "/rest-api/notifications-apis/push/reset-preferences" + }, + { + "source": "/notifications/apis/push/update-timezone", + "destination": "/rest-api/notifications-apis/push/update-timezone" + }, + { + "source": "/notifications/apis/push/list-muted-conversations", + "destination": "/rest-api/notifications-apis/push/list-muted-conversations" + }, + { + "source": "/notifications/apis/push/delete-fcm-provider", + "destination": "/rest-api/notifications-apis/push/delete-fcm-provider" + }, + { + "source": "/notifications/apis/push/list-apns-providers", + "destination": "/rest-api/notifications-apis/push/list-apns-providers" + }, + { + "source": "/notifications/apis/push/add-apns-provider", + "destination": "/rest-api/notifications-apis/push/add-apns-provider" + }, + { + "source": "/notifications/apis/push/update-apns-providers", + "destination": "/rest-api/notifications-apis/push/update-apns-providers" + }, + { + "source": "/notifications/apis/push/unregister-push-tokens", + "destination": "/rest-api/notifications-apis/push/unregister-push-tokens" + }, + { + "source": "/notifications/apis/push/reset-settings", + "destination": "/rest-api/notifications-apis/push/reset-settings" + }, + { + "source": "/notifications/apis/push/save-custom-provider", + "destination": "/rest-api/notifications-apis/push/save-custom-provider" + }, + { + "source": "/notifications/apis/push/change-default-apns-provider", + "destination": "/rest-api/notifications-apis/push/change-default-apns-provider" + }, + { + "source": "/notifications/apis/push/change-default-fcm-provider", + "destination": "/rest-api/notifications-apis/push/change-default-fcm-provider" + }, + { + "source": "/notifications/apis/push/list-fcm-providers", + "destination": "/rest-api/notifications-apis/push/list-fcm-providers" + }, + { + "source": "/notifications/apis/push/get-contact-details", + "destination": "/rest-api/notifications-apis/push/get-contact-details" + }, + { + "source": "/notifications/apis/push/get-custom-provider", + "destination": "/rest-api/notifications-apis/push/get-custom-provider" + }, + { + "source": "/notifications/apis/push/mute-conversations", + "destination": "/rest-api/notifications-apis/push/mute-conversations" + }, + { + "source": "/notifications/apis/push/add-fcm-provider", + "destination": "/rest-api/notifications-apis/push/add-fcm-provider" + }, + { + "source": "/notifications/apis/push/update-contact-details", + "destination": "/rest-api/notifications-apis/push/update-contact-details" + }, + { + "source": "/notifications/apis/push/list-settings", + "destination": "/rest-api/notifications-apis/push/list-settings" + }, + { + "source": "/notifications/apis/push/notifications-logs", + "destination": "/rest-api/notifications-apis/push/notifications-logs" + }, + { + "source": "/notifications/apis/push/update-custom-provider", + "destination": "/rest-api/notifications-apis/push/update-custom-provider" + }, + { + "source": "/notifications/apis/push/update-fcm-provider", + "destination": "/rest-api/notifications-apis/push/update-fcm-provider" + }, + { + "source": "/notifications/apis/push/update-settings", + "destination": "/rest-api/notifications-apis/push/update-settings" + }, + { + "source": "/notifications/apis/push/delete-push-token", + "destination": "/rest-api/notifications-apis/push/delete-push-token" + }, + { + "source": "/notifications/apis/push/delete-contact-details", + "destination": "/rest-api/notifications-apis/push/delete-contact-details" + }, + { + "source": "/notifications/apis/push/register-push-token", + "destination": "/rest-api/notifications-apis/push/register-push-token" + }, + { + "source": "/notifications/apis/push/list-push-tokens", + "destination": "/rest-api/notifications-apis/push/list-push-tokens" + }, + { + "source": "/notifications/apis/push/delete-custom-provider", + "destination": "/rest-api/notifications-apis/push/delete-custom-provider" + }, + { + "source": "/notifications/apis/push/delete-apns-providers", + "destination": "/rest-api/notifications-apis/push/delete-apns-providers" + }, + { + "source": "/notifications/apis/push/get-timezone", + "destination": "/rest-api/notifications-apis/push/get-timezone" + }, + { + "source": "/notifications/apis/push/update-preferences", + "destination": "/rest-api/notifications-apis/push/update-preferences" + }, + { + "source": "/notifications/apis/push/unmute-conversations", + "destination": "/rest-api/notifications-apis/push/unmute-conversations" + }, + { + "source": "/notifications/apis/push/list-preferences", + "destination": "/rest-api/notifications-apis/push/list-preferences" + }, + { + "source": "/notifications/apis/email/delete-sendgrid-credentials", + "destination": "/rest-api/notifications-apis/email/delete-sendgrid-credentials" + }, + { + "source": "/notifications/apis/email/update-sendgrid-credentials", + "destination": "/rest-api/notifications-apis/email/update-sendgrid-credentials" + }, + { + "source": "/notifications/apis/email/save-custom-provider", + "destination": "/rest-api/notifications-apis/email/save-custom-provider" + }, + { + "source": "/notifications/apis/email/save-sendgrid-credentials", + "destination": "/rest-api/notifications-apis/email/save-sendgrid-credentials" + }, + { + "source": "/notifications/apis/email/get-sendgrid-credentials", + "destination": "/rest-api/notifications-apis/email/get-sendgrid-credentials" + }, + { + "source": "/notifications/apis/email/get-custom-provider", + "destination": "/rest-api/notifications-apis/email/get-custom-provider" + }, + { + "source": "/notifications/apis/email/update-custom-provider", + "destination": "/rest-api/notifications-apis/email/update-custom-provider" + }, + { + "source": "/notifications/apis/email/delete-custom-provider", + "destination": "/rest-api/notifications-apis/email/delete-custom-provider" } ], "integrations": { @@ -7228,4 +7867,4 @@ "redirect": true } } -} +} \ No newline at end of file diff --git a/index.mdx b/index.mdx index e8aa02068..c5d49fd6b 100644 --- a/index.mdx +++ b/index.mdx @@ -26,7 +26,7 @@ canonical: "https://cometchat.com/docs" } + icon={Chat & Messaging} iconType="solid" href="/chat-call" > @@ -35,7 +35,7 @@ canonical: "https://cometchat.com/docs" } + icon={Voice & Video Calling} iconType="solid" href="/calls" > @@ -44,7 +44,7 @@ canonical: "https://cometchat.com/docs" } + icon={AI Agents} iconType="solid" href="/ai-agents" > @@ -73,7 +73,7 @@ canonical: "https://cometchat.com/docs" } + icon={AI Moderation} iconType="solid" href="/moderation/overview" > @@ -82,7 +82,7 @@ canonical: "https://cometchat.com/docs" } + icon={Notifications} iconType="solid" href="/notifications" > @@ -91,7 +91,7 @@ canonical: "https://cometchat.com/docs" } + icon={Insights} iconType="solid" href="/insights" > @@ -120,7 +120,7 @@ canonical: "https://cometchat.com/docs" } + icon={On-Premise Deployment} iconType="solid" href="/on-premise-deployment/docker/overview" > diff --git a/rest-api/ai-agents-apis/agents/create-agent.mdx b/rest-api/ai-agents-apis/agents/create-agent.mdx new file mode 100644 index 000000000..ea136b527 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/create-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/agents +--- diff --git a/rest-api/ai-agents-apis/agents/delete-agent.mdx b/rest-api/ai-agents-apis/agents/delete-agent.mdx new file mode 100644 index 000000000..1a496aa85 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/delete-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/agents/{uid} +--- diff --git a/rest-api/ai-agents-apis/agents/get-agent.mdx b/rest-api/ai-agents-apis/agents/get-agent.mdx new file mode 100644 index 000000000..c78ad4837 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/get-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents/{uid} +--- diff --git a/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx new file mode 100644 index 000000000..97ad7ca63 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents/{uid}/enabled-items +--- diff --git a/rest-api/ai-agents-apis/agents/list-agents.mdx b/rest-api/ai-agents-apis/agents/list-agents.mdx new file mode 100644 index 000000000..83c5d0c0f --- /dev/null +++ b/rest-api/ai-agents-apis/agents/list-agents.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents +--- diff --git a/rest-api/ai-agents-apis/agents/search-agent-tools.mdx b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx new file mode 100644 index 000000000..521943845 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents/{uid}/tools/search +--- diff --git a/rest-api/ai-agents-apis/agents/update-agent.mdx b/rest-api/ai-agents-apis/agents/update-agent.mdx new file mode 100644 index 000000000..4555de01a --- /dev/null +++ b/rest-api/ai-agents-apis/agents/update-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid} +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx new file mode 100644 index 000000000..ff80f873c --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/add +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx new file mode 100644 index 000000000..833a8214b --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/api-tools +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx new file mode 100644 index 000000000..bf04a9cd8 --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/api-tools/{slug} +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx new file mode 100644 index 000000000..e9ea65da8 --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/api-tools +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx new file mode 100644 index 000000000..23edeb189 --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/remove +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx new file mode 100644 index 000000000..5ce342fff --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/api-tools/{slug} +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx new file mode 100644 index 000000000..caff2e3e6 --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/add +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx new file mode 100644 index 000000000..6ba5b596d --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/frontend-actions +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx new file mode 100644 index 000000000..196fc06aa --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/frontend-actions/{id} +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx new file mode 100644 index 000000000..4b4e15540 --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/frontend-actions +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx new file mode 100644 index 000000000..57d871fd7 --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/remove +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx new file mode 100644 index 000000000..2b97786bb --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/frontend-actions/{id} +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx new file mode 100644 index 000000000..f88c31add --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/add +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx new file mode 100644 index 000000000..c6fe50b21 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/text +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx new file mode 100644 index 000000000..7c6422e2b --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx new file mode 100644 index 000000000..f53ec6901 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/knowledge-base/uploads/{uniqueId} +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx new file mode 100644 index 000000000..9fff82254 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/knowledge-base/website/{uniqueId} +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx new file mode 100644 index 000000000..7070ced9c --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx new file mode 100644 index 000000000..2a2888e5d --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/pages +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx new file mode 100644 index 000000000..04acaf303 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/uploads/initiate +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx new file mode 100644 index 000000000..5586a048a --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/knowledge-base +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx new file mode 100644 index 000000000..b28e053de --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/status/poll +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx new file mode 100644 index 000000000..a8d419d0c --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/status/poll +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx new file mode 100644 index 000000000..9b561e5e6 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/process +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx new file mode 100644 index 000000000..e7126dc5f --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/remove +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx new file mode 100644 index 000000000..91f50ab37 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/sync +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx new file mode 100644 index 000000000..c1da30244 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/sync +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx new file mode 100644 index 000000000..12ac66e7b --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/website/individual-page +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx new file mode 100644 index 000000000..4e87ff062 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/knowledge-base/website/scrape +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx new file mode 100644 index 000000000..28dfd41a3 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx new file mode 100644 index 000000000..670828d9c --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/add +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx new file mode 100644 index 000000000..564affd3c --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/mcp-servers +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx new file mode 100644 index 000000000..23745cf7c --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/mcp-servers/{slug} +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx new file mode 100644 index 000000000..013fdd6d8 --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/mcp-servers +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx new file mode 100644 index 000000000..e2620930a --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/remove +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx new file mode 100644 index 000000000..425a8ca64 --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/mcp-servers/{slug} +--- diff --git a/rest-api/ai-agents-apis/overview.mdx b/rest-api/ai-agents-apis/overview.mdx new file mode 100644 index 000000000..741ba6ee5 --- /dev/null +++ b/rest-api/ai-agents-apis/overview.mdx @@ -0,0 +1,27 @@ +--- +title: "Agent Builder APIs" +sidebarTitle: "Overview" +--- + +The Agent Builder APIs provide endpoints for creating and managing AI agents using CometChat's native agent builder. These APIs enable you to configure agents with tools, MCP servers, custom API tools, frontend actions, and RAG-based knowledge bases — all without writing your own agent orchestration logic. + +Below is an overview of the key functionalities provided by the Agent Builder APIs: + +1. The Agents endpoints allow you to create, configure, and manage native CometChat agents with full tool and knowledge base support. +2. The Tools endpoints allow you to browse, add, remove, and configure ready-to-use Composio tools and manage tool actions for your agents. +3. The Custom API Tools endpoints allow you to create and manage custom API-based tools that can be attached to agents. +4. The Frontend Actions endpoints allow you to define and manage UI-triggered actions that agents can perform. +5. The MCP Servers endpoints allow you to create and manage Model Context Protocol servers for your agents. +6. The Knowledge Base endpoints allow you to manage file uploads, text content, website crawling, and RAG sources for agent responses. +7. The Variables endpoints allow you to manage predefined and custom variables used in agent configurations. + +--- + +## Authentication + +All Agent Builder API endpoints require authentication via an API key passed in the request header. + +| Property | Details | +|----------|---------| +| **Header** | `apikey` | +| **Requirement** | Required on all endpoints | diff --git a/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx new file mode 100644 index 000000000..1e32e69f5 --- /dev/null +++ b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/add +--- diff --git a/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx new file mode 100644 index 000000000..4783173e1 --- /dev/null +++ b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/add +--- diff --git a/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx new file mode 100644 index 000000000..8f7d81638 --- /dev/null +++ b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions +--- diff --git a/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx new file mode 100644 index 000000000..2db9dd77c --- /dev/null +++ b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/remove +--- diff --git a/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx new file mode 100644 index 000000000..922cd940f --- /dev/null +++ b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/remove +--- diff --git a/rest-api/ai-agents-apis/variables/create-custom-variable.mdx b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx new file mode 100644 index 000000000..dbe5b6e56 --- /dev/null +++ b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agent-builder/agents/variables/custom +--- diff --git a/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx new file mode 100644 index 000000000..7bec4b90e --- /dev/null +++ b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agent-builder/agents/variables/custom/{variableId} +--- diff --git a/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx new file mode 100644 index 000000000..30114fdd0 --- /dev/null +++ b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agent-builder/agents/variables/all +--- diff --git a/rest-api/ai-agents-apis/variables/update-custom-variable.mdx b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx new file mode 100644 index 000000000..7a2c2b0ec --- /dev/null +++ b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agent-builder/agents/variables/custom/{variableId} +--- diff --git a/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx new file mode 100644 index 000000000..15246a836 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/agents +--- diff --git a/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx new file mode 100644 index 000000000..a8a9ea563 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/agents/{uid} +--- diff --git a/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx new file mode 100644 index 000000000..471474bb6 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/agents +--- diff --git a/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx new file mode 100644 index 000000000..de39efbd2 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /ai-agents/agents/{uid} +--- diff --git a/rest-api/byo-ai-agents-apis/overview.mdx b/rest-api/byo-ai-agents-apis/overview.mdx new file mode 100644 index 000000000..257205124 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/overview.mdx @@ -0,0 +1,23 @@ +--- +title: "BYO Agent APIs" +sidebarTitle: "Overview" +--- + +The BYO (Bring Your Own) Agent APIs provide endpoints for creating and managing AI agents that integrate with third-party frameworks such as Vercel AI SDK, LangGraph, CrewAI, Mastra, AG2, Agno, and AG-UI. These APIs allow you to register external agents, manage custom tools and actions, and configure available integrations. + +Below is an overview of the key functionalities provided by the BYO Agent APIs: + +1. The Third-Party Agents endpoints allow you to list, update, and delete agents that delegate to external AI frameworks. +2. The Tools endpoints allow you to create, update, and manage custom tools that your BYO agents can use. +3. The Integrations endpoint allows you to retrieve available AI framework integrations supported by CometChat. + +--- + +## Authentication + +All BYO Agent API endpoints require authentication via an API key passed in the request header. + +| Property | Details | +|----------|---------| +| **Header** | `apikey` | +| **Requirement** | Required on all endpoints | diff --git a/rest-api/byo-ai-agents-apis/tools/create-tool.mdx b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx new file mode 100644 index 000000000..535d26a45 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /ai-agents/tools +--- diff --git a/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx new file mode 100644 index 000000000..424e4cb0e --- /dev/null +++ b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /ai-agents/tools/{name} +--- diff --git a/rest-api/byo-ai-agents-apis/tools/get-tool.mdx b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx new file mode 100644 index 000000000..72baf1a9f --- /dev/null +++ b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/tools/{name} +--- diff --git a/rest-api/byo-ai-agents-apis/tools/list-tools.mdx b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx new file mode 100644 index 000000000..e5c6b459a --- /dev/null +++ b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /ai-agents/tools +--- diff --git a/rest-api/byo-ai-agents-apis/tools/update-tool.mdx b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx new file mode 100644 index 000000000..551844389 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /ai-agents/tools/{name} +--- diff --git a/rest-api/calls-apis/get-call.mdx b/rest-api/calls-apis/get-call.mdx new file mode 100644 index 000000000..b6a9f198c --- /dev/null +++ b/rest-api/calls-apis/get-call.mdx @@ -0,0 +1,46 @@ +--- +title: "Get Call" +sidebarTitle: "Get Call" +openapi: get /calls/{sessionId} +--- + +Retrieve detailed information about a specific call using its session ID. This endpoint returns complete call data including all participants, their individual metrics, and recording information. + +## When to Use + +| Scenario | Description | +|----------|-------------| +| Call details page | Display comprehensive information about a completed call | +| Recording access | Get the recording URL for playback or download | +| Participant analytics | View individual participant metrics (join time, duration, etc.) | +| Debugging | Investigate issues with a specific call session | + +## Example Request + +```bash +curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls/v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92" \ + -H "apikey: YOUR_REST_API_KEY" +``` + +## Response Details + +The response includes: + +- **Call metadata**: Type, mode, status, duration, timestamps +- **Participants array**: Each participant's UID, device ID, join/leave times, and individual audio/video minutes +- **Recordings array**: Recording IDs, URLs, duration, and timestamps (if `hasRecording` is true) + + +The `sessionId` is returned when a call is initiated via the SDK or can be found in the [List Calls](/calls/api/list-calls) response. + + +## Participant States + +Each participant in the response has a `state` field: + +| State | Description | +|-------|-------------| +| `ongoing` | Participant is currently in the call | +| `ended` | Participant left the call normally | +| `unanswered` | Participant didn't answer the call | +| `rejected` | Participant rejected the call | diff --git a/rest-api/calls-apis/list-calls.mdx b/rest-api/calls-apis/list-calls.mdx new file mode 100644 index 000000000..0ba3dc352 --- /dev/null +++ b/rest-api/calls-apis/list-calls.mdx @@ -0,0 +1,36 @@ +--- +title: "List Calls" +sidebarTitle: "List Calls" +openapi: get /calls +--- + +Retrieve a paginated list of all calls in your application. Use query parameters to filter by call type, status, date range, and more. + +## Common Use Cases + +| Use Case | Query Parameters | +|----------|------------------| +| Get all video calls | `type=video` | +| Get ongoing calls | `status=ongoing` | +| Get calls with recordings | `hasRecording=true` | +| Get calls for a specific user | `uid=user123` | +| Get group calls only | `receiverType=group` | +| Get calls from a specific date | `startedAt=1692368000` | + +## Example Request + +```bash +curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls?type=video&status=ended&hasRecording=true" \ + -H "apikey: YOUR_REST_API_KEY" +``` + +## Filtering Tips + +- Combine multiple filters to narrow results (e.g., `type=video&status=ended`) +- Use `startedAt` and `endedAt` for date range queries (Unix timestamps) +- Filter by `participantsCount` to find calls with specific attendance +- Use `uid` to get all calls involving a specific user + + +Results are paginated. Check the `meta.pagination` object in the response for total count and page information. + diff --git a/rest-api/calls-apis/overview.mdx b/rest-api/calls-apis/overview.mdx new file mode 100644 index 000000000..22cb49723 --- /dev/null +++ b/rest-api/calls-apis/overview.mdx @@ -0,0 +1,239 @@ +--- +title: "Overview" +sidebarTitle: "Overview" +--- + +The Calls API provides programmatic access to call logs and analytics. Use these APIs to retrieve call history, participant details, duration metrics, and recording information for your application. + +## Base URL + +``` +https://{appId}.call-{region}.cometchat.io/v3 +``` + +| Variable | Description | +|----------|-------------| +| `appId` | Your CometChat App ID | +| `region` | Your app's region: `us`, `eu`, or `in` | + +## Authentication + +All API requests require authentication using your REST API Key in the header: + +```bash +curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls" \ + -H "apikey: YOUR_REST_API_KEY" +``` + + +Use the REST API Key from your [CometChat Dashboard](https://app.cometchat.com). This key has full access scope and should only be used server-side. + + +--- + +## Available Endpoints + +| Endpoint | Method | Description | +|----------|--------|-------------| +| [/calls](/calls/api/list-calls) | GET | List all calls with filtering options | +| [/calls/{sessionId}](/calls/api/get-call) | GET | Get details of a specific call | + +--- + +## Use Cases + +| Use Case | Endpoint | Description | +|----------|----------|-------------| +| Call history | List Calls | Display call logs in your app | +| Analytics dashboard | List Calls | Aggregate call duration and participant metrics | +| Call details page | Get Call | Show detailed information for a specific call | +| Recording access | Get Call | Retrieve recording URLs for playback | +| Billing reports | List Calls | Calculate audio/video minutes for billing | + +--- + +## Call Object + +The call object contains all information about a call session. + +| Property | Type | Description | +|----------|------|-------------| +| `sessionId` | string | Unique identifier for the call | +| `type` | string | Call type: `audio` or `video` | +| `mode` | string | Call mode: `call`, `meet`, or `presenter` | +| `status` | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, `canceled` | +| `receiverType` | string | Receiver type: `user` or `group` | +| `initiator` | string | UID of the user who initiated the call | +| `receiver` | string | UID of the user or GUID of the group receiving the call | +| `totalParticipants` | integer | Number of participants (multiple devices counted separately) | +| `totalAudioMinutes` | float | Total audio minutes across all participants | +| `totalVideoMinutes` | float | Total video minutes across all participants | +| `totalDurationInMinutes` | float | Total call duration (audio + video minutes) | +| `totalDuration` | string | Duration in timer format (e.g., "00:05:30") | +| `hasRecording` | boolean | Whether the call has recordings | +| `initiatedAt` | integer | Unix timestamp when call was initiated | +| `startedAt` | integer | Unix timestamp when call started (first participant joined) | +| `endedAt` | integer | Unix timestamp when call ended | +| `participants` | array | List of participant objects | +| `recordings` | array | List of recording objects (if `hasRecording` is true) | + +### Call Status Values + +| Status | Description | +|--------|-------------| +| `initiated` | Call has been initiated but no one has joined yet | +| `ongoing` | Call is currently in progress | +| `ended` | Call has ended normally | +| `unanswered` | Call was not answered within the timeout period | +| `rejected` | Receiver rejected the call | +| `canceled` | Caller canceled before receiver answered | + +### Call Mode Values + +| Mode | Description | +|------|-------------| +| `call` | Standard 1-on-1 or group call initiated via SDK | +| `meet` | Meeting/conference call with a shared session ID | +| `presenter` | Webinar-style call with presenter and viewers | + +--- + +## Participant Object + +Each participant in a call has the following properties: + +| Property | Type | Description | +|----------|------|-------------| +| `uid` | string | Unique identifier of the user | +| `deviceId` | string | Unique identifier of the device used to join | +| `isJoined` | boolean | Whether the user actually joined the call | +| `state` | string | Participant state: `ongoing`, `ended`, `unanswered`, `rejected` | +| `joinedAt` | integer | Unix timestamp when participant joined | +| `leftAt` | integer | Unix timestamp when participant left | +| `totalAudioMinutes` | float | Audio minutes for this participant | +| `totalVideoMinutes` | float | Video minutes for this participant | +| `totalDurationInMinutes` | float | Total duration for this participant | + + +If a user joins from multiple devices, each device is counted as a separate participant entry. + + +--- + +## Recording Object + +When a call has recordings, each recording contains: + +| Property | Type | Description | +|----------|------|-------------| +| `rid` | string | Unique identifier of the recording | +| `recording_url` | string | S3 URL to download/stream the recording | +| `duration` | float | Recording duration in minutes | +| `startTime` | integer | Unix timestamp when recording started | +| `endTime` | integer | Unix timestamp when recording ended | + +--- + +## Example Response + +```json +{ + "data": { + "sessionId": "v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92", + "type": "audio", + "mode": "call", + "status": "ended", + "receiverType": "user", + "initiator": "cometchat-uid-1", + "receiver": "cometchat-uid-2", + "totalParticipants": 2, + "totalAudioMinutes": 0.32, + "totalVideoMinutes": 0, + "totalDurationInMinutes": 0.32, + "totalDuration": "00:00:19", + "hasRecording": false, + "initiatedAt": 1692368113, + "startedAt": 1692368127, + "endedAt": 1692368146, + "participants": [ + { + "uid": "cometchat-uid-1", + "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat.com/hsYWb5ul", + "isJoined": true, + "state": "ended", + "joinedAt": 1692368128, + "leftAt": 1692368144, + "totalAudioMinutes": 0.27, + "totalVideoMinutes": 0, + "totalDurationInMinutes": 0.27 + }, + { + "uid": "cometchat-uid-2", + "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat.com/CKT3xgR4", + "isJoined": true, + "state": "ended", + "joinedAt": 1692368132, + "leftAt": 1692368146, + "totalAudioMinutes": 0.23, + "totalVideoMinutes": 0, + "totalDurationInMinutes": 0.23 + } + ] + } +} +``` + +--- + +## Pagination + +List endpoints return paginated results with metadata: + +```json +{ + "data": [...], + "meta": { + "pagination": { + "total": 150, + "count": 25, + "per_page": 25, + "current_page": 1, + "total_pages": 6 + } + } +} +``` + +| Property | Description | +|----------|-------------| +| `total` | Total number of records | +| `count` | Number of records in current response | +| `per_page` | Records per page | +| `current_page` | Current page number | +| `total_pages` | Total number of pages | + +--- + +## Error Handling + +The API returns standard HTTP status codes: + +| Status Code | Description | +|-------------|-------------| +| `200` | Success | +| `400` | Bad request - Invalid parameters | +| `401` | Unauthorized - Invalid or missing API key | +| `404` | Not found - Call session doesn't exist | +| `429` | Rate limited - Too many requests | +| `500` | Server error | + +Error responses include a message: + +```json +{ + "error": { + "code": "ERR_SESSION_NOT_FOUND", + "message": "The specified session ID does not exist" + } +} +``` diff --git a/rest-api/moderation-apis/add-keywords.mdx b/rest-api/moderation-apis/add-keywords.mdx new file mode 100644 index 000000000..2a0094302 --- /dev/null +++ b/rest-api/moderation-apis/add-keywords.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/keywords +--- diff --git a/rest-api/moderation-apis/add-rule.mdx b/rest-api/moderation-apis/add-rule.mdx new file mode 100644 index 000000000..7ed82c38e --- /dev/null +++ b/rest-api/moderation-apis/add-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/rules +--- diff --git a/rest-api/moderation-apis/approve-blocked-messages.mdx b/rest-api/moderation-apis/approve-blocked-messages.mdx new file mode 100644 index 000000000..b09623f66 --- /dev/null +++ b/rest-api/moderation-apis/approve-blocked-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/blocked-messages/{messageId} +--- diff --git a/rest-api/moderation-apis/blockreview-flagged-message.mdx b/rest-api/moderation-apis/blockreview-flagged-message.mdx new file mode 100644 index 000000000..9fe7cdfc0 --- /dev/null +++ b/rest-api/moderation-apis/blockreview-flagged-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/flagged-messages/{id} +--- diff --git a/rest-api/moderation-apis/create-reasons.mdx b/rest-api/moderation-apis/create-reasons.mdx new file mode 100644 index 000000000..5fda0753f --- /dev/null +++ b/rest-api/moderation-apis/create-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /moderation/reasons +--- diff --git a/rest-api/moderation-apis/delete-reasons.mdx b/rest-api/moderation-apis/delete-reasons.mdx new file mode 100644 index 000000000..9e5d78ac4 --- /dev/null +++ b/rest-api/moderation-apis/delete-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/reasons/{id} +--- diff --git a/rest-api/moderation-apis/flag-a-message.mdx b/rest-api/moderation-apis/flag-a-message.mdx new file mode 100644 index 000000000..77a3a6a5f --- /dev/null +++ b/rest-api/moderation-apis/flag-a-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /messages/{id}/flagged +--- diff --git a/rest-api/moderation-apis/get-keyword.mdx b/rest-api/moderation-apis/get-keyword.mdx new file mode 100644 index 000000000..e73ab9699 --- /dev/null +++ b/rest-api/moderation-apis/get-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/keywords/{keywordId} +--- diff --git a/rest-api/moderation-apis/get-reason-details.mdx b/rest-api/moderation-apis/get-reason-details.mdx new file mode 100644 index 000000000..715395c56 --- /dev/null +++ b/rest-api/moderation-apis/get-reason-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reasons/{id} +--- diff --git a/rest-api/moderation-apis/get-rule-revisions.mdx b/rest-api/moderation-apis/get-rule-revisions.mdx new file mode 100644 index 000000000..4136c7810 --- /dev/null +++ b/rest-api/moderation-apis/get-rule-revisions.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules/{ruleId}/revisions +--- diff --git a/rest-api/moderation-apis/get-rule.mdx b/rest-api/moderation-apis/get-rule.mdx new file mode 100644 index 000000000..07c952251 --- /dev/null +++ b/rest-api/moderation-apis/get-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules/{ruleId} +--- diff --git a/rest-api/moderation-apis/list-blocked-messages.mdx b/rest-api/moderation-apis/list-blocked-messages.mdx new file mode 100644 index 000000000..206067ab8 --- /dev/null +++ b/rest-api/moderation-apis/list-blocked-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/blocked-messages +--- diff --git a/rest-api/moderation-apis/list-flagged-messages.mdx b/rest-api/moderation-apis/list-flagged-messages.mdx new file mode 100644 index 000000000..c364c406c --- /dev/null +++ b/rest-api/moderation-apis/list-flagged-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/flagged-messages +--- diff --git a/rest-api/moderation-apis/list-keywords.mdx b/rest-api/moderation-apis/list-keywords.mdx new file mode 100644 index 000000000..8f4d7d9e7 --- /dev/null +++ b/rest-api/moderation-apis/list-keywords.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/keywords +--- diff --git a/rest-api/moderation-apis/list-reasons.mdx b/rest-api/moderation-apis/list-reasons.mdx new file mode 100644 index 000000000..cd563ff9b --- /dev/null +++ b/rest-api/moderation-apis/list-reasons.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reasons +--- diff --git a/rest-api/moderation-apis/list-reviewed-messages.mdx b/rest-api/moderation-apis/list-reviewed-messages.mdx new file mode 100644 index 000000000..d0e9dc0b8 --- /dev/null +++ b/rest-api/moderation-apis/list-reviewed-messages.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/reviewed-messages +--- diff --git a/rest-api/moderation-apis/list-rules.mdx b/rest-api/moderation-apis/list-rules.mdx new file mode 100644 index 000000000..223c22ecc --- /dev/null +++ b/rest-api/moderation-apis/list-rules.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /moderation/rules +--- diff --git a/rest-api/moderation-apis/overview.mdx b/rest-api/moderation-apis/overview.mdx new file mode 100644 index 000000000..22c1b062d --- /dev/null +++ b/rest-api/moderation-apis/overview.mdx @@ -0,0 +1,73 @@ +--- +title: "AI Moderation APIs" +sidebarTitle: "Overview" +--- + +The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. + +Below is an overview of the key functionalities provided by the Moderation Service API: + +1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions +2. The Keywords Management endpoints allow you to create and manage lists of keywords or regex patterns used for content moderation. +3. The list blocked messages endpoint allows you to fetch all the violated messages. +4. Fetches the historical revisions of a rule, detailing all updates made over time. + + + +The default rules include text profanity, AI-based moderation for images and videos, custom profanity (custom messages), contact details, and email content, ensuring comprehensive content moderation. + +The text profanity and custom profanity filters scan for words, including those matching regex patterns, and drop the message if a violation is detected. + +The AI-based image and video moderation system scans for violations in images and videos and discards the message if a violation is detected. It allows the attachment of the following labels to a rule, enabling moderation for specific categories of images and videos.\ +Following are the labels that are available for Image/Video moderation: + +| Labels | Definitions | +| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Violence | Instruments or devices used to cause harm or damage to living beings, structures, or systems. This includes firearms (e.g., guns, rifles, machine guns, etc.), sharp weapons (e.g., swords, knives, etc.), explosives and ammunition (e.g., missiles, bombs, bullets, etc.). | +| Alcohol | The act of drinking alcoholic beverages from bottles or glasses of alcohol or liquor. | +| Gambling | The act of participating in games of chance for a chance to win a prize in casinos, e.g., playing cards, blackjacks, roulette, slot machines at casinos, etc. | +| Drugs & Tobacco | Small, solid, often round or oval-shaped tables or capsules. The act of inhaling, exhaling, and lighting up burning substances including cigarettes, cigars, e-cigarettes, hookah, or joint. | +| Rude gestures | Visual depiction of a hand gesture with middle finger is extended upward while the other fingers are folded down. | +| Explicit Nudity | Human male/female genitalia, including the penis (whether erect or flaccid), the scrotum, and any discernible pubic hair. | +| Non-Explicit Nudity | Human posterior part where the majority of the skin is visible from the neck to the end of the spine. This term does not apply when the individual's back is partially or fully occluded. | +| Swimwear or underwear | Human clothing for female/male swimwear (e.g., one-piece swimsuits, bikinis, tankinis, swim trunks, boardshorts, swim briefs, etc) | +| Visually Disturbing | Human bodies that are extremely thin and undernourished with severe physical wasting and depletion of muscle and fat tissue. | +| Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | + +When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. + +--- + +## API Constraints + + +**Need higher limits?** Contact [CometChat Support](https://www.cometchat.com/contact) to discuss enterprise options for increased limits. + + + + + | Parameter | Limit | + |-----------|-------| + | **Rule ID** | Max 100 characters, no spaces or special characters | + | **Name** | Max 100 characters | + | **Description** | Max 255 characters | + | **Filters per rule** | Max 10 filters | + | **Conditions per rule** | Max 10 conditions | + | **Rules per app** | Max 25 custom rules (excludes default rules) | + + + | Parameter | Limit | + |-----------|-------| + | **List ID** | Max 100 characters, no spaces or special characters | + | **Name** | Max 100 characters | + | **Description** | Max 255 characters | + | **CSV file size** | Max 1 MB | + | **Lists per app** | Max 25 custom lists (excludes default lists) | + + + | Parameter | Limit | + |-----------|-------| + | **AI Context** | Max 50 messages sent to OpenAI/Custom API for analysis | + | **Custom Flag Reasons** | Max 5 per app | + + diff --git a/rest-api/moderation-apis/remove-keyword.mdx b/rest-api/moderation-apis/remove-keyword.mdx new file mode 100644 index 000000000..05f77fb55 --- /dev/null +++ b/rest-api/moderation-apis/remove-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/keywords/{keywordId} +--- diff --git a/rest-api/moderation-apis/remove-rule.mdx b/rest-api/moderation-apis/remove-rule.mdx new file mode 100644 index 000000000..8b91cbe7c --- /dev/null +++ b/rest-api/moderation-apis/remove-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /moderation/rules/{ruleId} +--- diff --git a/rest-api/moderation-apis/review-blocked-message.mdx b/rest-api/moderation-apis/review-blocked-message.mdx new file mode 100644 index 000000000..79d4848fb --- /dev/null +++ b/rest-api/moderation-apis/review-blocked-message.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /moderation/blocked-messages/{id} +--- diff --git a/rest-api/moderation-apis/update-keyword.mdx b/rest-api/moderation-apis/update-keyword.mdx new file mode 100644 index 000000000..7d9ee61c1 --- /dev/null +++ b/rest-api/moderation-apis/update-keyword.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/keywords/{keywordId} +--- diff --git a/rest-api/moderation-apis/update-reason-details.mdx b/rest-api/moderation-apis/update-reason-details.mdx new file mode 100644 index 000000000..1566528a4 --- /dev/null +++ b/rest-api/moderation-apis/update-reason-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/reasons/{id} +--- diff --git a/rest-api/moderation-apis/update-rule.mdx b/rest-api/moderation-apis/update-rule.mdx new file mode 100644 index 000000000..d42f34a5f --- /dev/null +++ b/rest-api/moderation-apis/update-rule.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /moderation/rules/{ruleId} +--- diff --git a/rest-api/notifications-apis/email/delete-custom-provider.mdx b/rest-api/notifications-apis/email/delete-custom-provider.mdx new file mode 100644 index 000000000..70ca99846 --- /dev/null +++ b/rest-api/notifications-apis/email/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/email/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx new file mode 100644 index 000000000..6141627ef --- /dev/null +++ b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/email/v1/providers/sendgrid +--- diff --git a/rest-api/notifications-apis/email/get-custom-provider.mdx b/rest-api/notifications-apis/email/get-custom-provider.mdx new file mode 100644 index 000000000..c0e76dc56 --- /dev/null +++ b/rest-api/notifications-apis/email/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/email/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx new file mode 100644 index 000000000..037fa29fa --- /dev/null +++ b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/email/v1/providers/sendgrid +--- diff --git a/rest-api/notifications-apis/email/save-custom-provider.mdx b/rest-api/notifications-apis/email/save-custom-provider.mdx new file mode 100644 index 000000000..81d299c91 --- /dev/null +++ b/rest-api/notifications-apis/email/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/email/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx new file mode 100644 index 000000000..3aa11ff94 --- /dev/null +++ b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/email/v1/providers/sendgrid +--- diff --git a/rest-api/notifications-apis/email/update-custom-provider.mdx b/rest-api/notifications-apis/email/update-custom-provider.mdx new file mode 100644 index 000000000..567934c39 --- /dev/null +++ b/rest-api/notifications-apis/email/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/email/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx new file mode 100644 index 000000000..cc5c3bc1b --- /dev/null +++ b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/email/v1/providers/sendgrid +--- diff --git a/rest-api/notifications-apis/push/add-apns-provider.mdx b/rest-api/notifications-apis/push/add-apns-provider.mdx new file mode 100644 index 000000000..c8e5cb7ef --- /dev/null +++ b/rest-api/notifications-apis/push/add-apns-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/apns +--- diff --git a/rest-api/notifications-apis/push/add-fcm-provider.mdx b/rest-api/notifications-apis/push/add-fcm-provider.mdx new file mode 100644 index 000000000..42f65ded8 --- /dev/null +++ b/rest-api/notifications-apis/push/add-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/fcm +--- diff --git a/rest-api/notifications-apis/push/change-default-apns-provider.mdx b/rest-api/notifications-apis/push/change-default-apns-provider.mdx new file mode 100644 index 000000000..05f40a27e --- /dev/null +++ b/rest-api/notifications-apis/push/change-default-apns-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/apns/default/{providerId} +--- diff --git a/rest-api/notifications-apis/push/change-default-fcm-provider.mdx b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx new file mode 100644 index 000000000..954ec443f --- /dev/null +++ b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/fcm/default/{providerId} +--- diff --git a/rest-api/notifications-apis/push/delete-apns-providers.mdx b/rest-api/notifications-apis/push/delete-apns-providers.mdx new file mode 100644 index 000000000..26b769e61 --- /dev/null +++ b/rest-api/notifications-apis/push/delete-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/apns/{providerId} +--- diff --git a/rest-api/notifications-apis/push/delete-contact-details.mdx b/rest-api/notifications-apis/push/delete-contact-details.mdx new file mode 100644 index 000000000..9b5d1ab1a --- /dev/null +++ b/rest-api/notifications-apis/push/delete-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/contact-details +--- diff --git a/rest-api/notifications-apis/push/delete-custom-provider.mdx b/rest-api/notifications-apis/push/delete-custom-provider.mdx new file mode 100644 index 000000000..44c8f7a22 --- /dev/null +++ b/rest-api/notifications-apis/push/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/push/delete-fcm-provider.mdx b/rest-api/notifications-apis/push/delete-fcm-provider.mdx new file mode 100644 index 000000000..adfcc2482 --- /dev/null +++ b/rest-api/notifications-apis/push/delete-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/providers/fcm/{providerId} +--- diff --git a/rest-api/notifications-apis/push/delete-push-token.mdx b/rest-api/notifications-apis/push/delete-push-token.mdx new file mode 100644 index 000000000..4e7097897 --- /dev/null +++ b/rest-api/notifications-apis/push/delete-push-token.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/tokens/{pushToken} +--- diff --git a/rest-api/notifications-apis/push/get-contact-details.mdx b/rest-api/notifications-apis/push/get-contact-details.mdx new file mode 100644 index 000000000..753b7edf4 --- /dev/null +++ b/rest-api/notifications-apis/push/get-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/contact-details +--- diff --git a/rest-api/notifications-apis/push/get-custom-provider.mdx b/rest-api/notifications-apis/push/get-custom-provider.mdx new file mode 100644 index 000000000..2f6ae6da5 --- /dev/null +++ b/rest-api/notifications-apis/push/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/push/get-timezone.mdx b/rest-api/notifications-apis/push/get-timezone.mdx new file mode 100644 index 000000000..8bc807620 --- /dev/null +++ b/rest-api/notifications-apis/push/get-timezone.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences/timezone +--- diff --git a/rest-api/notifications-apis/push/list-apns-providers.mdx b/rest-api/notifications-apis/push/list-apns-providers.mdx new file mode 100644 index 000000000..43a6d4a0f --- /dev/null +++ b/rest-api/notifications-apis/push/list-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/apns +--- diff --git a/rest-api/notifications-apis/push/list-fcm-providers.mdx b/rest-api/notifications-apis/push/list-fcm-providers.mdx new file mode 100644 index 000000000..0151a67c5 --- /dev/null +++ b/rest-api/notifications-apis/push/list-fcm-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/providers/fcm +--- diff --git a/rest-api/notifications-apis/push/list-muted-conversations.mdx b/rest-api/notifications-apis/push/list-muted-conversations.mdx new file mode 100644 index 000000000..e363fcc24 --- /dev/null +++ b/rest-api/notifications-apis/push/list-muted-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences/mute +--- diff --git a/rest-api/notifications-apis/push/list-preferences.mdx b/rest-api/notifications-apis/push/list-preferences.mdx new file mode 100644 index 000000000..1be2704c3 --- /dev/null +++ b/rest-api/notifications-apis/push/list-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/preferences +--- diff --git a/rest-api/notifications-apis/push/list-push-tokens.mdx b/rest-api/notifications-apis/push/list-push-tokens.mdx new file mode 100644 index 000000000..7158bf258 --- /dev/null +++ b/rest-api/notifications-apis/push/list-push-tokens.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/push/v1/tokens +--- diff --git a/rest-api/notifications-apis/push/list-settings.mdx b/rest-api/notifications-apis/push/list-settings.mdx new file mode 100644 index 000000000..0a7dd8062 --- /dev/null +++ b/rest-api/notifications-apis/push/list-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/settings +--- diff --git a/rest-api/notifications-apis/push/mute-conversations.mdx b/rest-api/notifications-apis/push/mute-conversations.mdx new file mode 100644 index 000000000..860e99bd7 --- /dev/null +++ b/rest-api/notifications-apis/push/mute-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/v1/preferences/mute +--- diff --git a/rest-api/notifications-apis/push/notifications-logs.mdx b/rest-api/notifications-apis/push/notifications-logs.mdx new file mode 100644 index 000000000..24ce2e091 --- /dev/null +++ b/rest-api/notifications-apis/push/notifications-logs.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/v1/logs +--- diff --git a/rest-api/notifications-apis/push/register-push-token.mdx b/rest-api/notifications-apis/push/register-push-token.mdx new file mode 100644 index 000000000..00b55e873 --- /dev/null +++ b/rest-api/notifications-apis/push/register-push-token.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/tokens +--- diff --git a/rest-api/notifications-apis/push/reset-preferences.mdx b/rest-api/notifications-apis/push/reset-preferences.mdx new file mode 100644 index 000000000..d623919b2 --- /dev/null +++ b/rest-api/notifications-apis/push/reset-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/preferences +--- diff --git a/rest-api/notifications-apis/push/reset-settings.mdx b/rest-api/notifications-apis/push/reset-settings.mdx new file mode 100644 index 000000000..5a0324e1e --- /dev/null +++ b/rest-api/notifications-apis/push/reset-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/settings +--- diff --git a/rest-api/notifications-apis/push/save-custom-provider.mdx b/rest-api/notifications-apis/push/save-custom-provider.mdx new file mode 100644 index 000000000..445772a46 --- /dev/null +++ b/rest-api/notifications-apis/push/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/push/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/push/unmute-conversations.mdx b/rest-api/notifications-apis/push/unmute-conversations.mdx new file mode 100644 index 000000000..f24b9f475 --- /dev/null +++ b/rest-api/notifications-apis/push/unmute-conversations.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/v1/preferences/mute +--- diff --git a/rest-api/notifications-apis/push/unregister-push-tokens.mdx b/rest-api/notifications-apis/push/unregister-push-tokens.mdx new file mode 100644 index 000000000..ecb383f25 --- /dev/null +++ b/rest-api/notifications-apis/push/unregister-push-tokens.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/push/v1/tokens +--- diff --git a/rest-api/notifications-apis/push/update-apns-providers.mdx b/rest-api/notifications-apis/push/update-apns-providers.mdx new file mode 100644 index 000000000..06ed69deb --- /dev/null +++ b/rest-api/notifications-apis/push/update-apns-providers.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/apns +--- diff --git a/rest-api/notifications-apis/push/update-contact-details.mdx b/rest-api/notifications-apis/push/update-contact-details.mdx new file mode 100644 index 000000000..b7955cf41 --- /dev/null +++ b/rest-api/notifications-apis/push/update-contact-details.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/contact-details +--- diff --git a/rest-api/notifications-apis/push/update-custom-provider.mdx b/rest-api/notifications-apis/push/update-custom-provider.mdx new file mode 100644 index 000000000..344798a89 --- /dev/null +++ b/rest-api/notifications-apis/push/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/push/update-fcm-provider.mdx b/rest-api/notifications-apis/push/update-fcm-provider.mdx new file mode 100644 index 000000000..5adab2233 --- /dev/null +++ b/rest-api/notifications-apis/push/update-fcm-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/push/v1/providers/fcm +--- diff --git a/rest-api/notifications-apis/push/update-preferences.mdx b/rest-api/notifications-apis/push/update-preferences.mdx new file mode 100644 index 000000000..3c494d4b3 --- /dev/null +++ b/rest-api/notifications-apis/push/update-preferences.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/preferences +--- diff --git a/rest-api/notifications-apis/push/update-settings.mdx b/rest-api/notifications-apis/push/update-settings.mdx new file mode 100644 index 000000000..fa1688021 --- /dev/null +++ b/rest-api/notifications-apis/push/update-settings.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/settings +--- diff --git a/rest-api/notifications-apis/push/update-timezone.mdx b/rest-api/notifications-apis/push/update-timezone.mdx new file mode 100644 index 000000000..e48af9a8b --- /dev/null +++ b/rest-api/notifications-apis/push/update-timezone.mdx @@ -0,0 +1,3 @@ +--- +openapi: patch /notifications/v1/preferences/timezone +--- diff --git a/rest-api/notifications-apis/sms/delete-custom-provider.mdx b/rest-api/notifications-apis/sms/delete-custom-provider.mdx new file mode 100644 index 000000000..fb570f386 --- /dev/null +++ b/rest-api/notifications-apis/sms/delete-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/sms/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx new file mode 100644 index 000000000..6e145c684 --- /dev/null +++ b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: delete /notifications/sms/v1/providers/twilio +--- diff --git a/rest-api/notifications-apis/sms/get-custom-provider.mdx b/rest-api/notifications-apis/sms/get-custom-provider.mdx new file mode 100644 index 000000000..792ec846e --- /dev/null +++ b/rest-api/notifications-apis/sms/get-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/sms/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/sms/get-twilio-credentials.mdx b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx new file mode 100644 index 000000000..056ce5f19 --- /dev/null +++ b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: get /notifications/sms/v1/providers/twilio +--- diff --git a/rest-api/notifications-apis/sms/save-custom-provider.mdx b/rest-api/notifications-apis/sms/save-custom-provider.mdx new file mode 100644 index 000000000..55e2597d7 --- /dev/null +++ b/rest-api/notifications-apis/sms/save-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/sms/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/sms/save-twilio-credentials.mdx b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx new file mode 100644 index 000000000..071eff9de --- /dev/null +++ b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /notifications/sms/v1/providers/twilio +--- diff --git a/rest-api/notifications-apis/sms/update-custom-provider.mdx b/rest-api/notifications-apis/sms/update-custom-provider.mdx new file mode 100644 index 000000000..bf49adbf2 --- /dev/null +++ b/rest-api/notifications-apis/sms/update-custom-provider.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/sms/v1/providers/custom +--- diff --git a/rest-api/notifications-apis/sms/update-twilio-credentials.mdx b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx new file mode 100644 index 000000000..d385124f3 --- /dev/null +++ b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx @@ -0,0 +1,3 @@ +--- +openapi: put /notifications/sms/v1/providers/twilio +--- From b155fb117c51d7c2dbe70a2ddf4bd664838a7c60 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Fri, 27 Mar 2026 22:21:37 +0530 Subject: [PATCH 32/56] deleted origional of api docs moved to reast-api --- ai-agents/api-explorer.mdx | 27 -- ai-agents/apis/add-api-tools-to-agent.mdx | 3 - .../apis/add-frontend-actions-to-agent.mdx | 3 - ai-agents/apis/add-knowledge-base-files.mdx | 3 - ai-agents/apis/add-mcp-servers-to-agent.mdx | 3 - ai-agents/apis/add-tools-to-agent.mdx | 3 - ai-agents/apis/create-agent.mdx | 3 - ai-agents/apis/create-api-tool.mdx | 3 - ai-agents/apis/create-byo-agent.mdx | 3 - ai-agents/apis/create-custom-variable.mdx | 3 - ai-agents/apis/create-frontend-action.mdx | 3 - ai-agents/apis/create-mcp-server.mdx | 3 - ai-agents/apis/create-text-detail.mdx | 3 - ai-agents/apis/create-tool.mdx | 3 - ai-agents/apis/delete-agent.mdx | 3 - ai-agents/apis/delete-api-tool.mdx | 3 - ai-agents/apis/delete-byo-agent.mdx | 3 - ai-agents/apis/delete-custom-variable.mdx | 3 - ai-agents/apis/delete-frontend-action.mdx | 3 - ai-agents/apis/delete-mcp-server.mdx | 3 - ai-agents/apis/delete-text-detail.mdx | 3 - ai-agents/apis/delete-tool.mdx | 3 - ai-agents/apis/delete-uploaded-file.mdx | 3 - ai-agents/apis/delete-website.mdx | 3 - ai-agents/apis/enable-tool-actions.mdx | 3 - ai-agents/apis/get-agent.mdx | 3 - .../apis/get-all-available-variables.mdx | 3 - ai-agents/apis/get-discovered-urls.mdx | 3 - ai-agents/apis/get-source-pages.mdx | 3 - ai-agents/apis/get-tool-actions-for-agent.mdx | 3 - ai-agents/apis/get-tool.mdx | 3 - ai-agents/apis/initiate-file-uploads.mdx | 3 - .../apis/list-agent-tools-and-actions.mdx | 3 - ai-agents/apis/list-agents.mdx | 3 - ai-agents/apis/list-api-tools.mdx | 3 - ai-agents/apis/list-byo-agents.mdx | 3 - ai-agents/apis/list-frontend-actions.mdx | 3 - .../apis/list-knowledge-base-records.mdx | 3 - ai-agents/apis/list-mcp-servers.mdx | 3 - ai-agents/apis/list-tools.mdx | 3 - .../apis/poll-discovered-urls-status.mdx | 3 - ai-agents/apis/poll-knowledge-base-status.mdx | 3 - ai-agents/apis/process-discovered-urls.mdx | 3 - .../apis/remove-api-tools-from-agent.mdx | 3 - .../remove-frontend-actions-from-agent.mdx | 3 - .../apis/remove-knowledge-base-files.mdx | 3 - .../apis/remove-mcp-servers-from-agent.mdx | 3 - ai-agents/apis/remove-tool-actions.mdx | 3 - ai-agents/apis/remove-tools-from-agent.mdx | 3 - .../apis/retry-indexing-for-website-pages.mdx | 3 - .../retry-knowledge-base-source-indexing.mdx | 3 - ai-agents/apis/scrape-single-page.mdx | 3 - ai-agents/apis/scrape-website.mdx | 3 - ai-agents/apis/search-agent-tools.mdx | 3 - ai-agents/apis/update-agent.mdx | 3 - ai-agents/apis/update-api-tool.mdx | 3 - ai-agents/apis/update-byo-agent.mdx | 3 - ai-agents/apis/update-custom-variable.mdx | 3 - ai-agents/apis/update-frontend-action.mdx | 3 - ai-agents/apis/update-mcp-server.mdx | 3 - ai-agents/apis/update-text-detail.mdx | 3 - ai-agents/apis/update-tool.mdx | 3 - ai-agents/byo-api-explorer.mdx | 23 -- calls/api/get-call.mdx | 46 ---- calls/api/list-calls.mdx | 36 --- calls/api/overview.mdx | 239 ------------------ moderation/api-explorer.mdx | 73 ------ moderation/apis/add-keywords.mdx | 3 - moderation/apis/add-rule.mdx | 3 - moderation/apis/approve-blocked-messages.mdx | 3 - .../apis/blockreview-flagged-message.mdx | 3 - moderation/apis/create-reasons.mdx | 3 - moderation/apis/delete-reasons.mdx | 3 - moderation/apis/flag-a-message.mdx | 3 - moderation/apis/get-keyword.mdx | 3 - moderation/apis/get-reason-details.mdx | 3 - moderation/apis/get-rule-revisions.mdx | 3 - moderation/apis/get-rule.mdx | 3 - moderation/apis/list-blocked-messages.mdx | 3 - moderation/apis/list-flagged-messages.mdx | 3 - moderation/apis/list-keywords.mdx | 3 - moderation/apis/list-reasons.mdx | 3 - moderation/apis/list-reviewed-messages.mdx | 3 - moderation/apis/list-rules.mdx | 3 - moderation/apis/remove-keyword.mdx | 3 - moderation/apis/remove-rule.mdx | 3 - moderation/apis/review-blocked-message.mdx | 3 - moderation/apis/update-keyword.mdx | 3 - moderation/apis/update-reason-details.mdx | 3 - moderation/apis/update-rule.mdx | 3 - .../apis/email/delete-custom-provider.mdx | 3 - .../email/delete-sendgrid-credentials.mdx | 3 - .../apis/email/get-custom-provider.mdx | 3 - .../apis/email/get-sendgrid-credentials.mdx | 3 - .../apis/email/save-custom-provider.mdx | 3 - .../apis/email/save-sendgrid-credentials.mdx | 3 - .../apis/email/update-custom-provider.mdx | 3 - .../email/update-sendgrid-credentials.mdx | 3 - notifications/apis/push/add-apns-provider.mdx | 3 - notifications/apis/push/add-fcm-provider.mdx | 3 - .../push/change-default-apns-provider.mdx | 3 - .../apis/push/change-default-fcm-provider.mdx | 3 - .../apis/push/delete-apns-providers.mdx | 3 - .../apis/push/delete-contact-details.mdx | 3 - .../apis/push/delete-custom-provider.mdx | 3 - .../apis/push/delete-fcm-provider.mdx | 3 - notifications/apis/push/delete-push-token.mdx | 3 - .../apis/push/get-contact-details.mdx | 3 - .../apis/push/get-custom-provider.mdx | 3 - notifications/apis/push/get-timezone.mdx | 3 - .../apis/push/list-apns-providers.mdx | 3 - .../apis/push/list-fcm-providers.mdx | 3 - .../apis/push/list-muted-conversations.mdx | 3 - notifications/apis/push/list-preferences.mdx | 3 - notifications/apis/push/list-push-tokens.mdx | 3 - notifications/apis/push/list-settings.mdx | 3 - .../apis/push/mute-conversations.mdx | 3 - .../apis/push/notifications-logs.mdx | 3 - .../apis/push/register-push-token.mdx | 3 - notifications/apis/push/reset-preferences.mdx | 3 - notifications/apis/push/reset-settings.mdx | 3 - .../apis/push/save-custom-provider.mdx | 3 - .../apis/push/unmute-conversations.mdx | 3 - .../apis/push/unregister-push-tokens.mdx | 3 - .../apis/push/update-apns-providers.mdx | 3 - .../apis/push/update-contact-details.mdx | 3 - .../apis/push/update-custom-provider.mdx | 3 - .../apis/push/update-fcm-provider.mdx | 3 - .../apis/push/update-preferences.mdx | 3 - notifications/apis/push/update-settings.mdx | 3 - notifications/apis/push/update-timezone.mdx | 3 - .../apis/sms/delete-custom-provider.mdx | 3 - .../apis/sms/delete-twilio-credentials.mdx | 3 - .../apis/sms/get-custom-provider.mdx | 3 - .../apis/sms/get-twilio-credentials.mdx | 3 - .../apis/sms/save-custom-provider.mdx | 3 - .../apis/sms/save-twilio-credentials.mdx | 3 - .../apis/sms/update-custom-provider.mdx | 3 - .../apis/sms/update-twilio-credentials.mdx | 3 - 139 files changed, 843 deletions(-) delete mode 100644 ai-agents/api-explorer.mdx delete mode 100644 ai-agents/apis/add-api-tools-to-agent.mdx delete mode 100644 ai-agents/apis/add-frontend-actions-to-agent.mdx delete mode 100644 ai-agents/apis/add-knowledge-base-files.mdx delete mode 100644 ai-agents/apis/add-mcp-servers-to-agent.mdx delete mode 100644 ai-agents/apis/add-tools-to-agent.mdx delete mode 100644 ai-agents/apis/create-agent.mdx delete mode 100644 ai-agents/apis/create-api-tool.mdx delete mode 100644 ai-agents/apis/create-byo-agent.mdx delete mode 100644 ai-agents/apis/create-custom-variable.mdx delete mode 100644 ai-agents/apis/create-frontend-action.mdx delete mode 100644 ai-agents/apis/create-mcp-server.mdx delete mode 100644 ai-agents/apis/create-text-detail.mdx delete mode 100644 ai-agents/apis/create-tool.mdx delete mode 100644 ai-agents/apis/delete-agent.mdx delete mode 100644 ai-agents/apis/delete-api-tool.mdx delete mode 100644 ai-agents/apis/delete-byo-agent.mdx delete mode 100644 ai-agents/apis/delete-custom-variable.mdx delete mode 100644 ai-agents/apis/delete-frontend-action.mdx delete mode 100644 ai-agents/apis/delete-mcp-server.mdx delete mode 100644 ai-agents/apis/delete-text-detail.mdx delete mode 100644 ai-agents/apis/delete-tool.mdx delete mode 100644 ai-agents/apis/delete-uploaded-file.mdx delete mode 100644 ai-agents/apis/delete-website.mdx delete mode 100644 ai-agents/apis/enable-tool-actions.mdx delete mode 100644 ai-agents/apis/get-agent.mdx delete mode 100644 ai-agents/apis/get-all-available-variables.mdx delete mode 100644 ai-agents/apis/get-discovered-urls.mdx delete mode 100644 ai-agents/apis/get-source-pages.mdx delete mode 100644 ai-agents/apis/get-tool-actions-for-agent.mdx delete mode 100644 ai-agents/apis/get-tool.mdx delete mode 100644 ai-agents/apis/initiate-file-uploads.mdx delete mode 100644 ai-agents/apis/list-agent-tools-and-actions.mdx delete mode 100644 ai-agents/apis/list-agents.mdx delete mode 100644 ai-agents/apis/list-api-tools.mdx delete mode 100644 ai-agents/apis/list-byo-agents.mdx delete mode 100644 ai-agents/apis/list-frontend-actions.mdx delete mode 100644 ai-agents/apis/list-knowledge-base-records.mdx delete mode 100644 ai-agents/apis/list-mcp-servers.mdx delete mode 100644 ai-agents/apis/list-tools.mdx delete mode 100644 ai-agents/apis/poll-discovered-urls-status.mdx delete mode 100644 ai-agents/apis/poll-knowledge-base-status.mdx delete mode 100644 ai-agents/apis/process-discovered-urls.mdx delete mode 100644 ai-agents/apis/remove-api-tools-from-agent.mdx delete mode 100644 ai-agents/apis/remove-frontend-actions-from-agent.mdx delete mode 100644 ai-agents/apis/remove-knowledge-base-files.mdx delete mode 100644 ai-agents/apis/remove-mcp-servers-from-agent.mdx delete mode 100644 ai-agents/apis/remove-tool-actions.mdx delete mode 100644 ai-agents/apis/remove-tools-from-agent.mdx delete mode 100644 ai-agents/apis/retry-indexing-for-website-pages.mdx delete mode 100644 ai-agents/apis/retry-knowledge-base-source-indexing.mdx delete mode 100644 ai-agents/apis/scrape-single-page.mdx delete mode 100644 ai-agents/apis/scrape-website.mdx delete mode 100644 ai-agents/apis/search-agent-tools.mdx delete mode 100644 ai-agents/apis/update-agent.mdx delete mode 100644 ai-agents/apis/update-api-tool.mdx delete mode 100644 ai-agents/apis/update-byo-agent.mdx delete mode 100644 ai-agents/apis/update-custom-variable.mdx delete mode 100644 ai-agents/apis/update-frontend-action.mdx delete mode 100644 ai-agents/apis/update-mcp-server.mdx delete mode 100644 ai-agents/apis/update-text-detail.mdx delete mode 100644 ai-agents/apis/update-tool.mdx delete mode 100644 ai-agents/byo-api-explorer.mdx delete mode 100644 calls/api/get-call.mdx delete mode 100644 calls/api/list-calls.mdx delete mode 100644 calls/api/overview.mdx delete mode 100644 moderation/api-explorer.mdx delete mode 100644 moderation/apis/add-keywords.mdx delete mode 100644 moderation/apis/add-rule.mdx delete mode 100644 moderation/apis/approve-blocked-messages.mdx delete mode 100644 moderation/apis/blockreview-flagged-message.mdx delete mode 100644 moderation/apis/create-reasons.mdx delete mode 100644 moderation/apis/delete-reasons.mdx delete mode 100644 moderation/apis/flag-a-message.mdx delete mode 100644 moderation/apis/get-keyword.mdx delete mode 100644 moderation/apis/get-reason-details.mdx delete mode 100644 moderation/apis/get-rule-revisions.mdx delete mode 100644 moderation/apis/get-rule.mdx delete mode 100644 moderation/apis/list-blocked-messages.mdx delete mode 100644 moderation/apis/list-flagged-messages.mdx delete mode 100644 moderation/apis/list-keywords.mdx delete mode 100644 moderation/apis/list-reasons.mdx delete mode 100644 moderation/apis/list-reviewed-messages.mdx delete mode 100644 moderation/apis/list-rules.mdx delete mode 100644 moderation/apis/remove-keyword.mdx delete mode 100644 moderation/apis/remove-rule.mdx delete mode 100644 moderation/apis/review-blocked-message.mdx delete mode 100644 moderation/apis/update-keyword.mdx delete mode 100644 moderation/apis/update-reason-details.mdx delete mode 100644 moderation/apis/update-rule.mdx delete mode 100644 notifications/apis/email/delete-custom-provider.mdx delete mode 100644 notifications/apis/email/delete-sendgrid-credentials.mdx delete mode 100644 notifications/apis/email/get-custom-provider.mdx delete mode 100644 notifications/apis/email/get-sendgrid-credentials.mdx delete mode 100644 notifications/apis/email/save-custom-provider.mdx delete mode 100644 notifications/apis/email/save-sendgrid-credentials.mdx delete mode 100644 notifications/apis/email/update-custom-provider.mdx delete mode 100644 notifications/apis/email/update-sendgrid-credentials.mdx delete mode 100644 notifications/apis/push/add-apns-provider.mdx delete mode 100644 notifications/apis/push/add-fcm-provider.mdx delete mode 100644 notifications/apis/push/change-default-apns-provider.mdx delete mode 100644 notifications/apis/push/change-default-fcm-provider.mdx delete mode 100644 notifications/apis/push/delete-apns-providers.mdx delete mode 100644 notifications/apis/push/delete-contact-details.mdx delete mode 100644 notifications/apis/push/delete-custom-provider.mdx delete mode 100644 notifications/apis/push/delete-fcm-provider.mdx delete mode 100644 notifications/apis/push/delete-push-token.mdx delete mode 100644 notifications/apis/push/get-contact-details.mdx delete mode 100644 notifications/apis/push/get-custom-provider.mdx delete mode 100644 notifications/apis/push/get-timezone.mdx delete mode 100644 notifications/apis/push/list-apns-providers.mdx delete mode 100644 notifications/apis/push/list-fcm-providers.mdx delete mode 100644 notifications/apis/push/list-muted-conversations.mdx delete mode 100644 notifications/apis/push/list-preferences.mdx delete mode 100644 notifications/apis/push/list-push-tokens.mdx delete mode 100644 notifications/apis/push/list-settings.mdx delete mode 100644 notifications/apis/push/mute-conversations.mdx delete mode 100644 notifications/apis/push/notifications-logs.mdx delete mode 100644 notifications/apis/push/register-push-token.mdx delete mode 100644 notifications/apis/push/reset-preferences.mdx delete mode 100644 notifications/apis/push/reset-settings.mdx delete mode 100644 notifications/apis/push/save-custom-provider.mdx delete mode 100644 notifications/apis/push/unmute-conversations.mdx delete mode 100644 notifications/apis/push/unregister-push-tokens.mdx delete mode 100644 notifications/apis/push/update-apns-providers.mdx delete mode 100644 notifications/apis/push/update-contact-details.mdx delete mode 100644 notifications/apis/push/update-custom-provider.mdx delete mode 100644 notifications/apis/push/update-fcm-provider.mdx delete mode 100644 notifications/apis/push/update-preferences.mdx delete mode 100644 notifications/apis/push/update-settings.mdx delete mode 100644 notifications/apis/push/update-timezone.mdx delete mode 100644 notifications/apis/sms/delete-custom-provider.mdx delete mode 100644 notifications/apis/sms/delete-twilio-credentials.mdx delete mode 100644 notifications/apis/sms/get-custom-provider.mdx delete mode 100644 notifications/apis/sms/get-twilio-credentials.mdx delete mode 100644 notifications/apis/sms/save-custom-provider.mdx delete mode 100644 notifications/apis/sms/save-twilio-credentials.mdx delete mode 100644 notifications/apis/sms/update-custom-provider.mdx delete mode 100644 notifications/apis/sms/update-twilio-credentials.mdx diff --git a/ai-agents/api-explorer.mdx b/ai-agents/api-explorer.mdx deleted file mode 100644 index 741ba6ee5..000000000 --- a/ai-agents/api-explorer.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Agent Builder APIs" -sidebarTitle: "Overview" ---- - -The Agent Builder APIs provide endpoints for creating and managing AI agents using CometChat's native agent builder. These APIs enable you to configure agents with tools, MCP servers, custom API tools, frontend actions, and RAG-based knowledge bases — all without writing your own agent orchestration logic. - -Below is an overview of the key functionalities provided by the Agent Builder APIs: - -1. The Agents endpoints allow you to create, configure, and manage native CometChat agents with full tool and knowledge base support. -2. The Tools endpoints allow you to browse, add, remove, and configure ready-to-use Composio tools and manage tool actions for your agents. -3. The Custom API Tools endpoints allow you to create and manage custom API-based tools that can be attached to agents. -4. The Frontend Actions endpoints allow you to define and manage UI-triggered actions that agents can perform. -5. The MCP Servers endpoints allow you to create and manage Model Context Protocol servers for your agents. -6. The Knowledge Base endpoints allow you to manage file uploads, text content, website crawling, and RAG sources for agent responses. -7. The Variables endpoints allow you to manage predefined and custom variables used in agent configurations. - ---- - -## Authentication - -All Agent Builder API endpoints require authentication via an API key passed in the request header. - -| Property | Details | -|----------|---------| -| **Header** | `apikey` | -| **Requirement** | Required on all endpoints | diff --git a/ai-agents/apis/add-api-tools-to-agent.mdx b/ai-agents/apis/add-api-tools-to-agent.mdx deleted file mode 100644 index ff80f873c..000000000 --- a/ai-agents/apis/add-api-tools-to-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/add ---- diff --git a/ai-agents/apis/add-frontend-actions-to-agent.mdx b/ai-agents/apis/add-frontend-actions-to-agent.mdx deleted file mode 100644 index caff2e3e6..000000000 --- a/ai-agents/apis/add-frontend-actions-to-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/add ---- diff --git a/ai-agents/apis/add-knowledge-base-files.mdx b/ai-agents/apis/add-knowledge-base-files.mdx deleted file mode 100644 index f88c31add..000000000 --- a/ai-agents/apis/add-knowledge-base-files.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/add ---- diff --git a/ai-agents/apis/add-mcp-servers-to-agent.mdx b/ai-agents/apis/add-mcp-servers-to-agent.mdx deleted file mode 100644 index 670828d9c..000000000 --- a/ai-agents/apis/add-mcp-servers-to-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/add ---- diff --git a/ai-agents/apis/add-tools-to-agent.mdx b/ai-agents/apis/add-tools-to-agent.mdx deleted file mode 100644 index 1e32e69f5..000000000 --- a/ai-agents/apis/add-tools-to-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/add ---- diff --git a/ai-agents/apis/create-agent.mdx b/ai-agents/apis/create-agent.mdx deleted file mode 100644 index ea136b527..000000000 --- a/ai-agents/apis/create-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/agents ---- diff --git a/ai-agents/apis/create-api-tool.mdx b/ai-agents/apis/create-api-tool.mdx deleted file mode 100644 index 833a8214b..000000000 --- a/ai-agents/apis/create-api-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/api-tools ---- diff --git a/ai-agents/apis/create-byo-agent.mdx b/ai-agents/apis/create-byo-agent.mdx deleted file mode 100644 index 15246a836..000000000 --- a/ai-agents/apis/create-byo-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agents ---- diff --git a/ai-agents/apis/create-custom-variable.mdx b/ai-agents/apis/create-custom-variable.mdx deleted file mode 100644 index dbe5b6e56..000000000 --- a/ai-agents/apis/create-custom-variable.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/agents/variables/custom ---- diff --git a/ai-agents/apis/create-frontend-action.mdx b/ai-agents/apis/create-frontend-action.mdx deleted file mode 100644 index 6ba5b596d..000000000 --- a/ai-agents/apis/create-frontend-action.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/frontend-actions ---- diff --git a/ai-agents/apis/create-mcp-server.mdx b/ai-agents/apis/create-mcp-server.mdx deleted file mode 100644 index 564affd3c..000000000 --- a/ai-agents/apis/create-mcp-server.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/mcp-servers ---- diff --git a/ai-agents/apis/create-text-detail.mdx b/ai-agents/apis/create-text-detail.mdx deleted file mode 100644 index c6fe50b21..000000000 --- a/ai-agents/apis/create-text-detail.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/text ---- diff --git a/ai-agents/apis/create-tool.mdx b/ai-agents/apis/create-tool.mdx deleted file mode 100644 index 535d26a45..000000000 --- a/ai-agents/apis/create-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/tools ---- diff --git a/ai-agents/apis/delete-agent.mdx b/ai-agents/apis/delete-agent.mdx deleted file mode 100644 index 1a496aa85..000000000 --- a/ai-agents/apis/delete-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/agents/{uid} ---- diff --git a/ai-agents/apis/delete-api-tool.mdx b/ai-agents/apis/delete-api-tool.mdx deleted file mode 100644 index bf04a9cd8..000000000 --- a/ai-agents/apis/delete-api-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/api-tools/{slug} ---- diff --git a/ai-agents/apis/delete-byo-agent.mdx b/ai-agents/apis/delete-byo-agent.mdx deleted file mode 100644 index a8a9ea563..000000000 --- a/ai-agents/apis/delete-byo-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agents/{uid} ---- diff --git a/ai-agents/apis/delete-custom-variable.mdx b/ai-agents/apis/delete-custom-variable.mdx deleted file mode 100644 index 7bec4b90e..000000000 --- a/ai-agents/apis/delete-custom-variable.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/agents/variables/custom/{variableId} ---- diff --git a/ai-agents/apis/delete-frontend-action.mdx b/ai-agents/apis/delete-frontend-action.mdx deleted file mode 100644 index 196fc06aa..000000000 --- a/ai-agents/apis/delete-frontend-action.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/frontend-actions/{id} ---- diff --git a/ai-agents/apis/delete-mcp-server.mdx b/ai-agents/apis/delete-mcp-server.mdx deleted file mode 100644 index 23745cf7c..000000000 --- a/ai-agents/apis/delete-mcp-server.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/mcp-servers/{slug} ---- diff --git a/ai-agents/apis/delete-text-detail.mdx b/ai-agents/apis/delete-text-detail.mdx deleted file mode 100644 index 7c6422e2b..000000000 --- a/ai-agents/apis/delete-text-detail.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/knowledge-base/text/{uniqueId} ---- diff --git a/ai-agents/apis/delete-tool.mdx b/ai-agents/apis/delete-tool.mdx deleted file mode 100644 index 424e4cb0e..000000000 --- a/ai-agents/apis/delete-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/tools/{name} ---- diff --git a/ai-agents/apis/delete-uploaded-file.mdx b/ai-agents/apis/delete-uploaded-file.mdx deleted file mode 100644 index f53ec6901..000000000 --- a/ai-agents/apis/delete-uploaded-file.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/knowledge-base/uploads/{uniqueId} ---- diff --git a/ai-agents/apis/delete-website.mdx b/ai-agents/apis/delete-website.mdx deleted file mode 100644 index 9fff82254..000000000 --- a/ai-agents/apis/delete-website.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /ai-agents/agent-builder/knowledge-base/website/{uniqueId} ---- diff --git a/ai-agents/apis/enable-tool-actions.mdx b/ai-agents/apis/enable-tool-actions.mdx deleted file mode 100644 index 4783173e1..000000000 --- a/ai-agents/apis/enable-tool-actions.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/add ---- diff --git a/ai-agents/apis/get-agent.mdx b/ai-agents/apis/get-agent.mdx deleted file mode 100644 index c78ad4837..000000000 --- a/ai-agents/apis/get-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents/{uid} ---- diff --git a/ai-agents/apis/get-all-available-variables.mdx b/ai-agents/apis/get-all-available-variables.mdx deleted file mode 100644 index 30114fdd0..000000000 --- a/ai-agents/apis/get-all-available-variables.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents/variables/all ---- diff --git a/ai-agents/apis/get-discovered-urls.mdx b/ai-agents/apis/get-discovered-urls.mdx deleted file mode 100644 index 7070ced9c..000000000 --- a/ai-agents/apis/get-discovered-urls.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls ---- diff --git a/ai-agents/apis/get-source-pages.mdx b/ai-agents/apis/get-source-pages.mdx deleted file mode 100644 index 2a2888e5d..000000000 --- a/ai-agents/apis/get-source-pages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/pages ---- diff --git a/ai-agents/apis/get-tool-actions-for-agent.mdx b/ai-agents/apis/get-tool-actions-for-agent.mdx deleted file mode 100644 index 8f7d81638..000000000 --- a/ai-agents/apis/get-tool-actions-for-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions ---- diff --git a/ai-agents/apis/get-tool.mdx b/ai-agents/apis/get-tool.mdx deleted file mode 100644 index 72baf1a9f..000000000 --- a/ai-agents/apis/get-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/tools/{name} ---- diff --git a/ai-agents/apis/initiate-file-uploads.mdx b/ai-agents/apis/initiate-file-uploads.mdx deleted file mode 100644 index 04acaf303..000000000 --- a/ai-agents/apis/initiate-file-uploads.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/uploads/initiate ---- diff --git a/ai-agents/apis/list-agent-tools-and-actions.mdx b/ai-agents/apis/list-agent-tools-and-actions.mdx deleted file mode 100644 index 97ad7ca63..000000000 --- a/ai-agents/apis/list-agent-tools-and-actions.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents/{uid}/enabled-items ---- diff --git a/ai-agents/apis/list-agents.mdx b/ai-agents/apis/list-agents.mdx deleted file mode 100644 index 83c5d0c0f..000000000 --- a/ai-agents/apis/list-agents.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents ---- diff --git a/ai-agents/apis/list-api-tools.mdx b/ai-agents/apis/list-api-tools.mdx deleted file mode 100644 index e9ea65da8..000000000 --- a/ai-agents/apis/list-api-tools.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/api-tools ---- diff --git a/ai-agents/apis/list-byo-agents.mdx b/ai-agents/apis/list-byo-agents.mdx deleted file mode 100644 index 471474bb6..000000000 --- a/ai-agents/apis/list-byo-agents.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agents ---- diff --git a/ai-agents/apis/list-frontend-actions.mdx b/ai-agents/apis/list-frontend-actions.mdx deleted file mode 100644 index 4b4e15540..000000000 --- a/ai-agents/apis/list-frontend-actions.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/frontend-actions ---- diff --git a/ai-agents/apis/list-knowledge-base-records.mdx b/ai-agents/apis/list-knowledge-base-records.mdx deleted file mode 100644 index 5586a048a..000000000 --- a/ai-agents/apis/list-knowledge-base-records.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/knowledge-base ---- diff --git a/ai-agents/apis/list-mcp-servers.mdx b/ai-agents/apis/list-mcp-servers.mdx deleted file mode 100644 index 013fdd6d8..000000000 --- a/ai-agents/apis/list-mcp-servers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/mcp-servers ---- diff --git a/ai-agents/apis/list-tools.mdx b/ai-agents/apis/list-tools.mdx deleted file mode 100644 index e5c6b459a..000000000 --- a/ai-agents/apis/list-tools.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/tools ---- diff --git a/ai-agents/apis/poll-discovered-urls-status.mdx b/ai-agents/apis/poll-discovered-urls-status.mdx deleted file mode 100644 index b28e053de..000000000 --- a/ai-agents/apis/poll-discovered-urls-status.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/status/poll ---- diff --git a/ai-agents/apis/poll-knowledge-base-status.mdx b/ai-agents/apis/poll-knowledge-base-status.mdx deleted file mode 100644 index a8d419d0c..000000000 --- a/ai-agents/apis/poll-knowledge-base-status.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/status/poll ---- diff --git a/ai-agents/apis/process-discovered-urls.mdx b/ai-agents/apis/process-discovered-urls.mdx deleted file mode 100644 index 9b561e5e6..000000000 --- a/ai-agents/apis/process-discovered-urls.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/process ---- diff --git a/ai-agents/apis/remove-api-tools-from-agent.mdx b/ai-agents/apis/remove-api-tools-from-agent.mdx deleted file mode 100644 index 23edeb189..000000000 --- a/ai-agents/apis/remove-api-tools-from-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/remove ---- diff --git a/ai-agents/apis/remove-frontend-actions-from-agent.mdx b/ai-agents/apis/remove-frontend-actions-from-agent.mdx deleted file mode 100644 index 57d871fd7..000000000 --- a/ai-agents/apis/remove-frontend-actions-from-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/remove ---- diff --git a/ai-agents/apis/remove-knowledge-base-files.mdx b/ai-agents/apis/remove-knowledge-base-files.mdx deleted file mode 100644 index e7126dc5f..000000000 --- a/ai-agents/apis/remove-knowledge-base-files.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/remove ---- diff --git a/ai-agents/apis/remove-mcp-servers-from-agent.mdx b/ai-agents/apis/remove-mcp-servers-from-agent.mdx deleted file mode 100644 index e2620930a..000000000 --- a/ai-agents/apis/remove-mcp-servers-from-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/remove ---- diff --git a/ai-agents/apis/remove-tool-actions.mdx b/ai-agents/apis/remove-tool-actions.mdx deleted file mode 100644 index 2db9dd77c..000000000 --- a/ai-agents/apis/remove-tool-actions.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/remove ---- diff --git a/ai-agents/apis/remove-tools-from-agent.mdx b/ai-agents/apis/remove-tools-from-agent.mdx deleted file mode 100644 index 922cd940f..000000000 --- a/ai-agents/apis/remove-tools-from-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/remove ---- diff --git a/ai-agents/apis/retry-indexing-for-website-pages.mdx b/ai-agents/apis/retry-indexing-for-website-pages.mdx deleted file mode 100644 index 91f50ab37..000000000 --- a/ai-agents/apis/retry-indexing-for-website-pages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/sync ---- diff --git a/ai-agents/apis/retry-knowledge-base-source-indexing.mdx b/ai-agents/apis/retry-knowledge-base-source-indexing.mdx deleted file mode 100644 index c1da30244..000000000 --- a/ai-agents/apis/retry-knowledge-base-source-indexing.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/sync ---- diff --git a/ai-agents/apis/scrape-single-page.mdx b/ai-agents/apis/scrape-single-page.mdx deleted file mode 100644 index 12ac66e7b..000000000 --- a/ai-agents/apis/scrape-single-page.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/website/individual-page ---- diff --git a/ai-agents/apis/scrape-website.mdx b/ai-agents/apis/scrape-website.mdx deleted file mode 100644 index 4e87ff062..000000000 --- a/ai-agents/apis/scrape-website.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ai-agents/agent-builder/knowledge-base/website/scrape ---- diff --git a/ai-agents/apis/search-agent-tools.mdx b/ai-agents/apis/search-agent-tools.mdx deleted file mode 100644 index 521943845..000000000 --- a/ai-agents/apis/search-agent-tools.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ai-agents/agent-builder/agents/{uid}/tools/search ---- diff --git a/ai-agents/apis/update-agent.mdx b/ai-agents/apis/update-agent.mdx deleted file mode 100644 index 4555de01a..000000000 --- a/ai-agents/apis/update-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/{uid} ---- diff --git a/ai-agents/apis/update-api-tool.mdx b/ai-agents/apis/update-api-tool.mdx deleted file mode 100644 index 5ce342fff..000000000 --- a/ai-agents/apis/update-api-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/api-tools/{slug} ---- diff --git a/ai-agents/apis/update-byo-agent.mdx b/ai-agents/apis/update-byo-agent.mdx deleted file mode 100644 index de39efbd2..000000000 --- a/ai-agents/apis/update-byo-agent.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agents/{uid} ---- diff --git a/ai-agents/apis/update-custom-variable.mdx b/ai-agents/apis/update-custom-variable.mdx deleted file mode 100644 index 7a2c2b0ec..000000000 --- a/ai-agents/apis/update-custom-variable.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/agents/variables/custom/{variableId} ---- diff --git a/ai-agents/apis/update-frontend-action.mdx b/ai-agents/apis/update-frontend-action.mdx deleted file mode 100644 index 2b97786bb..000000000 --- a/ai-agents/apis/update-frontend-action.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/frontend-actions/{id} ---- diff --git a/ai-agents/apis/update-mcp-server.mdx b/ai-agents/apis/update-mcp-server.mdx deleted file mode 100644 index 425a8ca64..000000000 --- a/ai-agents/apis/update-mcp-server.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/mcp-servers/{slug} ---- diff --git a/ai-agents/apis/update-text-detail.mdx b/ai-agents/apis/update-text-detail.mdx deleted file mode 100644 index 28dfd41a3..000000000 --- a/ai-agents/apis/update-text-detail.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ai-agents/agent-builder/knowledge-base/text/{uniqueId} ---- diff --git a/ai-agents/apis/update-tool.mdx b/ai-agents/apis/update-tool.mdx deleted file mode 100644 index 551844389..000000000 --- a/ai-agents/apis/update-tool.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /ai-agents/tools/{name} ---- diff --git a/ai-agents/byo-api-explorer.mdx b/ai-agents/byo-api-explorer.mdx deleted file mode 100644 index 257205124..000000000 --- a/ai-agents/byo-api-explorer.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "BYO Agent APIs" -sidebarTitle: "Overview" ---- - -The BYO (Bring Your Own) Agent APIs provide endpoints for creating and managing AI agents that integrate with third-party frameworks such as Vercel AI SDK, LangGraph, CrewAI, Mastra, AG2, Agno, and AG-UI. These APIs allow you to register external agents, manage custom tools and actions, and configure available integrations. - -Below is an overview of the key functionalities provided by the BYO Agent APIs: - -1. The Third-Party Agents endpoints allow you to list, update, and delete agents that delegate to external AI frameworks. -2. The Tools endpoints allow you to create, update, and manage custom tools that your BYO agents can use. -3. The Integrations endpoint allows you to retrieve available AI framework integrations supported by CometChat. - ---- - -## Authentication - -All BYO Agent API endpoints require authentication via an API key passed in the request header. - -| Property | Details | -|----------|---------| -| **Header** | `apikey` | -| **Requirement** | Required on all endpoints | diff --git a/calls/api/get-call.mdx b/calls/api/get-call.mdx deleted file mode 100644 index b6a9f198c..000000000 --- a/calls/api/get-call.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Get Call" -sidebarTitle: "Get Call" -openapi: get /calls/{sessionId} ---- - -Retrieve detailed information about a specific call using its session ID. This endpoint returns complete call data including all participants, their individual metrics, and recording information. - -## When to Use - -| Scenario | Description | -|----------|-------------| -| Call details page | Display comprehensive information about a completed call | -| Recording access | Get the recording URL for playback or download | -| Participant analytics | View individual participant metrics (join time, duration, etc.) | -| Debugging | Investigate issues with a specific call session | - -## Example Request - -```bash -curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls/v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92" \ - -H "apikey: YOUR_REST_API_KEY" -``` - -## Response Details - -The response includes: - -- **Call metadata**: Type, mode, status, duration, timestamps -- **Participants array**: Each participant's UID, device ID, join/leave times, and individual audio/video minutes -- **Recordings array**: Recording IDs, URLs, duration, and timestamps (if `hasRecording` is true) - - -The `sessionId` is returned when a call is initiated via the SDK or can be found in the [List Calls](/calls/api/list-calls) response. - - -## Participant States - -Each participant in the response has a `state` field: - -| State | Description | -|-------|-------------| -| `ongoing` | Participant is currently in the call | -| `ended` | Participant left the call normally | -| `unanswered` | Participant didn't answer the call | -| `rejected` | Participant rejected the call | diff --git a/calls/api/list-calls.mdx b/calls/api/list-calls.mdx deleted file mode 100644 index 0ba3dc352..000000000 --- a/calls/api/list-calls.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: "List Calls" -sidebarTitle: "List Calls" -openapi: get /calls ---- - -Retrieve a paginated list of all calls in your application. Use query parameters to filter by call type, status, date range, and more. - -## Common Use Cases - -| Use Case | Query Parameters | -|----------|------------------| -| Get all video calls | `type=video` | -| Get ongoing calls | `status=ongoing` | -| Get calls with recordings | `hasRecording=true` | -| Get calls for a specific user | `uid=user123` | -| Get group calls only | `receiverType=group` | -| Get calls from a specific date | `startedAt=1692368000` | - -## Example Request - -```bash -curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls?type=video&status=ended&hasRecording=true" \ - -H "apikey: YOUR_REST_API_KEY" -``` - -## Filtering Tips - -- Combine multiple filters to narrow results (e.g., `type=video&status=ended`) -- Use `startedAt` and `endedAt` for date range queries (Unix timestamps) -- Filter by `participantsCount` to find calls with specific attendance -- Use `uid` to get all calls involving a specific user - - -Results are paginated. Check the `meta.pagination` object in the response for total count and page information. - diff --git a/calls/api/overview.mdx b/calls/api/overview.mdx deleted file mode 100644 index 22cb49723..000000000 --- a/calls/api/overview.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: "Overview" -sidebarTitle: "Overview" ---- - -The Calls API provides programmatic access to call logs and analytics. Use these APIs to retrieve call history, participant details, duration metrics, and recording information for your application. - -## Base URL - -``` -https://{appId}.call-{region}.cometchat.io/v3 -``` - -| Variable | Description | -|----------|-------------| -| `appId` | Your CometChat App ID | -| `region` | Your app's region: `us`, `eu`, or `in` | - -## Authentication - -All API requests require authentication using your REST API Key in the header: - -```bash -curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls" \ - -H "apikey: YOUR_REST_API_KEY" -``` - - -Use the REST API Key from your [CometChat Dashboard](https://app.cometchat.com). This key has full access scope and should only be used server-side. - - ---- - -## Available Endpoints - -| Endpoint | Method | Description | -|----------|--------|-------------| -| [/calls](/calls/api/list-calls) | GET | List all calls with filtering options | -| [/calls/{sessionId}](/calls/api/get-call) | GET | Get details of a specific call | - ---- - -## Use Cases - -| Use Case | Endpoint | Description | -|----------|----------|-------------| -| Call history | List Calls | Display call logs in your app | -| Analytics dashboard | List Calls | Aggregate call duration and participant metrics | -| Call details page | Get Call | Show detailed information for a specific call | -| Recording access | Get Call | Retrieve recording URLs for playback | -| Billing reports | List Calls | Calculate audio/video minutes for billing | - ---- - -## Call Object - -The call object contains all information about a call session. - -| Property | Type | Description | -|----------|------|-------------| -| `sessionId` | string | Unique identifier for the call | -| `type` | string | Call type: `audio` or `video` | -| `mode` | string | Call mode: `call`, `meet`, or `presenter` | -| `status` | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, `canceled` | -| `receiverType` | string | Receiver type: `user` or `group` | -| `initiator` | string | UID of the user who initiated the call | -| `receiver` | string | UID of the user or GUID of the group receiving the call | -| `totalParticipants` | integer | Number of participants (multiple devices counted separately) | -| `totalAudioMinutes` | float | Total audio minutes across all participants | -| `totalVideoMinutes` | float | Total video minutes across all participants | -| `totalDurationInMinutes` | float | Total call duration (audio + video minutes) | -| `totalDuration` | string | Duration in timer format (e.g., "00:05:30") | -| `hasRecording` | boolean | Whether the call has recordings | -| `initiatedAt` | integer | Unix timestamp when call was initiated | -| `startedAt` | integer | Unix timestamp when call started (first participant joined) | -| `endedAt` | integer | Unix timestamp when call ended | -| `participants` | array | List of participant objects | -| `recordings` | array | List of recording objects (if `hasRecording` is true) | - -### Call Status Values - -| Status | Description | -|--------|-------------| -| `initiated` | Call has been initiated but no one has joined yet | -| `ongoing` | Call is currently in progress | -| `ended` | Call has ended normally | -| `unanswered` | Call was not answered within the timeout period | -| `rejected` | Receiver rejected the call | -| `canceled` | Caller canceled before receiver answered | - -### Call Mode Values - -| Mode | Description | -|------|-------------| -| `call` | Standard 1-on-1 or group call initiated via SDK | -| `meet` | Meeting/conference call with a shared session ID | -| `presenter` | Webinar-style call with presenter and viewers | - ---- - -## Participant Object - -Each participant in a call has the following properties: - -| Property | Type | Description | -|----------|------|-------------| -| `uid` | string | Unique identifier of the user | -| `deviceId` | string | Unique identifier of the device used to join | -| `isJoined` | boolean | Whether the user actually joined the call | -| `state` | string | Participant state: `ongoing`, `ended`, `unanswered`, `rejected` | -| `joinedAt` | integer | Unix timestamp when participant joined | -| `leftAt` | integer | Unix timestamp when participant left | -| `totalAudioMinutes` | float | Audio minutes for this participant | -| `totalVideoMinutes` | float | Video minutes for this participant | -| `totalDurationInMinutes` | float | Total duration for this participant | - - -If a user joins from multiple devices, each device is counted as a separate participant entry. - - ---- - -## Recording Object - -When a call has recordings, each recording contains: - -| Property | Type | Description | -|----------|------|-------------| -| `rid` | string | Unique identifier of the recording | -| `recording_url` | string | S3 URL to download/stream the recording | -| `duration` | float | Recording duration in minutes | -| `startTime` | integer | Unix timestamp when recording started | -| `endTime` | integer | Unix timestamp when recording ended | - ---- - -## Example Response - -```json -{ - "data": { - "sessionId": "v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92", - "type": "audio", - "mode": "call", - "status": "ended", - "receiverType": "user", - "initiator": "cometchat-uid-1", - "receiver": "cometchat-uid-2", - "totalParticipants": 2, - "totalAudioMinutes": 0.32, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.32, - "totalDuration": "00:00:19", - "hasRecording": false, - "initiatedAt": 1692368113, - "startedAt": 1692368127, - "endedAt": 1692368146, - "participants": [ - { - "uid": "cometchat-uid-1", - "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat.com/hsYWb5ul", - "isJoined": true, - "state": "ended", - "joinedAt": 1692368128, - "leftAt": 1692368144, - "totalAudioMinutes": 0.27, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.27 - }, - { - "uid": "cometchat-uid-2", - "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat.com/CKT3xgR4", - "isJoined": true, - "state": "ended", - "joinedAt": 1692368132, - "leftAt": 1692368146, - "totalAudioMinutes": 0.23, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.23 - } - ] - } -} -``` - ---- - -## Pagination - -List endpoints return paginated results with metadata: - -```json -{ - "data": [...], - "meta": { - "pagination": { - "total": 150, - "count": 25, - "per_page": 25, - "current_page": 1, - "total_pages": 6 - } - } -} -``` - -| Property | Description | -|----------|-------------| -| `total` | Total number of records | -| `count` | Number of records in current response | -| `per_page` | Records per page | -| `current_page` | Current page number | -| `total_pages` | Total number of pages | - ---- - -## Error Handling - -The API returns standard HTTP status codes: - -| Status Code | Description | -|-------------|-------------| -| `200` | Success | -| `400` | Bad request - Invalid parameters | -| `401` | Unauthorized - Invalid or missing API key | -| `404` | Not found - Call session doesn't exist | -| `429` | Rate limited - Too many requests | -| `500` | Server error | - -Error responses include a message: - -```json -{ - "error": { - "code": "ERR_SESSION_NOT_FOUND", - "message": "The specified session ID does not exist" - } -} -``` diff --git a/moderation/api-explorer.mdx b/moderation/api-explorer.mdx deleted file mode 100644 index 22c1b062d..000000000 --- a/moderation/api-explorer.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: "AI Moderation APIs" -sidebarTitle: "Overview" ---- - -The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. - -Below is an overview of the key functionalities provided by the Moderation Service API: - -1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions -2. The Keywords Management endpoints allow you to create and manage lists of keywords or regex patterns used for content moderation. -3. The list blocked messages endpoint allows you to fetch all the violated messages. -4. Fetches the historical revisions of a rule, detailing all updates made over time. - - - -The default rules include text profanity, AI-based moderation for images and videos, custom profanity (custom messages), contact details, and email content, ensuring comprehensive content moderation. - -The text profanity and custom profanity filters scan for words, including those matching regex patterns, and drop the message if a violation is detected. - -The AI-based image and video moderation system scans for violations in images and videos and discards the message if a violation is detected. It allows the attachment of the following labels to a rule, enabling moderation for specific categories of images and videos.\ -Following are the labels that are available for Image/Video moderation: - -| Labels | Definitions | -| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Violence | Instruments or devices used to cause harm or damage to living beings, structures, or systems. This includes firearms (e.g., guns, rifles, machine guns, etc.), sharp weapons (e.g., swords, knives, etc.), explosives and ammunition (e.g., missiles, bombs, bullets, etc.). | -| Alcohol | The act of drinking alcoholic beverages from bottles or glasses of alcohol or liquor. | -| Gambling | The act of participating in games of chance for a chance to win a prize in casinos, e.g., playing cards, blackjacks, roulette, slot machines at casinos, etc. | -| Drugs & Tobacco | Small, solid, often round or oval-shaped tables or capsules. The act of inhaling, exhaling, and lighting up burning substances including cigarettes, cigars, e-cigarettes, hookah, or joint. | -| Rude gestures | Visual depiction of a hand gesture with middle finger is extended upward while the other fingers are folded down. | -| Explicit Nudity | Human male/female genitalia, including the penis (whether erect or flaccid), the scrotum, and any discernible pubic hair. | -| Non-Explicit Nudity | Human posterior part where the majority of the skin is visible from the neck to the end of the spine. This term does not apply when the individual's back is partially or fully occluded. | -| Swimwear or underwear | Human clothing for female/male swimwear (e.g., one-piece swimsuits, bikinis, tankinis, swim trunks, boardshorts, swim briefs, etc) | -| Visually Disturbing | Human bodies that are extremely thin and undernourished with severe physical wasting and depletion of muscle and fat tissue. | -| Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | - -When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. - ---- - -## API Constraints - - -**Need higher limits?** Contact [CometChat Support](https://www.cometchat.com/contact) to discuss enterprise options for increased limits. - - - - - | Parameter | Limit | - |-----------|-------| - | **Rule ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **Filters per rule** | Max 10 filters | - | **Conditions per rule** | Max 10 conditions | - | **Rules per app** | Max 25 custom rules (excludes default rules) | - - - | Parameter | Limit | - |-----------|-------| - | **List ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **CSV file size** | Max 1 MB | - | **Lists per app** | Max 25 custom lists (excludes default lists) | - - - | Parameter | Limit | - |-----------|-------| - | **AI Context** | Max 50 messages sent to OpenAI/Custom API for analysis | - | **Custom Flag Reasons** | Max 5 per app | - - diff --git a/moderation/apis/add-keywords.mdx b/moderation/apis/add-keywords.mdx deleted file mode 100644 index 2a0094302..000000000 --- a/moderation/apis/add-keywords.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /moderation/keywords ---- diff --git a/moderation/apis/add-rule.mdx b/moderation/apis/add-rule.mdx deleted file mode 100644 index 7ed82c38e..000000000 --- a/moderation/apis/add-rule.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /moderation/rules ---- diff --git a/moderation/apis/approve-blocked-messages.mdx b/moderation/apis/approve-blocked-messages.mdx deleted file mode 100644 index b09623f66..000000000 --- a/moderation/apis/approve-blocked-messages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /moderation/blocked-messages/{messageId} ---- diff --git a/moderation/apis/blockreview-flagged-message.mdx b/moderation/apis/blockreview-flagged-message.mdx deleted file mode 100644 index 9fe7cdfc0..000000000 --- a/moderation/apis/blockreview-flagged-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /moderation/flagged-messages/{id} ---- diff --git a/moderation/apis/create-reasons.mdx b/moderation/apis/create-reasons.mdx deleted file mode 100644 index 5fda0753f..000000000 --- a/moderation/apis/create-reasons.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /moderation/reasons ---- diff --git a/moderation/apis/delete-reasons.mdx b/moderation/apis/delete-reasons.mdx deleted file mode 100644 index 9e5d78ac4..000000000 --- a/moderation/apis/delete-reasons.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /moderation/reasons/{id} ---- diff --git a/moderation/apis/flag-a-message.mdx b/moderation/apis/flag-a-message.mdx deleted file mode 100644 index 77a3a6a5f..000000000 --- a/moderation/apis/flag-a-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /messages/{id}/flagged ---- diff --git a/moderation/apis/get-keyword.mdx b/moderation/apis/get-keyword.mdx deleted file mode 100644 index e73ab9699..000000000 --- a/moderation/apis/get-keyword.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/keywords/{keywordId} ---- diff --git a/moderation/apis/get-reason-details.mdx b/moderation/apis/get-reason-details.mdx deleted file mode 100644 index 715395c56..000000000 --- a/moderation/apis/get-reason-details.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/reasons/{id} ---- diff --git a/moderation/apis/get-rule-revisions.mdx b/moderation/apis/get-rule-revisions.mdx deleted file mode 100644 index 4136c7810..000000000 --- a/moderation/apis/get-rule-revisions.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/rules/{ruleId}/revisions ---- diff --git a/moderation/apis/get-rule.mdx b/moderation/apis/get-rule.mdx deleted file mode 100644 index 07c952251..000000000 --- a/moderation/apis/get-rule.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/rules/{ruleId} ---- diff --git a/moderation/apis/list-blocked-messages.mdx b/moderation/apis/list-blocked-messages.mdx deleted file mode 100644 index 206067ab8..000000000 --- a/moderation/apis/list-blocked-messages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/blocked-messages ---- diff --git a/moderation/apis/list-flagged-messages.mdx b/moderation/apis/list-flagged-messages.mdx deleted file mode 100644 index c364c406c..000000000 --- a/moderation/apis/list-flagged-messages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/flagged-messages ---- diff --git a/moderation/apis/list-keywords.mdx b/moderation/apis/list-keywords.mdx deleted file mode 100644 index 8f4d7d9e7..000000000 --- a/moderation/apis/list-keywords.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/keywords ---- diff --git a/moderation/apis/list-reasons.mdx b/moderation/apis/list-reasons.mdx deleted file mode 100644 index cd563ff9b..000000000 --- a/moderation/apis/list-reasons.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/reasons ---- diff --git a/moderation/apis/list-reviewed-messages.mdx b/moderation/apis/list-reviewed-messages.mdx deleted file mode 100644 index d0e9dc0b8..000000000 --- a/moderation/apis/list-reviewed-messages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/reviewed-messages ---- diff --git a/moderation/apis/list-rules.mdx b/moderation/apis/list-rules.mdx deleted file mode 100644 index 223c22ecc..000000000 --- a/moderation/apis/list-rules.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /moderation/rules ---- diff --git a/moderation/apis/remove-keyword.mdx b/moderation/apis/remove-keyword.mdx deleted file mode 100644 index 05f77fb55..000000000 --- a/moderation/apis/remove-keyword.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /moderation/keywords/{keywordId} ---- diff --git a/moderation/apis/remove-rule.mdx b/moderation/apis/remove-rule.mdx deleted file mode 100644 index 8b91cbe7c..000000000 --- a/moderation/apis/remove-rule.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /moderation/rules/{ruleId} ---- diff --git a/moderation/apis/review-blocked-message.mdx b/moderation/apis/review-blocked-message.mdx deleted file mode 100644 index 79d4848fb..000000000 --- a/moderation/apis/review-blocked-message.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /moderation/blocked-messages/{id} ---- diff --git a/moderation/apis/update-keyword.mdx b/moderation/apis/update-keyword.mdx deleted file mode 100644 index 7d9ee61c1..000000000 --- a/moderation/apis/update-keyword.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /moderation/keywords/{keywordId} ---- diff --git a/moderation/apis/update-reason-details.mdx b/moderation/apis/update-reason-details.mdx deleted file mode 100644 index 1566528a4..000000000 --- a/moderation/apis/update-reason-details.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /moderation/reasons/{id} ---- diff --git a/moderation/apis/update-rule.mdx b/moderation/apis/update-rule.mdx deleted file mode 100644 index d42f34a5f..000000000 --- a/moderation/apis/update-rule.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /moderation/rules/{ruleId} ---- diff --git a/notifications/apis/email/delete-custom-provider.mdx b/notifications/apis/email/delete-custom-provider.mdx deleted file mode 100644 index 70ca99846..000000000 --- a/notifications/apis/email/delete-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/email/v1/providers/custom ---- diff --git a/notifications/apis/email/delete-sendgrid-credentials.mdx b/notifications/apis/email/delete-sendgrid-credentials.mdx deleted file mode 100644 index 6141627ef..000000000 --- a/notifications/apis/email/delete-sendgrid-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/email/v1/providers/sendgrid ---- diff --git a/notifications/apis/email/get-custom-provider.mdx b/notifications/apis/email/get-custom-provider.mdx deleted file mode 100644 index c0e76dc56..000000000 --- a/notifications/apis/email/get-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/email/v1/providers/custom ---- diff --git a/notifications/apis/email/get-sendgrid-credentials.mdx b/notifications/apis/email/get-sendgrid-credentials.mdx deleted file mode 100644 index 037fa29fa..000000000 --- a/notifications/apis/email/get-sendgrid-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/email/v1/providers/sendgrid ---- diff --git a/notifications/apis/email/save-custom-provider.mdx b/notifications/apis/email/save-custom-provider.mdx deleted file mode 100644 index 81d299c91..000000000 --- a/notifications/apis/email/save-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/email/v1/providers/custom ---- diff --git a/notifications/apis/email/save-sendgrid-credentials.mdx b/notifications/apis/email/save-sendgrid-credentials.mdx deleted file mode 100644 index 3aa11ff94..000000000 --- a/notifications/apis/email/save-sendgrid-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/email/v1/providers/sendgrid ---- diff --git a/notifications/apis/email/update-custom-provider.mdx b/notifications/apis/email/update-custom-provider.mdx deleted file mode 100644 index 567934c39..000000000 --- a/notifications/apis/email/update-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/email/v1/providers/custom ---- diff --git a/notifications/apis/email/update-sendgrid-credentials.mdx b/notifications/apis/email/update-sendgrid-credentials.mdx deleted file mode 100644 index cc5c3bc1b..000000000 --- a/notifications/apis/email/update-sendgrid-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/email/v1/providers/sendgrid ---- diff --git a/notifications/apis/push/add-apns-provider.mdx b/notifications/apis/push/add-apns-provider.mdx deleted file mode 100644 index c8e5cb7ef..000000000 --- a/notifications/apis/push/add-apns-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/apns ---- diff --git a/notifications/apis/push/add-fcm-provider.mdx b/notifications/apis/push/add-fcm-provider.mdx deleted file mode 100644 index 42f65ded8..000000000 --- a/notifications/apis/push/add-fcm-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/fcm ---- diff --git a/notifications/apis/push/change-default-apns-provider.mdx b/notifications/apis/push/change-default-apns-provider.mdx deleted file mode 100644 index 05f40a27e..000000000 --- a/notifications/apis/push/change-default-apns-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/apns/default/{providerId} ---- diff --git a/notifications/apis/push/change-default-fcm-provider.mdx b/notifications/apis/push/change-default-fcm-provider.mdx deleted file mode 100644 index 954ec443f..000000000 --- a/notifications/apis/push/change-default-fcm-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/fcm/default/{providerId} ---- diff --git a/notifications/apis/push/delete-apns-providers.mdx b/notifications/apis/push/delete-apns-providers.mdx deleted file mode 100644 index 26b769e61..000000000 --- a/notifications/apis/push/delete-apns-providers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/apns/{providerId} ---- diff --git a/notifications/apis/push/delete-contact-details.mdx b/notifications/apis/push/delete-contact-details.mdx deleted file mode 100644 index 9b5d1ab1a..000000000 --- a/notifications/apis/push/delete-contact-details.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/v1/contact-details ---- diff --git a/notifications/apis/push/delete-custom-provider.mdx b/notifications/apis/push/delete-custom-provider.mdx deleted file mode 100644 index 44c8f7a22..000000000 --- a/notifications/apis/push/delete-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/custom ---- diff --git a/notifications/apis/push/delete-fcm-provider.mdx b/notifications/apis/push/delete-fcm-provider.mdx deleted file mode 100644 index adfcc2482..000000000 --- a/notifications/apis/push/delete-fcm-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/fcm/{providerId} ---- diff --git a/notifications/apis/push/delete-push-token.mdx b/notifications/apis/push/delete-push-token.mdx deleted file mode 100644 index 4e7097897..000000000 --- a/notifications/apis/push/delete-push-token.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/push/v1/tokens/{pushToken} ---- diff --git a/notifications/apis/push/get-contact-details.mdx b/notifications/apis/push/get-contact-details.mdx deleted file mode 100644 index 753b7edf4..000000000 --- a/notifications/apis/push/get-contact-details.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/contact-details ---- diff --git a/notifications/apis/push/get-custom-provider.mdx b/notifications/apis/push/get-custom-provider.mdx deleted file mode 100644 index 2f6ae6da5..000000000 --- a/notifications/apis/push/get-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/custom ---- diff --git a/notifications/apis/push/get-timezone.mdx b/notifications/apis/push/get-timezone.mdx deleted file mode 100644 index 8bc807620..000000000 --- a/notifications/apis/push/get-timezone.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/preferences/timezone ---- diff --git a/notifications/apis/push/list-apns-providers.mdx b/notifications/apis/push/list-apns-providers.mdx deleted file mode 100644 index 43a6d4a0f..000000000 --- a/notifications/apis/push/list-apns-providers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/apns ---- diff --git a/notifications/apis/push/list-fcm-providers.mdx b/notifications/apis/push/list-fcm-providers.mdx deleted file mode 100644 index 0151a67c5..000000000 --- a/notifications/apis/push/list-fcm-providers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/fcm ---- diff --git a/notifications/apis/push/list-muted-conversations.mdx b/notifications/apis/push/list-muted-conversations.mdx deleted file mode 100644 index e363fcc24..000000000 --- a/notifications/apis/push/list-muted-conversations.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/preferences/mute ---- diff --git a/notifications/apis/push/list-preferences.mdx b/notifications/apis/push/list-preferences.mdx deleted file mode 100644 index 1be2704c3..000000000 --- a/notifications/apis/push/list-preferences.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/preferences ---- diff --git a/notifications/apis/push/list-push-tokens.mdx b/notifications/apis/push/list-push-tokens.mdx deleted file mode 100644 index 7158bf258..000000000 --- a/notifications/apis/push/list-push-tokens.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/push/v1/tokens ---- diff --git a/notifications/apis/push/list-settings.mdx b/notifications/apis/push/list-settings.mdx deleted file mode 100644 index 0a7dd8062..000000000 --- a/notifications/apis/push/list-settings.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/settings ---- diff --git a/notifications/apis/push/mute-conversations.mdx b/notifications/apis/push/mute-conversations.mdx deleted file mode 100644 index 860e99bd7..000000000 --- a/notifications/apis/push/mute-conversations.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/v1/preferences/mute ---- diff --git a/notifications/apis/push/notifications-logs.mdx b/notifications/apis/push/notifications-logs.mdx deleted file mode 100644 index 24ce2e091..000000000 --- a/notifications/apis/push/notifications-logs.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/v1/logs ---- diff --git a/notifications/apis/push/register-push-token.mdx b/notifications/apis/push/register-push-token.mdx deleted file mode 100644 index 00b55e873..000000000 --- a/notifications/apis/push/register-push-token.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/push/v1/tokens ---- diff --git a/notifications/apis/push/reset-preferences.mdx b/notifications/apis/push/reset-preferences.mdx deleted file mode 100644 index d623919b2..000000000 --- a/notifications/apis/push/reset-preferences.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/v1/preferences ---- diff --git a/notifications/apis/push/reset-settings.mdx b/notifications/apis/push/reset-settings.mdx deleted file mode 100644 index 5a0324e1e..000000000 --- a/notifications/apis/push/reset-settings.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/v1/settings ---- diff --git a/notifications/apis/push/save-custom-provider.mdx b/notifications/apis/push/save-custom-provider.mdx deleted file mode 100644 index 445772a46..000000000 --- a/notifications/apis/push/save-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/custom ---- diff --git a/notifications/apis/push/unmute-conversations.mdx b/notifications/apis/push/unmute-conversations.mdx deleted file mode 100644 index f24b9f475..000000000 --- a/notifications/apis/push/unmute-conversations.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/v1/preferences/mute ---- diff --git a/notifications/apis/push/unregister-push-tokens.mdx b/notifications/apis/push/unregister-push-tokens.mdx deleted file mode 100644 index ecb383f25..000000000 --- a/notifications/apis/push/unregister-push-tokens.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/push/v1/tokens ---- diff --git a/notifications/apis/push/update-apns-providers.mdx b/notifications/apis/push/update-apns-providers.mdx deleted file mode 100644 index 06ed69deb..000000000 --- a/notifications/apis/push/update-apns-providers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/apns ---- diff --git a/notifications/apis/push/update-contact-details.mdx b/notifications/apis/push/update-contact-details.mdx deleted file mode 100644 index b7955cf41..000000000 --- a/notifications/apis/push/update-contact-details.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /notifications/v1/contact-details ---- diff --git a/notifications/apis/push/update-custom-provider.mdx b/notifications/apis/push/update-custom-provider.mdx deleted file mode 100644 index 344798a89..000000000 --- a/notifications/apis/push/update-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/custom ---- diff --git a/notifications/apis/push/update-fcm-provider.mdx b/notifications/apis/push/update-fcm-provider.mdx deleted file mode 100644 index 5adab2233..000000000 --- a/notifications/apis/push/update-fcm-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/fcm ---- diff --git a/notifications/apis/push/update-preferences.mdx b/notifications/apis/push/update-preferences.mdx deleted file mode 100644 index 3c494d4b3..000000000 --- a/notifications/apis/push/update-preferences.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /notifications/v1/preferences ---- diff --git a/notifications/apis/push/update-settings.mdx b/notifications/apis/push/update-settings.mdx deleted file mode 100644 index fa1688021..000000000 --- a/notifications/apis/push/update-settings.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /notifications/v1/settings ---- diff --git a/notifications/apis/push/update-timezone.mdx b/notifications/apis/push/update-timezone.mdx deleted file mode 100644 index e48af9a8b..000000000 --- a/notifications/apis/push/update-timezone.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /notifications/v1/preferences/timezone ---- diff --git a/notifications/apis/sms/delete-custom-provider.mdx b/notifications/apis/sms/delete-custom-provider.mdx deleted file mode 100644 index fb570f386..000000000 --- a/notifications/apis/sms/delete-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/sms/v1/providers/custom ---- diff --git a/notifications/apis/sms/delete-twilio-credentials.mdx b/notifications/apis/sms/delete-twilio-credentials.mdx deleted file mode 100644 index 6e145c684..000000000 --- a/notifications/apis/sms/delete-twilio-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: delete /notifications/sms/v1/providers/twilio ---- diff --git a/notifications/apis/sms/get-custom-provider.mdx b/notifications/apis/sms/get-custom-provider.mdx deleted file mode 100644 index 792ec846e..000000000 --- a/notifications/apis/sms/get-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/sms/v1/providers/custom ---- diff --git a/notifications/apis/sms/get-twilio-credentials.mdx b/notifications/apis/sms/get-twilio-credentials.mdx deleted file mode 100644 index 056ce5f19..000000000 --- a/notifications/apis/sms/get-twilio-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /notifications/sms/v1/providers/twilio ---- diff --git a/notifications/apis/sms/save-custom-provider.mdx b/notifications/apis/sms/save-custom-provider.mdx deleted file mode 100644 index 55e2597d7..000000000 --- a/notifications/apis/sms/save-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/sms/v1/providers/custom ---- diff --git a/notifications/apis/sms/save-twilio-credentials.mdx b/notifications/apis/sms/save-twilio-credentials.mdx deleted file mode 100644 index 071eff9de..000000000 --- a/notifications/apis/sms/save-twilio-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /notifications/sms/v1/providers/twilio ---- diff --git a/notifications/apis/sms/update-custom-provider.mdx b/notifications/apis/sms/update-custom-provider.mdx deleted file mode 100644 index bf49adbf2..000000000 --- a/notifications/apis/sms/update-custom-provider.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/sms/v1/providers/custom ---- diff --git a/notifications/apis/sms/update-twilio-credentials.mdx b/notifications/apis/sms/update-twilio-credentials.mdx deleted file mode 100644 index d385124f3..000000000 --- a/notifications/apis/sms/update-twilio-credentials.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /notifications/sms/v1/providers/twilio ---- From 1a98cc57429bf812296cf92c4b78fe4bee6923e6 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sat, 28 Mar 2026 17:26:50 +0530 Subject: [PATCH 33/56] Added separate troubleshooting docs for each Product's rest APIs --- .mintlifyignore | 4 +- docs.json | 372 ++++++++++++------ rest-api/ai-agents-apis/error-codes.mdx | 35 ++ .../properties-and-constraints.mdx | 30 ++ rest-api/byo-ai-agents-apis/error-codes.mdx | 27 ++ .../properties-and-constraints.mdx | 21 + rest-api/calls-apis/error-codes.mdx | 35 ++ .../calls-apis/properties-and-constraints.mdx | 17 + rest-api/moderation-apis/error-codes.mdx | 38 ++ .../properties-and-constraints.mdx | 26 ++ rest-api/notifications-apis/error-codes.mdx | 35 ++ .../properties-and-constraints.mdx | 30 ++ 12 files changed, 552 insertions(+), 118 deletions(-) create mode 100644 rest-api/ai-agents-apis/error-codes.mdx create mode 100644 rest-api/ai-agents-apis/properties-and-constraints.mdx create mode 100644 rest-api/byo-ai-agents-apis/error-codes.mdx create mode 100644 rest-api/byo-ai-agents-apis/properties-and-constraints.mdx create mode 100644 rest-api/calls-apis/error-codes.mdx create mode 100644 rest-api/calls-apis/properties-and-constraints.mdx create mode 100644 rest-api/moderation-apis/error-codes.mdx create mode 100644 rest-api/moderation-apis/properties-and-constraints.mdx create mode 100644 rest-api/notifications-apis/error-codes.mdx create mode 100644 rest-api/notifications-apis/properties-and-constraints.mdx diff --git a/.mintlifyignore b/.mintlifyignore index 6f8c9afd4..53af04087 100644 --- a/.mintlifyignore +++ b/.mintlifyignore @@ -1,2 +1,2 @@ -.github -.claude +.github/** +.claude/** diff --git a/docs.json b/docs.json index f216d7c16..5922d3a6c 100644 --- a/docs.json +++ b/docs.json @@ -5284,14 +5284,29 @@ }, { "tab": "APIs", - "tab-id": "calls-api", - "pages": [ + "groups": [ { "group": "Calls APIs", "pages": [ "rest-api/calls-apis/overview", - "rest-api/calls-apis/list-calls", - "rest-api/calls-apis/get-call" + { + "group": "Calls", + "expanded": false, + "icon": "phone", + "pages": [ + "rest-api/calls-apis/list-calls", + "rest-api/calls-apis/get-call" + ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/calls-apis/error-codes", + "rest-api/calls-apis/properties-and-constraints" + ] + } ] } ] @@ -5538,6 +5553,15 @@ "rest-api/byo-ai-agents-apis/tools/update-tool", "rest-api/byo-ai-agents-apis/tools/delete-tool" ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/byo-ai-agents-apis/error-codes", + "rest-api/byo-ai-agents-apis/properties-and-constraints" + ] } ] }, @@ -5645,6 +5669,15 @@ "rest-api/ai-agents-apis/variables/update-custom-variable", "rest-api/ai-agents-apis/variables/delete-custom-variable" ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/ai-agents-apis/error-codes", + "rest-api/ai-agents-apis/properties-and-constraints" + ] } ] } @@ -5709,59 +5742,78 @@ }, { "tab": "APIs", - "pages": [ - "rest-api/moderation-apis/overview", - { - "group": "Rules", - "pages": [ - "rest-api/moderation-apis/list-rules", - "rest-api/moderation-apis/add-rule", - "rest-api/moderation-apis/get-rule", - "rest-api/moderation-apis/update-rule", - "rest-api/moderation-apis/remove-rule", - "rest-api/moderation-apis/get-rule-revisions" - ] - }, - { - "group": "Keywords", - "pages": [ - "rest-api/moderation-apis/list-keywords", - "rest-api/moderation-apis/add-keywords", - "rest-api/moderation-apis/get-keyword", - "rest-api/moderation-apis/update-keyword", - "rest-api/moderation-apis/remove-keyword" - ] - }, - { - "group": "Blocked Messages", - "pages": [ - "rest-api/moderation-apis/list-blocked-messages", - "rest-api/moderation-apis/approve-blocked-messages", - "rest-api/moderation-apis/review-blocked-message" - ] - }, - { - "group": "Flagged Messages", - "pages": [ - "rest-api/moderation-apis/list-flagged-messages", - "rest-api/moderation-apis/blockreview-flagged-message", - "rest-api/moderation-apis/flag-a-message" - ] - }, - { - "group": "Reviewed Messages", - "pages": [ - "rest-api/moderation-apis/list-reviewed-messages" - ] - }, + "groups": [ { - "group": "Reasons", + "group": "Moderation APIs", "pages": [ - "rest-api/moderation-apis/create-reasons", - "rest-api/moderation-apis/list-reasons", - "rest-api/moderation-apis/get-reason-details", - "rest-api/moderation-apis/update-reason-details", - "rest-api/moderation-apis/delete-reasons" + "rest-api/moderation-apis/overview", + { + "group": "Rules", + "expanded": false, + "icon": "gavel", + "pages": [ + "rest-api/moderation-apis/list-rules", + "rest-api/moderation-apis/add-rule", + "rest-api/moderation-apis/get-rule", + "rest-api/moderation-apis/update-rule", + "rest-api/moderation-apis/remove-rule", + "rest-api/moderation-apis/get-rule-revisions" + ] + }, + { + "group": "Keywords", + "expanded": false, + "icon": "font", + "pages": [ + "rest-api/moderation-apis/list-keywords", + "rest-api/moderation-apis/add-keywords", + "rest-api/moderation-apis/get-keyword", + "rest-api/moderation-apis/update-keyword", + "rest-api/moderation-apis/remove-keyword" + ] + }, + { + "group": "Blocked Messages", + "expanded": false, + "icon": "ban", + "pages": [ + "rest-api/moderation-apis/list-blocked-messages", + "rest-api/moderation-apis/approve-blocked-messages", + "rest-api/moderation-apis/review-blocked-message" + ] + }, + { + "group": "Flagged Messages", + "expanded": false, + "icon": "flag", + "pages": [ + "rest-api/moderation-apis/flag-a-message", + "rest-api/moderation-apis/blockreview-flagged-message", + "rest-api/moderation-apis/list-flagged-messages", + "rest-api/moderation-apis/list-reviewed-messages" + ] + }, + { + "group": "Reasons", + "expanded": false, + "icon": "clipboard-list", + "pages": [ + "rest-api/moderation-apis/create-reasons", + "rest-api/moderation-apis/list-reasons", + "rest-api/moderation-apis/get-reason-details", + "rest-api/moderation-apis/update-reason-details", + "rest-api/moderation-apis/delete-reasons" + ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/moderation-apis/error-codes", + "rest-api/moderation-apis/properties-and-constraints" + ] + } ] } ] @@ -5832,69 +5884,157 @@ }, { "tab": "APIs", - "pages": [ - { - "group": "Push Notification APIs", - "pages": [ - "rest-api/notifications-apis/push/list-fcm-providers", - "rest-api/notifications-apis/push/add-fcm-provider", - "rest-api/notifications-apis/push/update-fcm-provider", - "rest-api/notifications-apis/push/delete-fcm-provider", - "rest-api/notifications-apis/push/change-default-fcm-provider", - "rest-api/notifications-apis/push/list-apns-providers", - "rest-api/notifications-apis/push/add-apns-provider", - "rest-api/notifications-apis/push/update-apns-providers", - "rest-api/notifications-apis/push/delete-apns-providers", - "rest-api/notifications-apis/push/change-default-apns-provider", - "rest-api/notifications-apis/push/register-push-token", - "rest-api/notifications-apis/push/list-push-tokens", - "rest-api/notifications-apis/push/delete-push-token", - "rest-api/notifications-apis/push/unregister-push-tokens", - "rest-api/notifications-apis/push/get-custom-provider", - "rest-api/notifications-apis/push/save-custom-provider", - "rest-api/notifications-apis/push/update-custom-provider", - "rest-api/notifications-apis/push/delete-custom-provider", - "rest-api/notifications-apis/push/list-settings", - "rest-api/notifications-apis/push/update-settings", - "rest-api/notifications-apis/push/reset-settings", - "rest-api/notifications-apis/push/list-preferences", - "rest-api/notifications-apis/push/update-preferences", - "rest-api/notifications-apis/push/reset-preferences", - "rest-api/notifications-apis/push/get-timezone", - "rest-api/notifications-apis/push/update-timezone", - "rest-api/notifications-apis/push/get-contact-details", - "rest-api/notifications-apis/push/update-contact-details", - "rest-api/notifications-apis/push/delete-contact-details", - "rest-api/notifications-apis/push/mute-conversations", - "rest-api/notifications-apis/push/unmute-conversations", - "rest-api/notifications-apis/push/list-muted-conversations", - "rest-api/notifications-apis/push/notifications-logs" - ] - }, - { - "group": "Email Notification APIs", - "pages": [ - "rest-api/notifications-apis/email/get-sendgrid-credentials", - "rest-api/notifications-apis/email/save-sendgrid-credentials", - "rest-api/notifications-apis/email/update-sendgrid-credentials", - "rest-api/notifications-apis/email/delete-sendgrid-credentials", - "rest-api/notifications-apis/email/get-custom-provider", - "rest-api/notifications-apis/email/save-custom-provider", - "rest-api/notifications-apis/email/update-custom-provider", - "rest-api/notifications-apis/email/delete-custom-provider" - ] - }, + "groups": [ { - "group": "SMS Notification APIs", + "group": "Notification APIs", "pages": [ - "rest-api/notifications-apis/sms/get-twilio-credentials", - "rest-api/notifications-apis/sms/save-twilio-credentials", - "rest-api/notifications-apis/sms/update-twilio-credentials", - "rest-api/notifications-apis/sms/delete-twilio-credentials", - "rest-api/notifications-apis/sms/get-custom-provider", - "rest-api/notifications-apis/sms/save-custom-provider", - "rest-api/notifications-apis/sms/update-custom-provider", - "rest-api/notifications-apis/sms/delete-custom-provider" + { + "group": "Settings", + "expanded": false, + "icon": "gear", + "pages": [ + "rest-api/notifications-apis/push/list-settings", + "rest-api/notifications-apis/push/reset-settings", + "rest-api/notifications-apis/push/update-settings" + ] + }, + { + "group": "Preferences", + "expanded": false, + "icon": "sliders", + "pages": [ + "rest-api/notifications-apis/push/list-preferences", + "rest-api/notifications-apis/push/reset-preferences", + "rest-api/notifications-apis/push/update-preferences", + "rest-api/notifications-apis/push/list-muted-conversations", + "rest-api/notifications-apis/push/mute-conversations", + "rest-api/notifications-apis/push/unmute-conversations", + "rest-api/notifications-apis/push/get-timezone", + "rest-api/notifications-apis/push/update-timezone" + ] + }, + { + "group": "Contacts", + "expanded": false, + "icon": "address-book", + "pages": [ + "rest-api/notifications-apis/push/get-contact-details", + "rest-api/notifications-apis/push/update-contact-details", + "rest-api/notifications-apis/push/delete-contact-details" + ] + }, + { + "group": "Push Notifications", + "expanded": false, + "icon": "bell", + "pages": [ + { + "group": "FCM Provider", + "pages": [ + "rest-api/notifications-apis/push/list-fcm-providers", + "rest-api/notifications-apis/push/add-fcm-provider", + "rest-api/notifications-apis/push/update-fcm-provider", + "rest-api/notifications-apis/push/delete-fcm-provider", + "rest-api/notifications-apis/push/change-default-fcm-provider" + ] + }, + { + "group": "APNS Provider", + "pages": [ + "rest-api/notifications-apis/push/list-apns-providers", + "rest-api/notifications-apis/push/add-apns-provider", + "rest-api/notifications-apis/push/update-apns-providers", + "rest-api/notifications-apis/push/delete-apns-providers", + "rest-api/notifications-apis/push/change-default-apns-provider" + ] + }, + { + "group": "Custom Provider", + "pages": [ + "rest-api/notifications-apis/push/get-custom-provider", + "rest-api/notifications-apis/push/save-custom-provider", + "rest-api/notifications-apis/push/update-custom-provider", + "rest-api/notifications-apis/push/delete-custom-provider" + ] + }, + { + "group": "Push Tokens", + "pages": [ + "rest-api/notifications-apis/push/list-push-tokens", + "rest-api/notifications-apis/push/register-push-token", + "rest-api/notifications-apis/push/unregister-push-tokens", + "rest-api/notifications-apis/push/delete-push-token" + ] + } + ] + }, + { + "group": "Email Notifications", + "expanded": false, + "icon": "envelope", + "pages": [ + { + "group": "SendGrid Provider", + "pages": [ + "rest-api/notifications-apis/email/get-sendgrid-credentials", + "rest-api/notifications-apis/email/save-sendgrid-credentials", + "rest-api/notifications-apis/email/update-sendgrid-credentials", + "rest-api/notifications-apis/email/delete-sendgrid-credentials" + ] + }, + { + "group": "Custom Provider", + "pages": [ + "rest-api/notifications-apis/email/get-custom-provider", + "rest-api/notifications-apis/email/save-custom-provider", + "rest-api/notifications-apis/email/update-custom-provider", + "rest-api/notifications-apis/email/delete-custom-provider" + ] + } + ] + }, + { + "group": "SMS Notifications", + "expanded": false, + "icon": "message-sms", + "pages": [ + { + "group": "Twilio Provider", + "pages": [ + "rest-api/notifications-apis/sms/get-twilio-credentials", + "rest-api/notifications-apis/sms/save-twilio-credentials", + "rest-api/notifications-apis/sms/update-twilio-credentials", + "rest-api/notifications-apis/sms/delete-twilio-credentials" + ] + }, + { + "group": "Custom Provider", + "pages": [ + "rest-api/notifications-apis/sms/get-custom-provider", + "rest-api/notifications-apis/sms/save-custom-provider", + "rest-api/notifications-apis/sms/update-custom-provider", + "rest-api/notifications-apis/sms/delete-custom-provider" + ] + } + ] + }, + { + "group": "Notification Logs", + "expanded": false, + "icon": "scroll", + "pages": [ + "rest-api/notifications-apis/push/notifications-logs" + ] + }, + { + "group": "Troubleshoot", + "expanded": false, + "icon": "circle-question", + "pages": [ + "rest-api/notifications-apis/error-codes", + "rest-api/notifications-apis/properties-and-constraints" + ] + } ] } ] diff --git a/rest-api/ai-agents-apis/error-codes.mdx b/rest-api/ai-agents-apis/error-codes.mdx new file mode 100644 index 000000000..67d3014e8 --- /dev/null +++ b/rest-api/ai-agents-apis/error-codes.mdx @@ -0,0 +1,35 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the Agent Builder APIs. + +## Agent Errors + +| Error Code | Description | +| --------------------------- | -------------------------------------- | +| `ERR_AGENT_NOT_FOUND` | No agent exists with the specified ID. | +| `ERR_AGENT_CREATION_FAILED` | Failed to create the agent. | + +## Tool Errors + +| Error Code | Description | +| ------------------------ | --------------------------------------- | +| `ERR_TOOL_NOT_FOUND` | No tool exists with the specified ID. | +| `ERR_TOOL_ALREADY_ADDED` | The tool is already added to the agent. | + +## Knowledge Base Errors + +| Error Code | Description | +| ------------------------ | ------------------------------------------------------ | +| `ERR_KB_NOT_FOUND` | No knowledge base record exists with the specified ID. | +| `ERR_KB_INDEXING_FAILED` | Knowledge base indexing failed. | + +## Authentication Errors + +| Error Code | Description | +| --------------------------- | ------------------------------------------------ | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request. | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid. | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope. | diff --git a/rest-api/ai-agents-apis/properties-and-constraints.mdx b/rest-api/ai-agents-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..dea65a30e --- /dev/null +++ b/rest-api/ai-agents-apis/properties-and-constraints.mdx @@ -0,0 +1,30 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the Agent Builder APIs. + +## Agents + +| **Property** | **Constraints** | +| ---------------------- | -------------------------- | +| Agent name | Max 100 characters | +| Agent instructions | Max 32,000 characters | +| Maximum agents per app | Contact support for limits | + +## Tools + +| **Property** | **Constraints** | +| ----------------------- | -------------------------- | +| Tool name | Max 100 characters | +| Maximum tools per agent | Contact support for limits | + +## Knowledge Base + +| **Property** | **Constraints** | +| -------------------------------- | -------------------------- | +| Maximum file upload size | 50 MB per file | +| Supported file types | PDF, TXT, DOCX, CSV, MD | +| Maximum files per knowledge base | Contact support for limits | +| Maximum website pages per scrape | Contact support for limits | diff --git a/rest-api/byo-ai-agents-apis/error-codes.mdx b/rest-api/byo-ai-agents-apis/error-codes.mdx new file mode 100644 index 000000000..2c2d59e20 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/error-codes.mdx @@ -0,0 +1,27 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the BYO Agent APIs. + +## Agent Errors + +| Error Code | Description | +| --------------------------- | ------------------------------------------ | +| `ERR_AGENT_NOT_FOUND` | No BYO agent exists with the specified ID. | +| `ERR_AGENT_CREATION_FAILED` | Failed to create the BYO agent. | + +## Tool Errors + +| Error Code | Description | +| -------------------- | ------------------------------------- | +| `ERR_TOOL_NOT_FOUND` | No tool exists with the specified ID. | + +## Authentication Errors + +| Error Code | Description | +| --------------------------- | ------------------------------------------------ | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request. | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid. | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope. | diff --git a/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..68d3363e7 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx @@ -0,0 +1,21 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the BYO Agent APIs. + +## BYO Agents + +| **Property** | **Constraints** | +| -------------------------- | -------------------------- | +| Agent name | Max 100 characters | +| Agent URL | Must be a valid HTTPS URL | +| Maximum BYO agents per app | Contact support for limits | + +## Tools + +| **Property** | **Constraints** | +| --------------------------- | -------------------------- | +| Tool name | Max 100 characters | +| Maximum tools per BYO agent | Contact support for limits | diff --git a/rest-api/calls-apis/error-codes.mdx b/rest-api/calls-apis/error-codes.mdx new file mode 100644 index 000000000..c703cfddd --- /dev/null +++ b/rest-api/calls-apis/error-codes.mdx @@ -0,0 +1,35 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the Calls APIs. + +## Calling Errors + +| Error Code | Description | +| ------------------------------- | -------------------------------------------------------------------------------------- | +| `ERR_CALLING_SELF` | User is initiating a call with themselves. | +| `ERR_CALL_BUSY_SELF` | The initiator is already on another ongoing call. | +| `ERR_CALL_BUSY_GROUP` | The group already has an ongoing call. | +| `ERR_CALL_BUSY_USER` | The recipient is already busy on another call. | +| `ERR_EMPTY_CALL_SESSION_ID` | The session ID is empty. | +| `ERR_CALL_SESSION_NOT_FOUND` | The call does not exist. | +| `ERR_CALL_TERMINATED` | The call has ended. Cannot update the status of a terminated call. | +| `ERR_CALL_GROUP_ALREADY_JOINED` | The user is already a member of the group call. | +| `ERR_CALL_GROUP_ALREADY_LEFT` | The user has already left the group call. | +| `ERR_CALL_INVALID_INIT` | Call status cannot be updated to `initiated`. | +| `ERR_CALL_USER_ALREADY_JOINED` | The one-to-one call was already joined by the recipient. | +| `ERR_CALL_GROUP_INVALID_STATUS` | Invalid call status for a group call (e.g., group calls cannot have a busy status). | +| `ERR_CALL_ONGOING_TO_INVALID` | Invalid status transition for an ongoing call (e.g., ongoing call cannot become busy). | +| `ERR_CALL_NOT_A_PART` | The user is not part of the call. | +| `ERR_CALL_EMPTY_JOINED_AT` | The `joinedAt` body parameter is required to join a group call. | +| `ERR_CALL_NOT_STARTED` | Call status cannot change from initiated to ended directly. | + +## Authentication Errors + +| Error Code | Description | +| --------------------------- | ------------------------------------------------ | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request. | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid. | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope. | diff --git a/rest-api/calls-apis/properties-and-constraints.mdx b/rest-api/calls-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..746c3d2df --- /dev/null +++ b/rest-api/calls-apis/properties-and-constraints.mdx @@ -0,0 +1,17 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the Calls APIs. + +## Calling + +| **Property** | **Constraints** | +| ------------------------ | -------------------------------------------------------- | +| Maximum users per call | 50 | +| Default video frame rate | 30 FPS | +| Video resolution | Min 180p, max 720p (varies by layout and user bandwidth) | +| Media encryption | SRTP | +| Audio codec | OPUS | +| Video codec | H.264 | diff --git a/rest-api/moderation-apis/error-codes.mdx b/rest-api/moderation-apis/error-codes.mdx new file mode 100644 index 000000000..1e6be21d2 --- /dev/null +++ b/rest-api/moderation-apis/error-codes.mdx @@ -0,0 +1,38 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the AI Moderation APIs. + +## Rule Errors + +| Error Code | Description | +| -------------------- | ------------------------------------------ | +| `ERR_RULE_NOT_FOUND` | No rule exists with the specified rule ID. | + +## Keyword Errors + +| Error Code | Description | +| ----------------------- | ------------------------------------------------ | +| `ERR_KEYWORD_NOT_FOUND` | No keyword exists with the specified keyword ID. | + +## Message Errors + +| Error Code | Description | +| -------------------------- | ---------------------------------------- | +| `ERR_MESSAGE_ID_NOT_FOUND` | No message exists with the specified ID. | + +## Reason Errors + +| Error Code | Description | +| ---------------------- | --------------------------------------- | +| `ERR_REASON_NOT_FOUND` | No reason exists with the specified ID. | + +## Authentication Errors + +| Error Code | Description | +| --------------------------- | --------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request. | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid. | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope for this operation. | diff --git a/rest-api/moderation-apis/properties-and-constraints.mdx b/rest-api/moderation-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..53b6e2bde --- /dev/null +++ b/rest-api/moderation-apis/properties-and-constraints.mdx @@ -0,0 +1,26 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the AI Moderation APIs. + +## Rules + +| **Property** | **Constraints** | +| --------------------- | -------------------------- | +| Maximum rules per app | Contact support for limits | +| Rule name | Max 100 characters | + +## Keywords + +| **Property** | **Constraints** | +| ------------------------- | -------------------------- | +| Keyword value | Max 100 characters | +| Maximum keywords per rule | Contact support for limits | + +## Blocked Messages + +| **Property** | **Constraints** | +| ----------------- | -------------------------------------------------------- | +| Message retention | Blocked messages are retained until reviewed or approved | diff --git a/rest-api/notifications-apis/error-codes.mdx b/rest-api/notifications-apis/error-codes.mdx new file mode 100644 index 000000000..95c65c8f1 --- /dev/null +++ b/rest-api/notifications-apis/error-codes.mdx @@ -0,0 +1,35 @@ +--- +title: "Error Codes" +sidebarTitle: "Error Codes" +--- + +Error codes specific to the Notification APIs. + +## Authentication Errors + +| Error Code | Description | +| --------------------------- | --------------------------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request. | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid. | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope for this operation. | + +## Provider Errors + +| Error Code | Description | +| ----------------------------- | ------------------------------------------------------ | +| `ERR_PROVIDER_NOT_FOUND` | The specified provider does not exist. | +| `ERR_PROVIDER_ALREADY_EXISTS` | A provider with the same configuration already exists. | + +## Push Token Errors + +| Error Code | Description | +| -------------------------- | ---------------------------------------- | +| `ERR_TOKEN_NOT_FOUND` | The specified push token does not exist. | +| `ERR_TOKEN_ALREADY_EXISTS` | The push token is already registered. | + +## General Errors + +| Error Code | Description | +| ---------------------- | ------------------------------------------- | +| `ERR_BAD_REQUEST` | Validation error in the request body. | +| `ERR_OPERATION_FAILED` | The operation failed due to a server error. | diff --git a/rest-api/notifications-apis/properties-and-constraints.mdx b/rest-api/notifications-apis/properties-and-constraints.mdx new file mode 100644 index 000000000..60698795c --- /dev/null +++ b/rest-api/notifications-apis/properties-and-constraints.mdx @@ -0,0 +1,30 @@ +--- +title: "Properties and Constraints" +sidebarTitle: "Properties and Constraints" +--- + +Properties and constraints for the Notification APIs. + +## Push Notifications + +| **Property** | **Constraints** | +| ------------------------------ | -------------------------- | +| Maximum FCM providers per app | Contact support for limits | +| Maximum APNS providers per app | Contact support for limits | +| Maximum push tokens per user | 100 active tokens | +| Push token value | Max 4,096 characters | + +## Email Notifications + +| **Property** | **Constraints** | +| --------------------------- | ------------------------------ | +| SendGrid API key | Required for SendGrid provider | +| Custom provider webhook URL | Must be a valid HTTPS URL | + +## SMS Notifications + +| **Property** | **Constraints** | +| --------------------------- | ---------------------------- | +| Twilio Account SID | Required for Twilio provider | +| Twilio Auth Token | Required for Twilio provider | +| Custom provider webhook URL | Must be a valid HTTPS URL | From 7d868976e04af3a819a167cf02dd0887db31b9c3 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sat, 28 Mar 2026 20:00:59 +0530 Subject: [PATCH 34/56] Audit fixes after consistency changes across products --- ai-agent-service.json | 29 ++++++++------- chat-apis.json | 11 +++++- data-import-apis.json | 10 ++--- docs.json | 32 ++++++++-------- management-apis.json | 64 ++++++++++++++++++++++++++++++++ rest-api/api-keys.mdx | 10 +++++ rest-api/auth-tokens.mdx | 11 ++++++ rest-api/calls-apis/get-call.mdx | 2 +- rest-api/calls-apis/overview.mdx | 4 +- rest-api/chat-apis.mdx | 26 ++++++++++++- rest-api/data-import.mdx | 9 +++++ rest-api/extensions-overview.mdx | 7 ++++ rest-api/get-call.mdx | 1 + rest-api/list-calls.mdx | 1 + rest-api/management-apis.mdx | 10 +++++ rest-api/rbac-overview.mdx | 11 ++++++ rest-api/roles.mdx | 10 +++++ rest-api/settings.mdx | 8 ++++ 18 files changed, 215 insertions(+), 41 deletions(-) diff --git a/ai-agent-service.json b/ai-agent-service.json index 592cc1c24..83caa4fdf 100644 --- a/ai-agent-service.json +++ b/ai-agent-service.json @@ -114,12 +114,12 @@ "description": "Internal document ID" }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time", "description": "Creation timestamp" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time", "description": "Last update timestamp" } @@ -294,11 +294,11 @@ } }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time" } } @@ -419,11 +419,11 @@ } }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time" } } @@ -542,11 +542,11 @@ } }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time" } } @@ -670,11 +670,11 @@ } }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time" } } @@ -4387,7 +4387,7 @@ "example": 1 }, "createdAt": { - "type": "string", + "type": "integer", "example": "2026-03-12T12:52:28.063000" } } @@ -7481,6 +7481,7 @@ } ], "summary": "Enable actions for a tool", + "description": "Adds actions to a specific tool attached to an agent.", "tags": [ "Agent Builder" ] @@ -7540,6 +7541,7 @@ } ], "summary": "Remove actions for a tool", + "description": "Removes actions from a specific tool attached to an agent.", "tags": [ "Agent Builder" ] @@ -7612,6 +7614,7 @@ } ], "summary": "Get actions available within a tool for agent", + "description": "Lists all actions available for a specific tool attached to an agent.", "tags": [ "Agent Builder Ready to Use Tools" ] @@ -9190,12 +9193,12 @@ "description": "Internal document ID" }, "createdAt": { - "type": "string", + "type": "integer", "format": "date-time", "description": "Creation timestamp" }, "updatedAt": { - "type": "string", + "type": "integer", "format": "date-time", "description": "Last update timestamp" } diff --git a/chat-apis.json b/chat-apis.json index 9806f1bf2..85f24e7b8 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -5771,6 +5771,9 @@ "properties": { "data": { "type": "array" + }, + "meta": { + "type": "object" } }, "type": "object" @@ -6115,7 +6118,8 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": {} }, "meta": { "type": "object" @@ -9601,7 +9605,10 @@ "application/json": { "schema": { "properties": { - "data": {} + "data": {}, + "meta": { + "type": "object" + } }, "type": "object" }, diff --git a/data-import-apis.json b/data-import-apis.json index d4537b57f..fdb076494 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -427,9 +427,9 @@ "allOf": [ { "properties": { - "sentAt": {}, - "deliveredAt": {}, - "readAt": {} + "sentAt": {"type": "integer", "description": "Unix timestamp"}, + "deliveredAt": {"type": "integer", "description": "Unix timestamp"}, + "readAt": {"type": "integer", "description": "Unix timestamp"} }, "type": "object" }, @@ -629,8 +629,8 @@ "allOf": [ { "properties": { - "lastActiveAt": {}, - "deactivatedAt": {} + "lastActiveAt": {"type": "integer", "description": "Unix timestamp"}, + "deactivatedAt": {"type": "integer", "description": "Unix timestamp"} }, "type": "object" }, diff --git a/docs.json b/docs.json index 5922d3a6c..91379c23d 100644 --- a/docs.json +++ b/docs.json @@ -6081,7 +6081,7 @@ "redirects": [ { "source": "/react-native/getting-started", - "destination": "/react-native/react-native-cli-integration" + "destination": "/ui-kit/react-native/react-native-cli-integration" }, { "source": "/ui-kit/react/property-changes", @@ -6117,15 +6117,15 @@ }, { "source": "/webhooks/overview", - "destination": "/fundamentals/webhooks-overview" + "destination": "/fundamentals/webhooks" }, { "source": "/webhooks/webhooks-management", - "destination": "/fundamentals/webhooks-management" + "destination": "/fundamentals/webhooks" }, { "source": "/webhooks/webhooks-events", - "destination": "/fundamentals/webhooks-events" + "destination": "/fundamentals/webhooks" }, { "source": "/webhooks/webhooks-legacy-overview", @@ -6153,11 +6153,11 @@ }, { "source": "/ai/bots", - "destination": "/ai-chatbots/bots" + "destination": "/ai-chatbots/ai-bots/bots" }, { "source": "/ai/personalities", - "destination": "/ai-chatbots/instructions" + "destination": "/ai-chatbots/ai-bots/instructions" }, { "source": "/bots/overview", @@ -6305,7 +6305,7 @@ }, { "source": "/extensions/android-connection-service", - "destination": "/notifications/android-connection-service" + "destination": "/notifications/android-push-notifications" }, { "source": "/extensions/ios-fcm-push-notifications", @@ -6317,27 +6317,27 @@ }, { "source": "/extensions/flutter-push-notifications", - "destination": "/notifications/flutter-push-notifications" + "destination": "/notifications/flutter-push-notifications-android" }, { "source": "/extensions/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications" + "destination": "/notifications/react-native-push-notifications-android" }, { "source": "/extensions/capacitor-cordova-ionic-push-notifications", - "destination": "/notifications/capacitor-cordova-ionic-push-notifications" + "destination": "/notifications/push-overview" }, { "source": "/extensions/migration-guide-push-notifications", - "destination": "/notifications/migration-guide-push-notifications" + "destination": "/notifications/push-overview" }, { "source": "/extensions/mute-functionality", - "destination": "/notifications/mute-functionality" + "destination": "/notifications/preferences" }, { "source": "/extensions/token-management", - "destination": "/notifications/token-management" + "destination": "/notifications/push-overview" }, { "source": "/extensions/legacy-push-notifications", @@ -6609,11 +6609,11 @@ }, { "source": "/widget/wordpress-buddypress", - "destination": "/widget/legacy/wordpress-buddypress" + "destination": "/widget/wordpress/legacy" }, { "source": "/widget/html-bootstrap-jquery", - "destination": "/widget/legacy/html-bootstrap-jquery" + "destination": "/widget/html/legacy" }, { "source": "/widget/custom-build", @@ -6737,7 +6737,7 @@ }, { "source": "/notifications/push-notification-extension-overview", - "destination": "/notifications/push-notification-extension-legacy" + "destination": "/notifications/push-notifications-extension-legacy" }, { "source": "/notifications/push-notification-extension-legacy", diff --git a/management-apis.json b/management-apis.json index 6d1674030..1d51c1804 100644 --- a/management-apis.json +++ b/management-apis.json @@ -476,6 +476,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -1829,6 +1837,14 @@ "properties": { "": { "$ref": "#/components/schemas/chatWidgetResponseSchema" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -8157,6 +8173,14 @@ }, "type": "object" } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -8303,6 +8327,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -9715,6 +9747,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -10318,6 +10358,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -10690,6 +10738,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" @@ -10800,6 +10856,14 @@ } }, "type": "object" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" } }, "type": "object" diff --git a/rest-api/api-keys.mdx b/rest-api/api-keys.mdx index d1da6fdc6..1db0fc8a5 100644 --- a/rest-api/api-keys.mdx +++ b/rest-api/api-keys.mdx @@ -5,6 +5,16 @@ description: "Manage API keys that authenticate REST API requests to your CometC **API Keys** are credentials used to authenticate REST API requests. Every request to the CometChat REST API must include a valid API key in the `apikey` header. CometChat supports two types of API keys with different access levels. +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| POST | [`/apikeys`](/rest-api/api-keys/create) | Create a new API key | +| GET | [`/apikeys`](/rest-api/api-keys/list) | List all API keys | +| GET | [`/apikeys/{apiKey}`](/rest-api/api-keys/get) | Get a specific API key | +| PUT | [`/apikeys/{apiKey}`](/rest-api/api-keys/update) | Update an API key | +| DELETE | [`/apikeys/{apiKey}`](/rest-api/api-keys/delete) | Delete an API key | + ### Key types - **Full Access** — Can perform all operations including creating/deleting users, managing groups, and sending messages. Use this for server-side integrations only. diff --git a/rest-api/auth-tokens.mdx b/rest-api/auth-tokens.mdx index e4a5ba4da..bb3cf9279 100644 --- a/rest-api/auth-tokens.mdx +++ b/rest-api/auth-tokens.mdx @@ -5,6 +5,17 @@ description: "Manage authentication tokens that allow users to log in via CometC An **Auth Token** is a credential that allows a user to authenticate with CometChat SDKs on the client side. Each token is tied to a specific user and can be used across multiple devices. +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| POST | [`/users/{uid}/auth_tokens`](/rest-api/auth-tokens/create) | Create a new auth token for a user | +| GET | [`/users/{uid}/auth_tokens`](/rest-api/auth-tokens/list) | List all auth tokens for a user | +| GET | [`/users/{uid}/auth_tokens/{authToken}`](/rest-api/auth-tokens/get) | Get a specific auth token | +| PUT | [`/users/{uid}/auth_tokens/{authToken}`](/rest-api/auth-tokens/update) | Update an auth token | +| DELETE | [`/users/{uid}/auth_tokens/{authToken}`](/rest-api/auth-tokens/delete) | Delete a specific auth token | +| DELETE | [`/users/{uid}/auth_tokens`](/rest-api/auth-tokens/flush) | Flush all auth tokens for a user | + ### How auth tokens work 1. Your server creates a user via the [Create User API](/rest-api/users/create) (optionally with `withAuthToken: true`). diff --git a/rest-api/calls-apis/get-call.mdx b/rest-api/calls-apis/get-call.mdx index b6a9f198c..a9ffd1179 100644 --- a/rest-api/calls-apis/get-call.mdx +++ b/rest-api/calls-apis/get-call.mdx @@ -31,7 +31,7 @@ The response includes: - **Recordings array**: Recording IDs, URLs, duration, and timestamps (if `hasRecording` is true) -The `sessionId` is returned when a call is initiated via the SDK or can be found in the [List Calls](/calls/api/list-calls) response. +The `sessionId` is returned when a call is initiated via the SDK or can be found in the [List Calls](/rest-api/calls-apis/list-calls) response. ## Participant States diff --git a/rest-api/calls-apis/overview.mdx b/rest-api/calls-apis/overview.mdx index 22cb49723..d6862f4c8 100644 --- a/rest-api/calls-apis/overview.mdx +++ b/rest-api/calls-apis/overview.mdx @@ -35,8 +35,8 @@ Use the REST API Key from your [CometChat Dashboard](https://app.cometchat.com). | Endpoint | Method | Description | |----------|--------|-------------| -| [/calls](/calls/api/list-calls) | GET | List all calls with filtering options | -| [/calls/{sessionId}](/calls/api/get-call) | GET | Get details of a specific call | +| [/calls](/rest-api/calls-apis/list-calls) | GET | List all calls with filtering options | +| [/calls/{sessionId}](/rest-api/calls-apis/get-call) | GET | Get details of a specific call | --- diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index bf8723a7f..560d09369 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -5,6 +5,30 @@ description: "CometChat REST API documentation for integrating chat functionalit Welcome to CometChat's REST API documentation! This documentation provides detailed information on the Chat APIs offered by CometChat, a comprehensive communication platform that enables developers to integrate chat functionality into their server side applications effortlessly. +## API Resources + +| Resource | Description | +| -------- | ----------- | +| [Users](/rest-api/users) | Create, list, update, and delete users | +| [Auth Tokens](/rest-api/auth-tokens) | Create, list, and manage user authentication tokens | +| [Groups](/rest-api/groups) | Create, list, update, and delete groups | +| [Group Members](/rest-api/group-members) | Add, remove, list, and manage group membership | +| [Messages](/rest-api/messages) | Send, list, update, and delete messages | +| [Conversations](/rest-api/conversations) | List and manage user conversations | +| [Friends](/rest-api/friends) | Manage friend relationships between users | +| [Blocked Users](/rest-api/blocked-users) | Block and unblock users | +| [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | +| [Roles](/rest-api/roles) | Create and manage user roles | +| [API Keys](/rest-api/api-keys) | Create and manage API keys | +| [Calls](/rest-api/get-call) | Retrieve and list call records | +| [RBAC](/rest-api/rbac-overview) | Configure role-based and scope-based access control | +| [Restrict Features](/rest-api/restrict-features) | Restrict features per role | +| [Notifications](/rest-api/notifications-apis) | Manage push and other notifications | +| [Moderation](/rest-api/moderation-apis) | Moderate content and users | +| [AI Agents](/rest-api/ai-agents-apis) | Configure and manage AI agents | +| [Data Import](/rest-api/data-import) | Import users, groups, members, and messages in bulk | +| [Metrics](/rest-api/metrics) | Retrieve app usage metrics | + ## Introduction CometChat's REST API offers a wide range of functionalities to empower developers in building rich and interactive chat experiences for their users. @@ -13,8 +37,6 @@ With our REST API, you can perform a wide range of operations, including sending This documentation is structured to provide clear instructions and examples for each API endpoint, along with details on request and response formats and authentication methods. Whether you're a seasoned developer or just getting started, our goal is to make the integration process as smooth and straightforward as possible. -We're excited to see what you'll create with our Chat APIs. Let's build something amazing together! - ## Getting Started To get started with CometChat's REST API, you'll need to obtain your App ID, API key & region by signing up for an account on CometChat's [dashboard](https://app.cometchat.com/). Once you have those details, you can start integrating CometChat's features into your application. diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index c982eb9ee..59539e8e1 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -5,6 +5,15 @@ description: "Import users, groups, members, and message history from a previous The **Data Import** API provides an efficient way to migrate data from your previous chat system to CometChat. You can import users, groups, group members, and full message history in bulk. +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| POST | [`/data_import/users`](/rest-api/data-import-apis/users/import-users) | Import users in bulk | +| POST | [`/data_import/groups`](/rest-api/data-import-apis/groups/import-groups) | Import groups in bulk | +| POST | [`/data_import/members`](/rest-api/data-import-apis/groups/import-group-members) | Import group members in bulk | +| POST | [`/data_import/messages`](/rest-api/data-import-apis/messages/import-messages) | Import messages in bulk | + ### Key capabilities - **Import Users** — Create multiple users at once from an existing data source. diff --git a/rest-api/extensions-overview.mdx b/rest-api/extensions-overview.mdx index 50a4816b8..bc47fe419 100644 --- a/rest-api/extensions-overview.mdx +++ b/rest-api/extensions-overview.mdx @@ -3,6 +3,13 @@ title: "Overview" description: "Browse available CometChat extensions for enhanced chat functionality." --- +## Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| GET | [`/apps/{appId}/extensions`](/rest-api/management-apis/extensions/list-extensions) | List all available extensions | +| POST | [`/apps/{appId}/extensions`](/rest-api/management-apis/extensions/enabledisable) | Enable or disable an extension | + ## Extension List: | id | name | diff --git a/rest-api/get-call.mdx b/rest-api/get-call.mdx index 514721855..3e1238b16 100644 --- a/rest-api/get-call.mdx +++ b/rest-api/get-call.mdx @@ -1,5 +1,6 @@ --- openapi: get /calls/{sessionId} +description: "Retrieves details of a specific call session" --- ## Common errors diff --git a/rest-api/list-calls.mdx b/rest-api/list-calls.mdx index 6a06b3481..489064f8b 100644 --- a/rest-api/list-calls.mdx +++ b/rest-api/list-calls.mdx @@ -1,5 +1,6 @@ --- openapi: get /calls +description: "Lists all calls in the app" --- ## Constraints diff --git a/rest-api/management-apis.mdx b/rest-api/management-apis.mdx index 9b82cc486..6a42e87a4 100644 --- a/rest-api/management-apis.mdx +++ b/rest-api/management-apis.mdx @@ -6,6 +6,16 @@ description: "Manage CometChat applications at the account level with Multi-Tena Welcome to CometChat's Multi-Tenancy API documentation!\ This comprehensive guide offers in-depth insights into the Multi-tenancy APIs provided by CometChat. Access to Multi-tenancy APIs is exclusive to clients with plans that support this feature. To verify feature availability in your plan, please refer to our pricing page: [https://www.cometchat.com/pricing](https://www.cometchat.com/pricing). +## API Resources + +| Resource | Description | +| -------- | ----------- | +| [Apps](/rest-api/management-apis/app) | Create, list, delete apps, and fetch usage | +| [Settings](/rest-api/management-apis/settings) | List, map, and unmap app-level settings | +| [Extensions](/rest-api/management-apis/extensions) | List, enable/disable, and configure extensions | +| [Webhooks](/rest-api/management-apis/webhooks) | Create, list, update, delete webhooks and manage triggers | +| [Team Management](/rest-api/management-apis/team-management) | List and manage collaborators | + ## Introduction The Multi-Tenancy API provided by CometChat empowers users to execute a wide array of operations at the application level.\ diff --git a/rest-api/rbac-overview.mdx b/rest-api/rbac-overview.mdx index 3ff1ff07c..adea83761 100644 --- a/rest-api/rbac-overview.mdx +++ b/rest-api/rbac-overview.mdx @@ -4,6 +4,17 @@ description: "Configure role-based (RBAC) and scope-based (SBAC) access control sidebar_label: Overview --- +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| GET | [`/roles/{role}/permissions`](/rest-api/rbac/list-role-permissions) | List all RBAC permissions for a role | +| PUT | [`/roles/{role}/permissions`](/rest-api/rbac/set-role-permissions) | Set RBAC permissions for a role | +| DELETE | [`/roles/{role}/permissions/{permission}`](/rest-api/rbac/unset-role-permissions) | Unset a specific RBAC permission for a role | +| GET | [`/groups/{guid}/scopes/{scope}/permissions`](/rest-api/rbac/list-scope-permissions) | List all SBAC permissions for a group scope | +| PUT | [`/groups/{guid}/scopes/{scope}/permissions`](/rest-api/rbac/set-scope-permissions) | Set SBAC permissions for a group scope | +| DELETE | [`/groups/{guid}/scopes/{scope}/permissions/{permission}`](/rest-api/rbac/unset-scope-permissions) | Unset a specific SBAC permission for a group scope | + CometChat provides two types of access control permissions: - **[RBAC (Role-Based Access Control)](#rbac-role-based-access-control)** Permissions applied globally based on the user's assigned role diff --git a/rest-api/roles.mdx b/rest-api/roles.mdx index cb65e3b98..b76f63929 100644 --- a/rest-api/roles.mdx +++ b/rest-api/roles.mdx @@ -5,6 +5,16 @@ description: "Define and manage user roles to control permissions across your Co A **Role** defines a set of permissions that control what a user can do in your CometChat app. Every user is assigned exactly one role — if no role is specified during user creation, the `default` role is applied automatically. +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| POST | [`/roles`](/rest-api/roles/create) | Create a new role | +| GET | [`/roles`](/rest-api/roles/list) | List all roles | +| GET | [`/roles/{role}`](/rest-api/roles/get) | Get a specific role | +| PUT | [`/roles/{role}`](/rest-api/roles/update) | Update a role | +| DELETE | [`/roles/{role}`](/rest-api/roles/delete) | Delete a role | + ### How roles work - Roles are app-wide — they apply to a user across all groups and conversations. diff --git a/rest-api/settings.mdx b/rest-api/settings.mdx index 3c835b3a5..ca3a77aa3 100644 --- a/rest-api/settings.mdx +++ b/rest-api/settings.mdx @@ -5,6 +5,14 @@ description: "Configure conversation behavior — control which message types ap The **Settings** API lets you customize how conversations behave in your CometChat app. You can control which message types appear as the last message in a conversation and which ones increment the unread message count. +### Endpoints + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| GET | [`/apps/{appId}/settings`](/rest-api/management-apis/settings/list-settings) | List all settings for the app | +| POST | [`/apps/{appId}/settings`](/rest-api/management-apis/settings/maps-settings) | Map (update) settings for the app | +| DELETE | [`/apps/{appId}/settings`](/rest-api/management-apis/settings/unmaps-settings) | Unmap (reset) settings for the app | + ### Available settings | Key | Description | Default | From 8c0b94727ba611b46bee5fa99c6ee6e19be92714 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sat, 28 Mar 2026 22:35:37 +0530 Subject: [PATCH 35/56] Audit fixes --- calls.json | 12 +-- chat-apis.json | 132 +++++++++++++++---------------- data-import-apis.json | 20 ++--- management-apis.json | 8 +- rest-api/chat-apis.mdx | 63 +++++++++------ rest-api/extensions-overview.mdx | 10 +++ rest-api/restrict-features.mdx | 10 +++ rest-api/settings.mdx | 10 +++ 8 files changed, 157 insertions(+), 108 deletions(-) diff --git a/calls.json b/calls.json index be1050f4b..9fe392d7e 100644 --- a/calls.json +++ b/calls.json @@ -132,7 +132,7 @@ "application/json": { "examples": { "Result": { - "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368168,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"sivamathewstestgroup\",\n \"receiverType\": \"group\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"startedAt\": 1692368180,\n \"endedAt\": 1692368199,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.31666666666666665,\n \"deviceId\": \"b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368199\n },\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.2833333333333333,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.2833333333333333,\n \"deviceId\": \"f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat-staging.com/K-s6dB3N\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368197\n },\n {\n \"uid\": \"cometchat-uid-4\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-7\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-6\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n }\n ]\n },\n {\n \"sessionId\": \"v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368113,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"startedAt\": 1692368127,\n \"endedAt\": 1692368146,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.26666666666666666,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.26666666666666666,\n \"deviceId\": \"70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat-staging.com/hsYWb5ul\",\n \"isJoined\": true,\n \"joinedAt\": 1692368128,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368144\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.23333333333333334,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.23333333333333334,\n \"deviceId\": \"c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat-staging.com/CKT3xgR4\",\n \"isJoined\": true,\n \"joinedAt\": 1692368132,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368146\n }\n ]\n }\n ],\n \"meta\": {\n \"pagination\": {\n \"total\": 2,\n \"count\": 2,\n \"total_pages\": 1,\n \"current_page\": 1\n }\n }\n}" + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.us.31780434a95d45.1692368168aefba73a1e5938ad7a02f8e61ea1c9a287a08aeb\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368168,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"sivamathewstestgroup\",\n \"receiverType\": \"group\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"startedAt\": 1692368180,\n \"endedAt\": 1692368199,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.31666666666666665,\n \"deviceId\": \"b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat.com/ucTKf4eq\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368199\n },\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.2833333333333333,\n \"totalVideoMinutes\": 0,\n \"isJoined\": true,\n \"state\": \"ended\",\n \"totalDuration\": 0.2833333333333333,\n \"deviceId\": \"f55d46e5-2b1c-4b02-9072-382209a8753f@rtc.cometchat.com/K-s6dB3N\",\n \"joinedAt\": 1692368180,\n \"mid\": \"3f7596ac-854b-484d-b36c-d623e193bd81\",\n \"leftAt\": 1692368197\n },\n {\n \"uid\": \"cometchat-uid-4\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-7\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n },\n {\n \"uid\": \"cometchat-uid-6\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDuration\": 0\n }\n ]\n },\n {\n \"sessionId\": \"v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92\",\n \"totalAudioMinutes\": 0.31666666666666665,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:19\",\n \"hasRecording\": false,\n \"initiatedAt\": 1692368113,\n \"initiator\": \"cometchat-uid-8\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"ended\",\n \"totalDurationInMinutes\": 0.31666666666666665,\n \"totalParticipants\": 2,\n \"type\": \"audio\",\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"startedAt\": 1692368127,\n \"endedAt\": 1692368146,\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-8\",\n \"totalAudioMinutes\": 0.26666666666666666,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.26666666666666666,\n \"deviceId\": \"70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat.com/hsYWb5ul\",\n \"isJoined\": true,\n \"joinedAt\": 1692368128,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368144\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0.23333333333333334,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": 0.23333333333333334,\n \"deviceId\": \"c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat.com/CKT3xgR4\",\n \"isJoined\": true,\n \"joinedAt\": 1692368132,\n \"mid\": \"855e1519-1244-4213-8e40-53044c1e9e43\",\n \"state\": \"ended\",\n \"leftAt\": 1692368146\n }\n ]\n }\n ],\n \"meta\": {\n \"pagination\": {\n \"total\": 2,\n \"count\": 2,\n \"total_pages\": 1,\n \"current_page\": 1\n }\n }\n}" } }, "schema": { @@ -254,7 +254,7 @@ }, "deviceId": { "type": "string", - "example": "b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat-staging.com/ucTKf4eq" + "example": "b7683aaf-090a-4204-8f84-7ddd652923aa@rtc.cometchat.com/ucTKf4eq" }, "joinedAt": { "type": "integer", @@ -362,7 +362,7 @@ "application/json": { "examples": { "Get Call": { - "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:00\",\n \"hasRecording\": false,\n \"initiatedAt\": 1715845999,\n \"initiator\": \"cometchat-uid-1\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"initiated\",\n \"totalDurationInMinutes\": 0,\n \"totalParticipants\": 0,\n \"type\": \"audio\",\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-1\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"totalDurationInMinutes\": 0,\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDurationInMinutes\": 0,\n \"name\": \"George Alan\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n ],\n \"data\": {\n \"entities\": {\n \"initiator\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-1\",\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/ironman.png\"\n }\n },\n \"receiver\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-2\",\n \"name\": \"George Alan\",\n \"avatar\": \"https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png\"\n }\n }\n }\n }\n }\n ]\n}" + "value": "{\n \"data\": [\n {\n \"sessionId\": \"v1.eu.2574867aa2e6e417.17158459999d7fa95b1b4faea599f11eb5ecf07611b0b335c3\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"totalDuration\": \"00:00:00\",\n \"hasRecording\": false,\n \"initiatedAt\": 1715845999,\n \"initiator\": \"cometchat-uid-1\",\n \"mode\": \"call\",\n \"receiver\": \"cometchat-uid-2\",\n \"receiverType\": \"user\",\n \"status\": \"initiated\",\n \"totalDurationInMinutes\": 0,\n \"totalParticipants\": 0,\n \"type\": \"audio\",\n \"participants\": [\n {\n \"uid\": \"cometchat-uid-1\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"totalDurationInMinutes\": 0,\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp\"\n },\n {\n \"uid\": \"cometchat-uid-2\",\n \"totalAudioMinutes\": 0,\n \"totalVideoMinutes\": 0,\n \"isJoined\": false,\n \"state\": \"unanswered\",\n \"totalDurationInMinutes\": 0,\n \"name\": \"George Alan\",\n \"avatar\": \"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp\"\n }\n ],\n \"data\": {\n \"entities\": {\n \"initiator\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-1\",\n \"name\": \"Andrew Joseph\",\n \"avatar\": \"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp\"\n }\n },\n \"receiver\": {\n \"entity\": {\n \"uid\": \"cometchat-uid-2\",\n \"name\": \"George Alan\",\n \"avatar\": \"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp\"\n }\n }\n }\n }\n }\n ]\n}" } }, "schema": { @@ -470,7 +470,7 @@ }, "avatar": { "type": "string", - "example": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + "example": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp" } } } @@ -497,7 +497,7 @@ }, "avatar": { "type": "string", - "example": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + "example": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp" } } } @@ -519,7 +519,7 @@ }, "avatar": { "type": "string", - "example": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png" + "example": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp" } } } diff --git a/chat-apis.json b/chat-apis.json index 85f24e7b8..be327c881 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -644,7 +644,7 @@ { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "createdAt": 1629869270, @@ -655,7 +655,7 @@ "uid": "cometchat-uid-3", "name": "George Alan", "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "metadata": { "contactNumber": "0123456789" }, @@ -1897,7 +1897,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -1947,7 +1947,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -1984,7 +1984,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -2033,7 +2033,7 @@ "allowSenderInteraction": false, "interactiveData": { "title": "Meet with Dr. Jacob", - "avatarUrl": "https: //data-us.cometchat.io/assets/images/avatars/ironman.png", + "avatarUrl": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "bufferTime": 15, "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", "availability": { @@ -2080,7 +2080,7 @@ "duration": 60, "scheduleElement": { "action": { - "url": "https://802bba5ae13a7.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "actionType": "apiAction", "method": "post", "dataKey": "", @@ -2148,7 +2148,7 @@ "entity": { "uid": "cometchat-uid-3", "name": "Nancy Grace", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "role": "default", "createdAt": 1638361550 @@ -2159,7 +2159,7 @@ "entity": { "uid": "cometchat-uid-5", "name": "John Paul", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "role": "default", "createdAt": 1638361550, @@ -2497,7 +2497,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "createdAt": 1638361550 }, @@ -2508,7 +2508,7 @@ "uid": "cometchat-uid-5", "name": "John Paul", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "createdAt": 1638361550, "conversationId": "cometchat-uid-3_user_cometchat-uid-5" @@ -2607,7 +2607,7 @@ "entity": { "uid": "cometchat-uid-3", "name": "Nancy Grace", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "role": "default", "createdAt": 1638361550 @@ -2618,7 +2618,7 @@ "entity": { "uid": "cometchat-uid-5", "name": "John Paul", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "role": "default", "createdAt": 1638361550, @@ -2742,7 +2742,7 @@ "entity": { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "createdAt": 1639448370 @@ -2766,7 +2766,7 @@ "uid": "cometchat-uid-1", "name": "Andrew Joseph", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "status": "offline", "createdAt": 1639448370 }, @@ -2777,7 +2777,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1639448370, "conversationId": "cometchat-uid-1_user_cometchat-uid-2" @@ -2893,7 +2893,7 @@ "entity": { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "createdAt": 1639448370 @@ -2917,7 +2917,7 @@ "uid": "cometchat-uid-1", "name": "Andrew Joseph", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "status": "offline", "createdAt": 1639448370 }, @@ -2928,7 +2928,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1639448370, "conversationId": "cometchat-uid-1_user_cometchat-uid-2" @@ -3172,7 +3172,7 @@ "reactedBy": { "uid": "cometchat-uid-1", "name": "Andrew Joseph", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "status": "available", "role": "default", "lastActiveAt": 1689082633, @@ -3608,7 +3608,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -3620,7 +3620,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -3752,7 +3752,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -3764,7 +3764,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -3939,7 +3939,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -3951,7 +3951,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -4085,7 +4085,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -4097,7 +4097,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -4488,7 +4488,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -4500,7 +4500,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -4634,7 +4634,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1629869270 }, @@ -4646,7 +4646,7 @@ "link": "https://data-us.cometchat.io/assets", "name": "George Alan", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "createdAt": 1629869270, "updatedAt": 1629964825, @@ -5484,7 +5484,7 @@ "uid": "cometchat-uid-1", "name": "Andrew Joseph", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "status": "offline", "createdAt": 1596537299 }, @@ -5544,7 +5544,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "createdAt": 1596537299, "updatedAt": 1625234590 @@ -5606,7 +5606,7 @@ "uid": "cometchat-uid-4", "name": "Susan Marie", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "createdAt": 1596537299 }, @@ -5665,7 +5665,7 @@ "uid": "cometchat-uid-5", "name": "John Paul", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "createdAt": 1596537299 }, @@ -5783,7 +5783,7 @@ { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "scope": "participant", @@ -5796,7 +5796,7 @@ "uid": "cometchat-uid-3", "name": "George Alan", "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "metadata": { "contactNumber": "0123456789" }, @@ -5811,7 +5811,7 @@ { "uid": "cometchat-uid-5", "name": "John Paul", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "role": "default", "scope": "moderator", @@ -5822,7 +5822,7 @@ { "uid": "cometchat-uid-4", "name": "Susan Marie", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/wolverine.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", "status": "offline", "role": "default", "scope": "admin", @@ -6158,7 +6158,7 @@ { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "createdAt": 1629869270, @@ -6169,7 +6169,7 @@ "uid": "cometchat-uid-3", "name": "George Alan", "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "metadata": { "contactNumber": "0123456789" }, @@ -6355,7 +6355,7 @@ { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "createdAt": 1629869270, @@ -6366,7 +6366,7 @@ "uid": "cometchat-uid-3", "name": "George Alan", "link": "https://data-us.cometchat.io/assets", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "metadata": { "contactNumber": "0123456789" }, @@ -7563,7 +7563,7 @@ "entity": { "uid": "cometchat-uid-3", "name": "Nancy Grace", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "role": "default", "createdAt": 1638361550 @@ -7574,7 +7574,7 @@ "entity": { "uid": "cometchat-uid-5", "name": "John Paul", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "role": "default", "createdAt": 1638361550, @@ -7693,7 +7693,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "createdAt": 1638361550 }, @@ -7704,7 +7704,7 @@ "uid": "cometchat-uid-5", "name": "John Paul", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "createdAt": 1638361550, "conversationId": "cometchat-uid-3_user_cometchat-uid-5" @@ -8032,7 +8032,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline" }, "entityType": "user" @@ -8046,7 +8046,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline" }, "entityType": "user" @@ -8056,7 +8056,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, @@ -8091,7 +8091,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, @@ -8118,7 +8118,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline" }, "entityType": "user" @@ -8132,7 +8132,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline" }, "entityType": "user" @@ -8142,7 +8142,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, @@ -8178,7 +8178,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "role": "default", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "conversationId": "cometchat-uid-2_user_cometchat-uid-3" }, @@ -8502,7 +8502,7 @@ "uid": "cometchat-uid-3", "name": "Nancy Grace", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "createdAt": 1638361550 }, @@ -8513,7 +8513,7 @@ "uid": "cometchat-uid-5", "name": "John Paul", "role": "default", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "createdAt": 1638361550, "conversationId": "cometchat-uid-3_user_cometchat-uid-5" @@ -8721,7 +8721,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -8771,7 +8771,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -8808,7 +8808,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", @@ -8857,7 +8857,7 @@ "allowSenderInteraction": false, "interactiveData": { "title": "Meet with Dr. Jacob", - "avatarUrl": "https: //data-us.cometchat.io/assets/images/avatars/ironman.png", + "avatarUrl": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "bufferTime": 15, "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", "availability": { @@ -8904,7 +8904,7 @@ "duration": 60, "scheduleElement": { "action": { - "url": "https://802bba5ae13a7.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "actionType": "apiAction", "method": "post", "dataKey": "", @@ -8972,7 +8972,7 @@ "entity": { "uid": "cometchat-uid-3", "name": "Nancy Grace", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/spiderman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", "status": "offline", "role": "default", "createdAt": 1638361550 @@ -8983,7 +8983,7 @@ "entity": { "uid": "cometchat-uid-5", "name": "John Paul", - "avatar": "https://data-us.cometchat.io/assets/images/avatars/cyclops.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", "status": "offline", "role": "default", "createdAt": 1638361550, @@ -15276,7 +15276,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3.0/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", diff --git a/data-import-apis.json b/data-import-apis.json index fdb076494..a753daf20 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -368,7 +368,7 @@ "extension": "png", "size": "350.2", "mimeType": "image/png", - "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + "url": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp" } ], "metadata": { @@ -384,7 +384,7 @@ "senderUserDetails": { "uid": "s12", "name": "user1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "createdAt": "1674228536", "metadata": { "key": "value" @@ -395,9 +395,9 @@ "name": "cometchat-uid-", "type": "public", "description": "Hello group", - "icon": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "icon": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "owner": "cometchat-uid-1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "createdAt": "1674228536", "metadata": { "key": "value" @@ -465,7 +465,7 @@ "extension": "png", "size": "350.2", "mimeType": "image/png", - "url": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png" + "url": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp" } ], "metad2ata": { @@ -479,7 +479,7 @@ "entity": { "uid": "s12", "name": "user1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "metadata": { "key": "value" }, @@ -494,7 +494,7 @@ "entity": { "uid": "r123", "name": "cometchat-uid-", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "metadata": { "key": "value" }, @@ -600,7 +600,7 @@ "uid1": { "uid": "uid1", "name": "uid1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "createdAt": "1673421419", "metadata": { "key": "value" @@ -652,7 +652,7 @@ "data": { "uid": "uid1", "name": "uid1", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "metadata": { "key": "value" }, @@ -2519,7 +2519,7 @@ "disableAfterInteracted": true, "action": { "actionType": "apiAction", - "url": "https://10893f2ae68f59.api-us.cometchat-staging.com/v3/messages", + "url": "https://.api-.cometchat.io/v3/messages", "method": "POST", "payload": { "category": "message", diff --git a/management-apis.json b/management-apis.json index 1d51c1804..e749db139 100644 --- a/management-apis.json +++ b/management-apis.json @@ -6227,7 +6227,7 @@ "stickerSetId": "7efe9cbd-7789-4095-ae37-88b144aaec70", "stickerSetName": "little dyno", "stickerSetOrder": 7, - "stickerUrl": "https://data-us.cometchat-staging.com/stickers/littledyno/litt_14.png", + "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png", "id": "fb24136a-abd0-4302-866d-c754410afc20", "enableFlag": true } @@ -10919,7 +10919,7 @@ "entity": { "uid": "cometchat-uid-1", "name": "Andrew Joseph", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/ironman.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", "status": "offline", "role": "default" }, @@ -10929,7 +10929,7 @@ "entity": { "uid": "cometchat-uid-2", "name": "George Alan", - "avatar": "https://data-eu.cometchat.io/assets/images/avatars/captainamerica.png", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", "status": "offline", "role": "default", "conversationId": "cometchat-uid-1_user_cometchat-uid-2" @@ -16264,7 +16264,7 @@ "stickerSetId": "sticker_1234", "stickerSetName": "good_Sticker", "stickerSetOrder": 1, - "stickerUrl": "https://data-us.cometchat-staging.com/stickers/littledyno/litt_14.png" + "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png" } ] }, diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 560d09369..65eaa2083 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -7,27 +7,27 @@ Welcome to CometChat's REST API documentation! This documentation provides detai ## API Resources -| Resource | Description | -| -------- | ----------- | -| [Users](/rest-api/users) | Create, list, update, and delete users | -| [Auth Tokens](/rest-api/auth-tokens) | Create, list, and manage user authentication tokens | -| [Groups](/rest-api/groups) | Create, list, update, and delete groups | -| [Group Members](/rest-api/group-members) | Add, remove, list, and manage group membership | -| [Messages](/rest-api/messages) | Send, list, update, and delete messages | -| [Conversations](/rest-api/conversations) | List and manage user conversations | -| [Friends](/rest-api/friends) | Manage friend relationships between users | -| [Blocked Users](/rest-api/blocked-users) | Block and unblock users | -| [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | -| [Roles](/rest-api/roles) | Create and manage user roles | -| [API Keys](/rest-api/api-keys) | Create and manage API keys | -| [Calls](/rest-api/get-call) | Retrieve and list call records | -| [RBAC](/rest-api/rbac-overview) | Configure role-based and scope-based access control | -| [Restrict Features](/rest-api/restrict-features) | Restrict features per role | -| [Notifications](/rest-api/notifications-apis) | Manage push and other notifications | -| [Moderation](/rest-api/moderation-apis) | Moderate content and users | -| [AI Agents](/rest-api/ai-agents-apis) | Configure and manage AI agents | -| [Data Import](/rest-api/data-import) | Import users, groups, members, and messages in bulk | -| [Metrics](/rest-api/metrics) | Retrieve app usage metrics | +| Resource | Description | +| ------------------------------------------------ | --------------------------------------------------- | +| [Users](/rest-api/users) | Create, list, update, and delete users | +| [Auth Tokens](/rest-api/auth-tokens) | Create, list, and manage user authentication tokens | +| [Groups](/rest-api/groups) | Create, list, update, and delete groups | +| [Group Members](/rest-api/group-members) | Add, remove, list, and manage group membership | +| [Messages](/rest-api/messages) | Send, list, update, and delete messages | +| [Conversations](/rest-api/conversations) | List and manage user conversations | +| [Friends](/rest-api/friends) | Manage friend relationships between users | +| [Blocked Users](/rest-api/blocked-users) | Block and unblock users | +| [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | +| [Roles](/rest-api/roles) | Create and manage user roles | +| [API Keys](/rest-api/api-keys) | Create and manage API keys | +| [Calls](/rest-api/get-call) | Retrieve and list call records | +| [RBAC](/rest-api/rbac-overview) | Configure role-based and scope-based access control | +| [Restrict Features](/rest-api/restrict-features) | Restrict features per role | +| [Notifications](/rest-api/notifications-apis) | Manage push and other notifications | +| [Moderation](/rest-api/moderation-apis) | Moderate content and users | +| [AI Agents](/rest-api/ai-agents-apis) | Configure and manage AI agents | +| [Data Import](/rest-api/data-import) | Import users, groups, members, and messages in bulk | +| [Metrics](/rest-api/metrics) | Retrieve app usage metrics | ## Introduction @@ -45,12 +45,31 @@ To get started with CometChat's REST API, you'll need to obtain your App ID, API +## API Resources + +| Resource | Description | +| ---------------------------------------- | ---------------------------------------------------- | +| [API Keys](/rest-api/api-keys) | Manage API keys for authenticating REST API requests | +| [Auth Tokens](/rest-api/auth-tokens) | Create and manage user authentication tokens | +| [Roles](/rest-api/roles) | Define and manage user roles and permissions | +| [Users](/rest-api/users) | Create, update, delete, and list users | +| [Groups](/rest-api/groups) | Create and manage groups | +| [Group Members](/rest-api/group-members) | Add, remove, and manage group members | +| [Messages](/rest-api/messages) | Send, receive, and manage messages | +| [Conversations](/rest-api/conversations) | Manage user and group conversations | +| [Blocked Users](/rest-api/blocked-users) | Block and unblock users | +| [Friends](/rest-api/friends) | Manage friend relationships | +| [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | + ## Authentication Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. CometChat employs industry-standard authentication mechanisms to ensure the security and integrity of your data. -The HTTP header name for authentication is **`apikey`** (all lowercase). In JSON response bodies, the API key property is returned as **`apiKey`** (camelCase). This distinction is intentional — HTTP headers are case-insensitive by specification, while JSON properties are case-sensitive. + The HTTP header name for authentication is **`apikey`** (all lowercase). In + JSON response bodies, the API key property is returned as **`apiKey`** + (camelCase). This distinction is intentional — HTTP headers are + case-insensitive by specification, while JSON properties are case-sensitive. ## Endpoints diff --git a/rest-api/extensions-overview.mdx b/rest-api/extensions-overview.mdx index bc47fe419..2205f77db 100644 --- a/rest-api/extensions-overview.mdx +++ b/rest-api/extensions-overview.mdx @@ -59,3 +59,13 @@ description: "Browse available CometChat extensions for enhanced chat functional | virus-malware-scanner | Virus Malware Scanner | | voice-transcription | Voice Transcription | | xss-filter | XSS Filter | + +## Error Handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete error reference, see [Error Guide](/articles/error-guide). diff --git a/rest-api/restrict-features.mdx b/rest-api/restrict-features.mdx index 85c0f383f..0b240b7c3 100644 --- a/rest-api/restrict-features.mdx +++ b/rest-api/restrict-features.mdx @@ -63,3 +63,13 @@ The following table lists the properties that the Restrict feature API supports. | Parameters | Type | Description | | :----------------- | :--------------- | :--------------------------------------------------------------- | | featuresToRestrict | array of strings | (_optional_) Indicates the features that needs to be restricted. | + +## Error Handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete error reference, see [Error Guide](/articles/error-guide). diff --git a/rest-api/settings.mdx b/rest-api/settings.mdx index ca3a77aa3..0d5231dee 100644 --- a/rest-api/settings.mdx +++ b/rest-api/settings.mdx @@ -29,3 +29,13 @@ The **Settings** API lets you customize how conversations behave in your CometCh - **Conversations** — These settings directly control how [Conversations](/rest-api/conversations) display the last message and calculate unread counts. - **Messages** — Settings determine which [Message](/rest-api/messages) types affect conversation previews. - **Management APIs** — Use the [Map Settings API](/rest-api/management-apis/settings/maps-settings) to toggle these features. + +## Error Handling + +| Error Code | Description | +| --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete error reference, see [Error Guide](/articles/error-guide). From 0f19592dc108292deacb2786bb1dd455491f76fd Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sat, 28 Mar 2026 22:53:26 +0530 Subject: [PATCH 36/56] Removed duplicate resources table --- chat-apis.json | 58 +++++++++++++++++++++--------------------- rest-api/chat-apis.mdx | 16 ------------ 2 files changed, 29 insertions(+), 45 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index be327c881..b6845c0ad 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -457,7 +457,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "rawMetadata": "{'gender':'Male'}" }, @@ -630,7 +630,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -867,7 +867,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "status": "offline", "role": "manager", "createdAt": 1638354015 @@ -1004,7 +1004,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -1230,7 +1230,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "public", "scope": "admin", "membersCount": 1, @@ -1438,7 +1438,7 @@ "guid": "project-group-2", "name": "Project Group 2", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "public", "scope": "admin", "membersCount": 1, @@ -1455,7 +1455,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "public", "scope": "admin", "membersCount": 1, @@ -1529,7 +1529,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "public", "scope": "admin", "membersCount": 1, @@ -1653,7 +1653,7 @@ "guid": "project-group", "name": "Project Group", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "public", "scope": "admin", "membersCount": 1, @@ -3631,7 +3631,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -3658,7 +3658,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -3775,7 +3775,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -3802,7 +3802,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -3962,7 +3962,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -3984,7 +3984,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -4108,7 +4108,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -4135,7 +4135,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -4511,7 +4511,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -4533,7 +4533,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -4657,7 +4657,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group1", "type": "private", "owner": "cometchat-uid-4", @@ -4684,7 +4684,7 @@ "guid": "project-group", "name": "Project Group1", "description": "project related discussions between members", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "type": "private", "scope": "participant", "membersCount": 4, @@ -5493,7 +5493,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group", "tags": [ "friends", @@ -5554,7 +5554,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group", "tags": [ "friends", @@ -5615,7 +5615,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group", "tags": [ "friends", @@ -5674,7 +5674,7 @@ "for": { "entity": { "guid": "project-group", - "icon": "https://cometchat.com/120x120&text=image1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "name": "Project Group", "tags": [ "friends", @@ -6144,7 +6144,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -6341,7 +6341,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "email": "user@email.com", "contactNumber": "0123456789" @@ -6701,7 +6701,7 @@ "uid": "cometchat-uid-6", "name": "Barry Allen", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "rawMetadata": "{'gender':'Male'}" }, @@ -6718,7 +6718,7 @@ "uid": "cometchat-uid-2", "name": "George Alan", "link": "https://cometchat.com", - "avatar": "https://cometchat.com/120x120&text=image1", + "avatar": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", "metadata": { "rawMetadata": "{'gender':'Male'}" }, diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 65eaa2083..86620c759 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -45,22 +45,6 @@ To get started with CometChat's REST API, you'll need to obtain your App ID, API -## API Resources - -| Resource | Description | -| ---------------------------------------- | ---------------------------------------------------- | -| [API Keys](/rest-api/api-keys) | Manage API keys for authenticating REST API requests | -| [Auth Tokens](/rest-api/auth-tokens) | Create and manage user authentication tokens | -| [Roles](/rest-api/roles) | Define and manage user roles and permissions | -| [Users](/rest-api/users) | Create, update, delete, and list users | -| [Groups](/rest-api/groups) | Create and manage groups | -| [Group Members](/rest-api/group-members) | Add, remove, and manage group members | -| [Messages](/rest-api/messages) | Send, receive, and manage messages | -| [Conversations](/rest-api/conversations) | Manage user and group conversations | -| [Blocked Users](/rest-api/blocked-users) | Block and unblock users | -| [Friends](/rest-api/friends) | Manage friend relationships | -| [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | - ## Authentication Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. CometChat employs industry-standard authentication mechanisms to ensure the security and integrity of your data. From 2e3ca22c324e9a5487c4e2c93c45e41de6d95d9f Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sat, 28 Mar 2026 22:59:47 +0530 Subject: [PATCH 37/56] Minor audit fixes --- data-import-apis.json | 8 ++++---- management-apis.json | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/data-import-apis.json b/data-import-apis.json index a753daf20..d5d8c3d0e 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -3823,7 +3823,7 @@ "examples": { "string": { "summary": "Auth Token", - "value": "" + "value": "cometchat-uid-1_1625206799abcdef" } } }, @@ -3865,7 +3865,7 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "cometchat-uid-1" } } }, @@ -3880,7 +3880,7 @@ "examples": { "string": { "summary": "GUID", - "value": "" + "value": "cometchat-guid-1" } } }, @@ -3930,7 +3930,7 @@ "examples": { "string": { "summary": "Provider ID", - "value": "" + "value": "provider_12345" } } }, diff --git a/management-apis.json b/management-apis.json index e749db139..d96b5e6c8 100644 --- a/management-apis.json +++ b/management-apis.json @@ -17254,7 +17254,7 @@ "examples": { "string": { "summary": "UID", - "value": "" + "value": "cometchat-uid-1" } } }, @@ -17269,7 +17269,7 @@ "examples": { "string": { "summary": "X-Webhook-Version", - "value": "" + "value": "2" } } }, @@ -17284,7 +17284,7 @@ "examples": { "string": { "summary": "GUID", - "value": "" + "value": "cometchat-guid-1" } } }, From 3bfdc28eaa01af7ee2253021469f0a6c68437dc6 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Sun, 29 Mar 2026 00:26:58 +0530 Subject: [PATCH 38/56] Added separate authentication page --- chat-apis.json | 30 ++++++- docs.json | 162 +++++++++--------------------------- rest-api/authentication.mdx | 72 ++++++++++++++++ rest-api/chat-apis.mdx | 14 +++- rest-api/rate-limits.mdx | 22 +++++ 5 files changed, 177 insertions(+), 123 deletions(-) create mode 100644 rest-api/authentication.mdx diff --git a/chat-apis.json b/chat-apis.json index b6845c0ad..84f17a915 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -5066,7 +5066,35 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "authToken": { + "type": "string", + "description": "The authentication token string" + }, + "uid": { + "type": "string", + "description": "UID of the user this token belongs to" + }, + "createdAt": { + "type": "integer", + "description": "Unix timestamp of token creation" + }, + "platform": { + "type": "string", + "description": "Platform the token was created for" + }, + "userAgent": { + "type": "string", + "description": "User agent string of the client" + }, + "appInfo": { + "type": "string", + "description": "Application information" + } + } + } }, "meta": { "type": "object" diff --git a/docs.json b/docs.json index 91379c23d..f0de9d70d 100644 --- a/docs.json +++ b/docs.json @@ -37,9 +37,7 @@ { "group": "Docs MCP", "hidden": true, - "pages": [ - "mcp-server" - ] + "pages": ["mcp-server"] } ] }, @@ -91,9 +89,7 @@ { "dropdown": "Kubernetes", "icon": "/images/icons/kubernetes.svg", - "pages": [ - "on-premise-deployment/kubernetes/overview" - ] + "pages": ["on-premise-deployment/kubernetes/overview"] } ] } @@ -104,9 +100,7 @@ "tabs": [ { "tab": "Chat & Calling", - "pages": [ - "chat-call" - ] + "pages": ["chat-call"] }, { "tab": "Platform", @@ -197,15 +191,11 @@ }, { "group": "User-Roles", - "pages": [ - "fundamentals/user-roles-and-permissions" - ] + "pages": ["fundamentals/user-roles-and-permissions"] }, { "group": "Guides", - "pages": [ - "fundamentals/user-auth" - ] + "pages": ["fundamentals/user-auth"] } ] }, @@ -221,9 +211,7 @@ "/widget/html/advanced", { "group": " ", - "pages": [ - "/widget/html/legacy" - ] + "pages": ["/widget/html/legacy"] } ] }, @@ -235,9 +223,7 @@ "/widget/wordpress/integration", { "group": " ", - "pages": [ - "/widget/wordpress/legacy" - ] + "pages": ["/widget/wordpress/legacy"] } ] }, @@ -260,10 +246,7 @@ { "dropdown": "Wix", "icon": "/images/icons/wix.svg", - "pages": [ - "/widget/wix/overview", - "/widget/wix/integration" - ] + "pages": ["/widget/wix/overview", "/widget/wix/integration"] }, { "dropdown": "Webflow", @@ -555,9 +538,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react/upgrading-from-v5" - ] + "pages": ["ui-kit/react/upgrading-from-v5"] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -1000,9 +981,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/react-native/upgrading-from-v4" - ] + "pages": ["ui-kit/react-native/upgrading-from-v4"] }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", @@ -1289,10 +1268,7 @@ }, { "group": "Reference", - "pages": [ - "ui-kit/ios/methods", - "ui-kit/ios/events" - ] + "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] }, { "group": "Advanced", @@ -1318,9 +1294,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/ios/upgrading-from-v4" - ] + "pages": ["ui-kit/ios/upgrading-from-v4"] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1648,9 +1622,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/android/upgrading-from-v4" - ] + "pages": ["ui-kit/android/upgrading-from-v4"] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1961,9 +1933,7 @@ }, { "group": "Migration Guide", - "pages": [ - "ui-kit/flutter/upgrading-from-v4" - ] + "pages": ["ui-kit/flutter/upgrading-from-v4"] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -2550,9 +2520,7 @@ }, { "group": "Setup", - "pages": [ - "sdk/javascript/setup-sdk" - ] + "pages": ["sdk/javascript/setup-sdk"] }, { "group": "Authentication", @@ -2610,9 +2578,7 @@ }, { "group": "User Presence", - "pages": [ - "sdk/javascript/user-presence" - ] + "pages": ["sdk/javascript/user-presence"] }, { "group": "Groups", @@ -4465,6 +4431,7 @@ "expanded": false, "icon": "key", "pages": [ + "rest-api/authentication", { "group": "API Keys", "pages": [ @@ -4984,9 +4951,7 @@ "tabs": [ { "tab": "Calling", - "pages": [ - "calls" - ] + "pages": ["calls"] }, { "tab": "Platform", @@ -5007,9 +4972,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/javascript/overview" - ] + "pages": ["calls/javascript/overview"] }, { "group": "Integrations", @@ -5070,9 +5033,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/react-native/overview" - ] + "pages": ["calls/react-native/overview"] }, { "group": "Getting Started", @@ -5124,16 +5085,11 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/ios/overview" - ] + "pages": ["calls/ios/overview"] }, { "group": "Getting Started", - "pages": [ - "calls/ios/setup", - "calls/ios/authentication" - ] + "pages": ["calls/ios/setup", "calls/ios/authentication"] }, { "group": "Call Session", @@ -5178,9 +5134,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/android/overview" - ] + "pages": ["calls/android/overview"] }, { "group": "Getting Started", @@ -5232,9 +5186,7 @@ "pages": [ { "group": "Overview", - "pages": [ - "calls/flutter/overview" - ] + "pages": ["calls/flutter/overview"] }, { "group": "Getting Started", @@ -5318,9 +5270,7 @@ "tabs": [ { "tab": "AI Agents", - "pages": [ - "ai-agents" - ] + "pages": ["ai-agents"] }, { "tab": "Agent Builder", @@ -5383,15 +5333,11 @@ "/ai-agents/crew-ai-tools", { "group": "Guides", - "pages": [ - "/ai-agents/crew-ai-knowledge-agent" - ] + "pages": ["/ai-agents/crew-ai-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/crew-ai-product-hunt-agent" - ] + "pages": ["/ai-agents/crew-ai-product-hunt-agent"] } ] }, @@ -5404,15 +5350,11 @@ "/ai-agents/agno-tools", { "group": "Guides", - "pages": [ - "/ai-agents/agno-knowledge-agent" - ] + "pages": ["/ai-agents/agno-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/agno-product-hunt-agent" - ] + "pages": ["/ai-agents/agno-product-hunt-agent"] } ] }, @@ -5425,15 +5367,11 @@ "/ai-agents/vercel-tools", { "group": "Guides", - "pages": [ - "/ai-agents/vercel-knowledge-agent" - ] + "pages": ["/ai-agents/vercel-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/vercel-product-hunt-agent" - ] + "pages": ["/ai-agents/vercel-product-hunt-agent"] } ] }, @@ -5444,15 +5382,11 @@ "/ai-agents/langgraph", { "group": "Guides", - "pages": [ - "/ai-agents/langgraph-knowledge-agent" - ] + "pages": ["/ai-agents/langgraph-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/langgraph-product-hunt-agent" - ] + "pages": ["/ai-agents/langgraph-product-hunt-agent"] } ] }, @@ -5465,15 +5399,11 @@ "/ai-agents/ag2-tools", { "group": "Guides", - "pages": [ - "/ai-agents/ag2-knowledge-agent" - ] + "pages": ["/ai-agents/ag2-knowledge-agent"] }, { "group": "Tutorials", - "pages": [ - "/ai-agents/ag2-product-hunt-agent" - ] + "pages": ["/ai-agents/ag2-product-hunt-agent"] } ] }, @@ -5486,9 +5416,7 @@ "/ai-agents/ag-ui-tools", { "group": "Guides", - "pages": [ - "/ai-agents/cometchat-ag-ui-byoa" - ] + "pages": ["/ai-agents/cometchat-ag-ui-byoa"] }, { "group": "Implementation", @@ -5504,16 +5432,12 @@ { "tab": "Widget Builder", "tab-id": "ai-agent-chat-builder", - "pages": [ - "/ai-agents/chat-widget" - ] + "pages": ["/ai-agents/chat-widget"] }, { "tab": "Custom Bots", "hidden": true, - "pages": [ - "/ai-chatbots/custom-bots" - ] + "pages": ["/ai-chatbots/custom-bots"] }, { "tab": "AI Bots (Legacy)", @@ -5825,9 +5749,7 @@ "tabs": [ { "tab": "Notifications", - "pages": [ - "notifications" - ] + "pages": ["notifications"] }, { "tab": "Push", @@ -6046,9 +5968,7 @@ "tabs": [ { "tab": "Insights", - "pages": [ - "insights" - ] + "pages": ["insights"] } ] } @@ -8007,4 +7927,4 @@ "redirect": true } } -} \ No newline at end of file +} diff --git a/rest-api/authentication.mdx b/rest-api/authentication.mdx new file mode 100644 index 000000000..c0629f03c --- /dev/null +++ b/rest-api/authentication.mdx @@ -0,0 +1,72 @@ +--- +title: "Authentication" +sidebarTitle: "Authentication" +description: "How to authenticate REST API requests to CometChat." +--- + +All CometChat REST API requests must be authenticated using an API key passed in the `apikey` HTTP header. + +## API Key Scopes + +CometChat supports two API key scopes: + +| Scope | Dashboard Name | Permissions | +| ------------ | -------------- | ------------------------------------------------------------------------------------------------------------------ | +| `fullAccess` | REST API Key | All REST API operations: create/update/delete users, groups, messages, manage settings, etc. Use server-side only. | +| `authOnly` | Auth Key | Can only create users and generate auth tokens. Intended for quick demos and prototyping. | + + +Never expose a `fullAccess` (REST API Key) in client-side code. Keep it on your server only. + +The `authOnly` (Auth Key) is for demos only. In production, generate auth tokens from your backend during your app's own authentication flow. + + + +## Making Authenticated Requests + +Include the API key in the `apikey` header (all lowercase): + +```bash +curl -X GET "https://.api-.cometchat.io/v3/users" \ + -H "apikey: YOUR_REST_API_KEY" +``` + + + The HTTP header name is `apikey` (lowercase). In JSON response bodies, the + property is `apiKey` (camelCase). HTTP headers are case-insensitive by spec; + JSON properties are case-sensitive. + + +## Auth Tokens + +Auth tokens authenticate end-users (not server-side calls). The flow: + +1. Your backend creates a user via REST API (using `fullAccess` key) +2. Your backend creates an auth token for that user via `POST /users/{uid}/auth_tokens` +3. Your client app uses the auth token to log in via the CometChat SDK + +Auth tokens are tied to a specific user and can be scoped to a platform and device. + +See [Auth Tokens API](/rest-api/auth-tokens) for full details. + +## Acting on Behalf of Users + +Some endpoints support the `onBehalfOf` header, which lets a server-side call act as a specific user: + +```bash +curl -X POST "https://.api-.cometchat.io/v3/messages" \ + -H "apikey: YOUR_REST_API_KEY" \ + -H "onBehalfOf: cometchat-uid-1" \ + -H "Content-Type: application/json" \ + -d '{"receiver": "cometchat-uid-2", "receiverType": "user", "type": "text", "data": {"text": "Hello"}}' +``` + +Whether `onBehalfOf` is required, optional, or not supported varies per endpoint — check each endpoint's documentation. + +## Security Best Practices + +- Store API keys in environment variables or a secrets manager, never in source code +- Use `fullAccess` keys only on your backend server +- Rotate API keys periodically via the [API Keys API](/rest-api/api-keys) +- Generate auth tokens server-side and pass them to clients +- Use HTTPS for all API calls (enforced by CometChat) diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 86620c759..217731301 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -47,7 +47,9 @@ To get started with CometChat's REST API, you'll need to obtain your App ID, API ## Authentication -Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. CometChat employs industry-standard authentication mechanisms to ensure the security and integrity of your data. +Authentication is a crucial aspect of utilizing CometChat's REST API securely. All API requests must be accompanied by an API key to authenticate the incoming requests. + +For a complete guide on API key scopes, auth tokens, the `onBehalfOf` header, and security best practices, see the [Authentication Guide](/rest-api/authentication). The HTTP header name for authentication is **`apikey`** (all lowercase). In @@ -109,3 +111,13 @@ https://.api-us.cometchat.io/v3 https://.api-eu.cometchat.io/v3 https://.api-in.cometchat.io/v3 ``` + +## API Versioning + +The current API version is `v3`. All endpoints use the `/v3/` path prefix. When breaking changes are introduced, CometChat will release a new version while maintaining the previous version for a deprecation period. + +Deprecated endpoints are marked with a `deprecated` badge in the sidebar and include migration guidance with replacement endpoints. + +## Support + +If you encounter any issues, create a [support ticket](https://help.cometchat.com/hc/en-us/requests/new) or reach out via the [CometChat Dashboard](https://app.cometchat.com/). Check the [API Status Page](https://status.cometchat.com/) for service availability. diff --git a/rest-api/rate-limits.mdx b/rest-api/rate-limits.mdx index 031ca6cf6..6fa60447e 100644 --- a/rest-api/rate-limits.mdx +++ b/rest-api/rate-limits.mdx @@ -39,3 +39,25 @@ To handle rate limits gracefully: 1. Implement exponential backoff when retrying failed requests 2. Monitor your API usage to stay within limits 3. Contact support if you need higher limits for your use case + +## Rate Limit Response Headers + +When rate limited, the API returns HTTP 429 with these headers: + +| Header | Description | +| ----------------------- | ------------------------------------------------ | +| `X-RateLimit-Limit` | Maximum requests allowed in the current window | +| `X-RateLimit-Remaining` | Requests remaining in the current window | +| `X-RateLimit-Reset` | Unix timestamp when the rate limit window resets | +| `Retry-After` | Seconds to wait before retrying | + +## Retry Strategy + +``` +if response.status == 429: + wait = response.headers['Retry-After'] or 60 + sleep(wait) + retry() +``` + +Use exponential backoff with jitter for production implementations. Start with the `Retry-After` value, then double the wait on each subsequent 429 response, up to a maximum of 5 minutes. From af55a77bc1eb4d1beac9481e85f9336b90769908 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 30 Mar 2026 11:08:46 +0530 Subject: [PATCH 39/56] Removed interactive message --- calls.json | 29 +- chat-apis.json | 1573 +- data-import-apis.json | 726 +- docs.json | 7 + management-apis.json | 33188 ++++++++++++++++++++-------------------- 5 files changed, 16985 insertions(+), 18538 deletions(-) diff --git a/calls.json b/calls.json index 9fe392d7e..7c92a2bcd 100644 --- a/calls.json +++ b/calls.json @@ -44,7 +44,11 @@ "description": "It includes the type of the call, possible values: audio & video", "schema": { "type": "string", - "enum": ["audio", "video"] + "enum": [ + "audio", + "video" + ], + "description": "Allowed values: audio, video" } }, { @@ -53,7 +57,12 @@ "description": "It represents the mode of call, possible values: call, meet & presenter.", "schema": { "type": "string", - "enum": ["call", "meet", "presenter"] + "enum": [ + "call", + "meet", + "presenter" + ], + "description": "Allowed values: call, meet, presenter" } }, { @@ -79,7 +88,13 @@ "description": "It indicates the status of the call. Possible values are unanswered, rejected, ongoing, ended.", "schema": { "type": "string", - "enum": ["unanswered", "rejected", "ongoing", "ended"] + "enum": [ + "unanswered", + "rejected", + "ongoing", + "ended" + ], + "description": "Allowed values: unanswered, rejected, ongoing, ended" } }, { @@ -88,7 +103,11 @@ "description": "It indicates if it was 1-1 call of group call. Possible values: user & group.", "schema": { "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ], + "description": "Allowed values: user, group" } }, { @@ -564,4 +583,4 @@ "proxy-enabled": true }, "x-readme-fauxas": true -} +} \ No newline at end of file diff --git a/chat-apis.json b/chat-apis.json index 84f17a915..e17d87545 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -110,7 +110,8 @@ "enum": [ "fullAccess", "authOnly" - ] + ], + "description": "API key scope. fullAccess: all operations. authOnly: user auth only." } }, { @@ -508,7 +509,8 @@ "enum": [ "name", "uid" - ] + ], + "description": "Search field." } } }, @@ -521,7 +523,8 @@ "enum": [ "available", "offline" - ] + ], + "description": "User status filter." } }, { @@ -974,7 +977,8 @@ "avatar", "link", "metadata" - ] + ], + "description": "User attributes that can be unset." }, "default": [ "avatar" @@ -1295,7 +1299,8 @@ "name", "guid", "createdAt" - ] + ], + "description": "Sort field for listing groups." } }, { @@ -1307,7 +1312,8 @@ "enum": [ "asc", "desc" - ] + ], + "description": "Sort order." } }, { @@ -1328,7 +1334,8 @@ "enum": [ "append", "prepend" - ] + ], + "description": "Cursor pagination direction." } }, { @@ -1370,7 +1377,8 @@ "public", "private", "password" - ] + ], + "description": "Group type. public: anyone can join. password: requires password. private: invitation only." } }, { @@ -1626,7 +1634,8 @@ "icon", "description", "metadata" - ] + ], + "description": "Group attributes that can be unset." } } }, @@ -1744,7 +1753,6 @@ "propertyName": "category", "mapping": { "message": "#/components/schemas/messageCategorySchema", - "interactive": "#/components/schemas/interactiveCategorySchema", "custom": "#/components/schemas/customCategorySchema" } }, @@ -1756,363 +1764,10 @@ { "title": "Custom", "$ref": "#/components/schemas/customCategorySchema" - }, - { - "title": "Interactive", - "$ref": "#/components/schemas/interactiveCategorySchema" } ] }, - "examples": { - "form-interactive": { - "summary": "Interactive form example", - "value": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - }, - { - "elementType": "dateTime", - "elementId": "element11", - "defaultValue": false, - "label": "Contact Number", - "optional": false, - "mode": "date", - "dateTimeFormat": "Y-m-d H:i:ss", - "timezoneCode": "Asia/Kolkata", - "from1": "2024-02-23T14:30", - "from": "2024-06-23", - "to": "2024-06-24", - "maxLines": 1, - "placeholder": { - "text": "Enter contact number" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "cometchat-uid-2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "cometchat-uid-1", - "tags": [ - "tag1" - ] - } - }, - "card-interactive": { - "summary": "Interactive card example", - "value": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "none" - }, - "allowSenderInteraction": true, - "interactiveData": { - "imageUrl": "https://upload.wikimedia.org/wikipedia/en/e/e1/Thomas_D._Baird_%28low-resolution%29.jpg", - "text": "Thanks For filling the Form!.\n\nWant to make your gifts more special? Now its easy with our personalized card messages!\n\nOur new feature lets you add a custom message on a beautifully designed card, making your gift-giving extra personal and memorable.\nWhether its for a birthday , anniversary , or just because , our card messages will express your feelings perfectly.\n\nTo start creating your own card message:\nChoose the gift\nWrite your heartfelt message\nWell print it on a high-quality card and include it with your gift\nAdd a touch of your own sentiments with our personalized card messages. Make every gift unforgettable. Start creating your card message today!\nVisit our website Website Link or download our app App Link.\n\nExpress more than just words with our Personalized Card Messages.Because its not just a gift, its your feelings.\n", - "cardActions": [ - { - "elementType": "button", - "elementId": "element8", - "buttonText": "Buy now", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application\\/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "Navigate", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - }, - { - "elementType": "button", - "elementId": "element10", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - ] - } - }, - "category": "interactive", - "type": "card", - "receiver": "cometchat-uid-1", - "tags": [ - "tag1" - ] - } - }, - "scheduler-interactive": { - "summary": "Interactive scheduler example", - "value": { - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "interactive", - "type": "scheduler", - "data": { - "receiverType": "user", - "receiver": "cometchat-uid-2", - "muid": "16Jan3:41423PM", - "interactionGoal": { - "type": "anyOf", - "elementIds": [] - }, - "allowSenderInteraction": false, - "interactiveData": { - "title": "Meet with Dr. Jacob", - "avatarUrl": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "bufferTime": 15, - "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", - "availability": { - "friday": [ - { - "to": "2359", - "from": "0000" - } - ], - "monday": [ - { - "to": "1700", - "from": "0600" - } - ], - "tuesday": [ - { - "to": "1400", - "from": "1000" - }, - { - "to": "2000", - "from": "1700" - } - ], - "thursday": [ - { - "to": "2359", - "from": "0000" - } - ], - "wednesday": [ - { - "to": "0800", - "from": "0600" - }, - { - "to": "1700", - "from": "1200" - } - ] - }, - "timezoneCode": "Asia/Kolkata", - "duration": 60, - "scheduleElement": { - "action": { - "url": "https://.api-.cometchat.io/v3/messages", - "actionType": "apiAction", - "method": "post", - "dataKey": "", - "headers": { - "accept": "application/json", - "apiKey": "62a32b5140e6b630dab38e2e690d88de9c69d416", - "onBehalfOf": "suryansh1", - "content-type": "application/json" - }, - "payload": { - "data": { - "text": "Meeting Scheduled Successfully!" - }, - "type": "text", - "category": "message", - "receiver": "demo1", - "receiverType": "group" - } - }, - "elementId": "1", - "buttonText": "Schedule", - "elementType": "button", - "disableAfterInteracted": true - }, - "goalCompletionText": "Your meeting has been Scheduled", - "dateRangeStart": "2024-06-09", - "dateRangeEnd": "2024-06-09" - } - } - } - } - } + "examples": {} } } }, @@ -2229,7 +1884,8 @@ "video", "audio", "file" - ] + ], + "description": "Media message type." } }, { @@ -2273,7 +1929,8 @@ "enum": [ "user", "group" - ] + ], + "description": "Receiver type. user: one-on-one. group: group conversation." } }, { @@ -2302,7 +1959,8 @@ "message", "action", "custom" - ] + ], + "description": "Message category filter." } }, { @@ -5766,7 +5424,8 @@ "enum": [ "available", "offline" - ] + ], + "description": "User status filter." } }, { @@ -7075,7 +6734,8 @@ "settings", "description", "metadata" - ] + ], + "description": "Group attributes that can be unset." }, "default": [] }, @@ -7814,7 +7474,8 @@ "video", "audio", "file" - ] + ], + "description": "Media message type." } }, { @@ -7882,7 +7543,8 @@ "enum": [ "append", "prepend" - ] + ], + "description": "Cursor pagination direction." } }, { @@ -8285,7 +7947,8 @@ "video", "audio", "file" - ] + ], + "description": "Media message type." } }, { @@ -8361,7 +8024,8 @@ "enum": [ "append", "prepend" - ] + ], + "description": "Cursor pagination direction." } }, { @@ -8613,7 +8277,6 @@ "propertyName": "category", "mapping": { "message": "#/components/schemas/messageCategorySchema", - "interactive": "#/components/schemas/interactiveCategorySchema", "custom": "#/components/schemas/customCategorySchema" } }, @@ -8625,346 +8288,10 @@ { "title": "Custom", "$ref": "#/components/schemas/customCategorySchema" - }, - { - "title": "Interactive", - "$ref": "#/components/schemas/interactiveCategorySchema" } ] }, - "examples": { - "form-interactive": { - "summary": "Interactive form example", - "value": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "cometchat-uid-2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "cometchat-uid-1", - "tags": [ - "tag1" - ] - } - }, - "card-interactive": { - "summary": "Interactive card example", - "value": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "none" - }, - "allowSenderInteraction": true, - "interactiveData": { - "imageUrl": "https://upload.wikimedia.org/wikipedia/en/e/e1/Thomas_D._Baird_%28low-resolution%29.jpg", - "text": "Thanks For filling the Form!.\n\nWant to make your gifts more special? Now its easy with our personalized card messages!\n\nOur new feature lets you add a custom message on a beautifully designed card, making your gift-giving extra personal and memorable.\nWhether its for a birthday , anniversary , or just because , our card messages will express your feelings perfectly.\n\nTo start creating your own card message:\nChoose the gift\nWrite your heartfelt message\nWell print it on a high-quality card and include it with your gift\nAdd a touch of your own sentiments with our personalized card messages. Make every gift unforgettable. Start creating your card message today!\nVisit our website Website Link or download our app App Link.\n\nExpress more than just words with our Personalized Card Messages.Because its not just a gift, its your feelings.\n", - "cardActions": [ - { - "elementType": "button", - "elementId": "element8", - "buttonText": "Buy now", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application\\/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "Navigate", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - }, - { - "elementType": "button", - "elementId": "element10", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "group_1695921003310", - "receiverType": "group" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - ] - } - }, - "category": "interactive", - "type": "card", - "receiver": "cometchat-uid-1", - "tags": [ - "tag1" - ] - } - }, - "scheduler-interactive": { - "summary": "Interactive scheduler example", - "value": { - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "interactive", - "type": "scheduler", - "data": { - "receiverType": "user", - "receiver": "cometchat-uid-2", - "muid": "16Jan3:41423PM", - "interactionGoal": { - "type": "anyOf", - "elementIds": [] - }, - "allowSenderInteraction": false, - "interactiveData": { - "title": "Meet with Dr. Jacob", - "avatarUrl": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "bufferTime": 15, - "icsFileUrl": "https://data-us.cometchat.io/23965108c9b89ad2/media/1704380186_864562419_ab59586ed5ab5f89d2c960457ceee249.ics", - "availability": { - "friday": [ - { - "to": "2359", - "from": "0000" - } - ], - "monday": [ - { - "to": "1700", - "from": "0600" - } - ], - "tuesday": [ - { - "to": "1400", - "from": "1000" - }, - { - "to": "2000", - "from": "1700" - } - ], - "thursday": [ - { - "to": "2359", - "from": "0000" - } - ], - "wednesday": [ - { - "to": "0800", - "from": "0600" - }, - { - "to": "1700", - "from": "1200" - } - ] - }, - "timezoneCode": "Asia/Kolkata", - "duration": 60, - "scheduleElement": { - "action": { - "url": "https://.api-.cometchat.io/v3/messages", - "actionType": "apiAction", - "method": "post", - "dataKey": "", - "headers": { - "accept": "application/json", - "apiKey": "62a32b5140e6b630dab38e2e690d88de9c69d416", - "onBehalfOf": "suryansh1", - "content-type": "application/json" - }, - "payload": { - "data": { - "text": "Meeting Scheduled Successfully!" - }, - "type": "text", - "category": "message", - "receiver": "demo1", - "receiverType": "group" - } - }, - "elementId": "1", - "buttonText": "Schedule", - "elementType": "button", - "disableAfterInteracted": true - }, - "goalCompletionText": "Your meeting has been Scheduled", - "dateRangeStart": "2024-06-09", - "dateRangeEnd": "2024-06-09" - } - } - } - } - } + "examples": {} } } }, @@ -9226,46 +8553,6 @@ "body": "New message", "body_fallback": "New message" }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{message.data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, "emailSubjectTemplateDefault": { "subjectGroup": "New messages in {{groupDetails.name}}", "subjectOneOnOne": "New messages from {{senderDetails.name}}" @@ -9983,46 +9270,6 @@ "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", "body": "{{message.data.text}}", "body_fallback": "New message" - }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" } } } @@ -10196,46 +9443,6 @@ "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", "body": "{{message.data.text}}", "body_fallback": "New message" - }, - "interactiveFormTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.title}}" - }, - "interactiveFormTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCardTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "{{data.interactiveData.text}}" - }, - "interactiveCardTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}}", - "body": "New message" - }, - "interactiveSchedulerTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveSchedulerTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New invite" - }, - "interactiveCustomTemplateDefault": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" - }, - "interactiveCustomTemplatePrivacy": { - "titleOneOnOne": "{{message.data.entities.sender.entity.name}}", - "titleGroup": "{{message.data.entities.sender.entity.name}} @ {{message.data.entities.receiver.entity.name}}", - "body": "New message" } } } @@ -12171,14 +11378,14 @@ { "name": "messageCategory", "in": "query", - "description": "To filter logs based on the category of the message or reply. Values can be message, interactive.", + "description": "To filter logs based on the category of the message or reply. Values can be message.", "required": false, "schema": { "type": "string", "enum": [ - "message", - "interactive" - ] + "message" + ], + "description": "Message category filter." } }, { @@ -12213,7 +11420,8 @@ "after_group_members_banned", "after_group_members_unbanned", "after_scope_changed" - ] + ], + "description": "Webhook event trigger type." } }, { @@ -12253,7 +11461,8 @@ "enum": [ "user", "group" - ] + ], + "description": "Receiver type. user: one-on-one. group: group conversation." } }, { @@ -12285,7 +11494,8 @@ "push", "email", "sms" - ] + ], + "description": "Notification channel type." } }, { @@ -12301,7 +11511,8 @@ "sendgrid", "twilio", "custom" - ] + ], + "description": "Notification provider type." } }, { @@ -12337,7 +11548,8 @@ "TIMED_OUT", "NOT_FOUND", "TWILIO_CREATE_ERROR" - ] + ], + "description": "Notification log status or reason code." } }, { @@ -12359,7 +11571,8 @@ "enum": [ "prepend", "append" - ] + ], + "description": "Cursor pagination direction." } }, { @@ -13591,7 +12804,8 @@ "apns_flutter_device", "apns_react_native_device", "apns_ionic_cordova_device" - ] + ], + "description": "APNS device push token platform." }, "providerId": { "type": "string", @@ -13624,7 +12838,8 @@ "fcm_react_native_ios", "fcm_ionic_cordova_android", "fcm_ionic_cordova_ios" - ] + ], + "description": "FCM push token platform." }, "providerId": { "type": "string", @@ -13652,7 +12867,8 @@ "apns_flutter_voip", "apns_ionic_cordova_voip", "apns_react_native_voip" - ] + ], + "description": "APNS VoIP push token platform." }, "providerId": { "type": "string", @@ -13815,174 +13031,6 @@ }, "type": "object" }, - "SchedulerSchema": { - "required": [ - "interactionGoal", - "allowSenderInteraction", - "interactiveData" - ], - "properties": { - "interactionGoal": { - "required": [ - "type", - "elementIds" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "required": [ - "title", - "avatarUrl", - "bufferTime", - "icsFileUrl", - "availability", - "timezoneCode", - "duration", - "scheduleElement", - "goalCompletionText", - "dateRangeStart", - "dateRangeEnd" - ], - "properties": { - "title": { - "type": "string" - }, - "avatarUrl": { - "type": "string" - }, - "bufferTime": { - "type": "integer" - }, - "icsFileUrl": { - "type": "string" - }, - "timezoneCode": { - "type": "string" - }, - "duration": { - "type": "integer" - }, - "scheduleElement": { - "required": [ - "action", - "elementId", - "buttonText", - "elementType", - "disableAfterInteracted" - ], - "properties": { - "action": { - "required": [ - "url", - "actionType", - "method", - "dataKey", - "headers", - "payload" - ], - "properties": { - "url": { - "type": "string" - }, - "actionType": { - "type": "string" - }, - "method": { - "type": "string" - }, - "dataKey": { - "type": "string" - }, - "headers": { - "type": "object" - }, - "payload": { - "required": [ - "data", - "type", - "category", - "receiver", - "receiverType" - ], - "properties": { - "data": { - "properties": { - "text": { - "type": "string" - } - }, - "type": "object" - }, - "type": { - "type": "string" - }, - "category": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "receiverType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "elementType": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - } - }, - "type": "object" - }, - "goalCompletionText": { - "type": "string" - }, - "dateRangeStart": { - "type": "string", - "format": "date" - }, - "dateRangeEnd": { - "type": "string", - "format": "date" - } - }, - "type": "object" - } - }, - "type": "object" - }, "ServiceAccountCreds": { "properties": { "project_id": { @@ -14092,30 +13140,6 @@ } ] }, - "interactiveFormTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveFormTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, "emailSubjectTemplateDefault": { "properties": { "subjectGroup": { @@ -14484,15 +13508,6 @@ }, "type": "object" }, - "customInteractiveSchema": { - "title": "Custom Interactive Schema", - "properties": { - "data": { - "type": "object" - } - }, - "type": "object" - }, "dataPointSchema": { "description": "Response data", "properties": { @@ -14892,476 +13907,12 @@ }, "interactionCardSchema": { "title": "Card Schema", - "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "cardActions": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, + "properties": {}, "type": "object" }, "interactionFormSchema": { "title": "Form Schema", - "properties": { - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": [ - "anyOf", - "allOf", - "oneOf", - "none" - ] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "text": { - "type": "string" - }, - "formFields": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "interactiveCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": [ - "user", - "group" - ] - }, - "category": { - "description": "Category of the message. The available categories is interactive.", - "type": "string", - "default": "interactive", - "enum": [ - "interactive" - ] - }, - "type": { - "description": "Type of the message. The available values are card, form and customInteractive.", - "type": "string", - "default": "card", - "enum": [ - "card", - "form", - "customInteractive", - "scheduler" - ] - }, - "data": { - "description": "JSON containing message attributes. Please select the appropriate schema based on the type property.", - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/interactionFormSchema" - }, - { - "$ref": "#/components/schemas/interactionCardSchema" - }, - { - "$ref": "#/components/schemas/SchedulerSchema" - }, - { - "$ref": "#/components/schemas/customInteractiveSchema" - } - ] - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object", - "example": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": [ - "element8" - ] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": [ - "option1", - "option2" - ] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "cometchat-uid-2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "cometchat-uid-1", - "tags": [ - "tag1" - ] - } - }, - "interactiveMessageSchema": { - "properties": { - "current": { - "properties": { - "limit": { - "type": "integer" - }, - "count": { - "type": "integer" - } - }, - "type": "object" - }, - "next": { - "properties": { - "affix": { - "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { - "type": "string" - } - }, - "type": "object" - } - }, + "properties": {}, "type": "object" }, "messageCategorySchema": { diff --git a/data-import-apis.json b/data-import-apis.json index d5d8c3d0e..0a2bec849 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -14,7 +14,11 @@ "description": "(Required) App ID" }, "region": { - "enum": ["us", "eu", "in"], + "enum": [ + "us", + "eu", + "in" + ], "default": "us", "description": "Select Region" } @@ -24,7 +28,9 @@ "paths": { "/data_import/messages": { "post": { - "tags": ["Messages"], + "tags": [ + "Messages" + ], "summary": "Import Messages", "description": "The CometChat message import API allows customers to import their messages’ data into the CometChat systems.", "operationId": "import-messages", @@ -32,11 +38,17 @@ "content": { "application/json": { "schema": { - "required": ["guid", "name", "type"], + "required": [ + "guid", + "name", + "type" + ], "properties": { "messages": { "description": "Wrapper for the messages.", - "required": ["muid"], + "required": [ + "muid" + ], "properties": { "": { "description": "Wraps a single message object. The <muid> will be a primary key/unique Identifier of the message.", @@ -59,7 +71,10 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "receiver": { "description": "If the receiverType == “user” the UID of a user receiving the message. else GUID of the group.", @@ -68,12 +83,21 @@ "category": { "description": "Category of the message. The available categories are message and custom.", "type": "string", - "enum": ["message", "custom"] + "enum": [ + "message", + "custom" + ] }, "type": { "description": "If category==”message” then the allowed values for the type are: text: for a plain text message. image: for an image message audio: for an audio message video: for a video message file: for any file if category==”custom” the customized type can be used. The developer can send the type as any random string and can use it in the implementation at the UI", "type": "string", - "enum": ["text", "image", "file", "audio", "video"] + "enum": [ + "text", + "image", + "file", + "audio", + "video" + ] }, "data": { "description": "Can contain any additional properties except for the key properties.", @@ -148,7 +172,10 @@ }, "senderUserDetails": { "description": "If all the users are imported before importing the messages. The JSON object contains the user details of the sender.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The primary-key/ unique identifier of the sender.", @@ -199,7 +226,10 @@ }, "receiverUserDetails": { "description": "If all the users are imported before importing the messages or else required if receiverType==”user”. The JSON object contains the user details of the receiver.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The primary-key/ unique identifier of the user receiving the message.", @@ -250,7 +280,11 @@ }, "receiverGroupDetails": { "description": "The JSON object contains the group details of the receiver.", - "required": ["guid", "name", "type"], + "required": [ + "guid", + "name", + "type" + ], "properties": { "guid": { "description": "The primary-key/ unique identifier of the group.", @@ -267,7 +301,11 @@ "type": { "description": "Type of the group. Can be public, password or private.", "type": "string", - "enum": ["public", "password", "private"] + "enum": [ + "public", + "password", + "private" + ] }, "password": { "description": "A password required to join the the group with type password", @@ -298,7 +336,10 @@ }, "receiverGroupOwnerDetails": { "description": "The JSON object contains the user details of the owner.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The primary-key/ unique identifier of the owner.", @@ -403,7 +444,9 @@ "key": "value" } }, - "tags": ["tag1"] + "tags": [ + "tag1" + ] } } } @@ -427,9 +470,18 @@ "allOf": [ { "properties": { - "sentAt": {"type": "integer", "description": "Unix timestamp"}, - "deliveredAt": {"type": "integer", "description": "Unix timestamp"}, - "readAt": {"type": "integer", "description": "Unix timestamp"} + "sentAt": { + "type": "integer", + "description": "Unix timestamp" + }, + "deliveredAt": { + "type": "integer", + "description": "Unix timestamp" + }, + "readAt": { + "type": "integer", + "description": "Unix timestamp" + } }, "type": "object" }, @@ -512,7 +564,9 @@ "deliveredAt": 1674224684, "readAt": 1674224684, "updatedAt": 1674104348, - "tags": ["tag1"] + "tags": [ + "tag1" + ] } } } @@ -530,7 +584,9 @@ }, "/data_import/users": { "post": { - "tags": ["Users"], + "tags": [ + "Users" + ], "summary": "Import Users", "description": "The CometChat user import API allows customers to import their users’ data into the CometChat systems.", "operationId": "import-users", @@ -541,11 +597,16 @@ "properties": { "users": { "description": "Wrapper for the users.", - "required": ["uid"], + "required": [ + "uid" + ], "properties": { "": { "description": "Wraps a user object. The <uid> will be a primary key/unique Identifier of the user.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The value should be the same as value of the placeholder <uid> which wraps the user object.", @@ -629,8 +690,14 @@ "allOf": [ { "properties": { - "lastActiveAt": {"type": "integer", "description": "Unix timestamp"}, - "deactivatedAt": {"type": "integer", "description": "Unix timestamp"} + "lastActiveAt": { + "type": "integer", + "description": "Unix timestamp" + }, + "deactivatedAt": { + "type": "integer", + "description": "Unix timestamp" + } }, "type": "object" }, @@ -677,7 +744,9 @@ }, "/data_import/groups": { "post": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Import Groups", "description": "The CometChat group import API allows customers to import their groups’ data into the CometChat systems.", "operationId": "import-groups", @@ -688,11 +757,17 @@ "properties": { "groups": { "description": "Wrapper for the groups.", - "required": ["guid"], + "required": [ + "guid" + ], "properties": { "": { "description": "Wraps a group object. The <guid> will be a primary key/unique Identifier of the group.", - "required": ["guid", "name", "type"], + "required": [ + "guid", + "name", + "type" + ], "properties": { "guid": { "description": "The value should be the same as value of the placeholder <guid> which wraps the group object.", @@ -709,7 +784,11 @@ "type": { "description": "Type of the group. Can be public, password or private.", "type": "string", - "enum": ["public", "password", "private"] + "enum": [ + "public", + "password", + "private" + ] }, "password": { "description": "A password required to join the the group with type password", @@ -737,7 +816,10 @@ }, "groupOwnerDetails": { "description": "The JSON object contains the user details of the owner.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The primary-key/ unique identifier of the owner.", @@ -862,7 +944,9 @@ }, "/data_import/members": { "post": { - "tags": ["Groups"], + "tags": [ + "Groups" + ], "summary": "Import Group Members", "description": "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems.", "operationId": "import-members", @@ -873,11 +957,17 @@ "properties": { "members": { "description": "Wrapper for the members.", - "required": ["memberId"], + "required": [ + "memberId" + ], "properties": { "_member_": { "description": "Wraps a single member object. The <guid>_member_<uid> will will be a primary key/unique Identifier of the member.", - "required": ["memberId", "guid", "uid"], + "required": [ + "memberId", + "guid", + "uid" + ], "properties": { "memberId": { "description": "The value should be the same as value of the placeholder <guid>_member_<uid> which wraps the member object.", @@ -905,7 +995,11 @@ }, "groupDetails": { "description": "The JSON object contains the group details of the member.", - "required": ["guid", "name", "type"], + "required": [ + "guid", + "name", + "type" + ], "properties": { "guid": { "description": "The primary-key/ unique identifier of the group.", @@ -922,7 +1016,11 @@ "type": { "description": "Type of the group. Can be public, password or private.", "type": "string", - "enum": ["public", "password", "private"] + "enum": [ + "public", + "password", + "private" + ] }, "password": { "description": "A password required to join the the group with type password", @@ -953,7 +1051,10 @@ }, "userDetails": { "description": "The JSON object contains the user details of the member.", - "required": ["uid", "name"], + "required": [ + "uid", + "name" + ], "properties": { "uid": { "description": "The primary-key/ unique identifier of the member.", @@ -1140,7 +1241,11 @@ "messagesSetting": { "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "messagesOverride": { "type": "boolean" @@ -1148,7 +1253,11 @@ "repliesSetting": { "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "repliesOverride": { "type": "boolean" @@ -1156,7 +1265,11 @@ "reactionsSetting": { "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "reactionsOverride": { "type": "boolean" @@ -1164,7 +1277,10 @@ "memberLeftSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberLeftOverride": { "type": "boolean" @@ -1172,7 +1288,10 @@ "memberAddedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberAddedOverride": { "type": "boolean" @@ -1180,7 +1299,10 @@ "memberJoinedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberJoinedOverride": { "type": "boolean" @@ -1188,7 +1310,10 @@ "memberKickedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberKickedOverride": { "type": "boolean" @@ -1196,7 +1321,10 @@ "memberBannedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberBannedOverride": { "type": "boolean" @@ -1204,7 +1332,10 @@ "memberUnbannedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberUnbannedOverride": { "type": "boolean" @@ -1212,7 +1343,10 @@ "memberScopeChangedSetting": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "memberScopeChangedOverride": { "type": "boolean" @@ -1297,7 +1431,10 @@ "dnd": { "description": "1: Disable DND\n2: Enable DND", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "schedule": { "$ref": "#/components/schemas/Schedule" @@ -1324,7 +1461,8 @@ "apns_flutter_device", "apns_react_native_device", "apns_ionic_cordova_device" - ] + ], + "description": "Allowed values: apns_ios_device, apns_flutter_device, apns_react_native_device, apns_ionic_cordova_device" }, "providerId": { "type": "string", @@ -1357,7 +1495,8 @@ "fcm_react_native_ios", "fcm_ionic_cordova_android", "fcm_ionic_cordova_ios" - ] + ], + "description": "Allowed values: fcm_android, fcm_ios, fcm_web, fcm_flutter_android, fcm_flutter_ios, fcm_react_native_android, fcm_react_native_ios, fcm_ionic_cordova_android, fcm_ionic_cordova_ios" }, "providerId": { "type": "string", @@ -1385,7 +1524,8 @@ "apns_flutter_voip", "apns_ionic_cordova_voip", "apns_react_native_voip" - ] + ], + "description": "Allowed values: apns_ios_voip, apns_flutter_voip, apns_ionic_cordova_voip, apns_react_native_voip" }, "providerId": { "type": "string", @@ -1503,7 +1643,11 @@ "usePrivacyTemplate": { "description": "1: Use default templates\n2: Use privacy templates\n3: Use default templates with end-user privacy override", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "textMessageTemplateDefault": { "$ref": "#/components/schemas/Template" @@ -1546,30 +1690,6 @@ "$ref": "#/components/schemas/Template" } ] - }, - "interactiveFormTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveFormTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCardTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveSchedulerTemplatePrivacy": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplateDefault": { - "$ref": "#/components/schemas/Template" - }, - "interactiveCustomTemplatePrivacy": { - "$ref": "#/components/schemas/Template" } }, "type": "object" @@ -1817,13 +1937,18 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories is custom.", "type": "string", "default": "custom", - "enum": ["custom"] + "enum": [ + "custom" + ] }, "type": { "description": "Type of the message.", @@ -2246,337 +2371,6 @@ }, "type": "object" }, - "interactiveCategorySchema": { - "properties": { - "receiver": { - "description": "The receiver of the message.", - "type": "string" - }, - "muid": { - "description": "The muid will be a unique Identifier of the message.", - "type": "string" - }, - "receiverType": { - "description": "The receiverType of the message. either user or group", - "type": "string", - "enum": ["user", "group"] - }, - "category": { - "description": "Category of the message. The available categories is interactive.", - "type": "string", - "default": "interactive", - "enum": ["interactive"] - }, - "type": { - "description": "Type of the message. The available values are card, form and customInteractive.", - "type": "string", - "default": "card", - "enum": ["card", "form", "customInteractive", "scheduler"] - }, - "data": { - "description": "JSON containing message attributes.", - "properties": { - "text": { - "type": "string" - }, - "interactionGoal": { - "properties": { - "type": { - "type": "string", - "enum": ["anyOf", "allOf", "oneOf", "none"] - }, - "elementIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "allowSenderInteraction": { - "type": "boolean" - }, - "interactiveData": { - "properties": { - "title": { - "type": "string" - }, - "formFields": { - "type": "array", - "items": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "defaultValue": { - "type": "string" - }, - "label": { - "type": "string" - }, - "optional": { - "type": "boolean" - }, - "maxLines": { - "type": "integer" - }, - "placeholder": { - "type": "object" - } - }, - "type": "object" - } - }, - "submitElement": { - "properties": { - "elementType": { - "type": "string" - }, - "elementId": { - "type": "string" - }, - "buttonText": { - "type": "string" - }, - "disableAfterInteracted": { - "type": "boolean" - }, - "optional": { - "type": "boolean" - }, - "action": { - "properties": { - "url": { - "type": "string" - }, - "method": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "dataKey": { - "type": "string" - }, - "actionType": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "metadata": { - "type": "object" - } - }, - "type": "object" - }, - "multipleReceivers": { - "description": "JSON containing array of UIDs and GUID for whom the message must be sent. Format for multiple receivers - {\"uids\": [\"uid1\",\"uid2\"], \"guids\":[\"guid1\"]}", - "properties": { - "uids": { - "type": "array", - "items": { - "type": "string" - } - }, - "guids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "tags": { - "description": "A list of tags to identify specific messages.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - }, - "type": "object", - "example": { - "receiverType": "user", - "data": { - "interactionGoal": { - "type": "allOf", - "elementIds": ["element8"] - }, - "allowSenderInteraction": true, - "interactiveData": { - "title": "Form Title", - "formFields": [ - { - "elementType": "textInput", - "elementId": "element1", - "defaultValue": "vivek", - "label": "Name", - "optional": false, - "maxLines": 1, - "placeholder": { - "text": "write your name here" - } - }, - { - "elementType": "textInput", - "elementId": "element2", - "label": "Last Name", - "optional": false, - "maxLines": 1 - }, - { - "elementType": "textInput", - "elementId": "element3", - "label": "Address", - "optional": false, - "maxLines": 5 - }, - { - "elementType": "dropdown", - "elementId": "element4", - "label": "Country", - "optional": false, - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "INDIA" - }, - { - "value": "option2", - "label": "AUSTRALIA" - } - ] - }, - { - "elementType": "checkbox", - "elementId": "element5", - "optional": true, - "label": "Services", - "options": [ - { - "value": "option1", - "label": "Garbage" - }, - { - "value": "option2", - "label": "Electricity Bill" - }, - { - "value": "option3", - "label": "Lift" - } - ], - "defaultValue": ["option1", "option2"] - }, - { - "elementType": "singleSelect", - "elementId": "element6", - "optional": false, - "label": "Wing", - "defaultValue": "option1", - "options": [ - { - "value": "option1", - "label": "A Wing" - }, - { - "value": "option2", - "label": "B Wing" - } - ] - }, - { - "elementType": "button", - "elementId": "element9", - "buttonText": "About us", - "disableAfterInteracted": true, - "action": { - "actionType": "urlNavigation", - "url": "https://www.cometchat.com" - } - } - ], - "submitElement": { - "elementType": "button", - "elementId": "element8", - "buttonText": "Submit", - "disableAfterInteracted": true, - "action": { - "actionType": "apiAction", - "url": "https://.api-.cometchat.io/v3/messages", - "method": "POST", - "payload": { - "category": "message", - "type": "text", - "data": { - "text": "Thanks For filling the Form!" - }, - "receiver": "cometchat-uid-2", - "receiverType": "user" - }, - "headers": { - "appId": "10893f2ae68f59", - "Content-Type": "application/json", - "apiKey": "5797f2d3d103d7d78f085eb46bfd14d5c45ddfdf", - "onBehalfOf": "cometchat-uid-1" - }, - "dataKey": "CometChatData" - } - } - } - }, - "category": "interactive", - "type": "form", - "receiver": "cometchat-uid-1", - "tags": ["tag1"] - } - }, - "interactiveMessageSchema": { - "properties": { - "current": { - "properties": { - "limit": { - "type": "integer" - }, - "count": { - "type": "integer" - } - }, - "type": "object" - }, - "next": { - "properties": { - "affix": { - "type": "string" - }, - "sentAt": { - "type": "integer" - }, - "id": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, "messageCategorySchema": { "properties": { "receiver": { @@ -2590,19 +2384,30 @@ "receiverType": { "description": "The receiverType of the message. either user or group", "type": "string", - "enum": ["user", "group"] + "enum": [ + "user", + "group" + ] }, "category": { "description": "Category of the message. The available categories are message and custom.", "type": "string", "default": "message", - "enum": ["message"] + "enum": [ + "message" + ] }, "type": { "description": "Type of the message. The available values are text, image, file, audio, video.", "type": "string", "default": "text", - "enum": ["text", "image", "file", "audio", "video"] + "enum": [ + "text", + "image", + "file", + "audio", + "video" + ] }, "data": { "description": "JSON containing message attributes.", @@ -2988,7 +2793,10 @@ "type": { "description": "oneOnOne or group", "type": "string", - "enum": ["oneOnOne", "group"] + "enum": [ + "oneOnOne", + "group" + ] }, "until": { "description": "This is a valid timestamp from the future, E.g: 1710696964705", @@ -3127,7 +2935,11 @@ "messagesSetting": { "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "messagesOverride": { "type": "boolean" @@ -3135,7 +2947,11 @@ "repliesSetting": { "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "repliesOverride": { "type": "boolean" @@ -3143,7 +2959,11 @@ "reactionsSetting": { "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "reactionsOverride": { "type": "boolean" @@ -3188,52 +3008,85 @@ "groupMessages": { "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupReplies": { "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupReactions": { "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "groupMemberLeft": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberAdded": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberJoined": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberKicked": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberBanned": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberUnbanned": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] }, "groupMemberScopeChanged": { "description": "1: Don't subscribe\n2: Subscribe", "type": "integer", - "enum": [1, 2] + "enum": [ + 1, + 2 + ] } }, "type": "object" @@ -3243,17 +3096,29 @@ "oneOnOneMessages": { "description": "1: Don't subscribe\n2: Subscribe to all messages\n3: Subscribe to messages with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "oneOnOneReplies": { "description": "1: Don't subscribe\n2: Subscribe to all replies\n3: Subscribe to replies with mentions", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] }, "oneOnOneReactions": { "description": "1: Don't subscribe\n2: Subscribe to reactions for own messages\n3: Subscribe to reactions for all messages", "type": "integer", - "enum": [1, 2, 3] + "enum": [ + 1, + 2, + 3 + ] } }, "type": "object" @@ -3386,13 +3251,18 @@ "type": { "description": "oneOnOne or group", "type": "string", - "enum": ["oneOnOne", "group"] + "enum": [ + "oneOnOne", + "group" + ] } }, "type": "object" }, "unregisterpnToken": { - "required": ["authToken"], + "required": [ + "authToken" + ], "properties": { "authToken": { "type": "string" @@ -4023,4 +3893,4 @@ "explorer-enabled": true, "proxy-enabled": true } -} +} \ No newline at end of file diff --git a/docs.json b/docs.json index f0de9d70d..13ef60427 100644 --- a/docs.json +++ b/docs.json @@ -28,6 +28,13 @@ ] }, "favicon": "/favicon.png", + "openapi": [ + "chat-apis.json", + "management-apis.json", + "data-import-apis.json", + "calls.json", + "ai-agent-service.json" + ], "navigation": { "products": [ { diff --git a/management-apis.json b/management-apis.json index d96b5e6c8..b568edcdd 100644 --- a/management-apis.json +++ b/management-apis.json @@ -1,17614 +1,17614 @@ { - "openapi": "3.0.0", - "info": { - "title": "Management APIs (Multi-Tenancy)", - "description": "Create and manage apps on-the-fly using our app management APIs", - "version": "1.0" - }, - "servers": [ - { - "url": "https://apimgmt.cometchat.io" - } - ], - "paths": { - "/apps": { - "post": { - "tags": [ - "App" + "openapi": "3.0.0", + "info": { + "title": "Management APIs (Multi-Tenancy)", + "description": "Create and manage apps on-the-fly using our app management APIs", + "version": "1.0" + }, + "servers": [ + { + "url": "https://apimgmt.cometchat.io" + } + ], + "paths": { + "/apps": { + "post": { + "tags": [ + "App" + ], + "summary": "Create", + "operationId": "create-app", + "description": "Creates an app in the account. It returns all the app related information.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "name", + "region" ], - "summary": "Create", - "operationId": "create-app", - "description": "Creates an app in the account. It returns all the app related information.", - "parameters": [ - { - "$ref": "#/components/parameters/key" + "properties": { + "name": { + "description": "name of the app.", + "type": "string" + }, + "region": { + "description": "Region of the app", + "type": "string", + "default": "us", + "enum": [ + "us", + "eu", + "in" + ] + }, + "version": { + "description": "version of an app", + "type": "string", + "default": "3" + }, + "skipSampleData": { + "description": "skips sample data if it is set true", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Created App", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/appSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "", + "name": "", + "plan": "trial", + "trialEndsAt": 1588887393, + "state": "active", + "owner": 1656, + "region": "us", + "createdAt": 1586295393, + "appOwner": { + "id": "1656", + "name": "", + "email": "youremail@domain.com" }, - { - "$ref": "#/components/parameters/secret" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "name", - "region" - ], - "properties": { - "name": { - "description": "name of the app.", - "type": "string" - }, - "region": { - "description": "Region of the app", - "type": "string", - "default": "us", - "enum": [ - "us", - "eu", - "in" - ] - }, - "version": { - "description": "version of an app", - "type": "string", - "default": "3" - }, - "skipSampleData": { - "description": "skips sample data if it is set true", - "type": "boolean" - } - }, - "type": "object" - } + "appRegion": { + "id": "us", + "name": "USA", + "description": "The USA region has serverslocated at Ohio." + }, + "apiKeys": { + "": { + "apiKey": "", + "name": "Rest API Key", + "scope": "fullAccess", + "createdBy": "app_system" + }, + "": { + "apiKey": "", + "name": "Auth Key", + "scope": "authOnly", + "createdBy": "app_system" + } + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "App" + ], + "summary": "List", + "operationId": "list-apps", + "description": "Lists all the apps for an account.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "name": "searchKey", + "in": "query", + "description": "The \"searchKey\" query parameter allows filtering results based on either the ID or name properties of the apps.", + "schema": { + "type": "string" + } + }, + { + "name": "perPage", + "in": "query", + "description": "The \"perPage\" property specifies the total number of records to be fetched in a single request. It determines the maximum number of items returned per page.", + "schema": { + "type": "integer" + } + }, + { + "name": "page", + "in": "query", + "description": "The \"page\" property is utilized for navigating through the available pages of results. It indicates the specific page of results that is being retrieved or accessed.", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "List Apps", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/appSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "", + "name": "", + "plan": "trial", + "trialEndsAt": 1588887393, + "state": "active", + "owner": 1656, + "region": "us", + "createdAt": 1586295393, + "appOwner": { + "id": "1656", + "name": "", + "email": "youremail@domain.com" + }, + "appRegion": { + "id": "us", + "name": "USA", + "description": "The USA region has serverslocated at Ohio." + }, + "accessKey": "", + "apiKeys": { + "": { + "apiKey": "", + "name": "Rest API Key", + "scope": "fullAccess", + "createdBy": "app_system" + }, + "": { + "apiKey": "", + "name": "Auth Key", + "scope": "authOnly", + "createdBy": "app_system" + } + } + } + } + } + } + } + } + } + }, + "/apps/{appId}": { + "delete": { + "tags": [ + "App" + ], + "summary": "Delete", + "operationId": "delete-app", + "description": "Schedule a specific app for deletion.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "List Apps", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/deleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Created App", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/appSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "", - "name": "", - "plan": "trial", - "trialEndsAt": 1588887393, - "state": "active", - "owner": 1656, - "region": "us", - "createdAt": 1586295393, - "appOwner": { - "id": "1656", - "name": "", - "email": "youremail@domain.com" - }, - "appRegion": { - "id": "us", - "name": "USA", - "description": "The USA region has serverslocated at Ohio." - }, - "apiKeys": { - "": { - "apiKey": "", - "name": "Rest API Key", - "scope": "fullAccess", - "createdBy": "app_system" - }, - "": { - "apiKey": "", - "name": "Auth Key", - "scope": "authOnly", - "createdBy": "app_system" - } - } - } - } - } + "example": { + "data": { + "success": true, + "scheduledToDeleteAt": 1631203178 + } + } + } + } + } + } + } + }, + "/apps/{appId}/usage": { + "post": { + "tags": [ + "App" + ], + "summary": "Fetch usage", + "description": "Retrieves usage data for multi-tenant apps.", + "operationId": "fetch-multi-tenant-usage", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "name": "appId", + "in": "path", + "description": "The parent appId to which the subscription is linked.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "usePreviousBillingCycle": { + "description": "Indicates whether the usage from the previous billing cycle should be retrieved.\n\nIf set to false, the usage for the current cycle will be fetched.\n\nIf set to true, the usage from the previous cycle will be fetched.", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Updated App", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/appSchema" } + }, + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "Your usage request has been accepted and is being processed for . You will receive an email with the details at @example.com" + } } - }, - "get": { - "tags": [ - "App" - ], - "summary": "List", - "operationId": "list-apps", - "description": "Lists all the apps for an account.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "name": "searchKey", - "in": "query", - "description": "The \"searchKey\" query parameter allows filtering results based on either the ID or name properties of the apps.", - "schema": { - "type": "string" + } + } + } + } + } + }, + "/apps/{appId}/extensions": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Enable/Disable", + "operationId": "enable-extension", + "description": "Enables or disables the extension for an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "enabled": { + "description": "Array of extension IDs that has to be enabled.", + "type": "array", + "items": { + "type": "string" + } + }, + "disabled": { + "description": "Array of extension IDs that has to be disabled.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Enabled/Disabled Extension", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/extensionSchema" } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "enabled": { + "extention_id1": { + "success": true, + "message": "The extension extension_id1 has been enabled successfully." + }, + "extention_id2": { + "success": true, + "message": "The extension extension_id2 has been enabled successfully." + } }, - { - "name": "perPage", - "in": "query", - "description": "The \"perPage\" property specifies the total number of records to be fetched in a single request. It determines the maximum number of items returned per page.", - "schema": { - "type": "integer" + "disabled": { + "extention_id3": { + "success": true, + "message": "The extension extension_id1 has been enabled successfully." + } + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "List Extensions", + "operationId": "list-extensions", + "description": "List the Extensions.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/perPage--extensions" + } + ], + "responses": { + "200": { + "description": "Enabled/Disabled Extension", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/extensionListSchema" } + }, + "type": "object" }, - { - "name": "page", - "in": "query", - "description": "The \"page\" property is utilized for navigating through the available pages of results. It indicates the specific page of results that is being retrieved or accessed.", - "schema": { - "type": "integer" + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "widget", + "name": "Chat Widget", + "tagLine": "Drag-n-drop chat plugin for your website", + "description": "Drag-n-drop chat plugin for your website", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://widget-eu.cometchats.io", + "accessToAppData": false, + "adminURL": "https://widget-eu.cometchat.io/v1/show-setting?appToken=BArL8wLC1jkTws5bgH1DDvAMDevHdiAmMI5NGyQXs-I=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1591812821, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "document", + "name": "Collaborative document", + "tagLine": "Allows you create and share documents for collaboration", + "description": "Allows you create and share documents for collaboration", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://document-eu.cometchat.io/v1/create", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592815197, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "whiteboard", + "name": "Collaborative whiteboard", + "tagLine": "Allows you create and share whiteboards for collaboration", + "description": "Allows you create and share whiteboards for collaboration", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://whiteboard-eu.cometchat.io/v1/create", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1595838286, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "data-masking", + "name": "Data Masking", + "tagLine": "Hide phone numbers, email addresses and other sensitive information in messages.", + "description": "Hide phone numbers, email addresses and other sensitive information in messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://data-masking-eu.cometchat.io/v1/filter", + "accessToAppData": false, + "adminURL": "https://data-masking-eu.cometchat.io/v1/show-setting?appToken=DSjVCnryJFoSIgvIaCJUWF5sS1mMLy7V-pD6HoNlA3A=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592815197, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "email-notification", + "name": "Email Notification", + "tagLine": "Notify users via email for unread messages.", + "description": "Notify users via email for unread messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://email-notification-eu.cometchat.io/v1/send-email", + "accessToAppData": false, + "adminURL": "https://email-notification-eu.cometchat.io/v1/show-setting?appToken=c2JH61Mw2dnThPa_tHfP284hF6-8kbAvVfIlNSSzgKk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373595, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "email-replies", + "name": "Email Replies", + "tagLine": "Reply to texts directly via emails", + "description": "Replying in a conversation from Email notifications just got simpler. With Email Replies, users can respond in a conversation by replying to the email.", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://email-replies-eu.cometchat.io/v1/show-setting?appToken=slIAhyFb4PCG5R4dJBM4lTlYTdYznNORCBPL-Rxw_Qs=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592815197, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "emojis", + "name": "Emojis", + "tagLine": "Emojis for web", + "description": "Emojis for web", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://emojis-eu.cometchat.io/v1/emojis", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592829829, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "gifs-gfycat", + "name": "Gfycat", + "tagLine": "Get the best GIFS for all your conversations", + "description": "Get the best GIFS for all your conversations", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1622447638, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "gifs-giphy", + "name": "Giphy", + "tagLine": "Be Animated", + "description": "Be Animated", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://gifs-giphy-eu.cometchat.io/v1/show-setting?appToken=Lv2_oE3L6JHOMbOiNNBjWsi0v6mV9r-aKVLofy_KZ7s=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1622447638, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "image-moderation", + "name": "Image Moderation", + "tagLine": "AI-powered image moderation to detect unsafe content.", + "description": "AI-powered image moderation to detect unsafe content.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://image-moderation-eu.cometchat.io/v1/analyze", + "accessToAppData": false, + "adminURL": "https://image-moderation-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373925, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "report-user", + "name": "Report User", + "tagLine": "Enable users to report other users", + "description": "Enable users to report other users", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://report-user-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1655375268, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "report-message", + "name": "Report User", + "tagLine": "Enable users to report messages in chat", + "description": "Enable users to report messages in chat", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://report-message-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1655447120, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "stickers-stipop", + "name": "Stipop", + "tagLine": "Used to create meaningful experiences in your app with stickers that users love.", + "description": "Used to create meaningful experiences in your app with stickers that users love.", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://stickers-stipop-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1655375268, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "url-shortener-tinyurl", + "name": "TinyURL", + "tagLine": "Helps you convert your long website links into short, manageable URLs that are reliable, secure and never expire.", + "description": "Helps you convert your long website links into short, manageable URLs that are reliable, secure and never expire.", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://url-shortener-tinyurl-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1655375268, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "url-shortener-bitly", + "name": "Bitly", + "tagLine": "Helps you create and share branded links with custom domains at scale", + "description": "Helps you create and share branded links with custom domains at scale", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://url-shortener-bitly-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1655375268, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "human-moderation", + "name": "In-flight Message Moderation", + "tagLine": "Manually moderate content to ensure a safe messaging environment.", + "description": "Manually moderate content to ensure a safe messaging environment.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://human-moderation-eu.cometchat.io/v1/moderate-message", + "accessToAppData": false, + "adminURL": "https://human-moderation-eu.cometchat.io/v1/show-setting?appToken=-NxCcxlAt1qBHn8nibcc98qw5XqTmFB4QYCbJaGO3fo=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373980, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "link-preview", + "name": "Link Preview", + "tagLine": "Generate meta description for URLs.", + "description": "Generate meta description for URLs.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://link-preview-eu.cometchat.io/v1/generate-preview", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568374120, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "mentions", + "name": "Mentions", + "tagLine": "Mention users in conversations", + "description": "Mention users in conversations", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://mentions-eu.cometchat.io/v1/save", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1622447638, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "voice-transcription", + "name": "Voice transcription", + "tagLine": "Used to transcribe Audio Messages", + "description": "Used to transcribe Audio Messages", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://voice-transcription-eu.cometchat.io/v1/transcribe", + "accessToAppData": false, + "adminURL": "https://voice-transcription-eu.cometchat.io/v1/show-setting?appToken=NTxjUhEcKA1uIQ-lCyaYy0hrM2C77fs8y6wRtEZ04wg=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1622447638, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "message-translation", + "name": "Message Translation", + "tagLine": "Translate text messages in different languages on-the-fly.", + "description": "Translate text messages in different languages on-the-fly.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://message-translation-eu.cometchat.io/v1/translate", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373749, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "pin-message", + "name": "Pin Message", + "tagLine": "Pin messages in group conversations", + "description": "Pin message for all the users in a conversation.", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1614671943, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "polls", + "name": "Polls", + "tagLine": "Polls to quickly ask for opinions in chats", + "description": "Polls to quickly ask for opinions in chats", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1594721219, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "profanity-filter", + "name": "Profanity Filter", + "tagLine": "Detect and censor profanity in messages.", + "description": "Detect and censor profanity in messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://profanity-filter-eu.cometchat.io/v1/filter", + "accessToAppData": false, + "adminURL": "https://profanity-filter-eu.cometchat.io/v1/show-setting?appToken=NTxjUhEcKA1uIQ-lCyaYy0hrM2C77fs8y6wRtEZ04wg=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1568373871, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "push-notification", + "name": "Push Notification", + "tagLine": "Notify users via push notifications.", + "description": "Notify users via push notifications.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://push-notification-eu.cometchat.io/v1/send-push", + "accessToAppData": false, + "adminURL": "https://push-notification-eu.cometchat.io/v1/show-sett*ing?appToken=TW6rWujmViKwmmPfp68L4kK_YGWCaYw_wLYjtr0R1-A=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1568373479, + "hooks": { + "data": [ + { + "hook": "after_auth_token_created", + "description": "The hook triggers after the auth token is created.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_auth_token_deleted", + "description": "The hook triggers after the auth token is deleted.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_auth_token_updated", + "description": "The hook triggers after the auth token is updated.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_created", + "description": "The hook triggers after group is created.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_deleted", + "description": "The hook triggers after group is deleted.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_joined", + "description": "The hook triggers after user joins a group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_left", + "description": "The hook triggers after user leaves a group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_members_added", + "description": "The hook triggers after members are added to group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_members_banned", + "description": "The hook triggers after members are banned from group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_members_kicked", + "description": "The hook triggers after member is kicked from group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_group_members_unbanned", + "description": "The hook triggers after members are unbanned from group.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_logged_out", + "description": "The hook triggers after user logs out.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + }, + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + }, + { + "hook": "after_scope_changed", + "description": "The hook will be triggered after changing the scope.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + }, + { + "hook": "after_user_deleted", + "description": "The hook triggers after user is deleted.", + "isActive": true, + "enabled": 1, + "createdAt": 1589548874 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "reactions", + "name": "Reactions", + "tagLine": "React to an individual message with a specific emotion quickly.", + "description": "React to an individual message with a specific emotion quickly.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://reactions-eu.cometchat.io/v1/react", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592815197, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "rich-media", + "name": "Rich Media Preview", + "tagLine": "Generate rich media previews for all popular sites", + "description": "Generate rich media previews for all popular sites", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://rich-media-eu.cometchat.io/v1/preview", + "accessToAppData": false, + "adminURL": "https://rich-media-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1592815197, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "save-message", + "name": "Save Message", + "tagLine": "Saved messages in one-on-one and group conversations", + "description": "Enable users to save messages from one-on-one and group conversations\\n", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1614671960, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "sentiment-analysis", + "name": "Sentiment Analysis", + "tagLine": "AI-powered sentiment analysis for messages.", + "description": "AI-powered sentiment analysis for messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://sentiment-analysis-eu.cometchat.io/v1/analyze", + "accessToAppData": false, + "adminURL": "https://sentiment-analysis-eu.cometchat.io/v1/show-setting?appToken=TEj2rzc_KW_lvlzMnVBUgWnEjmOHhZ_mVs4yktn37s0=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568374255, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "smart-reply", + "name": "Smart Reply", + "tagLine": "Suggest ML-powered ready replies for messages.", + "description": "Suggest ML-powered ready replies for messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://smart-reply-eu.cometchat.io/v1/fetch-reply", + "accessToAppData": false, + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568374179, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "sms-notification", + "name": "SMS Notification", + "tagLine": "Notify users via sms for unread messages.", + "description": "Notify users via sms for unread messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://sms-notification-eu.cometchat.io/v1/send-sms", + "accessToAppData": false, + "adminURL": "https://sms-notification-eu.cometchat.io/v1/show-sett*ing?appToken=6E7gznI3V1RJHCxAb8J7aUZBlltU2c6W7iydzfrWIGM=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373671, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "gifs-tenor", + "name": "Tenor Gifs", + "tagLine": "Send Gifs", + "description": "Send Gifs", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://gifs-tenor-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1592815197, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "e2ee", + "name": "End-to-end Encryption", + "tagLine": "End-to-end encryption is intended to prevent data being read or modified by anyone but the sender and recipient(s).", + "description": "End-to-end encryption is intended to prevent data being read or modified by anyone but the sender and recipient(s).", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://e2ee-eu.cometchat.io/v1/action", + "accessToAppData": false, + "adminURL": "https://e2ee-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1592815197, + "hooks": { + "data": [ + { + "hook": "before_message", + "description": "The hook will be triggered before adding message to database.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "stickers", + "name": "Stickers", + "tagLine": "Send & manage stickers", + "description": "Send & manage stickers", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://stickers-eu.cometchat.io/v1/react", + "accessToAppData": false, + "adminURL": "https://stickers-eu.cometchat.io/v1/show-setting?appToken=geCcCA2y__JXNDpLJVdERM1ysruVsaoABrxO9Xzqu*bk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1592815197, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "intercom", + "name": "Intercom", + "tagLine": "Connect and exchange messages between CometChat and Intercom", + "description": "Connect and exchange messages between CometChat and Intercom", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://intercom-eu.cometchat.io/v1/contact-support", + "accessToAppData": false, + "adminURL": "https://intercom-eu.cometchat.io/v1/show-setting?appToken=geCcCA2y__JXNDpLJVdERM1ysruVsaoABrxO9Xzqu*bk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1622447638, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message.", + "isActive": true, + "enabled": 1, + "createdAt": 1555001765 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "broadcast", + "name": "Video Broadcasting", + "tagLine": "Real-time live video streaming & broadcasting to 1000s of viewers", + "description": "Real-time live video streaming & broadcasting to 1000s of viewers", + "author": "CometChat", + "email": "help@cometchat.com", + "accessToAppData": false, + "adminURL": "https://broadcasting-eu.cometchat.io/v1/show-setting?appToken=Lv2_oE3L6JHOMbOiNNBjWsi0v6mV9r-aKVLofy_KZ7s=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1622447638, + "hooks": { + "data": [] + }, + "categories": { + "data": [] + } + }, + { + "id": "virus-malware-scanner", + "name": "Virus Malware Scanner", + "tagLine": "Scan user uploaded files & media for viruses and malware.", + "description": "Scan user uploaded files & media for viruses and malware.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://virus-malware-scanner-eu.cometchat.io/v1/scan", + "accessToAppData": false, + "adminURL": "https://virus-malware-scanner-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": true, + "createdAt": 1568373925, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "stickers", + "name": "Stickers", + "tagLine": "Enables Stickers.", + "description": "The Stickers Extension is more like an image manager which allows you to quickly add/remove stickers directly from the dashboard.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://stickers-eu.cometchat.io/v1/", + "accessToAppData": false, + "adminURL": "https://stickers-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHB6dd", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1568373925, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "sms-notification", + "name": "SMS Notification", + "tagLine": "Notify users via sms for unread messages.", + "description": "Notify users via sms for unread messages.", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://sms-notification-eu.cometchat.io/v1/send-sms", + "accessToAppData": false, + "adminURL": "https://sms-notification-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyWqAaw1ekcrk", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1568373925, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } + }, + { + "id": "email-replies", + "name": "Email Replies", + "tagLine": "Respond to conversations by replying to email notifications", + "description": "Respond to conversations by replying to email notifications", + "author": "CometChat", + "email": "help@cometchat.com", + "webhookURL": "https://email-replies-eu.cometchat.io/v1/", + "accessToAppData": false, + "adminURL": "https://email-replies-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZzQ0OGU3NzlmMGZhYyJ9", + "websiteURL": "https://www.cometchat.com", + "isActive": true, + "isPrivate": false, + "isInvisible": false, + "isThirdParty": false, + "createdAt": 1568373925, + "hooks": { + "data": [ + { + "hook": "after_message", + "description": "The hook triggers after sending a message", + "isActive": true, + "enabled": 1, + "createdAt": 1552383451 + } + ] + }, + "categories": { + "data": [] + } } - ], - "responses": { - "200": { - "description": "List Apps", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/appSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "", - "name": "", - "plan": "trial", - "trialEndsAt": 1588887393, - "state": "active", - "owner": 1656, - "region": "us", - "createdAt": 1586295393, - "appOwner": { - "id": "1656", - "name": "", - "email": "youremail@domain.com" - }, - "appRegion": { - "id": "us", - "name": "USA", - "description": "The USA region has serverslocated at Ohio." - }, - "accessKey": "", - "apiKeys": { - "": { - "apiKey": "", - "name": "Rest API Key", - "scope": "fullAccess", - "createdBy": "app_system" - }, - "": { - "apiKey": "", - "name": "Auth Key", - "scope": "authOnly", - "createdBy": "app_system" - } - } - } + ], + "meta": { + "pagination": { + "total": 32, + "count": 25, + "per_page": 25, + "current_page": 1, + "total_pages": 2, + "links": { + "next": "http://apimgmt-local.cometchat-dev.com//apps/197448e779f0fac/extensions?page=2" + } + } + } + } + } + } + } + } + } + }, + "/apps/{appId}/extensions/widget/v2/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Chat Widgets Create", + "description": "Chat Widgets Create a new Chat Widget.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chatWidgetRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Create Chat Widget", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { + "properties": { + "data": { + "properties": { + "widgetId": { + "type": "string" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" + }, + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "widgetId": "f7ee7c30-416b-4398-9edd-2595cefd676f" + } + } + } } + } } + } }, - "/apps/{appId}": { - "delete": { - "tags": [ - "App" - ], - "summary": "Delete", - "operationId": "delete-app", - "description": "Schedule a specific app for deletion.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "List Apps", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "scheduledToDeleteAt": 1631203178 - } + "operationId": "store-chat-widget" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Chat Widgets Update", + "description": "Chat Widgets Update an existing Chat Widget.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chatWidgetPutSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Create Chat Widget", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { + "properties": { + "data": { + "properties": { + "success": { + "type": "boolean" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "success": true + } } + } } + } } + } }, - "/apps/{appId}/usage": { - "post": { - "tags": [ - "App" - ], - "summary": "Fetch usage", - "description": "Retrieves usage data for multi-tenant apps.", - "operationId": "fetch-multi-tenant-usage", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "name": "appId", - "in": "path", - "description": "The parent appId to which the subscription is linked.", - "required": true, - "schema": { - "type": "string" + "operationId": "update-chat-widget" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Chat Widgets List", + "description": "Chat Widgets List all the Chat Widgets for an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Create Chat Widget", + "content": { + "application/json": { + "schema": { + "properties": { + "": { + "$ref": "#/components/schemas/chatWidgetResponseSchema" + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } + }, + "type": "object" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "usePreviousBillingCycle": { - "description": "Indicates whether the usage from the previous billing cycle should be retrieved.\n\nIf set to false, the usage for the current cycle will be fetched.\n\nIf set to true, the usage from the previous cycle will be fetched.", - "type": "boolean" - } - }, - "type": "object" - } + }, + "type": "object" + }, + "example": { + "data": { + "statusCode": 200, + "success": true, + "body": { + "data": [ + { + "configuration": { + "name": "Test Chat Widget", + "style": { + "docked_layout_icon_background": "#03a9f4", + "custom_js": "v2", + "docked_layout_icon_close": "https://widget-js.cometchat.io/v2/resources/chat_close.svg", + "custom_css": "string", + "docked_layout_icon_open": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg", + "primary_color": "#03A9F4", + "foreground_color": "#000000", + "background_color": "#FFFFFF", + "override_system_background_colors": true + }, + "main": { + "allow_message_reactions": true, + "enable_collaborative_whiteboard": true, + "enable_collaborative_document": true, + "enable_video_calling": true, + "enable_editing_messages": true, + "enable_sending_messages": true, + "allow_moderator_to_delete_member_messages": true, + "join_or_leave_groups": true, + "block_user": true, + "enable_voice_calling": true, + "send_emojis": true, + "send_files": true, + "view_shared_media": true, + "enable_sound_for_messages": true, + "send_photos_videos": true, + "show_stickers": true, + "enable_sound_for_calls": true, + "show_call_notifications": true, + "view_group_members": true, + "allow_delete_groups": true, + "allow_kick_ban_members": true, + "hide_join_leave_notifications": true, + "enable_message_translation": true, + "send_message_in_private_to_group_member": true, + "create_groups": true, + "show_typing_indicators": true, + "show_user_presence": true, + "allow_add_members": true, + "enable_deleting_messages": true, + "enable_threaded_replies": true, + "show_delivery_read_indicators": true, + "hide_deleted_messages": true, + "allow_creating_polls": true, + "allow_promote_demote_members": true, + "share_live_reactions": true, + "show_emojis_in_larger_size": true, + "allow_mention_members": false, + "enable_replying_to_messages": false, + "enable_share_copy_forward_messages": false, + "highlight_messages_from_moderators": false, + "show_call_recording_option": false, + "send_voice_notes": true, + "send_gifs": false, + "share_location": false, + "set_groups_in_qna_mode_by_moderators": false, + "send_reply_in_private_to_group_member": false + }, + "version": "v2", + "sidebar": { + "group_listing": "public_and_password_protected_groups", + "start_a_new_conversation": "all_chats", + "user_settings": true, + "calls": true, + "chats": true, + "user_listing": "all_users", + "groups": true, + "recent_chat_listing": "all_chats", + "sidebar_navigation_sequence": [ + "chats", + "users", + "groups", + "calls", + "settings" + ], + "users": true + }, + "appId": "564663ddb71bbb" + }, + "widgetId": "c59766f0-5318-4c82-b6b3-fa09ee80a506" + } + ] + }, + "responseTime": 0.11409401893615723 + } + } + } + } + } + }, + "operationId": "list-chat-widget" + } + }, + "/apps/{appId}/extensions/gifs-giphy/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Giphy Store settings", + "description": "Giphy : Saving the settings for Giphy extensions for the first time", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/giphyRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Giphy Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/giphySchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Updated App", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/appSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Your usage request has been accepted and is being processed for . You will receive an email with the details at @example.com" - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" } + } } + } } + } } + } }, - "/apps/{appId}/extensions": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Enable/Disable", - "operationId": "enable-extension", - "description": "Enables or disables the extension for an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "enabled": { - "description": "Array of extension IDs that has to be enabled.", - "type": "array", - "items": { - "type": "string" - } - }, - "disabled": { - "description": "Array of extension IDs that has to be disabled.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } + "operationId": "store-settings-gifs-giphy" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Giphy Update settings", + "description": "Giphy : Update the settings for Giphy extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/giphyRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Create Chat Widget", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/giphySchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Enabled/Disabled Extension", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/extensionSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "enabled": { - "extention_id1": { - "success": true, - "message": "The extension extension_id1 has been enabled successfully." - }, - "extention_id2": { - "success": true, - "message": "The extension extension_id2 has been enabled successfully." - } - }, - "disabled": { - "extention_id3": { - "success": true, - "message": "The extension extension_id1 has been enabled successfully." - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" } + } } + } } - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "List Extensions", - "operationId": "list-extensions", - "description": "List the Extensions.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/perPage--extensions" + } + } + } + }, + "operationId": "update-settings-gifs-giphy" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Giphy Get settings", + "description": "Giphy : Returns the settings for Giphy extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Giphy Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/giphyGetSchema" + } + }, + "type": "object" } - ], - "responses": { - "200": { - "description": "Enabled/Disabled Extension", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/extensionListSchema" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "widget", - "name": "Chat Widget", - "tagLine": "Drag-n-drop chat plugin for your website", - "description": "Drag-n-drop chat plugin for your website", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://widget-eu.cometchats.io", - "accessToAppData": false, - "adminURL": "https://widget-eu.cometchat.io/v1/show-setting?appToken=BArL8wLC1jkTws5bgH1DDvAMDevHdiAmMI5NGyQXs-I=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1591812821, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "document", - "name": "Collaborative document", - "tagLine": "Allows you create and share documents for collaboration", - "description": "Allows you create and share documents for collaboration", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://document-eu.cometchat.io/v1/create", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592815197, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "whiteboard", - "name": "Collaborative whiteboard", - "tagLine": "Allows you create and share whiteboards for collaboration", - "description": "Allows you create and share whiteboards for collaboration", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://whiteboard-eu.cometchat.io/v1/create", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1595838286, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "data-masking", - "name": "Data Masking", - "tagLine": "Hide phone numbers, email addresses and other sensitive information in messages.", - "description": "Hide phone numbers, email addresses and other sensitive information in messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://data-masking-eu.cometchat.io/v1/filter", - "accessToAppData": false, - "adminURL": "https://data-masking-eu.cometchat.io/v1/show-setting?appToken=DSjVCnryJFoSIgvIaCJUWF5sS1mMLy7V-pD6HoNlA3A=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592815197, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "email-notification", - "name": "Email Notification", - "tagLine": "Notify users via email for unread messages.", - "description": "Notify users via email for unread messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://email-notification-eu.cometchat.io/v1/send-email", - "accessToAppData": false, - "adminURL": "https://email-notification-eu.cometchat.io/v1/show-setting?appToken=c2JH61Mw2dnThPa_tHfP284hF6-8kbAvVfIlNSSzgKk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373595, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "email-replies", - "name": "Email Replies", - "tagLine": "Reply to texts directly via emails", - "description": "Replying in a conversation from Email notifications just got simpler. With Email Replies, users can respond in a conversation by replying to the email.", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://email-replies-eu.cometchat.io/v1/show-setting?appToken=slIAhyFb4PCG5R4dJBM4lTlYTdYznNORCBPL-Rxw_Qs=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592815197, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "emojis", - "name": "Emojis", - "tagLine": "Emojis for web", - "description": "Emojis for web", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://emojis-eu.cometchat.io/v1/emojis", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592829829, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "gifs-gfycat", - "name": "Gfycat", - "tagLine": "Get the best GIFS for all your conversations", - "description": "Get the best GIFS for all your conversations", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1622447638, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "gifs-giphy", - "name": "Giphy", - "tagLine": "Be Animated", - "description": "Be Animated", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://gifs-giphy-eu.cometchat.io/v1/show-setting?appToken=Lv2_oE3L6JHOMbOiNNBjWsi0v6mV9r-aKVLofy_KZ7s=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1622447638, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "image-moderation", - "name": "Image Moderation", - "tagLine": "AI-powered image moderation to detect unsafe content.", - "description": "AI-powered image moderation to detect unsafe content.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://image-moderation-eu.cometchat.io/v1/analyze", - "accessToAppData": false, - "adminURL": "https://image-moderation-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373925, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "report-user", - "name": "Report User", - "tagLine": "Enable users to report other users", - "description": "Enable users to report other users", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://report-user-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1655375268, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "report-message", - "name": "Report User", - "tagLine": "Enable users to report messages in chat", - "description": "Enable users to report messages in chat", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://report-message-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1655447120, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "stickers-stipop", - "name": "Stipop", - "tagLine": "Used to create meaningful experiences in your app with stickers that users love.", - "description": "Used to create meaningful experiences in your app with stickers that users love.", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://stickers-stipop-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1655375268, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "url-shortener-tinyurl", - "name": "TinyURL", - "tagLine": "Helps you convert your long website links into short, manageable URLs that are reliable, secure and never expire.", - "description": "Helps you convert your long website links into short, manageable URLs that are reliable, secure and never expire.", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://url-shortener-tinyurl-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1655375268, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "url-shortener-bitly", - "name": "Bitly", - "tagLine": "Helps you create and share branded links with custom domains at scale", - "description": "Helps you create and share branded links with custom domains at scale", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://url-shortener-bitly-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1655375268, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "human-moderation", - "name": "In-flight Message Moderation", - "tagLine": "Manually moderate content to ensure a safe messaging environment.", - "description": "Manually moderate content to ensure a safe messaging environment.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://human-moderation-eu.cometchat.io/v1/moderate-message", - "accessToAppData": false, - "adminURL": "https://human-moderation-eu.cometchat.io/v1/show-setting?appToken=-NxCcxlAt1qBHn8nibcc98qw5XqTmFB4QYCbJaGO3fo=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373980, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "link-preview", - "name": "Link Preview", - "tagLine": "Generate meta description for URLs.", - "description": "Generate meta description for URLs.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://link-preview-eu.cometchat.io/v1/generate-preview", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568374120, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "mentions", - "name": "Mentions", - "tagLine": "Mention users in conversations", - "description": "Mention users in conversations", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://mentions-eu.cometchat.io/v1/save", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1622447638, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "voice-transcription", - "name": "Voice transcription", - "tagLine": "Used to transcribe Audio Messages", - "description": "Used to transcribe Audio Messages", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://voice-transcription-eu.cometchat.io/v1/transcribe", - "accessToAppData": false, - "adminURL": "https://voice-transcription-eu.cometchat.io/v1/show-setting?appToken=NTxjUhEcKA1uIQ-lCyaYy0hrM2C77fs8y6wRtEZ04wg=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1622447638, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "message-translation", - "name": "Message Translation", - "tagLine": "Translate text messages in different languages on-the-fly.", - "description": "Translate text messages in different languages on-the-fly.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://message-translation-eu.cometchat.io/v1/translate", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373749, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "pin-message", - "name": "Pin Message", - "tagLine": "Pin messages in group conversations", - "description": "Pin message for all the users in a conversation.", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1614671943, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "polls", - "name": "Polls", - "tagLine": "Polls to quickly ask for opinions in chats", - "description": "Polls to quickly ask for opinions in chats", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1594721219, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "profanity-filter", - "name": "Profanity Filter", - "tagLine": "Detect and censor profanity in messages.", - "description": "Detect and censor profanity in messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://profanity-filter-eu.cometchat.io/v1/filter", - "accessToAppData": false, - "adminURL": "https://profanity-filter-eu.cometchat.io/v1/show-setting?appToken=NTxjUhEcKA1uIQ-lCyaYy0hrM2C77fs8y6wRtEZ04wg=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1568373871, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "push-notification", - "name": "Push Notification", - "tagLine": "Notify users via push notifications.", - "description": "Notify users via push notifications.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://push-notification-eu.cometchat.io/v1/send-push", - "accessToAppData": false, - "adminURL": "https://push-notification-eu.cometchat.io/v1/show-sett*ing?appToken=TW6rWujmViKwmmPfp68L4kK_YGWCaYw_wLYjtr0R1-A=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1568373479, - "hooks": { - "data": [ - { - "hook": "after_auth_token_created", - "description": "The hook triggers after the auth token is created.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_auth_token_deleted", - "description": "The hook triggers after the auth token is deleted.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_auth_token_updated", - "description": "The hook triggers after the auth token is updated.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_created", - "description": "The hook triggers after group is created.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_deleted", - "description": "The hook triggers after group is deleted.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_joined", - "description": "The hook triggers after user joins a group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_left", - "description": "The hook triggers after user leaves a group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_members_added", - "description": "The hook triggers after members are added to group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_members_banned", - "description": "The hook triggers after members are banned from group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_members_kicked", - "description": "The hook triggers after member is kicked from group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_group_members_unbanned", - "description": "The hook triggers after members are unbanned from group.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_logged_out", - "description": "The hook triggers after user logs out.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - }, - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - }, - { - "hook": "after_scope_changed", - "description": "The hook will be triggered after changing the scope.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - }, - { - "hook": "after_user_deleted", - "description": "The hook triggers after user is deleted.", - "isActive": true, - "enabled": 1, - "createdAt": 1589548874 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "reactions", - "name": "Reactions", - "tagLine": "React to an individual message with a specific emotion quickly.", - "description": "React to an individual message with a specific emotion quickly.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://reactions-eu.cometchat.io/v1/react", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592815197, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "rich-media", - "name": "Rich Media Preview", - "tagLine": "Generate rich media previews for all popular sites", - "description": "Generate rich media previews for all popular sites", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://rich-media-eu.cometchat.io/v1/preview", - "accessToAppData": false, - "adminURL": "https://rich-media-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1592815197, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "save-message", - "name": "Save Message", - "tagLine": "Saved messages in one-on-one and group conversations", - "description": "Enable users to save messages from one-on-one and group conversations\\n", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1614671960, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "sentiment-analysis", - "name": "Sentiment Analysis", - "tagLine": "AI-powered sentiment analysis for messages.", - "description": "AI-powered sentiment analysis for messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://sentiment-analysis-eu.cometchat.io/v1/analyze", - "accessToAppData": false, - "adminURL": "https://sentiment-analysis-eu.cometchat.io/v1/show-setting?appToken=TEj2rzc_KW_lvlzMnVBUgWnEjmOHhZ_mVs4yktn37s0=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568374255, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "smart-reply", - "name": "Smart Reply", - "tagLine": "Suggest ML-powered ready replies for messages.", - "description": "Suggest ML-powered ready replies for messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://smart-reply-eu.cometchat.io/v1/fetch-reply", - "accessToAppData": false, - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568374179, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "sms-notification", - "name": "SMS Notification", - "tagLine": "Notify users via sms for unread messages.", - "description": "Notify users via sms for unread messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://sms-notification-eu.cometchat.io/v1/send-sms", - "accessToAppData": false, - "adminURL": "https://sms-notification-eu.cometchat.io/v1/show-sett*ing?appToken=6E7gznI3V1RJHCxAb8J7aUZBlltU2c6W7iydzfrWIGM=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373671, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "gifs-tenor", - "name": "Tenor Gifs", - "tagLine": "Send Gifs", - "description": "Send Gifs", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://gifs-tenor-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1592815197, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "e2ee", - "name": "End-to-end Encryption", - "tagLine": "End-to-end encryption is intended to prevent data being read or modified by anyone but the sender and recipient(s).", - "description": "End-to-end encryption is intended to prevent data being read or modified by anyone but the sender and recipient(s).", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://e2ee-eu.cometchat.io/v1/action", - "accessToAppData": false, - "adminURL": "https://e2ee-eu.cometchat.io/v1/show-setting?appToken=08RBa07frnTq8VnnGpR6XeHaKCHwplEXcsevSP5xz*Q4=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1592815197, - "hooks": { - "data": [ - { - "hook": "before_message", - "description": "The hook will be triggered before adding message to database.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "stickers", - "name": "Stickers", - "tagLine": "Send & manage stickers", - "description": "Send & manage stickers", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://stickers-eu.cometchat.io/v1/react", - "accessToAppData": false, - "adminURL": "https://stickers-eu.cometchat.io/v1/show-setting?appToken=geCcCA2y__JXNDpLJVdERM1ysruVsaoABrxO9Xzqu*bk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1592815197, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "intercom", - "name": "Intercom", - "tagLine": "Connect and exchange messages between CometChat and Intercom", - "description": "Connect and exchange messages between CometChat and Intercom", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://intercom-eu.cometchat.io/v1/contact-support", - "accessToAppData": false, - "adminURL": "https://intercom-eu.cometchat.io/v1/show-setting?appToken=geCcCA2y__JXNDpLJVdERM1ysruVsaoABrxO9Xzqu*bk=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1622447638, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message.", - "isActive": true, - "enabled": 1, - "createdAt": 1555001765 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "broadcast", - "name": "Video Broadcasting", - "tagLine": "Real-time live video streaming & broadcasting to 1000s of viewers", - "description": "Real-time live video streaming & broadcasting to 1000s of viewers", - "author": "CometChat", - "email": "help@cometchat.com", - "accessToAppData": false, - "adminURL": "https://broadcasting-eu.cometchat.io/v1/show-setting?appToken=Lv2_oE3L6JHOMbOiNNBjWsi0v6mV9r-aKVLofy_KZ7s=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1622447638, - "hooks": { - "data": [] - }, - "categories": { - "data": [] - } - }, - { - "id": "virus-malware-scanner", - "name": "Virus Malware Scanner", - "tagLine": "Scan user uploaded files & media for viruses and malware.", - "description": "Scan user uploaded files & media for viruses and malware.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://virus-malware-scanner-eu.cometchat.io/v1/scan", - "accessToAppData": false, - "adminURL": "https://virus-malware-scanner-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZCI6IjE5NzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": true, - "createdAt": 1568373925, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "stickers", - "name": "Stickers", - "tagLine": "Enables Stickers.", - "description": "The Stickers Extension is more like an image manager which allows you to quickly add/remove stickers directly from the dashboard.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://stickers-eu.cometchat.io/v1/", - "accessToAppData": false, - "adminURL": "https://stickers-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHB6dd", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1568373925, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "sms-notification", - "name": "SMS Notification", - "tagLine": "Notify users via sms for unread messages.", - "description": "Notify users via sms for unread messages.", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://sms-notification-eu.cometchat.io/v1/send-sms", - "accessToAppData": false, - "adminURL": "https://sms-notification-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyWqAaw1ekcrk", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1568373925, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - }, - { - "id": "email-replies", - "name": "Email Replies", - "tagLine": "Respond to conversations by replying to email notifications", - "description": "Respond to conversations by replying to email notifications", - "author": "CometChat", - "email": "help@cometchat.com", - "webhookURL": "https://email-replies-eu.cometchat.io/v1/", - "accessToAppData": false, - "adminURL": "https://email-replies-eu.cometchat.io/v1/show-setting?appToken=cDnVkg8SFY7wjiaHjpGWyTqYaw9ekcrk-tAHhSyxkDc=.eyJhcHBJZzQ0OGU3NzlmMGZhYyJ9", - "websiteURL": "https://www.cometchat.com", - "isActive": true, - "isPrivate": false, - "isInvisible": false, - "isThirdParty": false, - "createdAt": 1568373925, - "hooks": { - "data": [ - { - "hook": "after_message", - "description": "The hook triggers after sending a message", - "isActive": true, - "enabled": 1, - "createdAt": 1552383451 - } - ] - }, - "categories": { - "data": [] - } - } - ], - "meta": { - "pagination": { - "total": 32, - "count": 25, - "per_page": 25, - "current_page": 1, - "total_pages": 2, - "links": { - "next": "http://apimgmt-local.cometchat-dev.com//apps/197448e779f0fac/extensions?page=2" - } - } - } - } - } + }, + "type": "object" + }, + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "appId": 19244939392 } + } } + } } + } } + } }, - "/apps/{appId}/extensions/widget/v2/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Chat Widgets Create", - "description": "Chat Widgets Create a new Chat Widget.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/chatWidgetRequestSchema" - } + "operationId": "get-settings-gifs-giphy" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Giphy Delete settings for Giphy", + "description": "Giphy : Deletes the settings for Giphy extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Giphy Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/giphyDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Create Chat Widget", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "data": { - "properties": { - "widgetId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "widgetId": "f7ee7c30-416b-4398-9edd-2595cefd676f" - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "success": true } + } } - }, - "operationId": "store-chat-widget" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Chat Widgets Update", - "description": "Chat Widgets Update an existing Chat Widget.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/chatWidgetPutSchema" - } + } + } + } + } + } + }, + "operationId": "delete-settings-giphy" + } + }, + "/apps/{appId}/extensions/xss-filter/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "XSS Filter Store settings", + "description": "XSS Filter : Store new settings for XSS Filter extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/xssRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store XSS Filter Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/xssSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Create Chat Widget", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "update-chat-widget" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Chat Widgets List", - "description": "Chat Widgets List all the Chat Widgets for an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Create Chat Widget", - "content": { - "application/json": { - "schema": { - "properties": { - "": { - "$ref": "#/components/schemas/chatWidgetResponseSchema" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "body": { - "data": [ - { - "configuration": { - "name": "Test Chat Widget", - "style": { - "docked_layout_icon_background": "#03a9f4", - "custom_js": "v2", - "docked_layout_icon_close": "https://widget-js.cometchat.io/v2/resources/chat_close.svg", - "custom_css": "string", - "docked_layout_icon_open": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg", - "primary_color": "#03A9F4", - "foreground_color": "#000000", - "background_color": "#FFFFFF", - "override_system_background_colors": true - }, - "main": { - "allow_message_reactions": true, - "enable_collaborative_whiteboard": true, - "enable_collaborative_document": true, - "enable_video_calling": true, - "enable_editing_messages": true, - "enable_sending_messages": true, - "allow_moderator_to_delete_member_messages": true, - "join_or_leave_groups": true, - "block_user": true, - "enable_voice_calling": true, - "send_emojis": true, - "send_files": true, - "view_shared_media": true, - "enable_sound_for_messages": true, - "send_photos_videos": true, - "show_stickers": true, - "enable_sound_for_calls": true, - "show_call_notifications": true, - "view_group_members": true, - "allow_delete_groups": true, - "allow_kick_ban_members": true, - "hide_join_leave_notifications": true, - "enable_message_translation": true, - "send_message_in_private_to_group_member": true, - "create_groups": true, - "show_typing_indicators": true, - "show_user_presence": true, - "allow_add_members": true, - "enable_deleting_messages": true, - "enable_threaded_replies": true, - "show_delivery_read_indicators": true, - "hide_deleted_messages": true, - "allow_creating_polls": true, - "allow_promote_demote_members": true, - "share_live_reactions": true, - "show_emojis_in_larger_size": true, - "allow_mention_members": false, - "enable_replying_to_messages": false, - "enable_share_copy_forward_messages": false, - "highlight_messages_from_moderators": false, - "show_call_recording_option": false, - "send_voice_notes": true, - "send_gifs": false, - "share_location": false, - "set_groups_in_qna_mode_by_moderators": false, - "send_reply_in_private_to_group_member": false - }, - "version": "v2", - "sidebar": { - "group_listing": "public_and_password_protected_groups", - "start_a_new_conversation": "all_chats", - "user_settings": true, - "calls": true, - "chats": true, - "user_listing": "all_users", - "groups": true, - "recent_chat_listing": "all_chats", - "sidebar_navigation_sequence": [ - "chats", - "users", - "groups", - "calls", - "settings" - ], - "users": true - }, - "appId": "564663ddb71bbb" - }, - "widgetId": "c59766f0-5318-4c82-b6b3-fa09ee80a506" - } - ] - }, - "responseTime": 0.11409401893615723 - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-xss-filter" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "XSS Filter Update settings", + "description": "XSS Filter : Update the settings for XSS Filter extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/xssRequestUpdateSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update XSS filters Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/xssSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "list-chat-widget" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/gifs-giphy/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Giphy Store settings", - "description": "Giphy : Saving the settings for Giphy extensions for the first time", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/giphyRequestSchema" - } + "operationId": "update-settings-xss-filter" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "XSS Filter Get settings", + "description": "XSS Filter : Get settings for XSS Filter extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Update XSS filters Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/xssSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Giphy Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/giphySchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false, + "appId": "199319cc4d186d86" } + } } - }, - "operationId": "store-settings-gifs-giphy" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Giphy Update settings", - "description": "Giphy : Update the settings for Giphy extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/giphyRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-xss-filter" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "XSS Filter Delete settings", + "description": "XSS Filter : Delete the settings for XSS Filter extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete XSS filters Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/xssSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Create Chat Widget", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/giphySchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "update-settings-gifs-giphy" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Giphy Get settings", - "description": "Giphy : Returns the settings for Giphy extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Giphy Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/giphyGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "giphyApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "appId": 19244939392 - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-xss-filter" + } + }, + "/apps/{appId}/extensions/image-moderation/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Image Moderation Store settings", + "description": "Image Moderation : Store new settings for Image moderation extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/imageModerationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Image Moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/imageModerationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-gifs-giphy" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Giphy Delete settings for Giphy", - "description": "Giphy : Deletes the settings for Giphy extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Giphy Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/giphyDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "success": true - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "delete-settings-giphy" + } + } + } } + } }, - "/apps/{appId}/extensions/xss-filter/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "XSS Filter Store settings", - "description": "XSS Filter : Store new settings for XSS Filter extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/xssRequestSchema" - } + "operationId": "store-settings-image-moderation" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Image Moderation Update settings", + "description": "Image Moderation : Update the settings for Image moderation extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/imageModerationUpdateRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Image Moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/imageModerationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store XSS Filter Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/xssSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "store-settings-xss-filter" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "XSS Filter Update settings", - "description": "XSS Filter : Update the settings for XSS Filter extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/xssRequestUpdateSchema" - } + } + } + } + } + } + }, + "operationId": "update-settings-image-moderation" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Image Moderation Get settings", + "description": "Image Moderation : Get settings for Image moderation extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Image Moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/imageModerationGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update XSS filters Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/xssSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } + } + } + } + } + } + }, + "operationId": "get-settings-image-moderation" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Image Moderation Delete settings", + "description": "Image Moderation : Delete the settings for Image moderation extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Image Moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/imageModerationDeleteSchema" + } + }, + "type": "object" + } + }, + "type": "object" }, - "operationId": "update-settings-xss-filter" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "XSS Filter Get settings", - "description": "XSS Filter : Get settings for XSS Filter extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "success": true + } + } } - ], - "responses": { - "200": { - "description": "Update XSS filters Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/xssSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false, - "appId": "199319cc4d186d86" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-image-moderation" + } + }, + "/apps/{appId}/extensions/report-user/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Report user Store settings", + "description": "Report user : Store new settings for Report user extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/reportUserRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Report User Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportUserCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-xss-filter" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "XSS Filter Delete settings", - "description": "XSS Filter : Delete the settings for XSS Filter extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "1234" + } + } } - ], - "responses": { - "200": { - "description": "Delete XSS filters Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/xssSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-report-user" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Report user Update settings", + "description": "Report user : Update the settings for Report user extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/reportUserRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Report User Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportUserCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-xss-filter" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "12345" + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/image-moderation/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Image Moderation Store settings", - "description": "Image Moderation : Store new settings for Image moderation extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/imageModerationRequestSchema" - } + "operationId": "update-settings-report-user" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Report user Get settings", + "description": "Report user : Get settings for Report user extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Report User Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportUserGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Image Moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/imageModerationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "12345", + "appId": "134234d234rf33" + } + } + } + } + } + } + } + } + }, + "operationId": "get-settings-report-user" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Report user Delete settings", + "description": "Report user : Delete the settings for Report user extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Report User Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportUserDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-image-moderation" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Image Moderation Update settings", - "description": "Image Moderation : Update the settings for Image moderation extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/imageModerationUpdateRequestSchema" - } + } + } + } + } + } + }, + "operationId": "delete-settings-report-user" + } + }, + "/apps/{appId}/extensions/report-message/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Report message Store settings", + "description": "Report message : Store new settings for Report message extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/reportMessageRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Report Message Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportMessageCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Image Moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/imageModerationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "1234" } + } } - }, - "operationId": "update-settings-image-moderation" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Image Moderation Get settings", - "description": "Image Moderation : Get settings for Image moderation extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Image Moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/imageModerationGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-report-message" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Report message Update settings", + "description": "Report message : Update the settings for Report message extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/reportMessageRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Report Message Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportMessageCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-image-moderation" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Image Moderation Delete settings", - "description": "Image Moderation : Delete the settings for Image moderation extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Image Moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/imageModerationDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "success": true - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "12345" } + } } - }, - "operationId": "delete-settings-image-moderation" + } + } + } } + } }, - "/apps/{appId}/extensions/report-user/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Report user Store settings", - "description": "Report user : Store new settings for Report user extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/reportUserRequestSchema" - } + "operationId": "update-settings-report-message" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Report message Get settings", + "description": "Report message : Get settings for Report message extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Report Message Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportMessageGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Report User Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportUserCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "1234" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "maxReports": 3, + "useWebhook": true, + "webhookURL": "https://example.com/take-action", + "basicAuthUsername": "abcd", + "basicAuthPassword": "12345", + "appId": "134234d234rf33" } + } } - }, - "operationId": "store-settings-report-user" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Report user Update settings", - "description": "Report user : Update the settings for Report user extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/reportUserRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-report-message" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Report message Delete settings", + "description": "Report message : Delete the settings for Report message extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Report Message Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/reportMessageDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Report User Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportUserCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "12345" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-report-message" + } + }, + "/apps/{appId}/extensions/voice-transcription/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Voice transcription Store settings", + "description": "Voice transcription : Store new settings for Voice transcription extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/voiceTranscriptionRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Voice transcription Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/voiceTranscriptionCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-report-user" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Report user Get settings", - "description": "Report user : Get settings for Report user extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "revaiAPIKey": "dwijdiwdwi####" + } + } } - ], - "responses": { - "200": { - "description": "Get Report User Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportUserGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "12345", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-voice-transcription" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Voice transcription Update settings", + "description": "Voice transcription : Update the settings for Voice transcription extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/voiceTranscriptionRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Voice transcription Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/voiceTranscriptionCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-report-user" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Report user Delete settings", - "description": "Report user : Delete the settings for Report user extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Report User Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportUserDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "revaiAPIKey": "dwijdiwdwi####" } + } } - }, - "operationId": "delete-settings-report-user" + } + } + } } + } }, - "/apps/{appId}/extensions/report-message/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Report message Store settings", - "description": "Report message : Store new settings for Report message extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/reportMessageRequestSchema" - } + "operationId": "update-settings-voice-transcription" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Voice transcription Get settings", + "description": "Voice transcription : Get settings for Voice transcription extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Voice transcription Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/voiceTranscriptionGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Report Message Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportMessageCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "1234" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "revaiAPIKey": "dwijdiwdwi####", + "appId": "134234d234rf33" } + } } - }, - "operationId": "store-settings-report-message" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Report message Update settings", - "description": "Report message : Update the settings for Report message extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/reportMessageRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-voice-transcription" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Voice transcription Delete settings", + "description": "Voice transcription : Delete the settings for Voice transcription extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Voice transcription Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/voiceTranscriptionDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Report Message Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportMessageCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "12345" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-voice-transcription" + } + }, + "/apps/{appId}/extensions/stickers-stipop/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Stipop Store settings", + "description": "Stipop : Store new settings for Stipop extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/stipopRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Stipop Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stipopCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-report-message" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Report message Get settings", - "description": "Report message : Get settings for Report message extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "stipopApiKey": "e24ce#2324b2jrbj3212", + "stipopAppId": "9221#njdwe112213131" + } + } } - ], - "responses": { - "200": { - "description": "Get Report Message Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportMessageGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "maxReports": 3, - "useWebhook": true, - "webhookURL": "https://example.com/take-action", - "basicAuthUsername": "abcd", - "basicAuthPassword": "12345", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-stickers-stipop" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Stipop Update settings", + "description": "Stipop : Update the settings for Stipop extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/stipopRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Stipop Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stipopCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-report-message" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Report message Delete settings", - "description": "Report message : Delete the settings for Report message extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Report Message Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/reportMessageDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "stipopApiKey": "e24ce#2324b2jrbj3212", + "stipopAppId": "9221#njdwe112213131" } + } } - }, - "operationId": "delete-settings-report-message" + } + } + } } + } }, - "/apps/{appId}/extensions/voice-transcription/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Voice transcription Store settings", - "description": "Voice transcription : Store new settings for Voice transcription extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/voiceTranscriptionRequestSchema" - } + "operationId": "update-settings-stickers-stipop" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Stipop Get settings", + "description": "Stipop : Get settings for Stipop extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Stipop Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stipopGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Voice transcription Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/voiceTranscriptionCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "revaiAPIKey": "dwijdiwdwi####" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "stipopApiKey": "e24ce#2324b2jrbj3212", + "stipopAppId": "9221#njdwe112213131", + "appId": "134234d234rf33" } + } } - }, - "operationId": "store-settings-voice-transcription" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Voice transcription Update settings", - "description": "Voice transcription : Update the settings for Voice transcription extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/voiceTranscriptionRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-stickers-stipop" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Stipop Delete settings", + "description": "Stipop : Delete the settings for Stipop extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Stipop Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stipopDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Voice transcription Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/voiceTranscriptionCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "revaiAPIKey": "dwijdiwdwi####" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-stickers-stipop" + } + }, + "/apps/{appId}/extensions/sentiment-analysis/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Sentiment analysis Store settings", + "description": "Sentiment analysis : Store new settings for Sentiment analysis extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sentimentAnalysisRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Sentiment analysis Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/sentimentAnalysisSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-voice-transcription" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Voice transcription Get settings", - "description": "Voice transcription : Get settings for Voice transcription extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false + } + } } - ], - "responses": { - "200": { - "description": "Get Voice transcription Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/voiceTranscriptionGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "revaiAPIKey": "dwijdiwdwi####", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-sentiment-analysis" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Sentiment analysis Update settings", + "description": "Sentiment analysis : Update the settings for Sentiment analysis extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sentimentAnalysisRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Sentiment analysis Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/sentimentAnalysisSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-voice-transcription" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Voice transcription Delete settings", - "description": "Voice transcription : Delete the settings for Voice transcription extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Voice transcription Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/voiceTranscriptionDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "delete-settings-voice-transcription" + } + } + } } + } }, - "/apps/{appId}/extensions/stickers-stipop/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Stipop Store settings", - "description": "Stipop : Store new settings for Stipop extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/stipopRequestSchema" - } + "operationId": "update-settings-sentiment-analysis" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Sentiment analysis Get settings", + "description": "Sentiment analysis : Get settings for Sentiment analysis extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Update Sentiment analysis Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/sentimentAnalysisGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Stipop Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stipopCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "stipopApiKey": "e24ce#2324b2jrbj3212", - "stipopAppId": "9221#njdwe112213131" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false, + "appId": "199319cc4d186d86" } + } } - }, - "operationId": "store-settings-stickers-stipop" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Stipop Update settings", - "description": "Stipop : Update the settings for Stipop extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/stipopRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-sentiment-analysis" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Sentiment analysis Delete settings", + "description": "Sentiment analysis : Delete the settings for Sentiment analysis extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Sentiment analysis Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/sentimentAnalysisDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Stipop Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stipopCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "stipopApiKey": "e24ce#2324b2jrbj3212", - "stipopAppId": "9221#njdwe112213131" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "dropMessage": false } + } } - }, - "operationId": "update-settings-stickers-stipop" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Stipop Get settings", - "description": "Stipop : Get settings for Stipop extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Stipop Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stipopGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "stipopApiKey": "e24ce#2324b2jrbj3212", - "stipopAppId": "9221#njdwe112213131", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-sentiment-analysis" + } + }, + "/apps/{appId}/extensions/url-shortener-tinyurl/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "TinyURL Store settings", + "description": "TinyURL : Store new settings for TinyURL extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tinyUrlRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store TinyURL Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tinyUrlCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-stickers-stipop" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Stipop Delete settings", - "description": "Stipop : Delete the settings for Stipop extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", + "tinyUrlDomain": "tiny.one" + } + } } - ], - "responses": { - "200": { - "description": "Delete Stipop Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stipopDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-url-shortener-tinyurl" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "TinyURL Update settings", + "description": "TinyURL : Update the settings for TinyURL extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tinyUrlRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update TinyURL Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tinyUrlCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-stickers-stipop" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", + "tinyUrlDomain": "tiny.one" + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/sentiment-analysis/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Sentiment analysis Store settings", - "description": "Sentiment analysis : Store new settings for Sentiment analysis extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sentimentAnalysisRequestSchema" - } + "operationId": "update-settings-url-shortener-tinyurl" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "TinyURL Get settings", + "description": "TinyURL : Get settings for TinyURL extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get TinyURL Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tinyUrlGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Sentiment analysis Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/sentimentAnalysisSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", + "tinyUrlDomain": "tiny.one", + "appId": "134234d234rf33" + } + } + } + } + } + } + } + } + }, + "operationId": "get-settings-url-shortener-tinyurl" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "TinyURL Delete settings", + "description": "TinyURL : Delete the settings for TinyURL extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete TinyURL Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tinyUrlDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-sentiment-analysis" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Sentiment analysis Update settings", - "description": "Sentiment analysis : Update the settings for Sentiment analysis extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sentimentAnalysisRequestSchema" - } + } + } + } + } + } + }, + "operationId": "delete-settings-url-shortener-tinyurl" + } + }, + "/apps/{appId}/extensions/intercom/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Intercom Store settings", + "description": "Intercom : Store new settings for Intercom extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/intercomRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Intercom Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/intercomSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Sentiment analysis Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/sentimentAnalysisSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "212663ddb7a2a65a", + "customerSupportUid": "cometchat-uid-2", + "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", + "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" + } + } + } + } + } + } + } + } + }, + "operationId": "store-settings-intercom" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Intercom Update settings", + "description": "Intercom : Update the settings for Intercom extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/intercomRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Intercom Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/intercomSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-sentiment-analysis" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Sentiment analysis Get settings", - "description": "Sentiment analysis : Get settings for Sentiment analysis extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "212663ddb7a2a65a", + "customerSupportUid": "cometchat-uid-2", + "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", + "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" + } + } } - ], - "responses": { - "200": { - "description": "Update Sentiment analysis Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/sentimentAnalysisGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false, - "appId": "199319cc4d186d86" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-intercom" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Intercom Get settings", + "description": "Intercom : Get settings for Intercom extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Intercom Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/intercomGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-sentiment-analysis" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Sentiment analysis Delete settings", - "description": "Sentiment analysis : Delete the settings for Sentiment analysis extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "212663ddb7a2a65a", + "customerSupportUid": "cometchat-uid-2", + "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", + "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" + } + } } - ], - "responses": { - "200": { - "description": "Delete Sentiment analysis Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/sentimentAnalysisDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "dropMessage": false - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-intercom" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Intercom Delete settings", + "description": "Intercom : Delete the settings for Intercom extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Intercom Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/intercomDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-sentiment-analysis" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/url-shortener-tinyurl/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "TinyURL Store settings", - "description": "TinyURL : Store new settings for TinyURL extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tinyUrlRequestSchema" - } + "operationId": "delete-settings-intercom" + } + }, + "/apps/{appId}/extensions/url-shortener-bitly/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Bitly Store settings", + "description": "Bitly : Store new settings for Bitly extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bitlyRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Bitly Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/bitlyCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store TinyURL Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tinyUrlCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", - "tinyUrlDomain": "tiny.one" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "bitlyAccessToken": "1213n2kn2232ffg", + "groupGUID": "1234ddsf5eee22" } + } } - }, - "operationId": "store-settings-url-shortener-tinyurl" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "TinyURL Update settings", - "description": "TinyURL : Update the settings for TinyURL extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tinyUrlRequestSchema" - } + } + } + } + } + } + }, + "operationId": "store-settings-url-shortener-bitly" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Bitly Update settings", + "description": "Bitly : Update the settings for Bitly extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/bitlyRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Bitly Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/bitlyCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update TinyURL Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tinyUrlCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", - "tinyUrlDomain": "tiny.one" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "bitlyAccessToken": "1213n2kn2232ffg", + "groupGUID": "1234ddsf5eee22" + } + } + } + } + } + } + } + } + }, + "operationId": "update-settings-url-shortener-bitly" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Bitly Get settings", + "description": "Bitly : Get settings for Bitly extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Bitly Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/bitlyGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-url-shortener-tinyurl" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "TinyURL Get settings", - "description": "TinyURL : Get settings for TinyURL extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "bitlyAccessToken": "1213n2kn2232ffg", + "groupGUID": "1234ddsf5eee22", + "appId": "134234d234rf33" + } + } } - ], - "responses": { - "200": { - "description": "Get TinyURL Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tinyUrlGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tinyUrlAPIToken": "1kn2kenkdnwnrn2in1n1", - "tinyUrlDomain": "tiny.one", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-url-shortener-bitly" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Bitly Delete settings", + "description": "Bitly : Delete the settings for Bitly extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Bitly Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/bitlyDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-url-shortener-tinyurl" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "TinyURL Delete settings", - "description": "TinyURL : Delete the settings for TinyURL extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "responses": { - "200": { - "description": "Delete TinyURL Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tinyUrlDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-url-shortener-bitly" + } + }, + "/apps/{appId}/extensions/rich-media/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Rich media preview Store settings", + "description": "Rich media preview : Store new settings for Rich media preview extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/richMediaPreviewRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Rich Media Preview Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/richMediaPreviewCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-url-shortener-tinyurl" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "iframelyApiKey": "abcd12345678" + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/intercom/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Intercom Store settings", - "description": "Intercom : Store new settings for Intercom extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/intercomRequestSchema" - } + "operationId": "store-settings-rich-media" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Rich media preview Update settings", + "description": "Rich media preview : Update the settings for Rich media preview extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/richMediaPreviewRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Rich Media Preview Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/richMediaPreviewCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Intercom Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/intercomSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "212663ddb7a2a65a", - "customerSupportUid": "cometchat-uid-2", - "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", - "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "iframelyApiKey": "abcd12345678" + } + } + } + } + } + } + } + } + }, + "operationId": "update-settings-rich-media" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Rich media preview Get settings", + "description": "Rich media preview : Get settings for Rich media preview extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Rich Media Preview Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/richMediaPreviewGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-intercom" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Intercom Update settings", - "description": "Intercom : Update the settings for Intercom extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "iframelyApiKey": "abcd12345678", + "appId": "appId12345678" + } + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/intercomRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-rich-media" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Rich media preview Delete settings", + "description": "Rich media preview : Delete the settings for Rich media preview extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Rich Media Preview Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/richMediaPreviewDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Intercom Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/intercomSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "212663ddb7a2a65a", - "customerSupportUid": "cometchat-uid-2", - "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", - "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-rich-media" + } + }, + "/apps/{appId}/extensions/virus-malware-scanner/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Virus Malware Scanner Store settings", + "description": "Virus Malware Scanner : Store new settings for Virus malware scanner extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/virusMalwareScannerRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Virus Malware Scanner Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/virusMalwareScannerSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-intercom" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Intercom Get settings", - "description": "Intercom : Get settings for Intercom extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "scaniiSecretKey": "f5c0102d" + } + } } - ], - "responses": { - "200": { - "description": "Get Intercom Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/intercomGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "212663ddb7a2a65a", - "customerSupportUid": "cometchat-uid-2", - "intercomAccessToken": "EgsDdxRZFUy4tPWDjwmyZvYk", - "webhookURL": "https://intercom-eu.cometchat.io/v1/reply?token=8z2Yn1R2hEVmpENi7HA1pPAv0DfZvMPFT8SBSaRJgwk=eyJhcHBJZCI6IjIxMjY2M2RkYjdhMmE2NmIifQ==" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-virus-malware-scanner" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Virus Malware Scanner Update settings", + "description": "Virus Malware Scanner : Update the settings for Virus malware scanner extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/virusMalwareScannerRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Create Chat Widget", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/virusMalwareScannerSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-intercom" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Intercom Delete settings", - "description": "Intercom : Delete the settings for Intercom extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "scaniiSecretKey": "f5c0102d" + } + } } - ], - "responses": { - "200": { - "description": "Delete Intercom Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/intercomDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-virus-malware-scanner" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Virus Malware Scanner Get settings", + "description": "Virus Malware Scanner : Get settings for Virus malware scanner extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Virus Malware Scanner Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/virusMalwareScannerGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-intercom" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "scaniiSecretKey": "f5c0102d", + "appId": 19244939392 + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/url-shortener-bitly/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Bitly Store settings", - "description": "Bitly : Store new settings for Bitly extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/bitlyRequestSchema" - } + "operationId": "get-settings-virus-malware-scanner" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Virus Malware Scanner Delete settings", + "description": "Virus Malware Scanner : Delete the settings for Virus malware scanner extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Virus Malware Scanner Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/virusMalwareScannerDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Bitly Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/bitlyCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "bitlyAccessToken": "1213n2kn2232ffg", - "groupGUID": "1234ddsf5eee22" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-virus-malware-scanner" + } + }, + "/apps/{appId}/extensions/broadcast/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Video Broadcasting Store settings", + "description": "Video Broadcasting : Store new settings for Video Broadcasting extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/videoBroadcastingRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Video broadcasting Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/videoBroadcastingSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-url-shortener-bitly" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Bitly Update settings", - "description": "Bitly : Update the settings for Bitly extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "recordVideo": false + } + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/bitlyRequestSchema" - } + } + } + } + } + } + }, + "operationId": "store-settings-broadcast" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Video Broadcasting Update settings", + "description": "Video Broadcasting : Update the settings for Video Broadcasting extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/videoBroadcastingRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Video broadcasting Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/videoBroadcastingSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Bitly Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/bitlyCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "bitlyAccessToken": "1213n2kn2232ffg", - "groupGUID": "1234ddsf5eee22" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "recordVideo": false } + } } - }, - "operationId": "update-settings-url-shortener-bitly" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Bitly Get settings", - "description": "Bitly : Get settings for Bitly extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Bitly Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/bitlyGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "bitlyAccessToken": "1213n2kn2232ffg", - "groupGUID": "1234ddsf5eee22", - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-broadcast" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Video Broadcasting Get settings", + "description": "Video Broadcasting : Get settings for Video Broadcasting extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Video Broadcasting Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/videoBroadcastingGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-url-shortener-bitly" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Bitly Delete settings", - "description": "Bitly : Delete the settings for Bitly extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Bitly Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/bitlyDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", + "appId": "192A44939392", + "recordVideo": false } + } } - }, - "operationId": "delete-settings-url-shortener-bitly" + } + } + } } + } }, - "/apps/{appId}/extensions/rich-media/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Rich media preview Store settings", - "description": "Rich media preview : Store new settings for Rich media preview extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/richMediaPreviewRequestSchema" - } + "operationId": "get-settings-broadcast" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Video Broadcasting Delete settings", + "description": "Video Broadcasting : Delete the settings for Video Broadcasting extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Video Broadcasting Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/videoBroadcastingDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Rich Media Preview Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/richMediaPreviewCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "iframelyApiKey": "abcd12345678" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-broadcast" + } + }, + "/apps/{appId}/extensions/gifs-tenor/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Tenor gifs Store settings", + "description": "Tenor gifs : Store new settings for Tenor gifs extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tenorRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Tenor Gifs Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tenorCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-rich-media" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Rich media preview Update settings", - "description": "Rich media preview : Update the settings for Rich media preview extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/richMediaPreviewRequestSchema" - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tenorApiKey": "abcd12345678" } + } } - }, - "responses": { - "200": { - "description": "Update Rich Media Preview Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/richMediaPreviewCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "iframelyApiKey": "abcd12345678" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-gifs-tenor" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Tenor gifs Update settings", + "description": "Tenor gifs : Update the settings for Tenor gifs extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tenorRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Tenor Gifs Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tenorCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-rich-media" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Rich media preview Get settings", - "description": "Rich media preview : Get settings for Rich media preview extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tenorApiKey": "abcd12345678" + } + } } - ], - "responses": { - "200": { - "description": "Get Rich Media Preview Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/richMediaPreviewGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "iframelyApiKey": "abcd12345678", - "appId": "appId12345678" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-gifs-tenor" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Tenor gifs Get settings", + "description": "Tenor gifs : Get settings for Tenor gifs extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Tenor Gifs Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tenorGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-rich-media" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Rich media preview Delete settings", - "description": "Rich media preview : Delete the settings for Rich media preview extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Rich Media Preview Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/richMediaPreviewDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "tenorApiKey": "abcd12345678", + "appId": "appId12345678" } + } } - }, - "operationId": "delete-settings-rich-media" + } + } + } } + } }, - "/apps/{appId}/extensions/virus-malware-scanner/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Virus Malware Scanner Store settings", - "description": "Virus Malware Scanner : Store new settings for Virus malware scanner extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/virusMalwareScannerRequestSchema" - } + "operationId": "get-settings-gifs-tenor" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Tenor gifs Delete settings", + "description": "Tenor gifs : Delete the settings for Tenor gifs extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Tenor Gifs Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/tenorDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Virus Malware Scanner Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/virusMalwareScannerSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "scaniiSecretKey": "f5c0102d" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-gifs-tenor" + } + }, + "/apps/{appId}/extensions/human-moderation/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "In-flight message moderation Store settings", + "description": "In-flight message moderation : Store new settings for In-flight message moderation extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/humanModerationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store In-flight message moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/humanModerationCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-virus-malware-scanner" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Virus Malware Scanner Update settings", - "description": "Virus Malware Scanner : Update the settings for Virus malware scanner extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/virusMalwareScannerRequestSchema" - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "allUserMessages": false, + "allGroupMessages": false, + "senders": [ + "cometchat-uid-1", + "cometchat-uid-2" + ], + "receiverGroups": [ + "cometchat-guid-1" + ], + "receiverUsers": [ + "cometchat-uid-3" + ], + "allMessages": false } + } } - }, - "responses": { - "200": { - "description": "Create Chat Widget", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/virusMalwareScannerSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "scaniiSecretKey": "f5c0102d" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "store-settings-human-moderation" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "In-flight message moderation Update settings", + "description": "In-flight message moderation : Update the settings for In-flight message moderation extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/humanModerationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update In-flight message moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/humanModerationCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-virus-malware-scanner" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Virus Malware Scanner Get settings", - "description": "Virus Malware Scanner : Get settings for Virus malware scanner extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "allUserMessages": false, + "allGroupMessages": false, + "senders": [ + "cometchat-uid-1", + "cometchat-uid-2" + ], + "receiverGroups": [ + "cometchat-guid-1" + ], + "receiverUsers": [ + "cometchat-uid-3" + ], + "allMessages": false + } + } } - ], - "responses": { - "200": { - "description": "Get Virus Malware Scanner Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/virusMalwareScannerGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "scaniiApiKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "scaniiSecretKey": "f5c0102d", - "appId": 19244939392 - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-human-moderation" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "In-flight message moderation Get settings", + "description": "In-flight message moderation : Get settings for In-flight message moderation extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get In-flight message moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/humanModerationGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-virus-malware-scanner" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Virus Malware Scanner Delete settings", - "description": "Virus Malware Scanner : Delete the settings for Virus malware scanner extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Virus Malware Scanner Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/virusMalwareScannerDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "allUserMessages": false, + "allGroupMessages": false, + "senders": [ + "cometchat-uid-1", + "cometchat-uid-2" + ], + "receiverGroups": [ + "cometchat-guid-1" + ], + "receiverUsers": [ + "cometchat-uid-3" + ], + "allMessages": false, + "appId": "134234d234rf33" } + } } - }, - "operationId": "delete-settings-virus-malware-scanner" + } + } + } } + } }, - "/apps/{appId}/extensions/broadcast/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Video Broadcasting Store settings", - "description": "Video Broadcasting : Store new settings for Video Broadcasting extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/videoBroadcastingRequestSchema" - } + "operationId": "get-settings-human-moderation" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "In-flight message moderation Delete settings", + "description": "In-flight message moderation : Delete the settings for In-flight message moderation extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete In-flight message moderation Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/humanModerationDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Video broadcasting Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/videoBroadcastingSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "recordVideo": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-human-moderation" + } + }, + "/apps/{appId}/extensions/e2ee/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "End-to-end encryption Store settings", + "description": "End-to-end encryption : Store new settings for End-to-end encryption extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/e2eeRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store End-to-end Encryption Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/e2eeCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-broadcast" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Video Broadcasting Update settings", - "description": "Video Broadcasting : Update the settings for Video Broadcasting extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "virgilAppID": "virgilAppId12345678", + "virgilAppKeyID": "xyzabcd12345678", + "virgilAppKey": "abcd12345678" + } + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/videoBroadcastingRequestSchema" - } + } + } + } + } + } + }, + "operationId": "store-settings-e2ee" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "End-to-end encryption Update settings", + "description": "End-to-end encryption : Update the settings for End-to-end encryption extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/e2eeRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update End-to-end Encryption Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/e2eeCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Video broadcasting Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/videoBroadcastingSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "recordVideo": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "virgilAppID": "virgilAppId12345678", + "virgilAppKeyID": "xyzabcd12345678", + "virgilAppKey": "abcd12345678" } + } } - }, - "operationId": "update-settings-broadcast" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Video Broadcasting Get settings", - "description": "Video Broadcasting : Get settings for Video Broadcasting extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Video Broadcasting Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/videoBroadcastingGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "apiVideoKey": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222", - "appId": "192A44939392", - "recordVideo": false - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-e2ee" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "End-to-end encryption Get settings", + "description": "End-to-end encryption : Get settings for End-to-end encryption extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get End-to-end Encryption Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/e2eeGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-broadcast" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Video Broadcasting Delete settings", - "description": "Video Broadcasting : Delete the settings for Video Broadcasting extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Video Broadcasting Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/videoBroadcastingDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "virgilAppID": "virgilAppId12345678", + "virgilAppKeyID": "xyzabcd12345678", + "virgilAppKey": "abcd12345678", + "appId": "appId12345678" } + } } - }, - "operationId": "delete-settings-broadcast" + } + } + } } + } }, - "/apps/{appId}/extensions/gifs-tenor/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Tenor gifs Store settings", - "description": "Tenor gifs : Store new settings for Tenor gifs extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tenorRequestSchema" - } + "operationId": "get-settings-e2ee" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "End-to-end encryption Delete settings", + "description": "End-to-end encryption : Delete the settings for End-to-end encryption extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete End-to-end Encryption Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/e2eeDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Tenor Gifs Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tenorCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tenorApiKey": "abcd12345678" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-e2ee" + } + }, + "/apps/{appId}/extensions/stickers/v1/settings": { + "put": { + "tags": [ + "Extensions" + ], + "summary": "Stickers extension Update settings", + "description": "Stickers extension : Update the settings for Stickers extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/stickersRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Data Masking Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stickersResponseSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-gifs-tenor" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Tenor gifs Update settings", - "description": "Tenor gifs : Update the settings for Tenor gifs extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tenorRequestSchema" - } + } + } + } + } + } + }, + "operationId": "update-settings-stickers" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Stickers extension Get settings", + "description": "Stickers extension : Get settings for Stickers extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Stickers Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stickersGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Tenor Gifs Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tenorCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tenorApiKey": "abcd12345678" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "10419c7658224", + "dropMessage": false, + "customMasterStickersData": [], + "defaultMasterStickersData": [ + { + "stickerName": "litt_14.png", + "stickerOrder": 14, + "stickerSetId": "7efe9cbd-7789-4095-ae37-88b144aaec70", + "stickerSetName": "little dyno", + "stickerSetOrder": 7, + "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png", + "id": "fb24136a-abd0-4302-866d-c754410afc20", + "enableFlag": true + } + ] + } + } + } + } + } + } + } + } + }, + "operationId": "get-settings-stickers" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Stickers extension Delete settings", + "description": "Stickers extension : Delete the settings for Stickers extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Stickers Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/stickersResponseSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-gifs-tenor" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Tenor gifs Get settings", - "description": "Tenor gifs : Get settings for Tenor gifs extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } + } + } + } + } + } + }, + "operationId": "delete-settings-stickers" + } + }, + "/apps/{appId}/extensions/push-notification/v1/upload-certificate-p12": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Upload p12 Certificate", + "description": "Push notification : Upload a p12 Certificate", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "certificate" ], - "responses": { - "200": { - "description": "Get Tenor Gifs Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tenorGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "tenorApiKey": "abcd12345678", - "appId": "appId12345678" - } - } - } + "properties": { + "certificate": { + "description": "Upload Certificate", + "type": "string", + "format": "binary" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Query Certificate", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { + "properties": { + "": { + "properties": { + "certificate_p12": { + "type": "boolean" + }, + "certificate_p8": { + "type": "boolean" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-gifs-tenor" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Tenor gifs Delete settings", - "description": "Tenor gifs : Delete the settings for Tenor gifs extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" + "example": { + "data": { + "statusCode": 200, + "success": true, + "body": { + "certificate_p12": true, + "certificate_p8": true }, - { - "$ref": "#/components/parameters/appId" - } + "responseTime": 0.14275598526000977 + } + } + } + } + } + }, + "operationId": "upload-push-notification-certificate-p12" + } + }, + "/apps/{appId}/extensions/push-notification/v1/upload-certificate-p8": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Upload p8 Certificate", + "description": "Push notification : Upload a p8 Certificate", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "certificate" ], - "responses": { - "200": { - "description": "Delete Tenor Gifs Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/tenorDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } + "properties": { + "certificate": { + "description": "Upload Certificate", + "type": "string", + "format": "binary" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Upload Certificate", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { + "properties": { + "": { + "properties": { + "success": { + "type": "boolean" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-gifs-tenor" + "example": { + "data": { + "statusCode": 200, + "success": true, + "body": { + "success": true + }, + "responseTime": 0.10614800453186035 + } + } + } } + } }, - "/apps/{appId}/extensions/human-moderation/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "In-flight message moderation Store settings", - "description": "In-flight message moderation : Store new settings for In-flight message moderation extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/humanModerationRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Store In-flight message moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/humanModerationCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "allUserMessages": false, - "allGroupMessages": false, - "senders": [ - "cometchat-uid-1", - "cometchat-uid-2" - ], - "receiverGroups": [ - "cometchat-guid-1" - ], - "receiverUsers": [ - "cometchat-uid-3" - ], - "allMessages": false - } - } - } + "operationId": "upload-push-notification-certificate-p8" + } + }, + "/apps/{appId}/extensions/push-notification/v1/query-certificates": { + "get": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Get Certificate", + "description": "Push notification : Get Certificate description", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Querying Certificate", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { + "properties": { + "": { + "properties": { + "success": { + "type": "boolean" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-human-moderation" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "In-flight message moderation Update settings", - "description": "In-flight message moderation : Update the settings for In-flight message moderation extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "success": true } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/humanModerationRequestSchema" - } + } + } + } + } + } + }, + "operationId": "query-push-notification-certificates" + } + }, + "/apps/{appId}/extensions/email-replies/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Email replies Store settings", + "description": "Email replies : Store new settings for Email replies extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/emailRepliesRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Email Replies Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailRepliesSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update In-flight message moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/humanModerationCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "allUserMessages": false, - "allGroupMessages": false, - "senders": [ - "cometchat-uid-1", - "cometchat-uid-2" - ], - "receiverGroups": [ - "cometchat-guid-1" - ], - "receiverUsers": [ - "cometchat-uid-3" - ], - "allMessages": false - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "senderEmailForReplies": "mymail@example.com", + "sendEmailReplies": true + } + } + } + } + } + } + } + } + }, + "operationId": "store-settings-email-replies" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Email replies Update settings", + "description": "Email replies : Update the settings for Email replies extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/emailRepliesRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Email Replies Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailRepliesSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-human-moderation" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "In-flight message moderation Get settings", - "description": "In-flight message moderation : Get settings for In-flight message moderation extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "senderEmailForReplies": "mymail@example.com", + "sendEmailReplies": true + } + } } - ], - "responses": { - "200": { - "description": "Get In-flight message moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/humanModerationGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "allUserMessages": false, - "allGroupMessages": false, - "senders": [ - "cometchat-uid-1", - "cometchat-uid-2" - ], - "receiverGroups": [ - "cometchat-guid-1" - ], - "receiverUsers": [ - "cometchat-uid-3" - ], - "allMessages": false, - "appId": "134234d234rf33" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-email-replies" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Email replies Get settings", + "description": "Email replies : Get settings for Email replies extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Email Replies Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailRepliesGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-human-moderation" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "In-flight message moderation Delete settings", - "description": "In-flight message moderation : Delete the settings for In-flight message moderation extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "senderEmailForReplies": "mymail@example.com", + "sendEmailReplies": true, + "appId": 19244939392 + } + } } - ], - "responses": { - "200": { - "description": "Delete In-flight message moderation Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/humanModerationDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-email-replies" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Email replies Delete settings", + "description": "Email replies : Delete the settings for Email replies extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Email Replies Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailRepliesDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-human-moderation" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "success": true + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/e2ee/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "End-to-end encryption Store settings", - "description": "End-to-end encryption : Store new settings for End-to-end encryption extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/e2eeRequestSchema" - } + "operationId": "delete-settings-email-replies" + } + }, + "/apps/{appId}/extensions/sms-notification/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "SMS Notification Store settings", + "description": "SMS Notification : Store new settings for SMS Notification extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/smsNotificationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store SMS Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/smsNotificationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store End-to-end Encryption Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/e2eeCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "virgilAppID": "virgilAppId12345678", - "virgilAppKeyID": "xyzabcd12345678", - "virgilAppKey": "abcd12345678" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "success": true + } + } + } + } + } + } + }, + "operationId": "store-settings-sms-notification" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "SMS Notification Update settings", + "description": "SMS Notification : Update the settings for SMS Notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/smsNotificationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update SMS Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/smsNotificationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-e2ee" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "End-to-end encryption Update settings", - "description": "End-to-end encryption : Update the settings for End-to-end encryption extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "success": true } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/e2eeRequestSchema" - } + } + } + } + } + } + }, + "operationId": "update-settings-sms-notification" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "SMS Notification Get settings", + "description": "SMS Notification : Get settings for SMS Notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get SMS Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/smsNotificationGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update End-to-end Encryption Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/e2eeCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "virgilAppID": "virgilAppId12345678", - "virgilAppKeyID": "xyzabcd12345678", - "virgilAppKey": "abcd12345678" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "fromMobileNo": "+123456790", + "messageDelay": 60, + "twilioAccountSid": "ACfe6c12T1G2bc530a5151a8eff4155386", + "twilioAuthToken": "6928f0cadd4e6Ag2d431957a7f3a563ef3", + "websiteURL": "somemail.com", + "appId": "10419c123124" } + } } - }, - "operationId": "update-settings-e2ee" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "End-to-end encryption Get settings", - "description": "End-to-end encryption : Get settings for End-to-end encryption extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get End-to-end Encryption Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/e2eeGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "virgilAppID": "virgilAppId12345678", - "virgilAppKeyID": "xyzabcd12345678", - "virgilAppKey": "abcd12345678", - "appId": "appId12345678" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-sms-notification" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "SMS Notification Delete settings", + "description": "SMS Notification : Delete the settings for SMS Notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete SMS Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/smsNotificationDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-e2ee" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "End-to-end encryption Delete settings", - "description": "End-to-end encryption : Delete the settings for End-to-end encryption extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "success": true } - ], - "responses": { - "200": { - "description": "Delete End-to-end Encryption Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/e2eeDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-sms-notification" + } + }, + "/apps/{appId}/extensions/push-notification/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Store settings", + "description": "Push notification : Store new settings for Push notifications extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pushNotificationRequestSchema" + }, + "examples": { + "abc": { + "$ref": "#/components/examples/pushNotificationRequestExample" + } + } + } + } + }, + "responses": { + "200": { + "description": "Save Push Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/pushNotificationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-e2ee" + "examples": { + "abc": { + "$ref": "#/components/examples/pushNotificationResponseExample" + } + } + } } + } }, - "/apps/{appId}/extensions/stickers/v1/settings": { - "put": { - "tags": [ - "Extensions" - ], - "summary": "Stickers extension Update settings", - "description": "Stickers extension : Update the settings for Stickers extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/stickersRequestSchema" - } + "operationId": "store-settings-push-notification" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Update settings", + "description": "Push notification : Update the settings for Push notifications extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pushNotificationRequestSchema" + }, + "examples": { + "abc": { + "$ref": "#/components/examples/pushNotificationRequestExample" + } + } + } + } + }, + "responses": { + "200": { + "description": "Update Push Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/pushNotificationSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Data Masking Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stickersResponseSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "examples": { + "abc": { + "$ref": "#/components/examples/pushNotificationResponseExample" + } + } + } + } + } + }, + "operationId": "update-settings-push-notification" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Get settings", + "description": "Push notification : Get settings for Push notifications extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Push Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/pushNotificationGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-stickers" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Stickers extension Get settings", - "description": "Stickers extension : Get settings for Stickers extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Stickers Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stickersGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "10419c7658224", - "dropMessage": false, - "customMasterStickersData": [], - "defaultMasterStickersData": [ - { - "stickerName": "litt_14.png", - "stickerOrder": 14, - "stickerSetId": "7efe9cbd-7789-4095-ae37-88b144aaec70", - "stickerSetName": "little dyno", - "stickerSetOrder": 7, - "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png", - "id": "fb24136a-abd0-4302-866d-c754410afc20", - "enableFlag": true - } - ] - } - } - } - } - } - } + "examples": { + "abc": { + "$ref": "#/components/examples/pushNotificationResponseExample" + } + } + } + } + } + }, + "operationId": "get-settings-push-notification" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Push notification Delete settings", + "description": "Push notification : Delete the settings for Push notifications extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Push Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/pushNotificationDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-stickers" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Stickers extension Delete settings", - "description": "Stickers extension : Delete the settings for Stickers extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "success": true + } } - ], - "responses": { - "200": { - "description": "Delete Stickers Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/stickersResponseSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-push-notification" + } + }, + "/apps/{appId}/extensions/chatwoot/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Chatwoot Store settings", + "description": "Chatwoot : Store new settings for Chatwoot extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chatwootRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Chatwoot Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/chatwootSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-stickers" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", + "customerSupportUid": "cometchat-uid-1", + "chatwootInboxId": "12112", + "chatwootAccountId": "42113", + "appId": "212663ddb7a2b1b", + "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxMAY2M2RkYjdhMmE2NmIifQ==" + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/push-notification/v1/upload-certificate-p12": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Upload p12 Certificate", - "description": "Push notification : Upload a p12 Certificate", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "required": [ - "certificate" - ], - "properties": { - "certificate": { - "description": "Upload Certificate", - "type": "string", - "format": "binary" - } - }, - "type": "object" - } + "operationId": "store-settings-chatwoot" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Chatwoot Update settings", + "description": "Chatwoot : Update the settings for Chatwoot extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chatwootRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Chatwoot Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/chatwootSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Query Certificate", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "": { - "properties": { - "certificate_p12": { - "type": "boolean" - }, - "certificate_p8": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "body": { - "certificate_p12": true, - "certificate_p8": true - }, - "responseTime": 0.14275598526000977 - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "212663ddb7a2b1b", + "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", + "customerSupportUid": "cometchat-uid-1", + "chatwootInboxId": "12123", + "chatwootAccountId": "42613", + "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxLjY2M2RkYjdhMmE2NmIifQ==" } + } } - }, - "operationId": "upload-push-notification-certificate-p12" + } + } + } } + } }, - "/apps/{appId}/extensions/push-notification/v1/upload-certificate-p8": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Upload p8 Certificate", - "description": "Push notification : Upload a p8 Certificate", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "required": [ - "certificate" - ], - "properties": { - "certificate": { - "description": "Upload Certificate", - "type": "string", - "format": "binary" - } - }, - "type": "object" - } + "operationId": "update-settings-chatwoot" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Chatwoot Get settings", + "description": "Chatwoot : Get settings for Chatwoot extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Chatwoot Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/chatwootGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Upload Certificate", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "body": { - "success": true - }, - "responseTime": 0.10614800453186035 - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "chatwootAccountId": "12345", + "chatwootInboxId": "12151", + "appId": "212663ddb7a2b1b", + "chatwootAccessToken": "EgsXaxRZFUy4atPWDjwmyZvYk", + "customerSupportUid": "cometchat-uid-1", + "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxMjY2M2RkYjdhNmQ2NmIifQ==" } + } } - }, - "operationId": "upload-push-notification-certificate-p8" + } + } + } } + } }, - "/apps/{appId}/extensions/push-notification/v1/query-certificates": { - "get": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Get Certificate", - "description": "Push notification : Get Certificate description", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Querying Certificate", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "success": true - } - } - } - } + "operationId": "get-settings-chatwoot" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Chatwoot Delete settings", + "description": "Chatwoot : Delete the settings for Chatwoot extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Chatwoot Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/chatwootDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "query-push-notification-certificates" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/email-replies/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Email replies Store settings", - "description": "Email replies : Store new settings for Email replies extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/emailRepliesRequestSchema" - } + "operationId": "delete-settings-chatwoot" + } + }, + "/apps/{appId}/extensions/message-shortcuts/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Message Shortcuts Store settings", + "description": "Message Shortcuts : Store new settings for Message shortcuts extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/messageShortcutsRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Save Message Shortcuts Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageShortcutsSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Email Replies Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailRepliesSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "senderEmailForReplies": "mymail@example.com", - "sendEmailReplies": true - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "shortcuts": { + "!cu": "See you later.", + "!ty": "Hey! Thanks a lot! 😊", + "!hbd": "Happy Birthday! 🥳", + "!ssup": "What's up!?", + "!wc": "You're welcome!" + } + } + } + } + } + } + } + } + } + }, + "operationId": "store-settings-message-shortcuts" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Message Shortcuts Update settings", + "description": "Message Shortcuts : Update the settings for Message shortcuts extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/messageShortcutsRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Message Shortcuts Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageShortcutsSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-email-replies" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Email replies Update settings", - "description": "Email replies : Update the settings for Email replies extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/emailRepliesRequestSchema" - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "shortcuts": { + "!cu": "See you later.", + "!ty": "Hey! Thanks a lot! 😊", + "!hbd": "Happy Birthday! 🥳", + "!ssup": "What's up!?", + "!wc": "You're welcome!" + } } + } } - }, - "responses": { - "200": { - "description": "Update Email Replies Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailRepliesSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "senderEmailForReplies": "mymail@example.com", - "sendEmailReplies": true - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-message-shortcuts" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Message Shortcuts Get settings", + "description": "Message Shortcuts : Get settings for Message shortcuts extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Message Shortcuts Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageShortcutsGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-email-replies" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Email replies Get settings", - "description": "Email replies : Get settings for Email replies extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "settings": { + "shortcuts": { + "!cu": "See you later.", + "!ty": "Hey! Thanks a lot! 😊", + "!hbd": "Happy Birthday! 🥳", + "!ssup": "What's up!?", + "!wc": "You're welcome!" + } + } + } } - ], - "responses": { - "200": { - "description": "Get Email Replies Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailRepliesGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "senderEmailForReplies": "mymail@example.com", - "sendEmailReplies": true, - "appId": 19244939392 - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-message-shortcuts" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Message Shortcuts Delete settings", + "description": "Message Shortcuts : Delete the settings for Message shortcuts extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Message Shortcuts Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/messageShortcutsDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-email-replies" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Email replies Delete settings", - "description": "Email replies : Delete the settings for Email replies extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 1.8547508716583252, + "body": { + "data": { + "success": true + } } - ], - "responses": { - "200": { - "description": "Delete Email Replies Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailRepliesDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "success": true - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "delete-settings-message-shortcuts" + } + }, + "/apps/{appId}/extensions/email-notification/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Email Notification Store settings", + "description": "Email Notification : Store new settings for Email notification extension", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/emailNotificationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Email Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailNotificationRequestSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-email-replies" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "messageDelay": 120, + "senderEmail": "mymail@example", + "senderName": "John Doe", + "sendGridApiKey": "key_1234", + "sendGridTemplateId": "Template_1234", + "sendGridUnsubscribeGroupId": "Group_1234", + "useWebhook": true, + "webhookURL": "http://example.com", + "useWebhookBasicAuth": true, + "webhookUsername": "username", + "webhookPassword": "fgh356$123ggh**" + } + } + } + } + } + } } + } }, - "/apps/{appId}/extensions/sms-notification/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "SMS Notification Store settings", - "description": "SMS Notification : Store new settings for SMS Notification extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/smsNotificationRequestSchema" - } + "operationId": "store-settings-email-notification" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Email Notification Update settings", + "description": "Email Notification : Update the settings for Email notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/emailNotificationRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Email notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailNotificationRequestSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store SMS Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/smsNotificationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "success": true - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "messageDelay": 120, + "senderEmail": "mymail@example", + "senderName": "John Doe", + "sendGridApiKey": "key_1234", + "sendGridTemplateId": "Template_1234", + "sendGridUnsubscribeGroupId": "Group_1234", + "useWebhook": true, + "webhookURL": "http://example.com", + "useWebhookBasicAuth": true, + "webhookUsername": "username", + "webhookPassword": "fgh356$123ggh**" + } + } + } + } + } + } + } + } + }, + "operationId": "update-settings-email-notification" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Email Notification Get settings", + "description": "Email Notification : Get settings for Email notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Email notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailNotificationGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-sms-notification" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "SMS Notification Update settings", - "description": "SMS Notification : Update the settings for SMS Notification extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "messageDelay": 120, + "senderEmail": "mymail@example", + "senderName": "John Doe", + "sendGridApiKey": "key_1234", + "sendGridTemplateId": "Template_1234", + "sendGridUnsubscribeGroupId": "Group_1234", + "useWebhook": true, + "webhookURL": "http://example.com", + "useWebhookBasicAuth": true, + "webhookUsername": "username", + "webhookPassword": "fgh356$123ggh**" + } + } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/smsNotificationRequestSchema" - } + } + } + } + } + } + }, + "operationId": "get-settings-email-notification" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Email Notification Delete settings", + "description": "Email Notification : Delete the settings for Email notification extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Email Notification Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/emailNotificationDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update SMS Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/smsNotificationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "success": true - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "delete-settings-email-notification" + } + }, + "/apps/{appId}/collaborators": { + "post": { + "tags": [ + "Team Management" + ], + "summary": "Adds/Remove collaborators", + "operationId": "add-collaborator", + "description": "Adds or removes collaborators for an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "admins": { + "description": "Array of email IDs to designate as administrators for the team.", + "type": "array", + "items": { + "type": "string" + } + }, + "moderators": { + "description": "Array of email IDs to assign as moderators for the team.", + "type": "array", + "items": { + "type": "string" + } + }, + "collaboratorsToRemove": { + "description": "Array of email IDs to remove from team collaboration.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Created App", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/teamMgmtSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-sms-notification" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "SMS Notification Get settings", - "description": "SMS Notification : Get settings for SMS Notification extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" + "example": { + "data": { + "collaboratorsToRemove": [], + "admins": { + "admin1@cometchat.com": { + "success": true + }, + "admin2@cometchat.com": { + "success": true + } }, - { - "$ref": "#/components/parameters/secret" + "developers": { + "developer1@cometchat.com": { + "success": true + } }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get SMS Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/smsNotificationGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "fromMobileNo": "+123456790", - "messageDelay": 60, - "twilioAccountSid": "ACfe6c12T1G2bc530a5151a8eff4155386", - "twilioAuthToken": "6928f0cadd4e6Ag2d431957a7f3a563ef3", - "websiteURL": "somemail.com", - "appId": "10419c123124" - } - } - } - } - } - } + "moderators": [] + } + } + } + } + } + } + }, + "get": { + "tags": [ + "Team Management" + ], + "summary": "List collaborators", + "operationId": "list-collaborators", + "description": "Lists all the collaborators of an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Created App", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/teamMgmtGetSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-sms-notification" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "SMS Notification Delete settings", - "description": "SMS Notification : Delete the settings for SMS Notification extension.", - "parameters": [ + "example": { + "data": [ { - "$ref": "#/components/parameters/key" + "id": "1", + "name": "Admin1", + "email": "admin1@cometchat.com", + "role": "admin", + "createdAt": 1618578628 }, { - "$ref": "#/components/parameters/secret" + "id": "2", + "name": "Admin2", + "email": "admin2@cometchat.com", + "role": "admin", + "createdAt": 1625220090 }, { - "$ref": "#/components/parameters/appId" + "id": "3", + "name": "Developer1", + "email": "developer1@cometchat.com", + "role": "developer", + "createdAt": 1625220076 } - ], - "responses": { - "200": { - "description": "Delete SMS Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/smsNotificationDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "success": true - } - } - } - } - } + ] + } + } + } + } + } + } + }, + "/apps/{appId}/settings": { + "post": { + "tags": [ + "Settings" + ], + "summary": "Maps Settings", + "description": "Maps settings for an app.", + "operationId": "map-settings", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "settings": { + "description": "Updates the settings of an app.", + "type": "object", + "additionalProperties": { + "type": "boolean", + "default": true } + } }, - "operationId": "delete-settings-sms-notification" + "type": "object" + } } + } }, - "/apps/{appId}/extensions/push-notification/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Store settings", - "description": "Push notification : Store new settings for Push notifications extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" + "responses": { + "200": { + "description": "Map Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/deleteSchema" + } + } + }, + "type": "object" + }, + "example": { + "data": { + "": { + "success": true, + "message": "Added setting(s) successfully." + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "Settings" + ], + "summary": "List settings", + "description": "Lists settings of an app.", + "operationId": "list-settings", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "List Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "core.conversations.updateOnGroupActions": { + "type": "boolean" + }, + "core.conversations.updateOnReplies": { + "type": "boolean" + }, + "core.threads.updateOnMessageActions": { + "type": "boolean" + }, + "core.conversations.updateOnCallActivity": { + "type": "boolean" + }, + "core.conversations.updateOnMessageActions": { + "type": "boolean" + } + }, + "type": "object" }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pushNotificationRequestSchema" - }, - "examples": { - "abc": { - "$ref": "#/components/examples/pushNotificationRequestExample" - } - } + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "core.conversations.updateOnGroupActions": true, + "core.conversations.updateOnReplies": true, + "core.threads.updateOnMessageActions": false, + "core.conversations.updateOnCallActivity": true, + "core.conversations.updateOnMessageActions": true, + "core.conversations.updateOnCustomMessage": true, + "core.notifications.push.accessible": true, + "core.notifications.push.enabled": true, + "core.notifications.push.advanced.enabled": true, + "core.notifications.push.advanced.included": [ + "preferences", + "templates", + "providers.multiple" + ] + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Settings" + ], + "summary": "UnMaps settings", + "description": "UnMaps settings of an app.", + "operationId": "unmap-settings", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "UnMap Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/deleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Save Push Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/pushNotificationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "examples": { - "abc": { - "$ref": "#/components/examples/pushNotificationResponseExample" - } - } - } + "example": { + "data": { + "success": true, + "message": "Added setting(s) successfully." + } + } + } + } + } + } + } + }, + "/apps/{appId}/extensions/data-masking/v1/settings": { + "get": { + "tags": [ + "Extensions" + ], + "summary": "Data masking Get Settings", + "description": "Data masking : Get the settings for Data masking extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Data-Maksing Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/dataMaskingGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-push-notification" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Update settings", - "description": "Push notification : Update the settings for Push notifications extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/pushNotificationRequestSchema" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "appId": "10419c7658224", + "dropMessage": false, + "customregexData": [], + "defaultRegexData": [ + { + "enableFlag": false, + "id": "2", + "name": "Emails", + "regex": "\\\\w+([.-]?\\\\w+)*@\\\\w+([.-]?\\\\w+)*(\\\\.\\\\w{2,10})+" }, - "examples": { - "abc": { - "$ref": "#/components/examples/pushNotificationRequestExample" - } + { + "enableFlag": false, + "id": "1", + "name": "US Phone numbers", + "regex": "[2-9]\\\\d{2}-\\\\d{3}-\\\\d{4}" + }, + { + "enableFlag": false, + "id": "3", + "name": "SSN", + "regex": "\\\\d{3}-\\\\d{2}-\\\\d{4}" } + ] } + } } - }, - "responses": { - "200": { - "description": "Update Push Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/pushNotificationSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "examples": { - "abc": { - "$ref": "#/components/examples/pushNotificationResponseExample" - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-data-masking" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Data masking Store or update settings", + "description": "Data masking : Store or update the settings for Data masking extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/dataMaskingRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Data Masking Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/dataMaskingResponseSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-push-notification" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Get settings", - "description": "Push notification : Get settings for Push notifications extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "responses": { - "200": { - "description": "Get Push Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/pushNotificationGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "examples": { - "abc": { - "$ref": "#/components/examples/pushNotificationResponseExample" - } - } - } + } + } + } + } + } + }, + "operationId": "store-or-update-settings-data-masking" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Data masking Delete settings", + "description": "Data masking : Delete the settings for Data masking extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Data Masking Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/dataMaskingResponseSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-push-notification" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Push notification Delete settings", - "description": "Push notification : Delete the settings for Push notifications extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Push Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/pushNotificationDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "success": true - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - }, - "operationId": "delete-settings-push-notification" + } + } + } } + } }, - "/apps/{appId}/extensions/chatwoot/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Chatwoot Store settings", - "description": "Chatwoot : Store new settings for Chatwoot extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/chatwootRequestSchema" - } + "operationId": "delete-settings-data-masking" + } + }, + "/apps/{appId}/extensions/profanity-filter/v1/settings": { + "post": { + "tags": [ + "Extensions" + ], + "summary": "Profanity-filter Adds Settings", + "description": "Profanity-filter : Adds settings an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/profanityFilterRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Store Profanity-filter Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/profanityFilterCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Store Chatwoot Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/chatwootSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", - "customerSupportUid": "cometchat-uid-1", - "chatwootInboxId": "12112", - "chatwootAccountId": "42113", - "appId": "212663ddb7a2b1b", - "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxMAY2M2RkYjdhMmE2NmIifQ==" - } - } - } - } - } - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } + } + } + } + } + } + } + }, + "operationId": "store-settings-profanity-filter" + }, + "get": { + "tags": [ + "Extensions" + ], + "summary": "Profanity-filter Get Settings", + "description": "Profanity-filter : Get settings of an app.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Profanity-Filter Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/profanityFilterGetSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-chatwoot" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Chatwoot Update settings", - "description": "Chatwoot : Update the settings for Chatwoot extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/chatwootRequestSchema" - } + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "settings": { + "badwords": [ + "xyz" + ], + "dropMessage": false, + "appId": "134234d234rf33" } + } } - }, - "responses": { - "200": { - "description": "Update Chatwoot Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/chatwootSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "212663ddb7a2b1b", - "chatwootAccessToken": "EgsXaxRZFUy4tPWDjwmyZvYk", - "customerSupportUid": "cometchat-uid-1", - "chatwootInboxId": "12123", - "chatwootAccountId": "42613", - "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxLjY2M2RkYjdhMmE2NmIifQ==" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "get-settings-profanity-filter" + }, + "put": { + "tags": [ + "Extensions" + ], + "summary": "Profanity-filter Update settings", + "description": "Profanity-filter : Update the settings for Profanity-filter extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/profanityFilterRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Update Profanity Filter Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/profanityFilterCreateSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-chatwoot" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Chatwoot Get settings", - "description": "Chatwoot : Get settings for Chatwoot extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } - ], - "responses": { - "200": { - "description": "Get Chatwoot Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/chatwootGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "chatwootAccountId": "12345", - "chatwootInboxId": "12151", - "appId": "212663ddb7a2b1b", - "chatwootAccessToken": "EgsXaxRZFUy4atPWDjwmyZvYk", - "customerSupportUid": "cometchat-uid-1", - "webhookURL": "https://chatwoot-eu.cometchat.io/v1/reply?token=K1b_mZsa31lTuNQqbTo7xtRHY0y7UUqXfhsUJltruwM=.eyJhcHBJZCI6IjIxMjY2M2RkYjdhNmQ2NmIifQ==" - } - } - } - } - } - } + } + } + } + } + } + }, + "operationId": "update-settings-profanity-filter" + }, + "delete": { + "tags": [ + "Extensions" + ], + "summary": "Profanity-filter Delete settings", + "description": "Profanity-filter : Delete the settings for Profanity-filter extension.", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Profanity-Filter Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/profanityFilterDeleteSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-chatwoot" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Chatwoot Delete settings", - "description": "Chatwoot : Delete the settings for Chatwoot extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "example": { + "data": { + "statusCode": 200, + "success": true, + "responseTime": 3.061743974685669, + "body": { + "data": { + "success": true + } } + } + } + } + } + } + }, + "operationId": "delete-settings-profanity-filter" + } + }, + "/apps/{appId}/webhooks": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Create Webhook", + "description": "Creates webhook in an app.", + "operationId": "create-webhook", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "id", + "name", + "webhookURL" ], - "responses": { - "200": { - "description": "Delete Chatwoot Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/chatwootDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } - } - } + "properties": { + "id": { + "description": "Id of the Webhook.", + "type": "string" + }, + "name": { + "description": "name of the Webhook.", + "type": "string" + }, + "useBasicAuth": { + "description": "Boolean value for Basic Auth.", + "type": "boolean" + }, + "username": { + "description": "Username of the user", + "type": "string" + }, + "password": { + "description": "Password of the user", + "type": "string" + }, + "webhookURL": { + "description": "Webhook URL of the app", + "type": "string" + }, + "enabled": { + "description": "Webhook should be enabled/ disabled", + "type": "boolean" + }, + "retryOnFailure": { + "description": "Enables automatic retries for failed webhook deliveries due to non-2xx HTTP responses or network errors.", + "type": "boolean", + "default": false + } }, - "operationId": "delete-settings-chatwoot" + "type": "object" + } } + } }, - "/apps/{appId}/extensions/message-shortcuts/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Message Shortcuts Store settings", - "description": "Message Shortcuts : Store new settings for Message shortcuts extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/messageShortcutsRequestSchema" - } + "responses": { + "200": { + "description": "Created Webhook", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Save Message Shortcuts Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageShortcutsSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "shortcuts": { - "!cu": "See you later.", - "!ty": "Hey! Thanks a lot! 😊", - "!hbd": "Happy Birthday! 🥳", - "!ssup": "What's up!?", - "!wc": "You're welcome!" - } - } - } - } - } - } - } + "example": [ + { + "data": { + "id": "test_webhook201", + "name": "test_webhook201", + "webhookURL": "https://example.com/test", + "createdAt": 1684141151, + "updatedAt": 1684141151 + } + } + ] + } + } + } + } + }, + "get": { + "tags": [ + "Webhooks" + ], + "summary": "List Webhooks", + "description": "Lists webhooks in an app.", + "operationId": "list-webhooks", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + }, + { + "name": "perPage", + "in": "query", + "description": "Number of webhooks to be fetched in a request. The default value is 100 and the maximum value is 1000.", + "schema": { + "type": "integer", + "default": "100" + } + }, + { + "name": "searchKey", + "in": "query", + "description": "Searches for specified keyword in name", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "List Webhooks", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-message-shortcuts" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Message Shortcuts Update settings", - "description": "Message Shortcuts : Update the settings for Message shortcuts extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, + "example": { + "data": [ { - "$ref": "#/components/parameters/appId" + "id": "test_webhook201", + "name": "test_webhook201", + "webhookURL": "https://example.com/test", + "createdAt": 1684141151, + "updatedAt": 1684141151 } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/messageShortcutsRequestSchema" - } - } + ], + "meta": { + "pagination": { + "total": 1, + "count": 1, + "per_page": 10, + "current_page": 1, + "total_pages": 1 } - }, - "responses": { - "200": { - "description": "Update Message Shortcuts Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageShortcutsSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "shortcuts": { - "!cu": "See you later.", - "!ty": "Hey! Thanks a lot! 😊", - "!hbd": "Happy Birthday! 🥳", - "!ssup": "What's up!?", - "!wc": "You're welcome!" - } - } - } - } - } - } - } + } + } + } + } + } + } + } + }, + "/apps/{appId}/webhooks/{webhookId}": { + "get": { + "tags": [ + "Webhooks" + ], + "summary": "Get Webhook", + "description": "Gets details of a webhook in an app.", + "operationId": "get-webhook", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "responses": { + "200": { + "description": "Get Webhook", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-message-shortcuts" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Message Shortcuts Get settings", - "description": "Message Shortcuts : Get settings for Message shortcuts extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, + "example": { + "data": [ { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + "data": { + "id": "test_webhook201", + "name": "test_webhook201", + "webhookURL": "https://example.com/test", + "createdAt": 1684141151, + "updatedAt": 1684141151 + } } - ], - "responses": { - "200": { - "description": "Get Message Shortcuts Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageShortcutsGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "settings": { - "shortcuts": { - "!cu": "See you later.", - "!ty": "Hey! Thanks a lot! 😊", - "!hbd": "Happy Birthday! 🥳", - "!ssup": "What's up!?", - "!wc": "You're welcome!" - } - } - } - } - } - } - } + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "Webhooks" + ], + "summary": "Update Webhook", + "description": "Updates webhook details of an app.", + "operationId": "update-webhook", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "name of the Webhook.", + "type": "string" + }, + "useBasicAuth": { + "description": "Boolean value for Basic Auth.", + "type": "boolean" + }, + "username": { + "description": "Username of the user", + "type": "string" + }, + "password": { + "description": "Password of the user", + "type": "string" + }, + "webhookURL": { + "description": "Webhook URL of the app", + "type": "string" + }, + "retryOnFailure": { + "description": "Enables automatic retries for failed webhook deliveries due to non-2xx HTTP responses or network errors.", + "type": "boolean", + "default": false + }, + "enabled": { + "description": "Webhook should be enabled/ disabled", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Update Webhook", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "get-settings-message-shortcuts" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Message Shortcuts Delete settings", - "description": "Message Shortcuts : Delete the settings for Message shortcuts extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, + "example": { + "data": [ { - "$ref": "#/components/parameters/appId" + "data": { + "id": "test_webhook201", + "name": "updated webhook", + "webhookURL": "https://example.com/test", + "createdAt": 1684141151, + "updatedAt": 1684145021 + } } - ], - "responses": { - "200": { - "description": "Delete Message Shortcuts Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/messageShortcutsDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 1.8547508716583252, - "body": { - "data": { - "success": true - } - } - } - } - } + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Webhooks" + ], + "summary": "Delete Webhook", + "description": "Delete the webhook from an app.", + "operationId": "delete-webhook", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "responses": { + "200": { + "description": "Delete Webhook", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/deleteWebhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "delete-settings-message-shortcuts" + "example": { + "data": { + "success": true, + "message": "Deleted Webhook successfully." + } + } + } } - }, - "/apps/{appId}/extensions/email-notification/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Email Notification Store settings", - "description": "Email Notification : Store new settings for Email notification extension", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/emailNotificationRequestSchema" - } - } + } + } + } + }, + "/apps/{appId}/webhooks/{webhookId}/triggers": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Add Triggers", + "description": " Adds trigger to a webhook in an app.", + "operationId": "add-triggers", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "triggerIds": { + "description": "array of triggerIds.", + "type": "array", + "items": { + "type": "string" } + } }, - "responses": { - "200": { - "description": "Store Email Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailNotificationRequestSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "messageDelay": 120, - "senderEmail": "mymail@example", - "senderName": "John Doe", - "sendGridApiKey": "key_1234", - "sendGridTemplateId": "Template_1234", - "sendGridUnsubscribeGroupId": "Group_1234", - "useWebhook": true, - "webhookURL": "http://example.com", - "useWebhookBasicAuth": true, - "webhookUsername": "username", - "webhookPassword": "fgh356$123ggh**" - } - } - } - } - } - } + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Enabled Triggers", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "properties": { + "": { + "$ref": "#/components/schemas/triggerSchema" + } + }, + "type": "object" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "store-settings-email-notification" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Email Notification Update settings", - "description": "Email Notification : Update the settings for Email notification extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" + "example": { + "data": { + "message_delivery_receipt": { + "success": true, + "message": "Triggers has been added successfully." }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/emailNotificationRequestSchema" - } - } + "message_read_receipt": { + "success": true, + "message": "Triggers has been added successfully." } - }, - "responses": { - "200": { - "description": "Update Email notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailNotificationRequestSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "messageDelay": 120, - "senderEmail": "mymail@example", - "senderName": "John Doe", - "sendGridApiKey": "key_1234", - "sendGridTemplateId": "Template_1234", - "sendGridUnsubscribeGroupId": "Group_1234", - "useWebhook": true, - "webhookURL": "http://example.com", - "useWebhookBasicAuth": true, - "webhookUsername": "username", - "webhookPassword": "fgh356$123ggh**" - } - } - } - } - } - } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "Webhooks" + ], + "summary": "List Triggers", + "description": "List triggers attached to a webhook in an app.", + "operationId": "list-triggers", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "responses": { + "200": { + "description": "Enabled Triggers", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "type": "array", + "items": { + "properties": { + "": { + "$ref": "#/components/schemas/listTriggerSchema" + } + }, + "type": "object" + } + }, + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "operationId": "update-settings-email-notification" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Email Notification Get settings", - "description": "Email Notification : Get settings for Email notification extension.", - "parameters": [ + "example": { + "data": [ { - "$ref": "#/components/parameters/key" + "id": "message_delivery_receipt", + "description": "[Beta] The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered." }, { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Email notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailNotificationGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "messageDelay": 120, - "senderEmail": "mymail@example", - "senderName": "John Doe", - "sendGridApiKey": "key_1234", - "sendGridTemplateId": "Template_1234", - "sendGridUnsubscribeGroupId": "Group_1234", - "useWebhook": true, - "webhookURL": "http://example.com", - "useWebhookBasicAuth": true, - "webhookUsername": "username", - "webhookPassword": "fgh356$123ggh**" - } - } - } - } - } - } - } + "id": "message_read_receipt", + "description": "[Beta] The hook triggers when the client chat application confirms with Cometchat servers that a message was read." } - }, - "operationId": "get-settings-email-notification" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Email Notification Delete settings", - "description": "Email Notification : Delete the settings for Email notification extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" + ], + "meta": { + "pagination": { + "total": 2, + "count": 2, + "per_page": 100, + "current_page": 1, + "total_pages": 1 } - ], - "responses": { - "200": { - "description": "Delete Email Notification Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/emailNotificationDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } - } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Webhooks" + ], + "summary": "Remove Triggers", + "description": "Removes triggers from a webhook in an app.", + "operationId": "remove-triggers", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/webhookId" + }, + { + "$ref": "#/components/parameters/X-Webhook-Version" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "triggerIds": { + "description": "array of triggerIds.", + "type": "array", + "items": { + "type": "string" } + } }, - "operationId": "delete-settings-email-notification" + "type": "object", + "example": { + "name": "Sachin Bahukhandi", + "email": "sachin.bahukhandi+114@cometchat.com", + "password": "sachin@123", + "contactNumber": "8936985734", + "role": "engineer", + "appName": "Create APP", + "appRegion": "us" + } + } } + } }, - "/apps/{appId}/collaborators": { - "post": { - "tags": [ - "Team Management" - ], - "summary": "Adds/Remove collaborators", - "operationId": "add-collaborator", - "description": "Adds or removes collaborators for an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "admins": { - "description": "Array of email IDs to designate as administrators for the team.", - "type": "array", - "items": { - "type": "string" - } - }, - "moderators": { - "description": "Array of email IDs to assign as moderators for the team.", - "type": "array", - "items": { - "type": "string" - } - }, - "collaboratorsToRemove": { - "description": "Array of email IDs to remove from team collaboration.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } + "responses": { + "200": { + "description": "Enabled Triggers", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/deleteWebhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Created App", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/teamMgmtSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "collaboratorsToRemove": [], - "admins": { - "admin1@cometchat.com": { - "success": true - }, - "admin2@cometchat.com": { - "success": true - } - }, - "developers": { - "developer1@cometchat.com": { - "success": true - } - }, - "moderators": [] - } - } - } - } - } + "example": { + "data": { + "success": true, + "message": "Removed trigger successfully." + } } - }, - "get": { - "tags": [ - "Team Management" - ], - "summary": "List collaborators", - "operationId": "list-collaborators", - "description": "Lists all the collaborators of an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } + } + } + } + } + } + }, + "/tenants": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "Add Tenant", + "description": "Add Tenant", + "operationId": "add-tenant", + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "name", + "email", + "password", + "appName", + "appRegion" ], - "responses": { - "200": { - "description": "Created App", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/teamMgmtGetSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "1", - "name": "Admin1", - "email": "admin1@cometchat.com", - "role": "admin", - "createdAt": 1618578628 - }, - { - "id": "2", - "name": "Admin2", - "email": "admin2@cometchat.com", - "role": "admin", - "createdAt": 1625220090 - }, - { - "id": "3", - "name": "Developer1", - "email": "developer1@cometchat.com", - "role": "developer", - "createdAt": 1625220076 - } - ] - } - } - } - } + "properties": { + "name": { + "description": "Specifies the name of the customer.", + "type": "string" + }, + "email": { + "description": "Specifies the email address of the customer, this will be the account identifier", + "type": "string" + }, + "password": { + "description": "For the purpose of accessing the CometChat account, a password in plain text format is required.", + "type": "string" + }, + "contactNumber": { + "description": "This represents the user's contact number information.", + "type": "string" + }, + "role": { + "description": "This indicates the role associated with the created account, such as developer, product manager, business owner, and so on.", + "type": "string" + }, + "appName": { + "description": "This defines the name of the application within CometChat.", + "type": "string" + }, + "appRegion": { + "description": "This refers to the selected region for the app. Users should select a region that is geographically close to their customer base for optimal performance.", + "type": "string", + "enum": [ + "us", + "eu", + "in" + ] + }, + "industry": { + "description": "This pertains to the specific domain that the app is associated with.", + "type": "string" + }, + "technology": { + "description": "This refers to a single-string representation of the primary technology or framework utilized by the customer, examples of which may include 'ReactJS', 'Angular', 'Vue', 'Android', 'iOS', and so on.", + "type": "string" + } + }, + "type": "object" + }, + "examples": { + "Request Example": { + "summary": "Request Example", + "value": { + "name": "Example User", + "email": "my-email@example.com", + "password": "somePassword#!", + "contactNumber": "1234567890", + "role": "engineer", + "appName": "Create App", + "appRegion": "us" + } } + } } + } }, - "/apps/{appId}/settings": { - "post": { - "tags": [ - "Settings" - ], - "summary": "Maps Settings", - "description": "Maps settings for an app.", - "operationId": "map-settings", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "settings": { - "description": "Updates the settings of an app.", - "type": "object", - "additionalProperties": { - "type": "boolean", - "default": true - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Map Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/deleteSchema" - } - } - }, - "type": "object" - }, - "example": { - "data": { - "": { - "success": true, - "message": "Added setting(s) successfully." - } - } - } - } + "responses": { + "200": { + "description": "Map Settings", + "content": { + "application/json": { + "schema": { + "properties": { + "": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/deleteSchema" + } + } + }, + "type": "object" + }, + "example": { + "data": { + "name": "Sachin Bahukhandi", + "email": "sachin.bahukhandi+113@cometchat.com", + "createdAt": 1715947984, + "contactNumber": "8936985734", + "app": { + "name": "Create APP", + "appId": "2531446b588709f6", + "region": "us", + "authKey": "05753974edb58b7ce7c1ab10eb3eb3033e3dd1e9", + "apiKey": "5db447476272190a2cda793e10e59f58bcc17317", + "createdAt": 1715947984, + "plan": "Build" + } + } + } + } + } + } + }, + "security": [ + { + "basicAuth": [] + } + ] + } + }, + "/apps/{appId}/moderation/rules": { + "post": { + "tags": [ + "Moderation" + ], + "summary": "Add Rule", + "description": "Create a new moderation rule to specify actions and conditions for detecting and handling inappropriate content.", + "operationId": "create-rule", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModerationRequestBody" + } + } + } + }, + "responses": { + "200": { + "description": "Created Rule", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/ModerationData" } - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "moderation-test", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "violence_greaterThan_30" + ], + "message": [ + "Image contains violence with confidence greater than 30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1720003247, + "updatedAt": 1720003247, + "revisionId": "253179cf5f665257_moderation-test_1" + } } - }, - "get": { - "tags": [ - "Settings" - ], - "summary": "List settings", - "description": "Lists settings of an app.", - "operationId": "list-settings", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" + } + } + } + } + }, + "get": { + "tags": [ + "Moderation" + ], + "summary": "List Rules", + "description": "Retrieve a list of all moderation rules.", + "operationId": "list-rules", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "name": "limit", + "in": "query", + "description": "The number of records to fetch.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "List Rule", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "List Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "core.conversations.updateOnGroupActions": { - "type": "boolean" - }, - "core.conversations.updateOnReplies": { - "type": "boolean" - }, - "core.threads.updateOnMessageActions": { - "type": "boolean" - }, - "core.conversations.updateOnCallActivity": { - "type": "boolean" - }, - "core.conversations.updateOnMessageActions": { - "type": "boolean" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "core.conversations.updateOnGroupActions": true, - "core.conversations.updateOnReplies": true, - "core.threads.updateOnMessageActions": false, - "core.conversations.updateOnCallActivity": true, - "core.conversations.updateOnMessageActions": true, - "core.conversations.updateOnCustomMessage": true, - "core.notifications.push.accessible": true, - "core.notifications.push.enabled": true, - "core.notifications.push.advanced.enabled": true, - "core.notifications.push.advanced.included": [ - "preferences", - "templates", - "providers.multiple" - ] - } - } - } + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "moderation-test", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "violence_greaterThan_30" + ], + "message": [ + "Image contains violence with confidence greater than 30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1720003247, + "updatedAt": 1720003247, + "revisionId": "253179cf5f665257_moderation-test_1" + }, + { + "id": "video-moderation1", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "violence_greaterThan_30" + ], + "message": [ + "Image contains violence with confidence greater than 30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1720000488, + "updatedAt": 1720000488, + "revisionId": "253179cf5f665257_video-moderation1_1" + }, + { + "id": "text-profanity-filter", + "name": "Text Profanity filter", + "description": "Detect and censor profanity in text messages.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": true, + "isMediaPresent": false, + "entity": "message", + "operand": "text", + "category": "word", + "operator": "contains", + "value": [ + "profanity-list" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1718355386, + "updatedAt": 1720006272, + "revisionId": "253157108b5294c4_profanity-filter_25", + "default": true + }, + { + "id": "image-moderation", + "name": "AI Image Moderation", + "description": "AI-powered image moderation to detect unsafe content.", + "enabled": false, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "AnyOf_greaterThan_30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1718350200, + "updatedAt": 1719932600, + "revisionId": "253157108b5294c4_image-moderation_11", + "default": true + }, + { + "id": "video-moderation", + "name": "AI Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": false, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "video", + "category": "word", + "operator": "contains", + "value": [ + "AnyOf_greaterThan_30" + ] + } + ], + "action": [ + "dropMessage" + ], + "active": true, + "createdAt": 1718350199, + "updatedAt": 1720006008, + "revisionId": "253157108b5294c4_video-moderation_10", + "default": true + }, + { + "id": "custom-profanity-filter", + "name": "Custom Profanity filter", + "description": "Detect and censor profanity in custom messages.", + "enabled": false, + "conditions": [ + { + "id": 1, + "isListReferencePresent": true, + "isMediaPresent": false, + "entity": "message", + "operand": "custom", + "category": "word", + "operator": "contains", + "value": [ + "profanity-list" + ] + } + ], + "action": [ + "dropMessage" + ], + "active": true, + "createdAt": 1718341200, + "updatedAt": 1719819136, + "revisionId": "253157108b5294c4_profanity-filter_8", + "default": true + }, + { + "id": "contact_details_filter", + "name": "Contact details filter", + "description": "Identifies and removes phone numbers from text", + "enabled": false, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": false, + "entity": "message", + "operand": "text", + "category": "pattern", + "operator": "contains", + "value": [ + "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" + ] + }, + { + "id": 2, + "isKeywordsReferencePresent": false, + "isMediaPresent": false, + "entity": "message", + "operand": "custom", + "category": "pattern", + "operator": "contains", + "value": [ + "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1718186338, + "updatedAt": 1719836048, + "revisionId": "2531882e5e289115_contact_details_filter_3", + "default": true + }, + { + "id": "email_filter", + "name": "Email filter", + "description": "Identify and remove email address from messages", + "enabled": false, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": false, + "entity": "message", + "operand": "text", + "category": "pattern", + "operator": "contains", + "value": [ + "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" + ] + }, + { + "id": 2, + "isKeywordsReferencePresent": false, + "isMediaPresent": false, + "entity": "message", + "operand": "custom", + "category": "pattern", + "operator": "contains", + "value": [ + "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1718099938, + "updatedAt": 1719836049, + "revisionId": "2531882e5e289115_contact_email_filter_5", + "default": true + } + ], + "meta": { + "current": { + "limit": 50, + "count": 8 + } + } } - }, - "delete": { - "tags": [ - "Settings" - ], - "summary": "UnMaps settings", - "description": "UnMaps settings of an app.", - "operationId": "unmap-settings", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "UnMap Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Added setting(s) successfully." - } - } - } + } + } + } + } + } + }, + "/apps/{appId}/moderation/rules/{ruleId}": { + "get": { + "tags": [ + "Moderation" + ], + "summary": "Get Rule", + "description": "Retrieve details of a specific moderation rule by its ID.", + "operationId": "get-rule", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/ruleId" + } + ], + "responses": { + "200": { + "description": "Get Rule", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "profanity-list", + "name": "Profane Words", + "category": "word", + "isCSV": false, + "searchTerms": [ + "fuck", + "damn", + "shit", + "cunt", + "nigga", + "nigger", + "wanker", + "cunt", + "fag", + "shithead", + "jizz", + "hellbitch", + "retard", + "cocksucker", + "cock", + "kill", + "kike", + "twat", + "bastard", + "death", + "asshole", + "wop", + "scumbag", + "penis", + "murder", + "dick", + "gook", + "vagina", + "rape", + "bastard", + "spic", + "spunk", + "beat" + ], + "createdAt": 1718354412, + "updatedAt": 1718354412, + "revisionId": "253157108b5294c4_profanity-list_1", + "active": true, + "default": true + } } + } } + } + } + }, + "put": { + "tags": [ + "Moderation" + ], + "summary": "Update Rule", + "description": "Update an existing moderation rule with new actions or conditions.", + "operationId": "update-rule", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/ruleId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModerationRequestBody" + } + } + } }, - "/apps/{appId}/extensions/data-masking/v1/settings": { - "get": { - "tags": [ - "Extensions" - ], - "summary": "Data masking Get Settings", - "description": "Data masking : Get the settings for Data masking extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Data-Maksing Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/dataMaskingGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "appId": "10419c7658224", - "dropMessage": false, - "customregexData": [], - "defaultRegexData": [ - { - "enableFlag": false, - "id": "2", - "name": "Emails", - "regex": "\\\\w+([.-]?\\\\w+)*@\\\\w+([.-]?\\\\w+)*(\\\\.\\\\w{2,10})+" - }, - { - "enableFlag": false, - "id": "1", - "name": "US Phone numbers", - "regex": "[2-9]\\\\d{2}-\\\\d{3}-\\\\d{4}" - }, - { - "enableFlag": false, - "id": "3", - "name": "SSN", - "regex": "\\\\d{3}-\\\\d{2}-\\\\d{4}" - } - ] - } - } - } - } - } - } + "responses": { + "200": { + "description": "Update Rule", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } - }, - "operationId": "get-settings-data-masking" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Data masking Store or update settings", - "description": "Data masking : Store or update the settings for Data masking extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dataMaskingRequestSchema" - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "moderation-test", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "violence_greaterThan_30" + ], + "message": [ + "Image contains violence with confidence greater than 30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1720003247, + "updatedAt": 1720003247, + "revisionId": "253179cf5f665257_moderation-test_1" + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Moderation" + ], + "summary": "Remove rule", + "description": "Delete a specific moderation rule by its ID.", + "operationId": "delete-rule", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/ruleId" + } + ], + "responses": { + "200": { + "description": "Delete Rule", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } + }, + "type": "object" } + }, + "type": "object" }, - "responses": { - "200": { - "description": "Update Data Masking Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/dataMaskingResponseSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "example": { + "data": { + "success": true, + "message": "Rule with id moderation-test has been deleted successfully." + } + } + } + } + } + } + } + }, + "/apps/{appId}/moderation/keywords": { + "post": { + "tags": [ + "Moderation" + ], + "summary": "Add Keywords", + "description": "Create a new keyword list for moderation.", + "operationId": "create-rule-keyword", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/KeywordList" + } + } + } + }, + "responses": { + "200": { + "description": "Created Keyword", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } - }, - "operationId": "store-or-update-settings-data-masking" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Data masking Delete settings", - "description": "Data masking : Delete the settings for Data masking extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "profane-word-list-1", + "name": "profane word list", + "description": "Profane word list", + "category": "word", + "isCSV": true, + "searchTerms": [ + "\"a\"", + "\"b\"", + "\"c\"" + ], + "createdAt": 1720023805, + "updatedAt": 1720023805, + "revisionId": "253179cf5f665257_profane-word-list-1_1", + "active": true + } + } + } + } + } + } + }, + "get": { + "tags": [ + "Moderation" + ], + "summary": "List keywords", + "description": "Fetches all the keywords.", + "operationId": "list-rule-keywords", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "List Keywords", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Data Masking Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/dataMaskingResponseSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" } - } - }, - "operationId": "delete-settings-data-masking" + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "_id": "66857afdb4bf371ddfba853b", + "id": "profane-word-list-1", + "appId": "253179cf5f665257", + "name": "profane word list", + "description": "Profane word list", + "category": "word", + "isCSV": true, + "searchTerms": [ + "\"a\"", + "\"b\"", + "\"c\"" + ], + "createdAt": 1720023805, + "updatedAt": 1720023805, + "revisionId": "253179cf5f665257_profane-word-list-1_1", + "active": true, + "__v": 0 + }, + { + "_id": "666c01eccfe97336757fb611", + "id": "profanity-list", + "name": "Profane Words", + "category": "word", + "isCSV": false, + "searchTerms": [ + "fuck", + "nigger", + "fuck", + "nigger", + "wanker", + "cunt", + "damn", + "shit", + "fag", + "shithead", + "jizz", + "hellbitch", + "retard", + "cocksucker", + "cock", + "kill", + "cunt", + "kike", + "twat", + "bastard", + "death", + "asshole", + "wop", + "scumbag", + "penis", + "murder", + "dick", + "gook", + "vagina", + "rape", + "bastard", + "spic", + "spunk", + "beat" + ], + "createdAt": 1718354412, + "updatedAt": 1718354412, + "revisionId": "253157108b5294c4_profanity-list_1", + "active": true, + "__v": 0, + "default": true, + "appId": "default" + } + ], + "meta": { + "current": { + "limit": 10, + "count": 2 + } + } + } + } } - }, - "/apps/{appId}/extensions/profanity-filter/v1/settings": { - "post": { - "tags": [ - "Extensions" - ], - "summary": "Profanity-filter Adds Settings", - "description": "Profanity-filter : Adds settings an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/profanityFilterRequestSchema" - } + } + } + } + }, + "/apps/{appId}/moderation/keywords/{keywordId}": { + "get": { + "tags": [ + "Moderation" + ], + "summary": "Get keyword", + "description": "Retrieve details of a specific keyword list by its ID.", + "operationId": "get-rule-keyword", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/keywordId" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Get Keyword", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } - }, - "responses": { - "200": { - "description": "Store Profanity-filter Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/profanityFilterCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } - } - } - }, - "operationId": "store-settings-profanity-filter" - }, - "get": { - "tags": [ - "Extensions" - ], - "summary": "Profanity-filter Get Settings", - "description": "Profanity-filter : Get settings of an app.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Profanity-Filter Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/profanityFilterGetSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "settings": { - "badwords": [ - "xyz" - ], - "dropMessage": false, - "appId": "134234d234rf33" - } - } - } - } - } - } - } - } - }, - "operationId": "get-settings-profanity-filter" - }, - "put": { - "tags": [ - "Extensions" - ], - "summary": "Profanity-filter Update settings", - "description": "Profanity-filter : Update the settings for Profanity-filter extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/profanityFilterRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Update Profanity Filter Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/profanityFilterCreateSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } - } - } - }, - "operationId": "update-settings-profanity-filter" - }, - "delete": { - "tags": [ - "Extensions" - ], - "summary": "Profanity-filter Delete settings", - "description": "Profanity-filter : Delete the settings for Profanity-filter extension.", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Profanity-Filter Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/profanityFilterDeleteSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "statusCode": 200, - "success": true, - "responseTime": 3.061743974685669, - "body": { - "data": { - "success": true - } - } - } - } - } - } - } - }, - "operationId": "delete-settings-profanity-filter" - } - }, - "/apps/{appId}/webhooks": { - "post": { - "tags": [ - "Webhooks" - ], - "summary": "Create Webhook", - "description": "Creates webhook in an app.", - "operationId": "create-webhook", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "id", - "name", - "webhookURL" - ], - "properties": { - "id": { - "description": "Id of the Webhook.", - "type": "string" - }, - "name": { - "description": "name of the Webhook.", - "type": "string" - }, - "useBasicAuth": { - "description": "Boolean value for Basic Auth.", - "type": "boolean" - }, - "username": { - "description": "Username of the user", - "type": "string" - }, - "password": { - "description": "Password of the user", - "type": "string" - }, - "webhookURL": { - "description": "Webhook URL of the app", - "type": "string" - }, - "enabled": { - "description": "Webhook should be enabled/ disabled", - "type": "boolean" - }, - "retryOnFailure": { - "description": "Enables automatic retries for failed webhook deliveries due to non-2xx HTTP responses or network errors.", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Created Webhook", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": [ - { - "data": { - "id": "test_webhook201", - "name": "test_webhook201", - "webhookURL": "https://example.com/test", - "createdAt": 1684141151, - "updatedAt": 1684141151 - } - } - ] - } - } - } - } - }, - "get": { - "tags": [ - "Webhooks" - ], - "summary": "List Webhooks", - "description": "Lists webhooks in an app.", - "operationId": "list-webhooks", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - }, - { - "name": "perPage", - "in": "query", - "description": "Number of webhooks to be fetched in a request. The default value is 100 and the maximum value is 1000.", - "schema": { - "type": "integer", - "default": "100" - } - }, - { - "name": "searchKey", - "in": "query", - "description": "Searches for specified keyword in name", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "List Webhooks", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "test_webhook201", - "name": "test_webhook201", - "webhookURL": "https://example.com/test", - "createdAt": 1684141151, - "updatedAt": 1684141151 - } - ], - "meta": { - "pagination": { - "total": 1, - "count": 1, - "per_page": 10, - "current_page": 1, - "total_pages": 1 - } - } - } - } - } - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "profanity-list", + "name": "Profane Words", + "category": "word", + "isCSV": false, + "searchTerms": [ + "fuck", + "nigger", + "fuck", + "nigger", + "wanker", + "cunt", + "damn", + "shit", + "fag", + "shithead", + "jizz", + "hellbitch", + "retard", + "cocksucker", + "cock", + "kill", + "cunt", + "kike", + "twat", + "bastard", + "death", + "asshole", + "wop", + "scumbag", + "penis", + "murder", + "dick", + "gook", + "vagina", + "rape", + "bastard", + "spic", + "spunk", + "beat" + ], + "createdAt": 1718354412, + "updatedAt": 1718354412, + "revisionId": "253157108b5294c4_profanity-list_1", + "active": true, + "default": true + } } + } } - }, - "/apps/{appId}/webhooks/{webhookId}": { - "get": { - "tags": [ - "Webhooks" - ], - "summary": "Get Webhook", - "description": "Gets details of a webhook in an app.", - "operationId": "get-webhook", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "responses": { - "200": { - "description": "Get Webhook", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "data": { - "id": "test_webhook201", - "name": "test_webhook201", - "webhookURL": "https://example.com/test", - "createdAt": 1684141151, - "updatedAt": 1684141151 - } - } - ] - } - } - } - } - } - }, - "put": { - "tags": [ - "Webhooks" - ], - "summary": "Update Webhook", - "description": "Updates webhook details of an app.", - "operationId": "update-webhook", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "name of the Webhook.", - "type": "string" - }, - "useBasicAuth": { - "description": "Boolean value for Basic Auth.", - "type": "boolean" - }, - "username": { - "description": "Username of the user", - "type": "string" - }, - "password": { - "description": "Password of the user", - "type": "string" - }, - "webhookURL": { - "description": "Webhook URL of the app", - "type": "string" - }, - "retryOnFailure": { - "description": "Enables automatic retries for failed webhook deliveries due to non-2xx HTTP responses or network errors.", - "type": "boolean", - "default": false - }, - "enabled": { - "description": "Webhook should be enabled/ disabled", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Update Webhook", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "data": { - "id": "test_webhook201", - "name": "updated webhook", - "webhookURL": "https://example.com/test", - "createdAt": 1684141151, - "updatedAt": 1684145021 - } - } - ] - } - } - } - } - } - }, - "delete": { - "tags": [ - "Webhooks" - ], - "summary": "Delete Webhook", - "description": "Delete the webhook from an app.", - "operationId": "delete-webhook", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "responses": { - "200": { - "description": "Delete Webhook", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteWebhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Deleted Webhook successfully." - } - } - } - } - } - } + } + } + }, + "put": { + "tags": [ + "Moderation" + ], + "summary": "Update keyword", + "description": "Update an existing keyword list.", + "operationId": "update-rule-keyword", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/keywordId" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/KeywordList" + } } + } }, - "/apps/{appId}/webhooks/{webhookId}/triggers": { - "post": { - "tags": [ - "Webhooks" - ], - "summary": "Add Triggers", - "description": " Adds trigger to a webhook in an app.", - "operationId": "add-triggers", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "triggerIds": { - "description": "array of triggerIds.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Enabled Triggers", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "properties": { - "": { - "$ref": "#/components/schemas/triggerSchema" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "message_delivery_receipt": { - "success": true, - "message": "Triggers has been added successfully." - }, - "message_read_receipt": { - "success": true, - "message": "Triggers has been added successfully." - } - } - } - } + "responses": { + "200": { + "description": "Update Keyword", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "id": "profanity-list", + "name": "Profane Words", + "category": "word", + "isCSV": false, + "searchTerms": [ + "fuck", + "nigger", + "fuck", + "nigger", + "wanker", + "cunt", + "damn", + "shit", + "fag", + "shithead", + "jizz", + "hellbitch", + "retard", + "cocksucker", + "cock", + "kill", + "cunt", + "kike", + "twat", + "bastard", + "death", + "asshole", + "wop", + "scumbag", + "penis", + "murder", + "dick", + "gook", + "vagina", + "rape", + "bastard", + "spic", + "spunk", + "beat" + ], + "createdAt": 1718354412, + "updatedAt": 1718354412, + "revisionId": "253157108b5294c4_profanity-list_1", + "active": true, + "default": true + } } - }, - "get": { - "tags": [ - "Webhooks" - ], - "summary": "List Triggers", - "description": "List triggers attached to a webhook in an app.", - "operationId": "list-triggers", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "responses": { - "200": { - "description": "Enabled Triggers", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "type": "array", - "items": { - "properties": { - "": { - "$ref": "#/components/schemas/listTriggerSchema" - } - }, - "type": "object" - } - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "message_delivery_receipt", - "description": "[Beta] The hook triggers when the client chat application confirms with Cometchat servers that a message was delivered." - }, - { - "id": "message_read_receipt", - "description": "[Beta] The hook triggers when the client chat application confirms with Cometchat servers that a message was read." - } - ], - "meta": { - "pagination": { - "total": 2, - "count": 2, - "per_page": 100, - "current_page": 1, - "total_pages": 1 - } - } - } - } + } + } + } + } + }, + "delete": { + "tags": [ + "Moderation" + ], + "summary": "Remove keyword", + "description": "Delete a keyword list by its ID.", + "operationId": "delete-rule-keyword", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/keywordId" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "Delete Keyword", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" } - } - } - }, - "delete": { - "tags": [ - "Webhooks" - ], - "summary": "Remove Triggers", - "description": "Removes triggers from a webhook in an app.", - "operationId": "remove-triggers", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/webhookId" - }, - { - "$ref": "#/components/parameters/X-Webhook-Version" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "triggerIds": { - "description": "array of triggerIds.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object", - "example": { - "name": "Sachin Bahukhandi", - "email": "sachin.bahukhandi+114@cometchat.com", - "password": "sachin@123", - "contactNumber": "8936985734", - "role": "engineer", - "appName": "Create APP", - "appRegion": "us" - } - } - } - } - }, - "responses": { - "200": { - "description": "Enabled Triggers", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/deleteWebhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Removed trigger successfully." - } - } - } - } - } - } - } - }, - "/tenants": { - "post": { - "tags": [ - "Tenants" - ], - "summary": "Add Tenant", - "description": "Add Tenant", - "operationId": "add-tenant", - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "name", - "email", - "password", - "appName", - "appRegion" - ], - "properties": { - "name": { - "description": "Specifies the name of the customer.", - "type": "string" - }, - "email": { - "description": "Specifies the email address of the customer, this will be the account identifier", - "type": "string" - }, - "password": { - "description": "For the purpose of accessing the CometChat account, a password in plain text format is required.", - "type": "string" - }, - "contactNumber": { - "description": "This represents the user's contact number information.", - "type": "string" - }, - "role": { - "description": "This indicates the role associated with the created account, such as developer, product manager, business owner, and so on.", - "type": "string" - }, - "appName": { - "description": "This defines the name of the application within CometChat.", - "type": "string" - }, - "appRegion": { - "description": "This refers to the selected region for the app. Users should select a region that is geographically close to their customer base for optimal performance.", - "type": "string", - "enum": [ - "us", - "eu", - "in" - ] - }, - "industry": { - "description": "This pertains to the specific domain that the app is associated with.", - "type": "string" - }, - "technology": { - "description": "This refers to a single-string representation of the primary technology or framework utilized by the customer, examples of which may include 'ReactJS', 'Angular', 'Vue', 'Android', 'iOS', and so on.", - "type": "string" - } - }, - "type": "object" - }, - "examples": { - "Request Example": { - "summary": "Request Example", - "value": { - "name": "Example User", - "email": "my-email@example.com", - "password": "somePassword#!", - "contactNumber": "1234567890", - "role": "engineer", - "appName": "Create App", - "appRegion": "us" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Map Settings", - "content": { - "application/json": { - "schema": { - "properties": { - "": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/deleteSchema" - } - } - }, - "type": "object" - }, - "example": { - "data": { - "name": "Sachin Bahukhandi", - "email": "sachin.bahukhandi+113@cometchat.com", - "createdAt": 1715947984, - "contactNumber": "8936985734", - "app": { - "name": "Create APP", - "appId": "2531446b588709f6", - "region": "us", - "authKey": "05753974edb58b7ce7c1ab10eb3eb3033e3dd1e9", - "apiKey": "5db447476272190a2cda793e10e59f58bcc17317", - "createdAt": 1715947984, - "plan": "Build" - } - } - } - } - } - } - }, - "security": [ - { - "basicAuth": [] - } - ] - } - }, - "/apps/{appId}/moderation/rules": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Add Rule", - "description": "Create a new moderation rule to specify actions and conditions for detecting and handling inappropriate content.", - "operationId": "create-rule", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModerationRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "Created Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/ModerationData" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - } - } - } - } - } - } - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Rules", - "description": "Retrieve a list of all moderation rules.", - "operationId": "list-rules", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "name": "limit", - "in": "query", - "description": "The number of records to fetch.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "List Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - }, - { - "id": "video-moderation1", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720000488, - "updatedAt": 1720000488, - "revisionId": "253179cf5f665257_video-moderation1_1" - }, - { - "id": "text-profanity-filter", - "name": "Text Profanity filter", - "description": "Detect and censor profanity in text messages.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": true, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "word", - "operator": "contains", - "value": [ - "profanity-list" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718355386, - "updatedAt": 1720006272, - "revisionId": "253157108b5294c4_profanity-filter_25", - "default": true - }, - { - "id": "image-moderation", - "name": "AI Image Moderation", - "description": "AI-powered image moderation to detect unsafe content.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "AnyOf_greaterThan_30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718350200, - "updatedAt": 1719932600, - "revisionId": "253157108b5294c4_image-moderation_11", - "default": true - }, - { - "id": "video-moderation", - "name": "AI Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "video", - "category": "word", - "operator": "contains", - "value": [ - "AnyOf_greaterThan_30" - ] - } - ], - "action": [ - "dropMessage" - ], - "active": true, - "createdAt": 1718350199, - "updatedAt": 1720006008, - "revisionId": "253157108b5294c4_video-moderation_10", - "default": true - }, - { - "id": "custom-profanity-filter", - "name": "Custom Profanity filter", - "description": "Detect and censor profanity in custom messages.", - "enabled": false, - "conditions": [ - { - "id": 1, - "isListReferencePresent": true, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "word", - "operator": "contains", - "value": [ - "profanity-list" - ] - } - ], - "action": [ - "dropMessage" - ], - "active": true, - "createdAt": 1718341200, - "updatedAt": 1719819136, - "revisionId": "253157108b5294c4_profanity-filter_8", - "default": true - }, - { - "id": "contact_details_filter", - "name": "Contact details filter", - "description": "Identifies and removes phone numbers from text", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" - ] - }, - { - "id": 2, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "pattern", - "operator": "contains", - "value": [ - "\\\\+?(\\\\d{1,3})?{-.\\\\s}?\\\\(?\\\\d{1,4}?\\\\)?{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,4}{-.\\\\s}?\\\\d{1,9}" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718186338, - "updatedAt": 1719836048, - "revisionId": "2531882e5e289115_contact_details_filter_3", - "default": true - }, - { - "id": "email_filter", - "name": "Email filter", - "description": "Identify and remove email address from messages", - "enabled": false, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "pattern", - "operator": "contains", - "value": [ - "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" - ] - }, - { - "id": 2, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "custom", - "category": "pattern", - "operator": "contains", - "value": [ - "^{a-zA-Z0-9._%+-}+@{a-zA-Z0-9.-}+\\\\.{a-zA-Z}{2,}$" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1718099938, - "updatedAt": 1719836049, - "revisionId": "2531882e5e289115_contact_email_filter_5", - "default": true - } - ], - "meta": { - "current": { - "limit": 50, - "count": 8 - } - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/rules/{ruleId}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get Rule", - "description": "Retrieve details of a specific moderation rule by its ID.", - "operationId": "get-rule", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "Get Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "damn", - "shit", - "cunt", - "nigga", - "nigger", - "wanker", - "cunt", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - } - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update Rule", - "description": "Update an existing moderation rule with new actions or conditions.", - "operationId": "update-rule", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/ruleId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModerationRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "Update Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720003247, - "updatedAt": 1720003247, - "revisionId": "253179cf5f665257_moderation-test_1" - } - } - } - } - } - } - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Remove rule", - "description": "Delete a specific moderation rule by its ID.", - "operationId": "delete-rule", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "Delete Rule", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Rule with id moderation-test has been deleted successfully." - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/keywords": { - "post": { - "tags": [ - "Moderation" - ], - "summary": "Add Keywords", - "description": "Create a new keyword list for moderation.", - "operationId": "create-rule-keyword", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/KeywordList" - } - } - } - }, - "responses": { - "200": { - "description": "Created Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profane-word-list-1", - "name": "profane word list", - "description": "Profane word list", - "category": "word", - "isCSV": true, - "searchTerms": [ - "\"a\"", - "\"b\"", - "\"c\"" - ], - "createdAt": 1720023805, - "updatedAt": 1720023805, - "revisionId": "253179cf5f665257_profane-word-list-1_1", - "active": true - } - } - } - } - } - } - }, - "get": { - "tags": [ - "Moderation" - ], - "summary": "List keywords", - "description": "Fetches all the keywords.", - "operationId": "list-rule-keywords", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "List Keywords", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "_id": "66857afdb4bf371ddfba853b", - "id": "profane-word-list-1", - "appId": "253179cf5f665257", - "name": "profane word list", - "description": "Profane word list", - "category": "word", - "isCSV": true, - "searchTerms": [ - "\"a\"", - "\"b\"", - "\"c\"" - ], - "createdAt": 1720023805, - "updatedAt": 1720023805, - "revisionId": "253179cf5f665257_profane-word-list-1_1", - "active": true, - "__v": 0 - }, - { - "_id": "666c01eccfe97336757fb611", - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "__v": 0, - "default": true, - "appId": "default" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 2 - } - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/keywords/{keywordId}": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get keyword", - "description": "Retrieve details of a specific keyword list by its ID.", - "operationId": "get-rule-keyword", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/keywordId" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Get Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - } - }, - "put": { - "tags": [ - "Moderation" - ], - "summary": "Update keyword", - "description": "Update an existing keyword list.", - "operationId": "update-rule-keyword", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/keywordId" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/KeywordList" - } - } - } - }, - "responses": { - "200": { - "description": "Update Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "id": "profanity-list", - "name": "Profane Words", - "category": "word", - "isCSV": false, - "searchTerms": [ - "fuck", - "nigger", - "fuck", - "nigger", - "wanker", - "cunt", - "damn", - "shit", - "fag", - "shithead", - "jizz", - "hellbitch", - "retard", - "cocksucker", - "cock", - "kill", - "cunt", - "kike", - "twat", - "bastard", - "death", - "asshole", - "wop", - "scumbag", - "penis", - "murder", - "dick", - "gook", - "vagina", - "rape", - "bastard", - "spic", - "spunk", - "beat" - ], - "createdAt": 1718354412, - "updatedAt": 1718354412, - "revisionId": "253157108b5294c4_profanity-list_1", - "active": true, - "default": true - } - } - } - } - } - } - }, - "delete": { - "tags": [ - "Moderation" - ], - "summary": "Remove keyword", - "description": "Delete a keyword list by its ID.", - "operationId": "delete-rule-keyword", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/keywordId" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "Delete Keyword", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Keyword with id profanity-list has been deleted successfully." - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/rules/{ruleId}/revisions": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "Get Rule Revisions", - "description": "Fetches a rule's revisions.", - "operationId": "list-rule-revisions", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/ruleId" - } - ], - "responses": { - "200": { - "description": "List Rule revisions", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": false, - "entity": "message", - "operand": "text", - "category": "word", - "operator": "equals", - "value": [ - "paris" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": true, - "createdAt": 1720011899, - "updatedAt": 1720011905, - "revisionId": "253179cf5f665257_moderation-test_2" - }, - { - "id": "moderation-test", - "name": "Video Moderation", - "description": "AI-powered video moderation to detect unsafe content.", - "enabled": true, - "conditions": [ - { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "violence_greaterThan_30" - ], - "message": [ - "Image contains violence with confidence greater than 30" - ] - } - ], - "action": [ - "blockMessage" - ], - "active": false, - "createdAt": 1720011899, - "updatedAt": 1720011899, - "revisionId": "253179cf5f665257_moderation-test_1" - } - ], - "meta": { - "current": { - "limit": 10, - "count": 2 - } - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/blocked-messages": { - "get": { - "tags": [ - "Moderation" - ], - "summary": "List Blocked Messages", - "description": "Lists the messages blocked by the moderation service.", - "operationId": "list-moderation-blocked-messages", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - } - ], - "responses": { - "200": { - "description": "List Blocked Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - }, - "meta": { - "properties": { - "": { - "$ref": "#/components/schemas/metaSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": [ - { - "ruleId": "image-moderation", - "ruleName": "AI Image Moderation", - "revisionId": "253156be20433c97_image-moderation_4", - "condition": { - "id": 1, - "isKeywordsReferencePresent": false, - "isMediaPresent": true, - "entity": "message", - "operand": "image", - "category": "word", - "operator": "contains", - "value": [ - "Any unsafe content_greaterThan_70" - ], - "message": [ - "Image contains Any unsafe content with confidence greater than 70" - ], - "weight": 1 - }, - "message": { - "id": "65", - "muid": "_5zytzmceo", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2", - "sender": "cometchat-uid-1", - "receiverType": "user", - "receiver": "cometchat-uid-2", - "category": "message", - "type": "image", - "data": { - "metadata": { - "file": [] - }, - "resource": "WEB-4_0_3-ffa565b2-476e-493d-aeb5-4c750aae3ab1-1719925738505", - "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg", - "attachments": [ - { - "name": "download.jpeg", - "extension": "jpeg", - "size": 4761, - "mimeType": "image/jpeg", - "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg" - } - ], - "entities": { - "sender": { - "entity": { - "uid": "cometchat-uid-1", - "name": "Andrew Joseph", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", - "status": "offline", - "role": "default" - }, - "entityType": "user" - }, - "receiver": { - "entity": { - "uid": "cometchat-uid-2", - "name": "George Alan", - "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", - "status": "offline", - "role": "default", - "conversationId": "cometchat-uid-1_user_cometchat-uid-2" - }, - "entityType": "user" - } - }, - "moderation": { - "status": "pending" - } - }, - "sentAt": 1719993037, - "updatedAt": 1719993037 - }, - "action": [ - "blockMessage" - ], - "createdAt": 1719993038, - "updatedAt": 1719993038 - } - ], - "meta": { - "current": { - "limit": 50, - "count": 20 - } - } - } - } - } - } - } - } - }, - "/apps/{appId}/moderation/blocked-messages/{messageId}": { - "patch": { - "tags": [ - "Moderation" - ], - "summary": "Approve Blocked Messages", - "description": "Approves the messages blocked by the moderation service.", - "operationId": "approve-moderation-blocked-messages", - "parameters": [ - { - "$ref": "#/components/parameters/key" - }, - { - "$ref": "#/components/parameters/secret" - }, - { - "$ref": "#/components/parameters/appId" - }, - { - "$ref": "#/components/parameters/messageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "status" - ], - "properties": { - "status": { - "description": "Moderation status of the message.", - "type": "string", - "example": "approved" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Approve Blocked Messages", - "content": { - "application/json": { - "schema": { - "properties": { - "data": { - "properties": { - "": { - "$ref": "#/components/schemas/webhookSchema" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "example": { - "data": { - "success": true, - "message": "Message with ID 268 has been approved." - } - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "CategoryType": { - "description": "Type of entries in the list", - "type": "string", - "enum": [ - "word", - "pattern", - "sentence-similarity" - ] - }, - "Condition": { - "properties": { - "id": { - "description": "Unique identifier of a condition", - "type": "integer", - "example": 1 - }, - "entity": { - "description": "Entity type in which moderation will be performed.", - "type": "string", - "example": "message" - }, - "operand": { - "description": "Type of message content to moderate (e.g., text, image, video, custom).", - "type": "string", - "enum": [ - "text", - "image", - "video", - "custom" - ], - "example": "image" - }, - "operator": { - "description": "Operation to be performed for condition evaluation (e.g., contains, equals).", - "type": "string", - "enum": [ - "contains", - "equals" - ], - "example": "contains" - }, - "category": { - "description": "Type of entries for evaluation, either 'word' or 'pattern'.", - "type": "string", - "enum": [ - "word", - "pattern" - ], - "example": "word" - }, - "isKeywordReferencePresent": { - "description": "Indicates if the value contains a reference to a keyword list.", - "type": "boolean", - "example": false - }, - "isMediaPresent": { - "description": "Indicates if the incoming message contains media content.", - "type": "boolean", - "example": true - }, - "value": { - "description": "Actual value for the condition, or reference ID if isKeywordReferencePresent is true, or a formula if isMediaPresent is true.", - "type": "string", - "example": "violence_greaterThan_30" - } - }, - "type": "object" - }, - "GroupFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], - "properties": { - "entity": { - "description": "Type of entity for group filter", - "type": "string", - "enum": [ - "group" - ] - }, - "operand": { - "description": "Field to apply the filter on for 'group'", - "type": "string", - "enum": [ - "guid", - "name", - "type", - "tags", - "createdAt" - ] - }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "notEquals", - "in", - "notIn", - "startsWith", - "endsWith", - "lessThan", - "greaterThan" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "exampleValue" - }, - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" - } - }, - "type": "object" - }, - "KeywordList": { - "discriminator": { - "propertyName": "category", - "mapping": { - "word": "#/components/schemas/WordPatternSchema", - "pattern": "#/components/schemas/PatternSchema", - "sentence-similarity": "#/components/schemas/SentenceSimilaritySchema" - } - }, - "oneOf": [ - { - "$ref": "#/components/schemas/WordPatternSchema" - }, - { - "$ref": "#/components/schemas/PatternSchema" - }, - { - "$ref": "#/components/schemas/SentenceSimilaritySchema" - } - ] - }, - "ModerationData": { - "properties": { - "id": { - "type": "string", - "example": "moderation-test" - }, - "name": { - "type": "string", - "example": "Video Moderation" - }, - "description": { - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "enabled": { - "type": "boolean", - "example": true - }, - "conditions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } - }, - "action": { - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "active": { - "type": "boolean", - "example": true - }, - "createdAt": { - "type": "integer", - "example": 1720003247 - }, - "updatedAt": { - "type": "integer", - "example": 1720003247 - }, - "revisionId": { - "type": "string", - "example": "253179cf5f665257_moderation-test_1" - } - }, - "type": "object" - }, - "ModerationRequestBody": { - "properties": { - "id": { - "description": "Unique identifier for the moderation rule.", - "type": "string", - "example": "moderation-test" - }, - "name": { - "description": "Descriptive name for the moderation rule.", - "type": "string", - "example": "Video Moderation" - }, - "enabled": { - "description": "Indicates whether the rule is active.", - "type": "boolean", - "example": true - }, - "description": { - "description": "Detailed explanation of the rule's purpose.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - }, - "action": { - "description": "Actions to be taken when a violation is detected.", - "type": "array", - "items": { - "type": "string", - "example": "blockMessage" - } - }, - "filters": { - "description": "List of filters to apply", - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/UserFilter" - }, - { - "$ref": "#/components/schemas/GroupFilter" - } - ] - } - }, - "conditions": { - "description": "List of conditions that must be met for the rule to trigger.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Condition" - } - } - }, - "type": "object" - }, - "PatternSchema": { - "required": [ - "category", - "searchTerms" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the pattern list.", - "type": "string", - "example": "ID-of-the-pattern-list" - }, - "name": { - "description": "Descriptive name for the pattern list.", - "type": "string", - "example": "Name of the pattern list" - }, - "description": { - "description": "Detailed explanation of the pattern list's purpose.", - "type": "string", - "example": "Description of the pattern list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - } - }, - "type": "object" - }, - "SentenceSimilaritySchema": { - "required": [ - "category", - "disallowedSentences" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the keyword list.", - "type": "string", - "example": "ID-of-the-sentences-list" - }, - "name": { - "description": "Descriptive name for the keyword list.", - "type": "string", - "example": "Name of the sentences list" - }, - "description": { - "description": "Detailed explanation of the keyword list's purpose.", - "type": "string", - "example": "Description of the sentences list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "disallowedSentences": { - "description": "Comma-separated sentences that are disallowed if the category is 'sentence-similarity'.", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Hello, let's connect on Whatsapp." - ] - } - }, - "type": "object" - }, - "UserFilter": { - "required": [ - "entity", - "operand", - "operator", - "value", - "type" - ], - "properties": { - "type": { - "description": "Type of the filter, specifying sender or receiver", - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "example": "sender" - }, - "entity": { - "description": "Type of entity for user filter", - "type": "string", - "enum": [ - "user" - ] - }, - "operand": { - "description": "Field to apply the filter on for 'user'", - "type": "string", - "enum": [ - "uid", - "name", - "role", - "tags", - "createdAt" - ] - }, - "operator": { - "description": "Operator to use for filtering", - "type": "string", - "enum": [ - "equals", - "notEquals", - "in", - "notIn", - "startsWith" - ], - "example": "equals" - }, - "value": { - "description": "Value for the filter", - "type": "string", - "example": "admin" - } - }, - "type": "object" - }, - "WithTemplate": { - "required": [ - "templateId" - ], - "properties": { - "templateId": { - "type": "string", - "example": "default" - }, - "settings": { - "type": "object" - } - }, - "type": "object" - }, - "WithoutTemplate": { - "required": [ - "settings" - ], - "properties": { - "settings": { - "type": "object" - } - }, - "type": "object" - }, - "WordPatternSchema": { - "required": [ - "category", - "searchTerms" - ], - "properties": { - "file": { - "description": "CSV file containing the keywords or regex patterns for the list.", - "type": "string", - "format": "binary" - }, - "id": { - "description": "Unique identifier for the word list.", - "type": "string", - "example": "ID-of-the-word-list" - }, - "name": { - "description": "Descriptive name for the word list.", - "type": "string", - "example": "Name of the word list" - }, - "description": { - "description": "Detailed explanation of the word list's purpose.", - "type": "string", - "example": "Description of the word list" - }, - "category": { - "$ref": "#/components/schemas/CategoryType" - }, - "searchTerms": { - "description": "Comma-separated values of keywords or regex patterns if no file is provided.", - "type": "string", - "example": "AI-powered video moderation to detect unsafe content." - } - }, - "type": "object" - }, - "appSchema": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "integer" - }, - "plan": { - "type": "integer" - }, - "trialEndsAt": { - "type": "integer" - }, - "state": { - "type": "string" - }, - "owner": { - "type": "integer" - }, - "region": { - "type": "string" - }, - "createdAt": { - "type": "integer" - }, - "appOwner": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "type": "object" - }, - "appRegion": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "type": "object" - }, - "apiKeys": { - "properties": { - "": { - "properties": { - "apiKey": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "createdBy": { - "type": "string" - } - }, - "type": "object" - }, - "": { - "properties": { - "apiKey": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "createdBy": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "bitlyCreateSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "bitlyAccessToken": { - "type": "string" - }, - "groupGUID": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "bitlyDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "bitlyGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "bitlyAccessToken": { - "type": "string" - }, - "groupGUID": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "bitlyRequestSchema": { - "properties": { - "settings": { - "required": [ - "bitlyAccessToken", - "groupGUID" - ], - "properties": { - "bitlyAccessToken": { - "description": "Used as authentication mechanism when connecting to bitly", - "type": "string", - "default": "1213n2kn2232ffg" - }, - "groupGUID": { - "description": "Used to connect to a particular group in given organisation in bitly", - "type": "string", - "default": "1234ddsf5eee22" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatWidgetPutSchema": { - "properties": { - "settings": { - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "description": "Name of the Chat Widget", - "type": "string", - "default": "Test Chat Widget" - }, - "version": { - "description": "Version is always v2", - "type": "string", - "default": "v2" - }, - "style": { - "required": [ - "docked_layout_icon_background", - "docked_layout_icon_close", - "docked_layout_icon_open" - ], - "properties": { - "custom_css": { - "description": "Custom CSS if required", - "type": "string" - }, - "custom_js": { - "description": "Custom JS if required", - "type": "string", - "default": "v2" - }, - "docked_layout_icon_background": { - "description": "The background color for Icon in the Docked mode", - "type": "string", - "default": "#03a9f4" - }, - "docked_layout_icon_close": { - "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" - }, - "docked_layout_icon_open": { - "description": "The image to be displayed on the Docked layout icon when the widget is opened.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" - }, - "primary_color": { - "description": "Primary Colour", - "type": "string", - "default": "#03A9F4" - }, - "foreground_color": { - "description": "Foreground Colour", - "type": "string", - "default": " #000000" - }, - "background_color": { - "description": "Background Colour", - "type": "string", - "default": "#FFFFFF" - }, - "override_system_background_colors": { - "description": "Override System Background Colours", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "sidebar": { - "required": [ - "users", - "groups", - "calls", - "recent_chat_listing", - "user_listing", - "sidebar_navigation_sequence" - ], - "properties": { - "chats": { - "description": "Show Chats section in the Sidebar", - "type": "boolean", - "default": true - }, - "users": { - "description": "Show Users section in the Sidebar", - "type": "boolean", - "default": true - }, - "groups": { - "description": "Show Groups section in the Sidebar", - "type": "boolean", - "default": true - }, - "calls": { - "description": "Show Calls section in the Sidebar", - "type": "boolean" - }, - "user_settings": { - "description": "Show User Settings section in the Sidebar", - "type": "boolean" - }, - "recent_chat_listing": { - "description": "Which chats should be displayed in the Recent chat section", - "type": "string", - "default": "all_chats" - }, - "user_listing": { - "description": "Which users should be displayed in the User list", - "type": "string", - "default": "all_users" - }, - "sidebar_navigation_sequence": { - "description": "Order of sections in Sidebar. Do not add any new values.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "chats", - "users", - "groups", - "calls", - "settings" - ] - } - }, - "type": "object" - }, - "main": { - "required": [ - "allow_creating_polls", - "allow_delete_groups", - "allow_kick_ban_members", - "allow_message_reactions", - "allow_moderator_to_delete_member_messages", - "allow_promote_demote_members", - "block_user", - "create_groups", - "enable_collaborative_document", - "enable_collaborative_whiteboard", - "enable_deleting_messages", - "enable_editing_messages", - "enable_message_translation", - "enable_sending_messages", - "enable_sound_for_calls", - "enable_sound_for_messages", - "enable_threaded_replies", - "enable_video_calling", - "enable_voice_calling", - "hide_deleted_messages", - "hide_join_leave_notifications", - "join_or_leave_groups", - "send_emojis", - "send_message_in_private_to_group_member", - "send_photos_videos", - "share_live_reactions", - "show_call_notifications", - "show_delivery_read_indicators", - "show_emojis_in_larger_size" - ], - "properties": { - "allow_add_members": { - "description": "Allow adding new group members", - "type": "boolean", - "default": true - }, - "allow_creating_polls": { - "description": "Enable Polls extension to allow sending polls", - "type": "boolean" - }, - "allow_delete_groups": { - "description": "Allow deletion of groups", - "type": "boolean", - "default": true - }, - "allow_kick_ban_members": { - "description": "Allow kick/ban group member actions", - "type": "boolean", - "default": true - }, - "allow_message_reactions": { - "description": "Enable Reactions extension to allow reactions to messages", - "type": "boolean" - }, - "allow_moderator_to_delete_member_messages": { - "description": "Allow moderators to delete messages from group", - "type": "boolean" - }, - "allow_promote_demote_members": { - "description": "Allow changing scopes of group members", - "type": "boolean" - }, - "block_user": { - "description": "Allow blocking a user", - "type": "boolean", - "default": true - }, - "create_groups": { - "description": "Allow creating new groups", - "type": "boolean", - "default": true - }, - "enable_collaborative_document": { - "description": "Enable Collaborative Document extension before enabling this", - "type": "boolean" - }, - "enable_collaborative_whiteboard": { - "description": "Enable Collaborative Whiteboard extension before enabling this.", - "type": "boolean" - }, - "enable_deleting_messages": { - "description": "Allow deletion of messages from chats", - "type": "boolean", - "default": true - }, - "enable_editing_messages": { - "description": "Allow edition of messages from chats", - "type": "boolean", - "default": true - }, - "enable_message_translation": { - "description": "Enable Message translation extension before enabling this.", - "type": "boolean" - }, - "enable_sending_messages": { - "description": "Allow sending messages", - "type": "boolean", - "default": true - }, - "enable_sound_for_calls": { - "description": "Play sound for incoming calls", - "type": "boolean", - "default": true - }, - "enable_sound_for_messages": { - "description": "Play sound for incoming messages", - "type": "boolean", - "default": true - }, - "enable_threaded_replies": { - "description": "Allow creation of message threads", - "type": "boolean", - "default": true - }, - "enable_video_calling": { - "description": "Enable video calling", - "type": "boolean", - "default": true - }, - "enable_voice_calling": { - "description": "Enable voice calling", - "type": "boolean", - "default": true - }, - "hide_deleted_messages": { - "description": "Hide message bubbles for deleted messages", - "type": "boolean", - "default": true - }, - "hide_join_leave_notifications": { - "description": "Hide the notifications in chat when someone joins or leaves a group", - "type": "boolean", - "default": true - }, - "join_or_leave_groups": { - "description": "Allow joining/leaving groups", - "type": "boolean", - "default": true - }, - "send_emojis": { - "description": "Show the emojis keyboard", - "type": "boolean", - "default": true - }, - "send_files": { - "description": "Allow sending files in chats", - "type": "boolean", - "default": true - }, - "send_message_in_private_to_group_member": { - "description": "Allow sending private messages to group members", - "type": "boolean" - }, - "send_photos_videos": { - "description": "Allow sending Photos and Videos in chat", - "type": "boolean", - "default": true - }, - "share_live_reactions": { - "description": "Allow sending Live Reactions", - "type": "boolean", - "default": true - }, - "show_call_notifications": { - "description": "Show notification for incoming calls", - "type": "boolean", - "default": true - }, - "show_delivery_read_indicators": { - "description": "Show delivery and read receipts", - "type": "boolean", - "default": true - }, - "show_emojis_in_larger_size": { - "description": "Display larger emojis when sending one, two or three in a message.", - "type": "boolean", - "default": true - }, - "show_stickers": { - "description": "Enable Stickers extension before enabling this", - "type": "boolean", - "default": true - }, - "show_typing_indicators": { - "description": "Show typing... indicators in chats", - "type": "boolean" - }, - "show_user_presence": { - "description": "Show user preferences", - "type": "boolean", - "default": true - }, - "view_group_members": { - "description": "Allow viewing group members", - "type": "boolean", - "default": true - }, - "allow_mention_members": { - "description": "Allow Mention Members", - "type": "boolean", - "default": false - }, - "enable_replying_to_messages": { - "description": "Enable Replying To Messages", - "type": "boolean", - "default": false - }, - "enable_share_copy_forward_messages": { - "description": "Enable Share Copy Forward Messages", - "type": "boolean", - "default": false - }, - "highlight_messages_from_moderators": { - "description": "Highlight Messages From Moderators", - "type": "boolean", - "default": false - }, - "show_call_recording_option": { - "description": "Show Call Recording Option", - "type": "boolean", - "default": false - }, - "send_voice_notes": { - "description": "Send Voice Notes", - "type": "boolean", - "default": false - }, - "send_gifs": { - "description": "Send Gifs", - "type": "boolean", - "default": false - }, - "share_location": { - "description": "Share Location", - "type": "boolean", - "default": false - }, - "view_shared_media": { - "description": "Allow viewing all Shared media in a group", - "type": "boolean", - "default": true - }, - "set_groups_in_qna_mode_by_moderators": { - "description": "Set Groups In Qna Mode By Moderators", - "type": "boolean", - "default": false - }, - "send_reply_in_private_to_group_member": { - "description": "Send Reply In Private To Group Member", - "type": "boolean", - "default": false - } - }, - "type": "object" - }, - "appId": { - "description": "Cometchat appid", - "type": "string", - "default": "564663ddb71bbb" - }, - "widgetId": { - "description": "Widget Id that need to modify", - "type": "string", - "default": "9af42f42-2f27-456d-9bfc-d77c29ec67bc" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatWidgetRequestSchema": { - "properties": { - "settings": { - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "description": "Name of the Chat Widget", - "type": "string", - "default": "Test Chat Widget" - }, - "version": { - "description": "Version is always v2", - "type": "string", - "default": "v2" - }, - "style": { - "required": [ - "docked_layout_icon_background", - "docked_layout_icon_close", - "docked_layout_icon_open" - ], - "properties": { - "custom_css": { - "description": "Custom CSS if required", - "type": "string" - }, - "custom_js": { - "description": "Custom JS if required", - "type": "string", - "default": "v2" - }, - "docked_layout_icon_background": { - "description": "The background color for Icon in the Docked mode", - "type": "string", - "default": "#03a9f4" - }, - "docked_layout_icon_close": { - "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" - }, - "docked_layout_icon_open": { - "description": "The image to be displayed on the Docked layout icon when the widget is opened.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" - }, - "primary_color": { - "description": "Primary Colour", - "type": "string", - "default": "#03A9F4" - }, - "foreground_color": { - "description": "Foreground Colour", - "type": "string", - "default": " #000000" - }, - "background_color": { - "description": "Background Colour", - "type": "string", - "default": "#FFFFFF" - }, - "override_system_background_colors": { - "description": "Override System Background Colours", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "sidebar": { - "required": [ - "users", - "groups", - "calls", - "recent_chat_listing", - "user_listing", - "sidebar_navigation_sequence" - ], - "properties": { - "chats": { - "description": "Show Chats section in the Sidebar", - "type": "boolean", - "default": true - }, - "users": { - "description": "Show Users section in the Sidebar", - "type": "boolean", - "default": true - }, - "groups": { - "description": "Show Groups section in the Sidebar", - "type": "boolean", - "default": true - }, - "calls": { - "description": "Show Calls section in the Sidebar", - "type": "boolean" - }, - "user_settings": { - "description": "Show User Settings section in the Sidebar", - "type": "boolean" - }, - "recent_chat_listing": { - "description": "Which chats should be displayed in the Recent chat section", - "type": "string", - "default": "all_chats" - }, - "user_listing": { - "description": "Which users should be displayed in the User list", - "type": "string", - "default": "all_users" - }, - "sidebar_navigation_sequence": { - "description": "Order of sections in Sidebar. Do not add any new values.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "chats", - "users", - "groups", - "calls", - "settings" - ] - }, - "start_a_new_conversation": { - "description": "Start a new Conversation", - "type": "string", - "default": "all_chats" - }, - "group_listing": { - "description": "Group Listing", - "type": "string", - "default": "public_and_password_protected_groups" - } - }, - "type": "object" - }, - "main": { - "required": [ - "allow_creating_polls", - "allow_delete_groups", - "allow_kick_ban_members", - "allow_message_reactions", - "allow_moderator_to_delete_member_messages", - "allow_promote_demote_members", - "block_user", - "create_groups", - "enable_collaborative_document", - "enable_collaborative_whiteboard", - "enable_deleting_messages", - "enable_editing_messages", - "enable_message_translation", - "enable_sending_messages", - "enable_sound_for_calls", - "enable_sound_for_messages", - "enable_threaded_replies", - "enable_video_calling", - "enable_voice_calling", - "hide_deleted_messages", - "hide_join_leave_notifications", - "join_or_leave_groups", - "send_emojis", - "send_message_in_private_to_group_member", - "send_photos_videos", - "share_live_reactions", - "show_call_notifications", - "show_delivery_read_indicators", - "show_emojis_in_larger_size" - ], - "properties": { - "allow_add_members": { - "description": "Allow adding new group members", - "type": "boolean", - "default": true - }, - "allow_creating_polls": { - "description": "Enable Polls extension to allow sending polls", - "type": "boolean" - }, - "allow_delete_groups": { - "description": "Allow deletion of groups", - "type": "boolean", - "default": true - }, - "allow_kick_ban_members": { - "description": "Allow kick/ban group member actions", - "type": "boolean", - "default": true - }, - "allow_message_reactions": { - "description": "Enable Reactions extension to allow reactions to messages", - "type": "boolean" - }, - "allow_moderator_to_delete_member_messages": { - "description": "Allow moderators to delete messages from group", - "type": "boolean" - }, - "allow_promote_demote_members": { - "description": "Allow changing scopes of group members", - "type": "boolean" - }, - "block_user": { - "description": "Allow blocking a user", - "type": "boolean", - "default": true - }, - "create_groups": { - "description": "Allow creating new groups", - "type": "boolean", - "default": true - }, - "enable_collaborative_document": { - "description": "Enable Collaborative Document extension before enabling this", - "type": "boolean" - }, - "enable_collaborative_whiteboard": { - "description": "Enable Collaborative Whiteboard extension before enabling this.", - "type": "boolean" - }, - "enable_deleting_messages": { - "description": "Allow deletion of messages from chats", - "type": "boolean", - "default": true - }, - "enable_editing_messages": { - "description": "Allow edition of messages from chats", - "type": "boolean", - "default": true - }, - "enable_message_translation": { - "description": "Enable Message translation extension before enabling this.", - "type": "boolean" - }, - "enable_sending_messages": { - "description": "Allow sending messages", - "type": "boolean", - "default": true - }, - "enable_sound_for_calls": { - "description": "Play sound for incoming calls", - "type": "boolean", - "default": true - }, - "enable_sound_for_messages": { - "description": "Play sound for incoming messages", - "type": "boolean", - "default": true - }, - "enable_threaded_replies": { - "description": "Allow creation of message threads", - "type": "boolean", - "default": true - }, - "enable_video_calling": { - "description": "Enable video calling", - "type": "boolean", - "default": true - }, - "enable_voice_calling": { - "description": "Enable voice calling", - "type": "boolean", - "default": true - }, - "hide_deleted_messages": { - "description": "Hide message bubbles for deleted messages", - "type": "boolean", - "default": true - }, - "hide_join_leave_notifications": { - "description": "Hide the notifications in chat when someone joins or leaves a group", - "type": "boolean", - "default": true - }, - "join_or_leave_groups": { - "description": "Allow joining/leaving groups", - "type": "boolean", - "default": true - }, - "send_emojis": { - "description": "Show the emojis keyboard", - "type": "boolean", - "default": true - }, - "send_files": { - "description": "Allow sending files in chats", - "type": "boolean", - "default": true - }, - "send_message_in_private_to_group_member": { - "description": "Allow sending private messages to group members", - "type": "boolean" - }, - "send_photos_videos": { - "description": "Allow sending Photos and Videos in chat", - "type": "boolean", - "default": true - }, - "share_live_reactions": { - "description": "Allow sending Live Reactions", - "type": "boolean", - "default": true - }, - "show_call_notifications": { - "description": "Show notification for incoming calls", - "type": "boolean", - "default": true - }, - "show_delivery_read_indicators": { - "description": "Show delivery and read receipts", - "type": "boolean", - "default": true - }, - "show_emojis_in_larger_size": { - "description": "Display larger emojis when sending one, two or three in a message.", - "type": "boolean", - "default": true - }, - "show_stickers": { - "description": "Enable Stickers extension before enabling this", - "type": "boolean", - "default": true - }, - "show_typing_indicators": { - "description": "Show typing... indicators in chats", - "type": "boolean" - }, - "show_user_presence": { - "description": "Show user preferences", - "type": "boolean", - "default": true - }, - "view_group_members": { - "description": "Allow viewing group members", - "type": "boolean", - "default": true - }, - "allow_mention_members": { - "description": "Allow Mention Members", - "type": "boolean", - "default": false - }, - "enable_replying_to_messages": { - "description": "Enable Replying To Messages", - "type": "boolean", - "default": false - }, - "enable_share_copy_forward_messages": { - "description": "Enable Share Copy Forward Messages", - "type": "boolean", - "default": false - }, - "highlight_messages_from_moderators": { - "description": "Highlight Messages From Moderators", - "type": "boolean", - "default": false - }, - "show_call_recording_option": { - "description": "Show Call Recording Option", - "type": "boolean", - "default": false - }, - "send_voice_notes": { - "description": "Send Voice Notes", - "type": "boolean", - "default": false - }, - "send_gifs": { - "description": "Send Gifs", - "type": "boolean", - "default": false - }, - "share_location": { - "description": "Share Location", - "type": "boolean", - "default": false - }, - "view_shared_media": { - "description": "Allow viewing all Shared media in a group", - "type": "boolean", - "default": true - }, - "set_groups_in_qna_mode_by_moderators": { - "description": "Set Groups In Qna Mode By Moderators", - "type": "boolean", - "default": false - }, - "send_reply_in_private_to_group_member": { - "description": "Send Reply In Private To Group Member", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatWidgetResponseSchema": { - "properties": { - "data": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "integer" - }, - "body": { - "properties": { - "data": { - "properties": { - "configuration": { - "type": "array", - "items": { - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "description": "Name of the Chat Widget", - "type": "string", - "default": "Test Chat Widget" - }, - "version": { - "description": "Version is always v2", - "type": "string", - "default": "v2" - }, - "style": { - "required": [ - "docked_layout_icon_background", - "docked_layout_icon_close", - "docked_layout_icon_open" - ], - "properties": { - "custom_css": { - "description": "Custom CSS if required", - "type": "string" - }, - "custom_js": { - "description": "Custom JS if required", - "type": "string", - "default": "v2" - }, - "docked_layout_icon_background": { - "description": "The background color for Icon in the Docked mode", - "type": "string", - "default": "#03a9f4" - }, - "docked_layout_icon_close": { - "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" - }, - "docked_layout_icon_open": { - "description": "The image to be displayed on the Docked layout icon when the widget is opened.", - "type": "string", - "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" - }, - "primary_color": { - "description": "Primary Colour", - "type": "string", - "default": "#03A9F4" - }, - "foreground_color": { - "description": "Foreground Colour", - "type": "string", - "default": " #000000" - }, - "background_color": { - "description": "Background Colour", - "type": "string", - "default": "#FFFFFF" - }, - "override_system_background_colors": { - "description": "Override System Background Colours", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "sidebar": { - "required": [ - "users", - "groups", - "calls", - "recent_chat_listing", - "user_listing", - "sidebar_navigation_sequence" - ], - "properties": { - "chats": { - "description": "Show Chats section in the Sidebar", - "type": "boolean", - "default": true - }, - "users": { - "description": "Show Users section in the Sidebar", - "type": "boolean", - "default": true - }, - "groups": { - "description": "Show Groups section in the Sidebar", - "type": "boolean", - "default": true - }, - "calls": { - "description": "Show Calls section in the Sidebar", - "type": "boolean" - }, - "user_settings": { - "description": "Show User Settings section in the Sidebar", - "type": "boolean" - }, - "recent_chat_listing": { - "description": "Which chats should be displayed in the Recent chat section", - "type": "string", - "default": "all_chats" - }, - "user_listing": { - "description": "Which users should be displayed in the User list", - "type": "string", - "default": "all_users" - }, - "sidebar_navigation_sequence": { - "description": "Order of sections in Sidebar. Do not add any new values.", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "chats", - "users", - "groups", - "calls", - "settings" - ] - }, - "start_a_new_conversation": { - "description": "Start a new Conversation", - "type": "string", - "default": "all_chats" - }, - "group_listing": { - "description": "Group Listing", - "type": "string", - "default": "public_and_password_protected_groups" - } - }, - "type": "object" - }, - "main": { - "required": [ - "allow_creating_polls", - "allow_delete_groups", - "allow_kick_ban_members", - "allow_message_reactions", - "allow_moderator_to_delete_member_messages", - "allow_promote_demote_members", - "block_user", - "create_groups", - "enable_collaborative_document", - "enable_collaborative_whiteboard", - "enable_deleting_messages", - "enable_editing_messages", - "enable_message_translation", - "enable_sending_messages", - "enable_sound_for_calls", - "enable_sound_for_messages", - "enable_threaded_replies", - "enable_video_calling", - "enable_voice_calling", - "hide_deleted_messages", - "hide_join_leave_notifications", - "join_or_leave_groups", - "send_emojis", - "send_message_in_private_to_group_member", - "send_photos_videos", - "share_live_reactions", - "show_call_notifications", - "show_delivery_read_indicators", - "show_emojis_in_larger_size" - ], - "properties": { - "allow_add_members": { - "description": "Allow adding new group members", - "type": "boolean", - "default": true - }, - "allow_creating_polls": { - "description": "Enable Polls extension to allow sending polls", - "type": "boolean" - }, - "allow_delete_groups": { - "description": "Allow deletion of groups", - "type": "boolean", - "default": true - }, - "allow_kick_ban_members": { - "description": "Allow kick/ban group member actions", - "type": "boolean", - "default": true - }, - "allow_message_reactions": { - "description": "Enable Reactions extension to allow reactions to messages", - "type": "boolean" - }, - "allow_moderator_to_delete_member_messages": { - "description": "Allow moderators to delete messages from group", - "type": "boolean" - }, - "allow_promote_demote_members": { - "description": "Allow changing scopes of group members", - "type": "boolean" - }, - "block_user": { - "description": "Allow blocking a user", - "type": "boolean", - "default": true - }, - "create_groups": { - "description": "Allow creating new groups", - "type": "boolean", - "default": true - }, - "enable_collaborative_document": { - "description": "Enable Collaborative Document extension before enabling this", - "type": "boolean" - }, - "enable_collaborative_whiteboard": { - "description": "Enable Collaborative Whiteboard extension before enabling this.", - "type": "boolean" - }, - "enable_deleting_messages": { - "description": "Allow deletion of messages from chats", - "type": "boolean", - "default": true - }, - "enable_editing_messages": { - "description": "Allow edition of messages from chats", - "type": "boolean", - "default": true - }, - "enable_message_translation": { - "description": "Enable Message translation extension before enabling this.", - "type": "boolean" - }, - "enable_sending_messages": { - "description": "Allow sending messages", - "type": "boolean", - "default": true - }, - "enable_sound_for_calls": { - "description": "Play sound for incoming calls", - "type": "boolean", - "default": true - }, - "enable_sound_for_messages": { - "description": "Play sound for incoming messages", - "type": "boolean", - "default": true - }, - "enable_threaded_replies": { - "description": "Allow creation of message threads", - "type": "boolean", - "default": true - }, - "enable_video_calling": { - "description": "Enable video calling", - "type": "boolean", - "default": true - }, - "enable_voice_calling": { - "description": "Enable voice calling", - "type": "boolean", - "default": true - }, - "hide_deleted_messages": { - "description": "Hide message bubbles for deleted messages", - "type": "boolean", - "default": true - }, - "hide_join_leave_notifications": { - "description": "Hide the notifications in chat when someone joins or leaves a group", - "type": "boolean", - "default": true - }, - "join_or_leave_groups": { - "description": "Allow joining/leaving groups", - "type": "boolean", - "default": true - }, - "send_emojis": { - "description": "Show the emojis keyboard", - "type": "boolean", - "default": true - }, - "send_files": { - "description": "Allow sending files in chats", - "type": "boolean", - "default": true - }, - "send_message_in_private_to_group_member": { - "description": "Allow sending private messages to group members", - "type": "boolean" - }, - "send_photos_videos": { - "description": "Allow sending Photos and Videos in chat", - "type": "boolean", - "default": true - }, - "share_live_reactions": { - "description": "Allow sending Live Reactions", - "type": "boolean", - "default": true - }, - "show_call_notifications": { - "description": "Show notification for incoming calls", - "type": "boolean", - "default": true - }, - "show_delivery_read_indicators": { - "description": "Show delivery and read receipts", - "type": "boolean", - "default": true - }, - "show_emojis_in_larger_size": { - "description": "Display larger emojis when sending one, two or three in a message.", - "type": "boolean", - "default": true - }, - "show_stickers": { - "description": "Enable Stickers extension before enabling this", - "type": "boolean", - "default": true - }, - "show_typing_indicators": { - "description": "Show typing... indicators in chats", - "type": "boolean" - }, - "show_user_presence": { - "description": "Show user preferences", - "type": "boolean", - "default": true - }, - "view_group_members": { - "description": "Allow viewing group members", - "type": "boolean", - "default": true - }, - "allow_mention_members": { - "description": "Allow Mention Members", - "type": "boolean", - "default": false - }, - "enable_replying_to_messages": { - "description": "Enable Replying To Messages", - "type": "boolean", - "default": false - }, - "enable_share_copy_forward_messages": { - "description": "Enable Share Copy Forward Messages", - "type": "boolean", - "default": false - }, - "highlight_messages_from_moderators": { - "description": "Highlight Messages From Moderators", - "type": "boolean", - "default": false - }, - "show_call_recording_option": { - "description": "Show Call Recording Option", - "type": "boolean", - "default": false - }, - "send_voice_notes": { - "description": "Send Voice Notes", - "type": "boolean", - "default": false - }, - "send_gifs": { - "description": "Send Gifs", - "type": "boolean", - "default": false - }, - "share_location": { - "description": "Share Location", - "type": "boolean", - "default": false - }, - "view_shared_media": { - "description": "Allow viewing all Shared media in a group", - "type": "boolean", - "default": true - }, - "set_groups_in_qna_mode_by_moderators": { - "description": "Set Groups In Qna Mode By Moderators", - "type": "boolean", - "default": false - }, - "send_reply_in_private_to_group_member": { - "description": "Send Reply In Private To Group Member", - "type": "boolean", - "default": false - } - }, - "type": "object" - }, - "appId": { - "description": "Cometchat appid", - "type": "string", - "default": "564663ddb71bbb" - }, - "widgetId": { - "description": "Widget Id that need to modify", - "type": "string", - "default": "9af42f42-2f27-456d-9bfc-d77c29ec67bc" - } - }, - "type": "object" - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatWidgetSchema": { - "properties": { - "enabled": { - "properties": { - "extention_id1": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "extention_id2": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "disabled": { - "properties": { - "extention_id3": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatwootDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatwootGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "appId": { - "type": "string" - }, - "customerSupportUid": { - "type": "string" - }, - "chatwootAccountId": { - "type": "string" - }, - "chatwootInboxId": { - "type": "string" - }, - "chatwootAccessToken": { - "type": "string" - }, - "webhookURL": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatwootRequestSchema": { - "properties": { - "settings": { - "required": [ - "chatwootAccessToken", - "chatwootAccountId", - "chatwootInboxId", - "customerSupportUid" - ], - "properties": { - "chatwootAccessToken": { - "description": "For connecting and exchanging messages between CometChat and chatwoot", - "type": "string", - "default": "EgsDdxRZFUy4tPWDjwmyZaYk" - }, - "chatwootAccountId": { - "description": "Obtained from Chatwoot profile settings", - "type": "string", - "default": "12123" - }, - "chatwootInboxId": { - "description": "Obtained from Chatwoot inbox settings", - "type": "string", - "default": "12345" - }, - "customerSupportUid": { - "description": "Customer support uid that you have selected", - "type": "string", - "default": "cometchat-uid-2" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "chatwootSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "appId": { - "type": "string" - }, - "customerSupportUid": { - "type": "string" - }, - "chatwootAccountId": { - "type": "string" - }, - "chatwootInboxId": { - "type": "string" - }, - "chatwootAccessToken": { - "type": "string" - }, - "webhookURL": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "dataMaskingGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "customregexData": { - "type": "array", - "items": { - "properties": { - "name": { - "type": "string" - }, - "regex": { - "type": "string" - }, - "id": { - "type": "string" - } - }, - "type": "object" - } - }, - "defaultRegexData": { - "type": "array", - "items": { - "properties": { - "name": { - "type": "string" - }, - "regex": { - "type": "string" - }, - "id": { - "type": "string" - }, - "enableFlag": { - "type": "boolean" - } - }, - "type": "object" - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "dataMaskingRequestSchema": { - "properties": { - "settings": { - "required": [ - "dropMessage", - "customregexData", - "defaultRegexData", - "deleteCustomRegexData" - ], - "properties": { - "dropMessage": { - "description": "Should drop message in case of sensitive information?", - "type": "boolean", - "default": false - }, - "defaultRegexData": { - "description": "Configure the default masks", - "type": "array", - "items": { - "type": "object" - }, - "default": [ - { - "enableFlag": false, - "id": "1", - "name": "US Phone numbers", - "regex": "[2-9]\\\\d{2}-\\\\d{3}-\\\\d{4}" - }, - { - "enableFlag": false, - "id": "2", - "name": "Emails", - "regex": "\\\\w+([.-]?\\\\w+)*@\\\\w+([.-]?\\\\w+)*(\\\\.\\\\w{2,10})+" - }, - { - "enableFlag": false, - "id": "3", - "name": "SSN", - "regex": "\\\\d{3}-\\\\d{2}-\\\\d{4}" - } - ] - }, - "customregexData": { - "description": "Configure the custom masks", - "type": "array", - "items": { - "type": "object" - }, - "default": [ - { - "name": "one", - "regex": "one", - "id": "1983958" - } - ] - }, - "deleteCustomRegexData": { - "description": "Remove custom masks by ID", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "9393903" - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "dataMaskingResponseSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "deleteAppSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "scheduledToDeleteAt": { - "type": "integer" - } - }, - "type": "object" - }, - "deleteSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "deleteWebhookSchema": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "e2eeCreateSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "virgilAppID": { - "type": "string" - }, - "virgilAppKeyID": { - "type": "string" - }, - "virgilAppKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "e2eeDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "e2eeGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "virgilAppID": { - "type": "string" - }, - "virgilAppKeyID": { - "type": "string" - }, - "virgilAppKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "e2eeRequestSchema": { - "properties": { - "settings": { - "required": [ - "virgilAppID", - "virgilAppKeyID", - "virgilAppKey" - ], - "properties": { - "virgilAppID": { - "description": "Virgil App Id obtained from their Dashboard", - "type": "string", - "default": "virgilAppId12345678" - }, - "virgilAppKeyID": { - "description": "Virgil App Key Id obtained from their Dashboard", - "type": "string", - "default": "xyzabcd12345678" - }, - "virgilAppKey": { - "description": "Virgil App Key obtained from their Dashboard", - "type": "string", - "default": "abcd12345678" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailNotificationDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailNotificationGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "sendGridApiKey": { - "description": "Sendgrid API key", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - }, - "messageDelay": { - "description": "Time Interval after which notifications will be sent", - "type": "number", - "default": 120 - }, - "senderEmail": { - "description": "Sendgrid Sender Email for Notification", - "type": "string", - "default": "mymail@example.com" - }, - "senderName": { - "description": "Sendgrid Sender Name", - "type": "string", - "default": "John Doe" - }, - "sendGridTemplateId": { - "description": "Send Grid Template", - "type": "string", - "default": "f5c0102d" - }, - "sendGridUnsubscribeGroupId": { - "description": "Sendgrid Group Id obtained from their Dashboard", - "type": "string", - "default": "sendGridUnsubscribeGroupId" - }, - "useWebhook": { - "description": "Enable Webhook", - "type": "boolean", - "default": false - }, - "webhookURL": { - "description": "Webhook Url", - "type": "string", - "default": "https://example.com" - }, - "useWebhookBasicAuth": { - "description": "Enable Basic Authentication", - "type": "boolean", - "default": false - }, - "webhookUsername": { - "description": "Basic Authentication Username", - "type": "string", - "default": "username" - }, - "webhookPassword": { - "description": "Basic Authentication Password", - "type": "string", - "default": "f5c0102d" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailNotificationRequestSchema": { - "properties": { - "settings": { - "required": [ - "messageDelay", - "senderEmail", - "senderName", - "sendGridTemplateId", - "sendGridUnsubscribeGroupId", - "useWebhook", - "webhookURL", - "useWebhookBasicAuth", - "webhookUsername", - "webhookPassword", - "sendEmailReplies", - "senderEmailForReplies" - ], - "properties": { - "sendGridApiKey": { - "description": "Sendgrid API key", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - }, - "messageDelay": { - "description": "Time Interval after which notifications will be sent", - "type": "number", - "default": 120 - }, - "senderEmail": { - "description": "Sendgrid Sender Email for Notification", - "type": "string", - "default": "mymail@example.com" - }, - "senderName": { - "description": "Sendgrid Sender Name", - "type": "string", - "default": "John Doe" - }, - "sendGridTemplateId": { - "description": "Send Grid Template", - "type": "string", - "default": "f5c0102d" - }, - "sendGridUnsubscribeGroupId": { - "description": "Sendgrid Group Id obtained from their Dashboard", - "type": "string", - "default": "sendGridUnsubscribeGroupId" - }, - "useWebhook": { - "description": "Enable Webhook", - "type": "boolean", - "default": false - }, - "webhookURL": { - "description": "Webhook Url", - "type": "string", - "default": "https://example.com" - }, - "useWebhookBasicAuth": { - "description": "Enable Basic Authentication", - "type": "boolean", - "default": false - }, - "webhookUsername": { - "description": "Basic Authentication Username", - "type": "string", - "default": "username" - }, - "webhookPassword": { - "description": "Basic Authentication Password", - "type": "string", - "default": "f5c0102d" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailNotificationSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "sendGridApiKey": { - "description": "Sendgrid API key", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - }, - "messageDelay": { - "description": "Time Interval after which notifications will be sent", - "type": "number", - "default": 120 - }, - "senderEmail": { - "description": "Sendgrid Sender Email for Notification", - "type": "string", - "default": "mymail@example.com" - }, - "senderName": { - "description": "Sendgrid Sender Name", - "type": "string", - "default": "John Doe" - }, - "sendGridTemplateId": { - "description": "Send Grid Template", - "type": "string", - "default": "f5c0102d" - }, - "sendGridUnsubscribeGroupId": { - "description": "Sendgrid Group Id obtained from their Dashboard", - "type": "string", - "default": "sendGridUnsubscribeGroupId" - }, - "useWebhook": { - "description": "Enable Webhook", - "type": "boolean", - "default": false - }, - "webhookURL": { - "description": "Webhook Url", - "type": "string", - "default": "https://example.com" - }, - "useWebhookBasicAuth": { - "description": "Enable Basic Authentication", - "type": "boolean", - "default": false - }, - "webhookUsername": { - "description": "Basic Authentication Username", - "type": "string", - "default": "username" - }, - "webhookPassword": { - "description": "Basic Authentication Password", - "type": "string", - "default": "f5c0102d" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailRepliesDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailRepliesGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "senderEmailForReplies": { - "type": "string" - }, - "sendEmailReplies": { - "type": "boolean" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailRepliesRequestSchema": { - "properties": { - "settings": { - "required": [ - "sendEmailReplies" - ], - "properties": { - "senderEmailForReplies": { - "description": "Email For Replies", - "type": "string", - "default": "mymail@example.com" - }, - "sendEmailReplies": { - "description": "Enable Email Replies", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - }, - "type": "object" - }, - "emailRepliesSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "senderEmailForReplies": { - "type": "string" - }, - "sendEmailReplies": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "extensionListSchema": { - "properties": { - "email-notification": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "human-moderation": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "image-moderation": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "link-preview": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "message-translation": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "profanity-filter": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "push-notification": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "thumbnail-generation": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - }, - "broadcast": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "tagline": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "extensionSchema": { - "properties": { - "enabled": { - "properties": { - "extention_id1": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - }, - "extention_id2": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "disabled": { - "properties": { - "extention_id3": { - "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "giphyDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "success": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "giphyGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "giphyApiKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "giphyRequestSchema": { - "properties": { - "settings": { - "required": [ - "giphyApiKey" - ], - "properties": { - "giphyApiKey": { - "description": "Giphy API Key obtained from their Dashboard", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "giphySchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "giphyApiKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "humanModerationCreateSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "allUserMessages": { - "type": "boolean" - }, - "allGroupMessages": { - "type": "boolean" - }, - "senders": { - "type": "array", - "items": { - "type": "string" - } - }, - "receiverGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "receiverUsers": { - "type": "array", - "items": { - "type": "string" - } - }, - "allMessages": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "humanModerationDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "humanModerationGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "allUserMessages": { - "type": "boolean" - }, - "allGroupMessages": { - "type": "boolean" - }, - "senders": { - "type": "array", - "items": { - "type": "string" - } - }, - "receiverGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "receiverUsers": { - "type": "array", - "items": { - "type": "string" - } - }, - "allMessages": { - "type": "boolean" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "humanModerationRequestSchema": { - "properties": { - "settings": { - "required": [ - "allUserMessages", - "allGroupMessages", - "senders", - "receiverGroups", - "receiverUsers", - "allMessages" - ], - "properties": { - "allUserMessages": { - "description": "Moderat all user messages", - "type": "boolean", - "default": false - }, - "allGroupMessages": { - "description": "Moderat all group messages", - "type": "boolean", - "default": false - }, - "senders": { - "description": "Moderate messages from UIDs", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "cometchat-uid-1", - "cometchat-uid-2" - ] - }, - "receiverGroups": { - "description": "Moderate messages to GUIDs", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "cometchat-guid-1" - ] - }, - "receiverUsers": { - "description": "Moderate messages to UIDs", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "cometchat-uid-3" - ] - }, - "allMessages": { - "description": "Moderate all messages", - "type": "boolean", - "default": false - } - }, - "type": "object" - } - }, - "type": "object" - }, - "imageModerationDeleteSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "imageModerationGetSchema": { - "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": { + "success": true, + "message": "Keyword with id profanity-list has been deleted successfully." + } + } + } + } + } + } + } + }, + "/apps/{appId}/moderation/rules/{ruleId}/revisions": { + "get": { + "tags": [ + "Moderation" + ], + "summary": "Get Rule Revisions", + "description": "Fetches a rule's revisions.", + "operationId": "list-rule-revisions", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/ruleId" + } + ], + "responses": { + "200": { + "description": "List Rule revisions", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" }, - "responseTime": { - "type": "number" + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "id": "moderation-test", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": false, + "entity": "message", + "operand": "text", + "category": "word", + "operator": "equals", + "value": [ + "paris" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": true, + "createdAt": 1720011899, + "updatedAt": 1720011905, + "revisionId": "253179cf5f665257_moderation-test_2" + }, + { + "id": "moderation-test", + "name": "Video Moderation", + "description": "AI-powered video moderation to detect unsafe content.", + "enabled": true, + "conditions": [ + { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "violence_greaterThan_30" + ], + "message": [ + "Image contains violence with confidence greater than 30" + ] + } + ], + "action": [ + "blockMessage" + ], + "active": false, + "createdAt": 1720011899, + "updatedAt": 1720011899, + "revisionId": "253179cf5f665257_moderation-test_1" + } + ], + "meta": { + "current": { + "limit": 10, + "count": 2 + } + } + } + } + } + } + } + } + }, + "/apps/{appId}/moderation/blocked-messages": { + "get": { + "tags": [ + "Moderation" + ], + "summary": "List Blocked Messages", + "description": "Lists the messages blocked by the moderation service.", + "operationId": "list-moderation-blocked-messages", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + } + ], + "responses": { + "200": { + "description": "List Blocked Messages", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "appId": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } + "meta": { + "properties": { + "": { + "$ref": "#/components/schemas/metaSchema" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "example": { + "data": [ + { + "ruleId": "image-moderation", + "ruleName": "AI Image Moderation", + "revisionId": "253156be20433c97_image-moderation_4", + "condition": { + "id": 1, + "isKeywordsReferencePresent": false, + "isMediaPresent": true, + "entity": "message", + "operand": "image", + "category": "word", + "operator": "contains", + "value": [ + "Any unsafe content_greaterThan_70" + ], + "message": [ + "Image contains Any unsafe content with confidence greater than 70" + ], + "weight": 1 + }, + "message": { + "id": "65", + "muid": "_5zytzmceo", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2", + "sender": "cometchat-uid-1", + "receiverType": "user", + "receiver": "cometchat-uid-2", + "category": "message", + "type": "image", + "data": { + "metadata": { + "file": [] + }, + "resource": "WEB-4_0_3-ffa565b2-476e-493d-aeb5-4c750aae3ab1-1719925738505", + "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg", + "attachments": [ + { + "name": "download.jpeg", + "extension": "jpeg", + "size": 4761, + "mimeType": "image/jpeg", + "url": "https://data-eu.cometchat.io/2601293c931567f7/media/1719993037_336554568_9e044ea0ed5817381b189680f392bafe.jpeg" + } + ], + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", + "status": "offline", + "role": "default" + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "offline", + "role": "default", + "conversationId": "cometchat-uid-1_user_cometchat-uid-2" + }, + "entityType": "user" + } + }, + "moderation": { + "status": "pending" + } }, - "type": "object" - } + "sentAt": 1719993037, + "updatedAt": 1719993037 + }, + "action": [ + "blockMessage" + ], + "createdAt": 1719993038, + "updatedAt": 1719993038 + } + ], + "meta": { + "current": { + "limit": 50, + "count": 20 + } + } + } + } + } + } + } + } + }, + "/apps/{appId}/moderation/blocked-messages/{messageId}": { + "patch": { + "tags": [ + "Moderation" + ], + "summary": "Approve Blocked Messages", + "description": "Approves the messages blocked by the moderation service.", + "operationId": "approve-moderation-blocked-messages", + "parameters": [ + { + "$ref": "#/components/parameters/key" + }, + { + "$ref": "#/components/parameters/secret" + }, + { + "$ref": "#/components/parameters/appId" + }, + { + "$ref": "#/components/parameters/messageId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "status" + ], + "properties": { + "status": { + "description": "Moderation status of the message.", + "type": "string", + "example": "approved" + } }, "type": "object" - }, - "imageModerationRequestSchema": { - "properties": { - "settings": { - "required": [ - "dropMessage" - ], - "properties": { - "dropMessage": { - "description": "Should drop the message with XSS script", - "type": "boolean" - } - }, - "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Approve Blocked Messages", + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "properties": { + "": { + "$ref": "#/components/schemas/webhookSchema" + } + }, + "type": "object" } + }, + "type": "object" }, - "type": "object" + "example": { + "data": { + "success": true, + "message": "Message with ID 268 has been approved." + } + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "CategoryType": { + "description": "Type of entries in the list", + "type": "string", + "enum": [ + "word", + "pattern", + "sentence-similarity" + ] + }, + "Condition": { + "properties": { + "id": { + "description": "Unique identifier of a condition", + "type": "integer", + "example": 1 + }, + "entity": { + "description": "Entity type in which moderation will be performed.", + "type": "string", + "example": "message" + }, + "operand": { + "description": "Type of message content to moderate (e.g., text, image, video, custom).", + "type": "string", + "enum": [ + "text", + "image", + "video", + "custom" + ], + "example": "image" + }, + "operator": { + "description": "Operation to be performed for condition evaluation (e.g., contains, equals).", + "type": "string", + "enum": [ + "contains", + "equals" + ], + "example": "contains" + }, + "category": { + "description": "Type of entries for evaluation, either 'word' or 'pattern'.", + "type": "string", + "enum": [ + "word", + "pattern" + ], + "example": "word" + }, + "isKeywordReferencePresent": { + "description": "Indicates if the value contains a reference to a keyword list.", + "type": "boolean", + "example": false + }, + "isMediaPresent": { + "description": "Indicates if the incoming message contains media content.", + "type": "boolean", + "example": true + }, + "value": { + "description": "Actual value for the condition, or reference ID if isKeywordReferencePresent is true, or a formula if isMediaPresent is true.", + "type": "string", + "example": "violence_greaterThan_30" + } + }, + "type": "object" + }, + "GroupFilter": { + "required": [ + "entity", + "operand", + "operator", + "value", + "type" + ], + "properties": { + "entity": { + "description": "Type of entity for group filter", + "type": "string", + "enum": [ + "group" + ] + }, + "operand": { + "description": "Field to apply the filter on for 'group'", + "type": "string", + "enum": [ + "guid", + "name", + "type", + "tags", + "createdAt" + ] + }, + "operator": { + "description": "Operator to use for filtering", + "type": "string", + "enum": [ + "equals", + "notEquals", + "in", + "notIn", + "startsWith", + "endsWith", + "lessThan", + "greaterThan" + ], + "example": "equals" + }, + "value": { + "description": "Value for the filter", + "type": "string", + "example": "exampleValue" + }, + "type": { + "description": "Type of the filter, specifying sender or receiver", + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "example": "sender" + } + }, + "type": "object" + }, + "KeywordList": { + "discriminator": { + "propertyName": "category", + "mapping": { + "word": "#/components/schemas/WordPatternSchema", + "pattern": "#/components/schemas/PatternSchema", + "sentence-similarity": "#/components/schemas/SentenceSimilaritySchema" + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/WordPatternSchema" + }, + { + "$ref": "#/components/schemas/PatternSchema" + }, + { + "$ref": "#/components/schemas/SentenceSimilaritySchema" + } + ] + }, + "ModerationData": { + "properties": { + "id": { + "type": "string", + "example": "moderation-test" + }, + "name": { + "type": "string", + "example": "Video Moderation" + }, + "description": { + "type": "string", + "example": "AI-powered video moderation to detect unsafe content." + }, + "enabled": { + "type": "boolean", + "example": true + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + }, + "action": { + "type": "array", + "items": { + "type": "string", + "example": "blockMessage" + } + }, + "active": { + "type": "boolean", + "example": true + }, + "createdAt": { + "type": "integer", + "example": 1720003247 + }, + "updatedAt": { + "type": "integer", + "example": 1720003247 + }, + "revisionId": { + "type": "string", + "example": "253179cf5f665257_moderation-test_1" + } + }, + "type": "object" + }, + "ModerationRequestBody": { + "properties": { + "id": { + "description": "Unique identifier for the moderation rule.", + "type": "string", + "example": "moderation-test" + }, + "name": { + "description": "Descriptive name for the moderation rule.", + "type": "string", + "example": "Video Moderation" + }, + "enabled": { + "description": "Indicates whether the rule is active.", + "type": "boolean", + "example": true + }, + "description": { + "description": "Detailed explanation of the rule's purpose.", + "type": "string", + "example": "AI-powered video moderation to detect unsafe content." + }, + "action": { + "description": "Actions to be taken when a violation is detected.", + "type": "array", + "items": { + "type": "string", + "example": "blockMessage" + } + }, + "filters": { + "description": "List of filters to apply", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/UserFilter" + }, + { + "$ref": "#/components/schemas/GroupFilter" + } + ] + } + }, + "conditions": { + "description": "List of conditions that must be met for the rule to trigger.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + } + }, + "type": "object" + }, + "PatternSchema": { + "required": [ + "category", + "searchTerms" + ], + "properties": { + "file": { + "description": "CSV file containing the keywords or regex patterns for the list.", + "type": "string", + "format": "binary" + }, + "id": { + "description": "Unique identifier for the pattern list.", + "type": "string", + "example": "ID-of-the-pattern-list" + }, + "name": { + "description": "Descriptive name for the pattern list.", + "type": "string", + "example": "Name of the pattern list" + }, + "description": { + "description": "Detailed explanation of the pattern list's purpose.", + "type": "string", + "example": "Description of the pattern list" + }, + "category": { + "$ref": "#/components/schemas/CategoryType" + }, + "searchTerms": { + "description": "Comma-separated values of keywords or regex patterns if no file is provided.", + "type": "string", + "example": "AI-powered video moderation to detect unsafe content." + } + }, + "type": "object" + }, + "SentenceSimilaritySchema": { + "required": [ + "category", + "disallowedSentences" + ], + "properties": { + "file": { + "description": "CSV file containing the keywords or regex patterns for the list.", + "type": "string", + "format": "binary" + }, + "id": { + "description": "Unique identifier for the keyword list.", + "type": "string", + "example": "ID-of-the-sentences-list" + }, + "name": { + "description": "Descriptive name for the keyword list.", + "type": "string", + "example": "Name of the sentences list" + }, + "description": { + "description": "Detailed explanation of the keyword list's purpose.", + "type": "string", + "example": "Description of the sentences list" + }, + "category": { + "$ref": "#/components/schemas/CategoryType" + }, + "disallowedSentences": { + "description": "Comma-separated sentences that are disallowed if the category is 'sentence-similarity'.", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "Hello, let's connect on Whatsapp." + ] + } + }, + "type": "object" + }, + "UserFilter": { + "required": [ + "entity", + "operand", + "operator", + "value", + "type" + ], + "properties": { + "type": { + "description": "Type of the filter, specifying sender or receiver", + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "example": "sender" + }, + "entity": { + "description": "Type of entity for user filter", + "type": "string", + "enum": [ + "user" + ] + }, + "operand": { + "description": "Field to apply the filter on for 'user'", + "type": "string", + "enum": [ + "uid", + "name", + "role", + "tags", + "createdAt" + ] + }, + "operator": { + "description": "Operator to use for filtering", + "type": "string", + "enum": [ + "equals", + "notEquals", + "in", + "notIn", + "startsWith" + ], + "example": "equals" + }, + "value": { + "description": "Value for the filter", + "type": "string", + "example": "admin" + } + }, + "type": "object" + }, + "WithTemplate": { + "required": [ + "templateId" + ], + "properties": { + "templateId": { + "type": "string", + "example": "default" + }, + "settings": { + "type": "object" + } + }, + "type": "object" + }, + "WithoutTemplate": { + "required": [ + "settings" + ], + "properties": { + "settings": { + "type": "object" + } + }, + "type": "object" + }, + "WordPatternSchema": { + "required": [ + "category", + "searchTerms" + ], + "properties": { + "file": { + "description": "CSV file containing the keywords or regex patterns for the list.", + "type": "string", + "format": "binary" + }, + "id": { + "description": "Unique identifier for the word list.", + "type": "string", + "example": "ID-of-the-word-list" + }, + "name": { + "description": "Descriptive name for the word list.", + "type": "string", + "example": "Name of the word list" + }, + "description": { + "description": "Detailed explanation of the word list's purpose.", + "type": "string", + "example": "Description of the word list" + }, + "category": { + "$ref": "#/components/schemas/CategoryType" + }, + "searchTerms": { + "description": "Comma-separated values of keywords or regex patterns if no file is provided.", + "type": "string", + "example": "AI-powered video moderation to detect unsafe content." + } + }, + "type": "object" + }, + "appSchema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "integer" + }, + "plan": { + "type": "integer" + }, + "trialEndsAt": { + "type": "integer" + }, + "state": { + "type": "string" + }, + "owner": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "appOwner": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + } }, - "imageModerationSchema": { + "type": "object" + }, + "appRegion": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "apiKeys": { + "properties": { + "": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdBy": { + "type": "string" + } }, "type": "object" - }, - "imageModerationUpdateRequestSchema": { + }, + "": { "properties": { - "settings": { - "required": [ - "dropMessage" - ], - "properties": { - "dropMessage": { - "description": "Should drop the message with XSS script", - "type": "boolean", - "default": true - } - }, - "type": "object" - } + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdBy": { + "type": "string" + } }, "type": "object" + } }, - "intercomDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "bitlyCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "bitlyAccessToken": { + "type": "string" + }, + "groupGUID": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "intercomGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "bitlyDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "appId": { - "type": "string" - }, - "customerSupportUid": { - "type": "string" - }, - "intercomAccessToken": { - "type": "string" - }, - "webhookURL": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "intercomRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "bitlyGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "intercomAccessToken", - "customerSupportUid" - ], - "properties": { - "intercomAccessToken": { - "description": "For connecting and exchanging messages between CometChat and Intercom", - "type": "string", - "default": "EgsDdxRZFUy4tPWDjwmyZvYk" - }, - "customerSupportUid": { - "description": "Customer support uid that you have selected", - "type": "string", - "default": "cometchat-uid-2" - } - }, - "type": "object" - } + "settings": { + "properties": { + "bitlyAccessToken": { + "type": "string" + }, + "groupGUID": { + "type": "string" + }, + "appId": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "bitlyRequestSchema": { + "properties": { + "settings": { + "required": [ + "bitlyAccessToken", + "groupGUID" + ], + "properties": { + "bitlyAccessToken": { + "description": "Used as authentication mechanism when connecting to bitly", + "type": "string", + "default": "1213n2kn2232ffg" + }, + "groupGUID": { + "description": "Used to connect to a particular group in given organisation in bitly", + "type": "string", + "default": "1234ddsf5eee22" + } }, - "intercomSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatWidgetPutSchema": { + "properties": { + "settings": { + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "description": "Name of the Chat Widget", + "type": "string", + "default": "Test Chat Widget" + }, + "version": { + "description": "Version is always v2", + "type": "string", + "default": "v2" + }, + "style": { + "required": [ + "docked_layout_icon_background", + "docked_layout_icon_close", + "docked_layout_icon_open" + ], "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "appId": { - "type": "string" - }, - "customerSupportUid": { - "type": "string" - }, - "intercomAccessToken": { - "type": "string" - }, - "webhookURL": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "custom_css": { + "description": "Custom CSS if required", + "type": "string" + }, + "custom_js": { + "description": "Custom JS if required", + "type": "string", + "default": "v2" + }, + "docked_layout_icon_background": { + "description": "The background color for Icon in the Docked mode", + "type": "string", + "default": "#03a9f4" + }, + "docked_layout_icon_close": { + "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" + }, + "docked_layout_icon_open": { + "description": "The image to be displayed on the Docked layout icon when the widget is opened.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" + }, + "primary_color": { + "description": "Primary Colour", + "type": "string", + "default": "#03A9F4" + }, + "foreground_color": { + "description": "Foreground Colour", + "type": "string", + "default": " #000000" + }, + "background_color": { + "description": "Background Colour", + "type": "string", + "default": "#FFFFFF" + }, + "override_system_background_colors": { + "description": "Override System Background Colours", + "type": "boolean", + "default": true + } }, "type": "object" - }, - "listTriggerSchema": { + }, + "sidebar": { + "required": [ + "users", + "groups", + "calls", + "recent_chat_listing", + "user_listing", + "sidebar_navigation_sequence" + ], "properties": { - "id": { - "type": "string" - }, - "description": { - "type": "string" - } + "chats": { + "description": "Show Chats section in the Sidebar", + "type": "boolean", + "default": true + }, + "users": { + "description": "Show Users section in the Sidebar", + "type": "boolean", + "default": true + }, + "groups": { + "description": "Show Groups section in the Sidebar", + "type": "boolean", + "default": true + }, + "calls": { + "description": "Show Calls section in the Sidebar", + "type": "boolean" + }, + "user_settings": { + "description": "Show User Settings section in the Sidebar", + "type": "boolean" + }, + "recent_chat_listing": { + "description": "Which chats should be displayed in the Recent chat section", + "type": "string", + "default": "all_chats" + }, + "user_listing": { + "description": "Which users should be displayed in the User list", + "type": "string", + "default": "all_users" + }, + "sidebar_navigation_sequence": { + "description": "Order of sections in Sidebar. Do not add any new values.", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "chats", + "users", + "groups", + "calls", + "settings" + ] + } }, "type": "object" - }, - "messageShortcutsDeleteSchema": { + }, + "main": { + "required": [ + "allow_creating_polls", + "allow_delete_groups", + "allow_kick_ban_members", + "allow_message_reactions", + "allow_moderator_to_delete_member_messages", + "allow_promote_demote_members", + "block_user", + "create_groups", + "enable_collaborative_document", + "enable_collaborative_whiteboard", + "enable_deleting_messages", + "enable_editing_messages", + "enable_message_translation", + "enable_sending_messages", + "enable_sound_for_calls", + "enable_sound_for_messages", + "enable_threaded_replies", + "enable_video_calling", + "enable_voice_calling", + "hide_deleted_messages", + "hide_join_leave_notifications", + "join_or_leave_groups", + "send_emojis", + "send_message_in_private_to_group_member", + "send_photos_videos", + "share_live_reactions", + "show_call_notifications", + "show_delivery_read_indicators", + "show_emojis_in_larger_size" + ], "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "allow_add_members": { + "description": "Allow adding new group members", + "type": "boolean", + "default": true + }, + "allow_creating_polls": { + "description": "Enable Polls extension to allow sending polls", + "type": "boolean" + }, + "allow_delete_groups": { + "description": "Allow deletion of groups", + "type": "boolean", + "default": true + }, + "allow_kick_ban_members": { + "description": "Allow kick/ban group member actions", + "type": "boolean", + "default": true + }, + "allow_message_reactions": { + "description": "Enable Reactions extension to allow reactions to messages", + "type": "boolean" + }, + "allow_moderator_to_delete_member_messages": { + "description": "Allow moderators to delete messages from group", + "type": "boolean" + }, + "allow_promote_demote_members": { + "description": "Allow changing scopes of group members", + "type": "boolean" + }, + "block_user": { + "description": "Allow blocking a user", + "type": "boolean", + "default": true + }, + "create_groups": { + "description": "Allow creating new groups", + "type": "boolean", + "default": true + }, + "enable_collaborative_document": { + "description": "Enable Collaborative Document extension before enabling this", + "type": "boolean" + }, + "enable_collaborative_whiteboard": { + "description": "Enable Collaborative Whiteboard extension before enabling this.", + "type": "boolean" + }, + "enable_deleting_messages": { + "description": "Allow deletion of messages from chats", + "type": "boolean", + "default": true + }, + "enable_editing_messages": { + "description": "Allow edition of messages from chats", + "type": "boolean", + "default": true + }, + "enable_message_translation": { + "description": "Enable Message translation extension before enabling this.", + "type": "boolean" + }, + "enable_sending_messages": { + "description": "Allow sending messages", + "type": "boolean", + "default": true + }, + "enable_sound_for_calls": { + "description": "Play sound for incoming calls", + "type": "boolean", + "default": true + }, + "enable_sound_for_messages": { + "description": "Play sound for incoming messages", + "type": "boolean", + "default": true + }, + "enable_threaded_replies": { + "description": "Allow creation of message threads", + "type": "boolean", + "default": true + }, + "enable_video_calling": { + "description": "Enable video calling", + "type": "boolean", + "default": true + }, + "enable_voice_calling": { + "description": "Enable voice calling", + "type": "boolean", + "default": true + }, + "hide_deleted_messages": { + "description": "Hide message bubbles for deleted messages", + "type": "boolean", + "default": true + }, + "hide_join_leave_notifications": { + "description": "Hide the notifications in chat when someone joins or leaves a group", + "type": "boolean", + "default": true + }, + "join_or_leave_groups": { + "description": "Allow joining/leaving groups", + "type": "boolean", + "default": true + }, + "send_emojis": { + "description": "Show the emojis keyboard", + "type": "boolean", + "default": true + }, + "send_files": { + "description": "Allow sending files in chats", + "type": "boolean", + "default": true + }, + "send_message_in_private_to_group_member": { + "description": "Allow sending private messages to group members", + "type": "boolean" + }, + "send_photos_videos": { + "description": "Allow sending Photos and Videos in chat", + "type": "boolean", + "default": true + }, + "share_live_reactions": { + "description": "Allow sending Live Reactions", + "type": "boolean", + "default": true + }, + "show_call_notifications": { + "description": "Show notification for incoming calls", + "type": "boolean", + "default": true + }, + "show_delivery_read_indicators": { + "description": "Show delivery and read receipts", + "type": "boolean", + "default": true + }, + "show_emojis_in_larger_size": { + "description": "Display larger emojis when sending one, two or three in a message.", + "type": "boolean", + "default": true + }, + "show_stickers": { + "description": "Enable Stickers extension before enabling this", + "type": "boolean", + "default": true + }, + "show_typing_indicators": { + "description": "Show typing... indicators in chats", + "type": "boolean" + }, + "show_user_presence": { + "description": "Show user preferences", + "type": "boolean", + "default": true + }, + "view_group_members": { + "description": "Allow viewing group members", + "type": "boolean", + "default": true + }, + "allow_mention_members": { + "description": "Allow Mention Members", + "type": "boolean", + "default": false + }, + "enable_replying_to_messages": { + "description": "Enable Replying To Messages", + "type": "boolean", + "default": false + }, + "enable_share_copy_forward_messages": { + "description": "Enable Share Copy Forward Messages", + "type": "boolean", + "default": false + }, + "highlight_messages_from_moderators": { + "description": "Highlight Messages From Moderators", + "type": "boolean", + "default": false + }, + "show_call_recording_option": { + "description": "Show Call Recording Option", + "type": "boolean", + "default": false + }, + "send_voice_notes": { + "description": "Send Voice Notes", + "type": "boolean", + "default": false + }, + "send_gifs": { + "description": "Send Gifs", + "type": "boolean", + "default": false + }, + "share_location": { + "description": "Share Location", + "type": "boolean", + "default": false + }, + "view_shared_media": { + "description": "Allow viewing all Shared media in a group", + "type": "boolean", + "default": true + }, + "set_groups_in_qna_mode_by_moderators": { + "description": "Set Groups In Qna Mode By Moderators", + "type": "boolean", + "default": false + }, + "send_reply_in_private_to_group_member": { + "description": "Send Reply In Private To Group Member", + "type": "boolean", + "default": false + } }, "type": "object" + }, + "appId": { + "description": "Cometchat appid", + "type": "string", + "default": "564663ddb71bbb" + }, + "widgetId": { + "description": "Widget Id that need to modify", + "type": "string", + "default": "9af42f42-2f27-456d-9bfc-d77c29ec67bc" + } }, - "messageShortcutsGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatWidgetRequestSchema": { + "properties": { + "settings": { + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "description": "Name of the Chat Widget", + "type": "string", + "default": "Test Chat Widget" + }, + "version": { + "description": "Version is always v2", + "type": "string", + "default": "v2" + }, + "style": { + "required": [ + "docked_layout_icon_background", + "docked_layout_icon_close", + "docked_layout_icon_open" + ], "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "shortcuts": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "custom_css": { + "description": "Custom CSS if required", + "type": "string" + }, + "custom_js": { + "description": "Custom JS if required", + "type": "string", + "default": "v2" + }, + "docked_layout_icon_background": { + "description": "The background color for Icon in the Docked mode", + "type": "string", + "default": "#03a9f4" + }, + "docked_layout_icon_close": { + "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" + }, + "docked_layout_icon_open": { + "description": "The image to be displayed on the Docked layout icon when the widget is opened.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" + }, + "primary_color": { + "description": "Primary Colour", + "type": "string", + "default": "#03A9F4" + }, + "foreground_color": { + "description": "Foreground Colour", + "type": "string", + "default": " #000000" + }, + "background_color": { + "description": "Background Colour", + "type": "string", + "default": "#FFFFFF" + }, + "override_system_background_colors": { + "description": "Override System Background Colours", + "type": "boolean", + "default": true + } }, "type": "object" - }, - "messageShortcutsRequestSchema": { + }, + "sidebar": { + "required": [ + "users", + "groups", + "calls", + "recent_chat_listing", + "user_listing", + "sidebar_navigation_sequence" + ], "properties": { - "settings": { - "required": [ - "shortcuts" - ], - "properties": { - "shortcuts": { - "description": "Shortcuts and message mapping", - "type": "object", - "default": { - "!cu": "See you later.", - "!ty": "Hey! Thanks a lot! 😊", - "!hbd": "Happy Birthday! 🥳", - "!ssup": "What's up!?", - "!wc": "You're welcome!" - } - } - }, - "type": "object" - } + "chats": { + "description": "Show Chats section in the Sidebar", + "type": "boolean", + "default": true + }, + "users": { + "description": "Show Users section in the Sidebar", + "type": "boolean", + "default": true + }, + "groups": { + "description": "Show Groups section in the Sidebar", + "type": "boolean", + "default": true + }, + "calls": { + "description": "Show Calls section in the Sidebar", + "type": "boolean" + }, + "user_settings": { + "description": "Show User Settings section in the Sidebar", + "type": "boolean" + }, + "recent_chat_listing": { + "description": "Which chats should be displayed in the Recent chat section", + "type": "string", + "default": "all_chats" + }, + "user_listing": { + "description": "Which users should be displayed in the User list", + "type": "string", + "default": "all_users" + }, + "sidebar_navigation_sequence": { + "description": "Order of sections in Sidebar. Do not add any new values.", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "chats", + "users", + "groups", + "calls", + "settings" + ] + }, + "start_a_new_conversation": { + "description": "Start a new Conversation", + "type": "string", + "default": "all_chats" + }, + "group_listing": { + "description": "Group Listing", + "type": "string", + "default": "public_and_password_protected_groups" + } }, "type": "object" - }, - "messageShortcutsSchema": { + }, + "main": { + "required": [ + "allow_creating_polls", + "allow_delete_groups", + "allow_kick_ban_members", + "allow_message_reactions", + "allow_moderator_to_delete_member_messages", + "allow_promote_demote_members", + "block_user", + "create_groups", + "enable_collaborative_document", + "enable_collaborative_whiteboard", + "enable_deleting_messages", + "enable_editing_messages", + "enable_message_translation", + "enable_sending_messages", + "enable_sound_for_calls", + "enable_sound_for_messages", + "enable_threaded_replies", + "enable_video_calling", + "enable_voice_calling", + "hide_deleted_messages", + "hide_join_leave_notifications", + "join_or_leave_groups", + "send_emojis", + "send_message_in_private_to_group_member", + "send_photos_videos", + "share_live_reactions", + "show_call_notifications", + "show_delivery_read_indicators", + "show_emojis_in_larger_size" + ], "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "shortcuts": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "allow_add_members": { + "description": "Allow adding new group members", + "type": "boolean", + "default": true + }, + "allow_creating_polls": { + "description": "Enable Polls extension to allow sending polls", + "type": "boolean" + }, + "allow_delete_groups": { + "description": "Allow deletion of groups", + "type": "boolean", + "default": true + }, + "allow_kick_ban_members": { + "description": "Allow kick/ban group member actions", + "type": "boolean", + "default": true + }, + "allow_message_reactions": { + "description": "Enable Reactions extension to allow reactions to messages", + "type": "boolean" + }, + "allow_moderator_to_delete_member_messages": { + "description": "Allow moderators to delete messages from group", + "type": "boolean" + }, + "allow_promote_demote_members": { + "description": "Allow changing scopes of group members", + "type": "boolean" + }, + "block_user": { + "description": "Allow blocking a user", + "type": "boolean", + "default": true + }, + "create_groups": { + "description": "Allow creating new groups", + "type": "boolean", + "default": true + }, + "enable_collaborative_document": { + "description": "Enable Collaborative Document extension before enabling this", + "type": "boolean" + }, + "enable_collaborative_whiteboard": { + "description": "Enable Collaborative Whiteboard extension before enabling this.", + "type": "boolean" + }, + "enable_deleting_messages": { + "description": "Allow deletion of messages from chats", + "type": "boolean", + "default": true + }, + "enable_editing_messages": { + "description": "Allow edition of messages from chats", + "type": "boolean", + "default": true + }, + "enable_message_translation": { + "description": "Enable Message translation extension before enabling this.", + "type": "boolean" + }, + "enable_sending_messages": { + "description": "Allow sending messages", + "type": "boolean", + "default": true + }, + "enable_sound_for_calls": { + "description": "Play sound for incoming calls", + "type": "boolean", + "default": true + }, + "enable_sound_for_messages": { + "description": "Play sound for incoming messages", + "type": "boolean", + "default": true + }, + "enable_threaded_replies": { + "description": "Allow creation of message threads", + "type": "boolean", + "default": true + }, + "enable_video_calling": { + "description": "Enable video calling", + "type": "boolean", + "default": true + }, + "enable_voice_calling": { + "description": "Enable voice calling", + "type": "boolean", + "default": true + }, + "hide_deleted_messages": { + "description": "Hide message bubbles for deleted messages", + "type": "boolean", + "default": true + }, + "hide_join_leave_notifications": { + "description": "Hide the notifications in chat when someone joins or leaves a group", + "type": "boolean", + "default": true + }, + "join_or_leave_groups": { + "description": "Allow joining/leaving groups", + "type": "boolean", + "default": true + }, + "send_emojis": { + "description": "Show the emojis keyboard", + "type": "boolean", + "default": true + }, + "send_files": { + "description": "Allow sending files in chats", + "type": "boolean", + "default": true + }, + "send_message_in_private_to_group_member": { + "description": "Allow sending private messages to group members", + "type": "boolean" + }, + "send_photos_videos": { + "description": "Allow sending Photos and Videos in chat", + "type": "boolean", + "default": true + }, + "share_live_reactions": { + "description": "Allow sending Live Reactions", + "type": "boolean", + "default": true + }, + "show_call_notifications": { + "description": "Show notification for incoming calls", + "type": "boolean", + "default": true + }, + "show_delivery_read_indicators": { + "description": "Show delivery and read receipts", + "type": "boolean", + "default": true + }, + "show_emojis_in_larger_size": { + "description": "Display larger emojis when sending one, two or three in a message.", + "type": "boolean", + "default": true + }, + "show_stickers": { + "description": "Enable Stickers extension before enabling this", + "type": "boolean", + "default": true + }, + "show_typing_indicators": { + "description": "Show typing... indicators in chats", + "type": "boolean" + }, + "show_user_presence": { + "description": "Show user preferences", + "type": "boolean", + "default": true + }, + "view_group_members": { + "description": "Allow viewing group members", + "type": "boolean", + "default": true + }, + "allow_mention_members": { + "description": "Allow Mention Members", + "type": "boolean", + "default": false + }, + "enable_replying_to_messages": { + "description": "Enable Replying To Messages", + "type": "boolean", + "default": false + }, + "enable_share_copy_forward_messages": { + "description": "Enable Share Copy Forward Messages", + "type": "boolean", + "default": false + }, + "highlight_messages_from_moderators": { + "description": "Highlight Messages From Moderators", + "type": "boolean", + "default": false + }, + "show_call_recording_option": { + "description": "Show Call Recording Option", + "type": "boolean", + "default": false + }, + "send_voice_notes": { + "description": "Send Voice Notes", + "type": "boolean", + "default": false + }, + "send_gifs": { + "description": "Send Gifs", + "type": "boolean", + "default": false + }, + "share_location": { + "description": "Share Location", + "type": "boolean", + "default": false + }, + "view_shared_media": { + "description": "Allow viewing all Shared media in a group", + "type": "boolean", + "default": true + }, + "set_groups_in_qna_mode_by_moderators": { + "description": "Set Groups In Qna Mode By Moderators", + "type": "boolean", + "default": false + }, + "send_reply_in_private_to_group_member": { + "description": "Send Reply In Private To Group Member", + "type": "boolean", + "default": false + } }, "type": "object" + } }, - "metaSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatWidgetResponseSchema": { + "properties": { + "data": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "integer" + }, + "body": { "properties": { - "pagination": { - "properties": { - "total": { - "type": "integer" + "data": { + "properties": { + "configuration": { + "type": "array", + "items": { + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "description": "Name of the Chat Widget", + "type": "string", + "default": "Test Chat Widget" + }, + "version": { + "description": "Version is always v2", + "type": "string", + "default": "v2" }, - "count": { - "type": "integer" + "style": { + "required": [ + "docked_layout_icon_background", + "docked_layout_icon_close", + "docked_layout_icon_open" + ], + "properties": { + "custom_css": { + "description": "Custom CSS if required", + "type": "string" + }, + "custom_js": { + "description": "Custom JS if required", + "type": "string", + "default": "v2" + }, + "docked_layout_icon_background": { + "description": "The background color for Icon in the Docked mode", + "type": "string", + "default": "#03a9f4" + }, + "docked_layout_icon_close": { + "description": "The image to be displayed on the Docked layout icon when the Widget is closed.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_close.svg" + }, + "docked_layout_icon_open": { + "description": "The image to be displayed on the Docked layout icon when the widget is opened.", + "type": "string", + "default": "https://widget-js.cometchat.io/v2/resources/chat_bubble.svg" + }, + "primary_color": { + "description": "Primary Colour", + "type": "string", + "default": "#03A9F4" + }, + "foreground_color": { + "description": "Foreground Colour", + "type": "string", + "default": " #000000" + }, + "background_color": { + "description": "Background Colour", + "type": "string", + "default": "#FFFFFF" + }, + "override_system_background_colors": { + "description": "Override System Background Colours", + "type": "boolean", + "default": true + } + }, + "type": "object" }, - "per_page": { - "type": "integer" + "sidebar": { + "required": [ + "users", + "groups", + "calls", + "recent_chat_listing", + "user_listing", + "sidebar_navigation_sequence" + ], + "properties": { + "chats": { + "description": "Show Chats section in the Sidebar", + "type": "boolean", + "default": true + }, + "users": { + "description": "Show Users section in the Sidebar", + "type": "boolean", + "default": true + }, + "groups": { + "description": "Show Groups section in the Sidebar", + "type": "boolean", + "default": true + }, + "calls": { + "description": "Show Calls section in the Sidebar", + "type": "boolean" + }, + "user_settings": { + "description": "Show User Settings section in the Sidebar", + "type": "boolean" + }, + "recent_chat_listing": { + "description": "Which chats should be displayed in the Recent chat section", + "type": "string", + "default": "all_chats" + }, + "user_listing": { + "description": "Which users should be displayed in the User list", + "type": "string", + "default": "all_users" + }, + "sidebar_navigation_sequence": { + "description": "Order of sections in Sidebar. Do not add any new values.", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "chats", + "users", + "groups", + "calls", + "settings" + ] + }, + "start_a_new_conversation": { + "description": "Start a new Conversation", + "type": "string", + "default": "all_chats" + }, + "group_listing": { + "description": "Group Listing", + "type": "string", + "default": "public_and_password_protected_groups" + } + }, + "type": "object" }, - "current_page": { - "type": "integer" + "main": { + "required": [ + "allow_creating_polls", + "allow_delete_groups", + "allow_kick_ban_members", + "allow_message_reactions", + "allow_moderator_to_delete_member_messages", + "allow_promote_demote_members", + "block_user", + "create_groups", + "enable_collaborative_document", + "enable_collaborative_whiteboard", + "enable_deleting_messages", + "enable_editing_messages", + "enable_message_translation", + "enable_sending_messages", + "enable_sound_for_calls", + "enable_sound_for_messages", + "enable_threaded_replies", + "enable_video_calling", + "enable_voice_calling", + "hide_deleted_messages", + "hide_join_leave_notifications", + "join_or_leave_groups", + "send_emojis", + "send_message_in_private_to_group_member", + "send_photos_videos", + "share_live_reactions", + "show_call_notifications", + "show_delivery_read_indicators", + "show_emojis_in_larger_size" + ], + "properties": { + "allow_add_members": { + "description": "Allow adding new group members", + "type": "boolean", + "default": true + }, + "allow_creating_polls": { + "description": "Enable Polls extension to allow sending polls", + "type": "boolean" + }, + "allow_delete_groups": { + "description": "Allow deletion of groups", + "type": "boolean", + "default": true + }, + "allow_kick_ban_members": { + "description": "Allow kick/ban group member actions", + "type": "boolean", + "default": true + }, + "allow_message_reactions": { + "description": "Enable Reactions extension to allow reactions to messages", + "type": "boolean" + }, + "allow_moderator_to_delete_member_messages": { + "description": "Allow moderators to delete messages from group", + "type": "boolean" + }, + "allow_promote_demote_members": { + "description": "Allow changing scopes of group members", + "type": "boolean" + }, + "block_user": { + "description": "Allow blocking a user", + "type": "boolean", + "default": true + }, + "create_groups": { + "description": "Allow creating new groups", + "type": "boolean", + "default": true + }, + "enable_collaborative_document": { + "description": "Enable Collaborative Document extension before enabling this", + "type": "boolean" + }, + "enable_collaborative_whiteboard": { + "description": "Enable Collaborative Whiteboard extension before enabling this.", + "type": "boolean" + }, + "enable_deleting_messages": { + "description": "Allow deletion of messages from chats", + "type": "boolean", + "default": true + }, + "enable_editing_messages": { + "description": "Allow edition of messages from chats", + "type": "boolean", + "default": true + }, + "enable_message_translation": { + "description": "Enable Message translation extension before enabling this.", + "type": "boolean" + }, + "enable_sending_messages": { + "description": "Allow sending messages", + "type": "boolean", + "default": true + }, + "enable_sound_for_calls": { + "description": "Play sound for incoming calls", + "type": "boolean", + "default": true + }, + "enable_sound_for_messages": { + "description": "Play sound for incoming messages", + "type": "boolean", + "default": true + }, + "enable_threaded_replies": { + "description": "Allow creation of message threads", + "type": "boolean", + "default": true + }, + "enable_video_calling": { + "description": "Enable video calling", + "type": "boolean", + "default": true + }, + "enable_voice_calling": { + "description": "Enable voice calling", + "type": "boolean", + "default": true + }, + "hide_deleted_messages": { + "description": "Hide message bubbles for deleted messages", + "type": "boolean", + "default": true + }, + "hide_join_leave_notifications": { + "description": "Hide the notifications in chat when someone joins or leaves a group", + "type": "boolean", + "default": true + }, + "join_or_leave_groups": { + "description": "Allow joining/leaving groups", + "type": "boolean", + "default": true + }, + "send_emojis": { + "description": "Show the emojis keyboard", + "type": "boolean", + "default": true + }, + "send_files": { + "description": "Allow sending files in chats", + "type": "boolean", + "default": true + }, + "send_message_in_private_to_group_member": { + "description": "Allow sending private messages to group members", + "type": "boolean" + }, + "send_photos_videos": { + "description": "Allow sending Photos and Videos in chat", + "type": "boolean", + "default": true + }, + "share_live_reactions": { + "description": "Allow sending Live Reactions", + "type": "boolean", + "default": true + }, + "show_call_notifications": { + "description": "Show notification for incoming calls", + "type": "boolean", + "default": true + }, + "show_delivery_read_indicators": { + "description": "Show delivery and read receipts", + "type": "boolean", + "default": true + }, + "show_emojis_in_larger_size": { + "description": "Display larger emojis when sending one, two or three in a message.", + "type": "boolean", + "default": true + }, + "show_stickers": { + "description": "Enable Stickers extension before enabling this", + "type": "boolean", + "default": true + }, + "show_typing_indicators": { + "description": "Show typing... indicators in chats", + "type": "boolean" + }, + "show_user_presence": { + "description": "Show user preferences", + "type": "boolean", + "default": true + }, + "view_group_members": { + "description": "Allow viewing group members", + "type": "boolean", + "default": true + }, + "allow_mention_members": { + "description": "Allow Mention Members", + "type": "boolean", + "default": false + }, + "enable_replying_to_messages": { + "description": "Enable Replying To Messages", + "type": "boolean", + "default": false + }, + "enable_share_copy_forward_messages": { + "description": "Enable Share Copy Forward Messages", + "type": "boolean", + "default": false + }, + "highlight_messages_from_moderators": { + "description": "Highlight Messages From Moderators", + "type": "boolean", + "default": false + }, + "show_call_recording_option": { + "description": "Show Call Recording Option", + "type": "boolean", + "default": false + }, + "send_voice_notes": { + "description": "Send Voice Notes", + "type": "boolean", + "default": false + }, + "send_gifs": { + "description": "Send Gifs", + "type": "boolean", + "default": false + }, + "share_location": { + "description": "Share Location", + "type": "boolean", + "default": false + }, + "view_shared_media": { + "description": "Allow viewing all Shared media in a group", + "type": "boolean", + "default": true + }, + "set_groups_in_qna_mode_by_moderators": { + "description": "Set Groups In Qna Mode By Moderators", + "type": "boolean", + "default": false + }, + "send_reply_in_private_to_group_member": { + "description": "Send Reply In Private To Group Member", + "type": "boolean", + "default": false + } + }, + "type": "object" }, - "total_pages": { - "type": "integer" + "appId": { + "description": "Cometchat appid", + "type": "string", + "default": "564663ddb71bbb" }, - "links": { - "type": "string" + "widgetId": { + "description": "Widget Id that need to modify", + "type": "string", + "default": "9af42f42-2f27-456d-9bfc-d77c29ec67bc" } - }, - "type": "object" - } + }, + "type": "object" + } + } + }, + "type": "object" + } }, "type": "object" + } }, - "profanityFilterCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatWidgetSchema": { + "properties": { + "enabled": { + "properties": { + "extention_id1": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "badwords": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } }, "type": "object" - }, - "profanityFilterDeleteSchema": { + }, + "extention_id2": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } }, "type": "object" + } }, - "profanityFilterGetSchema": { + "type": "object" + }, + "disabled": { + "properties": { + "extention_id3": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "groupGUID": { - "type": "array", - "items": { - "type": "string" - } - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } }, "type": "object" + } }, - "profanityFilterRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatwootDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "dropMessage", - "badwords" - ], - "properties": { - "dropMessage": { - "description": "conatin the dropMessage", - "type": "boolean", - "default": false - }, - "badwords": { - "description": "remove the badwords", - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "xyz" - ] - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "pushNotificationDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatwootGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "appId": { + "type": "string" + }, + "customerSupportUid": { + "type": "string" + }, + "chatwootAccountId": { + "type": "string" + }, + "chatwootInboxId": { + "type": "string" + }, + "chatwootAccessToken": { + "type": "string" + }, + "webhookURL": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "chatwootRequestSchema": { + "properties": { + "settings": { + "required": [ + "chatwootAccessToken", + "chatwootAccountId", + "chatwootInboxId", + "customerSupportUid" + ], + "properties": { + "chatwootAccessToken": { + "description": "For connecting and exchanging messages between CometChat and chatwoot", + "type": "string", + "default": "EgsDdxRZFUy4tPWDjwmyZaYk" + }, + "chatwootAccountId": { + "description": "Obtained from Chatwoot profile settings", + "type": "string", + "default": "12123" + }, + "chatwootInboxId": { + "description": "Obtained from Chatwoot inbox settings", + "type": "string", + "default": "12345" + }, + "customerSupportUid": { + "description": "Customer support uid that you have selected", + "type": "string", + "default": "cometchat-uid-2" + } }, - "pushNotificationGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "chatwootSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "appId": { + "type": "string" + }, + "customerSupportUid": { + "type": "string" + }, + "chatwootAccountId": { + "type": "string" + }, + "chatwootInboxId": { + "type": "string" + }, + "chatwootAccessToken": { + "type": "string" + }, + "webhookURL": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "version": { - "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", - "type": "number", - "default": 2 - }, - "pushProvider": { - "description": "1: FCM | 2: APNs | 0: FCM+APNs", - "type": "number", - "default": 1 - }, - "fcmServerKey": { - "type": "string" - }, - "notificationInPayload": { - "properties": { - "web": { - "description": "Include 'notification' key for Web", - "type": "boolean", - "default": true - }, - "android": { - "description": "Include 'notification' key for Android", - "type": "boolean", - "default": false - }, - "ionic_cordova": { - "description": "Include 'notification' key for Ionic", - "type": "boolean", - "default": true - }, - "react_native": { - "description": "Include 'notification' key for React native", - "type": "boolean", - "default": false - }, - "ios": { - "description": "Include 'notification' key for iOS", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "useP8": { - "type": "boolean" - }, - "keyId": { - "type": "string" - }, - "teamId": { - "type": "string" - }, - "bundleId": { - "type": "string" - }, - "sendApnsProduction": { - "type": "boolean" - }, - "sendNewMessageNotification": { - "type": "boolean" - }, - "sendEditMessageNotification": { - "type": "boolean" - }, - "sendDeleteMessageNotification": { - "type": "boolean" - }, - "sendThreadedMessageNotification": { - "type": "boolean" - }, - "sendIncomingCallNotification": { - "type": "boolean" - }, - "sendMissedCallNotification": { - "type": "boolean" - }, - "sendMemberJoinedNotification": { - "type": "boolean" - }, - "sendMemberLeftNotification": { - "type": "boolean" - }, - "sendMemberKickedNotification": { - "type": "boolean" - }, - "sendMemberBannedNotification": { - "type": "boolean" - }, - "sendMemberUnbannedNotification": { - "type": "boolean" - }, - "sendMemberAddedNotification": { - "type": "boolean" - }, - "sendMemberScopeChangedNotification": { - "type": "boolean" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "pushNotificationRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "dataMaskingGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "version", - "pushProvider" - ], - "properties": { - "version": { - "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", - "type": "integer", - "default": 2 - }, - "pushProvider": { - "description": "1: FCM | 2: APNs | 0: FCM+APNs", - "type": "integer", - "default": 1 - }, - "fcmCredentials": { - "description": "These are obtained from the Service Account JSON file you download from Firebase console", - "properties": { - "project_id": { - "type": "string" - }, - "client_email": { - "type": "string" - }, - "private_key": { - "type": "string" - }, - "private_key_id": { - "type": "string" - } - }, - "type": "object" - }, - "notificationInPayload": { - "properties": { - "web": { - "description": "Include 'notification' key for Web", - "type": "boolean", - "default": true - }, - "android": { - "description": "Include 'notification' key for Android", - "type": "boolean", - "default": true - }, - "ionic_cordova": { - "description": "Include 'notification' key for Ionic", - "type": "boolean", - "default": true - }, - "react_native": { - "description": "Include 'notification' key for React native", - "type": "boolean", - "default": false - }, - "ios": { - "description": "Include 'notification' key for iOS", - "type": "boolean", - "default": true - }, - "flutter": { - "description": "Include 'notification' key for Flutter", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "useP8": { - "description": "Required for APNs only. Use .p8 as it never expires", - "type": "boolean", - "default": true - }, - "keyId": { - "description": "Required for APNs only", - "type": "string" - }, - "teamId": { - "description": "Required for APNs only", - "type": "string" - }, - "bundleId": { - "description": "Required for APNs only", - "type": "string" - }, - "sendApnsProduction": { - "description": "Required for APNs only. 'true' for apps available on the Appstore", - "type": "boolean", - "default": true - }, - "sendNewMessageNotification": { - "type": "boolean", - "default": true - }, - "sendEditMessageNotification": { - "type": "boolean", - "default": false - }, - "sendDeleteMessageNotification": { - "type": "boolean", - "default": false - }, - "sendThreadedMessageNotification": { - "type": "boolean", - "default": true - }, - "sendIncomingCallNotification": { - "type": "boolean", - "default": true - }, - "sendMissedCallNotification": { - "type": "boolean", - "default": true - }, - "sendMemberJoinedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberLeftNotification": { - "type": "boolean", - "default": true - }, - "sendMemberKickedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberBannedNotification": { - "type": "boolean", - "default": true + "settings": { + "properties": { + "dropMessage": { + "type": "boolean" + }, + "customregexData": { + "type": "array", + "items": { + "properties": { + "name": { + "type": "string" }, - "sendMemberUnbannedNotification": { - "type": "boolean", - "default": true + "regex": { + "type": "string" }, - "sendMemberAddedNotification": { - "type": "boolean", - "default": true + "id": { + "type": "string" + } + }, + "type": "object" + } + }, + "defaultRegexData": { + "type": "array", + "items": { + "properties": { + "name": { + "type": "string" }, - "sendMemberScopeChangedNotification": { - "type": "boolean", - "default": false + "regex": { + "type": "string" }, - "appId": { - "type": "string" + "id": { + "type": "string" }, - "cometchatMessagePayloadOptions": { - "description": "Optional property", - "properties": { - "skipSenderMetadata": { - "description": "Excludes sender's metadata from the message object in the push payload", - "type": "boolean", - "default": false - }, - "skipReceiverMetadata": { - "description": "Excludes receiver's metadata from the message object in the push payload", - "type": "boolean", - "default": false - }, - "skipMessageMetadata": { - "description": "Excludes the message metadata from the message object in the push payload", - "type": "boolean", - "default": false - }, - "trimMessageText": { - "description": "Trims the message text from the message object in the push payload to ensure the payload size does not exceed 4KB; exceeding this limit may prevent notifications from being delivered.", - "type": "boolean", - "default": true - } - }, - "type": "object" + "enableFlag": { + "type": "boolean" } - }, - "type": "object" - } + }, + "type": "object" + } + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "dataMaskingRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage", + "customregexData", + "defaultRegexData", + "deleteCustomRegexData" + ], + "properties": { + "dropMessage": { + "description": "Should drop message in case of sensitive information?", + "type": "boolean", + "default": false + }, + "defaultRegexData": { + "description": "Configure the default masks", + "type": "array", + "items": { + "type": "object" + }, + "default": [ + { + "enableFlag": false, + "id": "1", + "name": "US Phone numbers", + "regex": "[2-9]\\\\d{2}-\\\\d{3}-\\\\d{4}" + }, + { + "enableFlag": false, + "id": "2", + "name": "Emails", + "regex": "\\\\w+([.-]?\\\\w+)*@\\\\w+([.-]?\\\\w+)*(\\\\.\\\\w{2,10})+" + }, + { + "enableFlag": false, + "id": "3", + "name": "SSN", + "regex": "\\\\d{3}-\\\\d{2}-\\\\d{4}" + } + ] + }, + "customregexData": { + "description": "Configure the custom masks", + "type": "array", + "items": { + "type": "object" + }, + "default": [ + { + "name": "one", + "regex": "one", + "id": "1983958" + } + ] + }, + "deleteCustomRegexData": { + "description": "Remove custom masks by ID", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "9393903" + ] + } }, - "pushNotificationSchema": { + "type": "object" + } + }, + "type": "object" + }, + "dataMaskingResponseSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "version": { - "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", - "type": "number", - "default": 2 - }, - "pushProvider": { - "description": "1: FCM | 2: APNs | 0: FCM+APNs", - "type": "number", - "default": 1 - }, - "fcmServerKey": { - "type": "string" - }, - "notificationInPayload": { - "properties": { - "web": { - "description": "Include 'notification' key for Web", - "type": "boolean", - "default": true - }, - "android": { - "description": "Include 'notification' key for Android", - "type": "boolean", - "default": false - }, - "ionic_cordova": { - "description": "Include 'notification' key for Ionic", - "type": "boolean", - "default": true - }, - "react_native": { - "description": "Include 'notification' key for React native", - "type": "boolean", - "default": false - }, - "ios": { - "description": "Include 'notification' key for iOS", - "type": "boolean", - "default": true - } - }, - "type": "object" - }, - "useP8": { - "description": "Required for APNs only. Use .p8; as it never expires", - "type": "boolean", - "default": true - }, - "keyId": { - "description": "Required for APNs only.", - "type": "string", - "default": "" - }, - "teamId": { - "description": "Required for APNs only.", - "type": "string", - "default": "" - }, - "bundleId": { - "description": "Required for APNs only.", - "type": "string", - "default": "" - }, - "sendApnsProduction": { - "description": "Required for APNs only. 'true' for apps available on the Appstore", - "type": "boolean", - "default": false - }, - "sendNewMessageNotification": { - "type": "boolean", - "default": true - }, - "sendEditMessageNotification": { - "type": "boolean", - "default": false - }, - "sendDeleteMessageNotification": { - "type": "boolean", - "default": false - }, - "sendThreadedMessageNotification": { - "type": "boolean", - "default": true - }, - "sendIncomingCallNotification": { - "type": "boolean", - "default": true - }, - "sendMissedCallNotification": { - "type": "boolean", - "default": true - }, - "sendMemberJoinedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberLeftNotification": { - "type": "boolean", - "default": true - }, - "sendMemberKickedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberBannedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberUnbannedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberAddedNotification": { - "type": "boolean", - "default": true - }, - "sendMemberScopeChangedNotification": { - "type": "boolean", - "default": false - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "reportMessageCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "deleteAppSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "scheduledToDeleteAt": { + "type": "integer" + } + }, + "type": "object" + }, + "deleteSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "deleteWebhookSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "e2eeCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "virgilAppID": { + "type": "string" + }, + "virgilAppKeyID": { + "type": "string" + }, + "virgilAppKey": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "maxReports": { - "type": "number" - }, - "useWebhook": { - "type": "boolean" - }, - "webhookURL": { - "type": "string" - }, - "basicAuthUsername": { - "type": "string" - }, - "basicAuthPassword": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "reportMessageDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "e2eeDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "reportMessageGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "e2eeGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "virgilAppID": { + "type": "string" + }, + "virgilAppKeyID": { + "type": "string" + }, + "virgilAppKey": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "maxReports": { - "type": "number" - }, - "useWebhook": { - "type": "boolean" - }, - "webhookURL": { - "type": "string" - }, - "basicAuthUsername": { - "type": "string" - }, - "basicAuthPassword": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "e2eeRequestSchema": { + "properties": { + "settings": { + "required": [ + "virgilAppID", + "virgilAppKeyID", + "virgilAppKey" + ], + "properties": { + "virgilAppID": { + "description": "Virgil App Id obtained from their Dashboard", + "type": "string", + "default": "virgilAppId12345678" + }, + "virgilAppKeyID": { + "description": "Virgil App Key Id obtained from their Dashboard", + "type": "string", + "default": "xyzabcd12345678" + }, + "virgilAppKey": { + "description": "Virgil App Key obtained from their Dashboard", + "type": "string", + "default": "abcd12345678" + } }, - "reportMessageRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailNotificationDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "maxReports", - "useWebhook" - ], - "properties": { - "maxReports": { - "description": "Maximum number of unique reports after which moderation actions needs to be taken", - "type": "number", - "default": 3 - }, - "useWebhook": { - "description": "Send reports to webhook and perform custom actions", - "type": "boolean", - "default": true - }, - "webhookURL": { - "description": "The webhook URL to be triggered", - "type": "string", - "default": "https://www.your-domain.com/take-action" - }, - "basicAuthUsername": { - "description": "Basic Auth messagename to use for calling your webhook URL", - "type": "string", - "default": "abcd" - }, - "basicAuthPassword": { - "description": "Basic Auth password to use for calling your webhook URL", - "type": "string", - "default": "1234" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "reportUserCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailNotificationGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "sendGridApiKey": { + "description": "Sendgrid API key", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + }, + "messageDelay": { + "description": "Time Interval after which notifications will be sent", + "type": "number", + "default": 120 + }, + "senderEmail": { + "description": "Sendgrid Sender Email for Notification", + "type": "string", + "default": "mymail@example.com" + }, + "senderName": { + "description": "Sendgrid Sender Name", + "type": "string", + "default": "John Doe" + }, + "sendGridTemplateId": { + "description": "Send Grid Template", + "type": "string", + "default": "f5c0102d" + }, + "sendGridUnsubscribeGroupId": { + "description": "Sendgrid Group Id obtained from their Dashboard", + "type": "string", + "default": "sendGridUnsubscribeGroupId" + }, + "useWebhook": { + "description": "Enable Webhook", + "type": "boolean", + "default": false + }, + "webhookURL": { + "description": "Webhook Url", + "type": "string", + "default": "https://example.com" + }, + "useWebhookBasicAuth": { + "description": "Enable Basic Authentication", + "type": "boolean", + "default": false + }, + "webhookUsername": { + "description": "Basic Authentication Username", + "type": "string", + "default": "username" + }, + "webhookPassword": { + "description": "Basic Authentication Password", + "type": "string", + "default": "f5c0102d" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "maxReports": { - "type": "number" - }, - "useWebhook": { - "type": "boolean" - }, - "webhookURL": { - "type": "string" - }, - "basicAuthUsername": { - "type": "string" - }, - "basicAuthPassword": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "emailNotificationRequestSchema": { + "properties": { + "settings": { + "required": [ + "messageDelay", + "senderEmail", + "senderName", + "sendGridTemplateId", + "sendGridUnsubscribeGroupId", + "useWebhook", + "webhookURL", + "useWebhookBasicAuth", + "webhookUsername", + "webhookPassword", + "sendEmailReplies", + "senderEmailForReplies" + ], + "properties": { + "sendGridApiKey": { + "description": "Sendgrid API key", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + }, + "messageDelay": { + "description": "Time Interval after which notifications will be sent", + "type": "number", + "default": 120 + }, + "senderEmail": { + "description": "Sendgrid Sender Email for Notification", + "type": "string", + "default": "mymail@example.com" + }, + "senderName": { + "description": "Sendgrid Sender Name", + "type": "string", + "default": "John Doe" + }, + "sendGridTemplateId": { + "description": "Send Grid Template", + "type": "string", + "default": "f5c0102d" + }, + "sendGridUnsubscribeGroupId": { + "description": "Sendgrid Group Id obtained from their Dashboard", + "type": "string", + "default": "sendGridUnsubscribeGroupId" + }, + "useWebhook": { + "description": "Enable Webhook", + "type": "boolean", + "default": false + }, + "webhookURL": { + "description": "Webhook Url", + "type": "string", + "default": "https://example.com" + }, + "useWebhookBasicAuth": { + "description": "Enable Basic Authentication", + "type": "boolean", + "default": false + }, + "webhookUsername": { + "description": "Basic Authentication Username", + "type": "string", + "default": "username" + }, + "webhookPassword": { + "description": "Basic Authentication Password", + "type": "string", + "default": "f5c0102d" + } }, - "reportUserDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailNotificationSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "sendGridApiKey": { + "description": "Sendgrid API key", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + }, + "messageDelay": { + "description": "Time Interval after which notifications will be sent", + "type": "number", + "default": 120 + }, + "senderEmail": { + "description": "Sendgrid Sender Email for Notification", + "type": "string", + "default": "mymail@example.com" + }, + "senderName": { + "description": "Sendgrid Sender Name", + "type": "string", + "default": "John Doe" + }, + "sendGridTemplateId": { + "description": "Send Grid Template", + "type": "string", + "default": "f5c0102d" + }, + "sendGridUnsubscribeGroupId": { + "description": "Sendgrid Group Id obtained from their Dashboard", + "type": "string", + "default": "sendGridUnsubscribeGroupId" + }, + "useWebhook": { + "description": "Enable Webhook", + "type": "boolean", + "default": false + }, + "webhookURL": { + "description": "Webhook Url", + "type": "string", + "default": "https://example.com" + }, + "useWebhookBasicAuth": { + "description": "Enable Basic Authentication", + "type": "boolean", + "default": false + }, + "webhookUsername": { + "description": "Basic Authentication Username", + "type": "string", + "default": "username" + }, + "webhookPassword": { + "description": "Basic Authentication Password", + "type": "string", + "default": "f5c0102d" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "reportUserGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailRepliesDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "maxReports": { - "type": "number" - }, - "useWebhook": { - "type": "boolean" - }, - "webhookURL": { - "type": "string" - }, - "basicAuthUsername": { - "type": "string" - }, - "basicAuthPassword": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "reportUserRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailRepliesGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "maxReports", - "useWebhook" - ], - "properties": { - "maxReports": { - "description": "Maximum number of unique reports after which moderation actions needs to be taken", - "type": "number", - "default": 3 - }, - "useWebhook": { - "description": "Send reports to webhook and perform custom actions", - "type": "boolean", - "default": true - }, - "webhookURL": { - "description": "The webhook URL to be triggered", - "type": "string", - "default": "https://www.your-domain.com/take-action" - }, - "basicAuthUsername": { - "description": "Basic Auth username to use for calling your webhook URL", - "type": "string", - "default": "abcd" - }, - "basicAuthPassword": { - "description": "Basic Auth password to use for calling your webhook URL", - "type": "string", - "default": "1234" - } - }, - "type": "object" - } + "settings": { + "properties": { + "senderEmailForReplies": { + "type": "string" + }, + "sendEmailReplies": { + "type": "boolean" + }, + "appId": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "emailRepliesRequestSchema": { + "properties": { + "settings": { + "required": [ + "sendEmailReplies" + ], + "properties": { + "senderEmailForReplies": { + "description": "Email For Replies", + "type": "string", + "default": "mymail@example.com" + }, + "sendEmailReplies": { + "description": "Enable Email Replies", + "type": "boolean", + "default": false + } }, - "richMediaPreviewCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "emailRepliesSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "senderEmailForReplies": { + "type": "string" + }, + "sendEmailReplies": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "iframelyApiKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "extensionListSchema": { + "properties": { + "email-notification": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "human-moderation": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } }, - "richMediaPreviewDeleteSchema": { + "type": "object" + }, + "image-moderation": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "link-preview": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "message-translation": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "profanity-filter": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "push-notification": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "thumbnail-generation": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + }, + "broadcast": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "extensionSchema": { + "properties": { + "enabled": { + "properties": { + "extention_id1": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "extention_id2": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "disabled": { + "properties": { + "extention_id3": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } }, "type": "object" + } }, - "richMediaPreviewGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "giphyDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "success": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "iframelyApiKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "richMediaPreviewRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "giphyGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "iframelyApiKey" - ], - "properties": { - "iframelyApiKey": { - "description": "iFramely Api Key obtained from their Dashboard", - "type": "string", - "default": "abcd12345678" - } - }, - "type": "object" - } + "settings": { + "properties": { + "giphyApiKey": { + "type": "string" + }, + "appId": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } }, - "sentimentAnalysisDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "giphyRequestSchema": { + "properties": { + "settings": { + "required": [ + "giphyApiKey" + ], + "properties": { + "giphyApiKey": { + "description": "Giphy API Key obtained from their Dashboard", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "giphySchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "giphyApiKey": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "sentimentAnalysisGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "humanModerationCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "allUserMessages": { "type": "boolean" + }, + "allGroupMessages": { + "type": "boolean" + }, + "senders": { + "type": "array", + "items": { + "type": "string" + } + }, + "receiverGroups": { + "type": "array", + "items": { + "type": "string" + } + }, + "receiverUsers": { + "type": "array", + "items": { + "type": "string" + } + }, + "allMessages": { + "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "appId": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "sentimentAnalysisRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "humanModerationDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "dropMessage" - ], - "properties": { - "dropMessage": { - "description": "Should drop the message with Negative sentiments", - "type": "boolean" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "sentimentAnalysisSchema": { + "type": "object" + } + }, + "type": "object" + }, + "humanModerationGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "allUserMessages": { "type": "boolean" + }, + "allGroupMessages": { + "type": "boolean" + }, + "senders": { + "type": "array", + "items": { + "type": "string" + } + }, + "receiverGroups": { + "type": "array", + "items": { + "type": "string" + } + }, + "receiverUsers": { + "type": "array", + "items": { + "type": "string" + } + }, + "allMessages": { + "type": "boolean" + }, + "appId": { + "type": "string" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "settingsMapSchema": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/deleteSchema" - } + "type": "object" + } + }, + "type": "object" + }, + "humanModerationRequestSchema": { + "properties": { + "settings": { + "required": [ + "allUserMessages", + "allGroupMessages", + "senders", + "receiverGroups", + "receiverUsers", + "allMessages" + ], + "properties": { + "allUserMessages": { + "description": "Moderat all user messages", + "type": "boolean", + "default": false + }, + "allGroupMessages": { + "description": "Moderat all group messages", + "type": "boolean", + "default": false + }, + "senders": { + "description": "Moderate messages from UIDs", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "cometchat-uid-1", + "cometchat-uid-2" + ] + }, + "receiverGroups": { + "description": "Moderate messages to GUIDs", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "cometchat-guid-1" + ] + }, + "receiverUsers": { + "description": "Moderate messages to UIDs", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "cometchat-uid-3" + ] + }, + "allMessages": { + "description": "Moderate all messages", + "type": "boolean", + "default": false + } }, - "settingsUnMapSchema": { + "type": "object" + } + }, + "type": "object" + }, + "imageModerationDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "success": { - "type": "boolean" - }, - "message": { - "type": "string" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "smsNotificationDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "imageModerationGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + }, + "appId": { + "type": "integer" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "imageModerationRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage" + ], + "properties": { + "dropMessage": { + "description": "Should drop the message with XSS script", + "type": "boolean" + } }, - "smsNotificationGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "imageModerationSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "fromMobileNo": { - "type": "string" - }, - "messageDelay": { - "type": "number" - }, - "twilioAccountSid": { - "type": "string" - }, - "twilioAuthToken": { - "type": "string" - }, - "websiteURL": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "imageModerationUpdateRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage" + ], + "properties": { + "dropMessage": { + "description": "Should drop the message with XSS script", + "type": "boolean", + "default": true + } }, - "smsNotificationRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "intercomDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "fromMobileNo", - "messageDelay", - "twilioAccountSid", - "twilioAuthToken", - "websiteURL" - ], - "properties": { - "fromMobileNo": { - "description": "For sending SMS Notifications", - "type": "string", - "default": "+12345678" - }, - "messageDelay": { - "description": "Send an sms if a message has not been read before these many seconds", - "type": "number", - "default": 60 - }, - "twilioAccountSid": { - "description": "Found on your Twilio console", - "type": "string", - "default": "ACfe6cccc530a5151a8eff415###" - }, - "twilioAuthToken": { - "description": "Found on your Twilio console", - "type": "string", - "default": "6928f0cadd4e62d4311234563ef3###" - }, - "websiteURL": { - "description": "A website url", - "type": "string", - "default": "www.somewebsite.com" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "smsNotificationSchema": { + "type": "object" + } + }, + "type": "object" + }, + "intercomGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "appId": { + "type": "string" + }, + "customerSupportUid": { + "type": "string" + }, + "intercomAccessToken": { + "type": "string" + }, + "webhookURL": { + "type": "string" + } }, - "body": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "stickersGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "intercomRequestSchema": { + "properties": { + "settings": { + "required": [ + "intercomAccessToken", + "customerSupportUid" + ], + "properties": { + "intercomAccessToken": { + "description": "For connecting and exchanging messages between CometChat and Intercom", + "type": "string", + "default": "EgsDdxRZFUy4tPWDjwmyZvYk" + }, + "customerSupportUid": { + "description": "Customer support uid that you have selected", + "type": "string", + "default": "cometchat-uid-2" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "intercomSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "appId": { + "type": "string" + }, + "customerSupportUid": { + "type": "string" + }, + "intercomAccessToken": { + "type": "string" + }, + "webhookURL": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - }, - "defaultMasterStickersData": { - "type": "array", - "items": { - "properties": { - "enableFlag": { - "type": "boolean" - }, - "stickerName": { - "type": "string" - }, - "stickerOrder": { - "type": "number" - }, - "stickerSetId": { - "type": "string" - }, - "stickerSetOrder": { - "type": "number" - }, - "stickerSetName": { - "type": "string" - }, - "stickerUrl": { - "type": "string" - } - }, - "type": "object" - } - }, - "customStickersData": { - "type": "array", - "items": { - "properties": { - "appId": { - "type": "string" - }, - "enableFlag": { - "type": "boolean" - }, - "stickerName": { - "type": "string" - }, - "stickerOrder": { - "type": "number" - }, - "stickerOrderCount": { - "type": "number" - }, - "stickerSetId": { - "type": "string" - }, - "stickerSetOrder": { - "type": "number" - }, - "stickerSetName": { - "type": "string" - }, - "stickerUrl": { - "type": "string" - } - }, - "type": "object" - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "stickersRequestSchema": { - "required": [ - "dropMessage", - "customregexData", - "defaultRegexData", - "deleteCustomRegexData" - ], + "type": "object" + } + }, + "type": "object" + }, + "listTriggerSchema": { + "properties": { + "id": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "messageShortcutsDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "appId": { - "description": "App Id", - "type": "string", - "default": "appId_1234" - }, - "defaultMasterStickersData": { - "description": "Configure the default stickers", - "type": "array", - "items": { - "type": "object" - }, - "default": [ - { - "enableFlag": false, - "id": "1", - "stickerName": "US Phone numbers", - "stickerOrder": "", - "stickerSetId": "sticker_1234", - "stickerSetName": "good_Sticker", - "stickerSetOrder": 1, - "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png" - } - ] - }, - "customStickersData": { - "description": "Configure the custom stickers", - "type": "array", - "items": { - "type": "object" - }, - "default": [ - { - "appId": "appId1234", - "enableFlag": true, - "stickerName": "goodSticker", - "stickerOrder": 1, - "stickerSetId": "stickerSetId1234", - "stickerSetOrder": 1, - "stickerSetName": "stickerSetName", - "stickerUrl": "https://mysite.com/some_sticker.png", - "id": "" - } - ] - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "stickersResponseSchema": { + "type": "object" + } + }, + "type": "object" + }, + "messageShortcutsGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, + "settings": { + "properties": { + "shortcuts": { "type": "object" - } + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "messageShortcutsRequestSchema": { + "properties": { + "settings": { + "required": [ + "shortcuts" + ], + "properties": { + "shortcuts": { + "description": "Shortcuts and message mapping", + "type": "object", + "default": { + "!cu": "See you later.", + "!ty": "Hey! Thanks a lot! 😊", + "!hbd": "Happy Birthday! 🥳", + "!ssup": "What's up!?", + "!wc": "You're welcome!" + } + } }, - "stipopCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "messageShortcutsSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "stipopApiKey": { - "type": "string" - }, - "stipopAppId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, + "settings": { + "properties": { + "shortcuts": { "type": "object" - } + } + }, + "type": "object" + } }, "type": "object" + } }, - "stipopDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "metaSchema": { + "properties": { + "pagination": { + "properties": { + "total": { + "type": "integer" + }, + "count": { + "type": "integer" + }, + "per_page": { + "type": "integer" + }, + "current_page": { + "type": "integer" + }, + "total_pages": { + "type": "integer" + }, + "links": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profanityFilterCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + }, + "badwords": { + "type": "array", + "items": { + "type": "string" + } + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "stipopGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "profanityFilterDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "success": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profanityFilterGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + }, + "groupGUID": { + "type": "array", + "items": { + "type": "string" + } + }, + "appId": { + "type": "string" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "stipopApiKey": { - "type": "string" - }, - "stipopAppId": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profanityFilterRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage", + "badwords" + ], + "properties": { + "dropMessage": { + "description": "conatin the dropMessage", + "type": "boolean", + "default": false + }, + "badwords": { + "description": "remove the badwords", + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "xyz" + ] + } }, - "stipopRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "pushNotificationDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "stipopApiKey", - "stipopAppId" - ], - "properties": { - "stipopApiKey": { - "description": "Used as Authentication mechanism to connect with stipop", - "type": "string", - "default": "e24ce#2324b2jrbj3212" - }, - "stipopAppId": { - "description": "Determines a particular app in stipop", - "type": "string", - "default": "9221#njdwe112213131" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "teamMgmtGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "pushNotificationGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "id": { + "settings": { + "properties": { + "version": { + "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", + "type": "number", + "default": 2 + }, + "pushProvider": { + "description": "1: FCM | 2: APNs | 0: FCM+APNs", + "type": "number", + "default": 1 + }, + "fcmServerKey": { "type": "string" - }, - "name": { + }, + "notificationInPayload": { + "properties": { + "web": { + "description": "Include 'notification' key for Web", + "type": "boolean", + "default": true + }, + "android": { + "description": "Include 'notification' key for Android", + "type": "boolean", + "default": false + }, + "ionic_cordova": { + "description": "Include 'notification' key for Ionic", + "type": "boolean", + "default": true + }, + "react_native": { + "description": "Include 'notification' key for React native", + "type": "boolean", + "default": false + }, + "ios": { + "description": "Include 'notification' key for iOS", + "type": "boolean", + "default": true + } + }, + "type": "object" + }, + "useP8": { + "type": "boolean" + }, + "keyId": { "type": "string" - }, - "email": { + }, + "teamId": { "type": "string" - }, - "role": { + }, + "bundleId": { + "type": "string" + }, + "sendApnsProduction": { + "type": "boolean" + }, + "sendNewMessageNotification": { + "type": "boolean" + }, + "sendEditMessageNotification": { + "type": "boolean" + }, + "sendDeleteMessageNotification": { + "type": "boolean" + }, + "sendThreadedMessageNotification": { + "type": "boolean" + }, + "sendIncomingCallNotification": { + "type": "boolean" + }, + "sendMissedCallNotification": { + "type": "boolean" + }, + "sendMemberJoinedNotification": { + "type": "boolean" + }, + "sendMemberLeftNotification": { + "type": "boolean" + }, + "sendMemberKickedNotification": { + "type": "boolean" + }, + "sendMemberBannedNotification": { + "type": "boolean" + }, + "sendMemberUnbannedNotification": { + "type": "boolean" + }, + "sendMemberAddedNotification": { + "type": "boolean" + }, + "sendMemberScopeChangedNotification": { + "type": "boolean" + }, + "appId": { "type": "string" + } }, - "createdAt": { - "type": "integer" - } + "type": "object" + } }, "type": "object" + } }, - "teamMgmtSchema": { + "type": "object" + } + }, + "type": "object" + }, + "pushNotificationRequestSchema": { + "properties": { + "settings": { + "required": [ + "version", + "pushProvider" + ], + "properties": { + "version": { + "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", + "type": "integer", + "default": 2 + }, + "pushProvider": { + "description": "1: FCM | 2: APNs | 0: FCM+APNs", + "type": "integer", + "default": 1 + }, + "fcmCredentials": { + "description": "These are obtained from the Service Account JSON file you download from Firebase console", "properties": { - "collaboratorsToRemove": { - "type": "object" - }, - "admins": { - "properties": { - "admin1@cometchat.com": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - }, - "admin2@cometchat.com": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "developers": { + "project_id": { + "type": "string" + }, + "client_email": { + "type": "string" + }, + "private_key": { + "type": "string" + }, + "private_key_id": { + "type": "string" + } + }, + "type": "object" + }, + "notificationInPayload": { + "properties": { + "web": { + "description": "Include 'notification' key for Web", + "type": "boolean", + "default": true + }, + "android": { + "description": "Include 'notification' key for Android", + "type": "boolean", + "default": true + }, + "ionic_cordova": { + "description": "Include 'notification' key for Ionic", + "type": "boolean", + "default": true + }, + "react_native": { + "description": "Include 'notification' key for React native", + "type": "boolean", + "default": false + }, + "ios": { + "description": "Include 'notification' key for iOS", + "type": "boolean", + "default": true + }, + "flutter": { + "description": "Include 'notification' key for Flutter", + "type": "boolean", + "default": true + } + }, + "type": "object" + }, + "useP8": { + "description": "Required for APNs only. Use .p8 as it never expires", + "type": "boolean", + "default": true + }, + "keyId": { + "description": "Required for APNs only", + "type": "string" + }, + "teamId": { + "description": "Required for APNs only", + "type": "string" + }, + "bundleId": { + "description": "Required for APNs only", + "type": "string" + }, + "sendApnsProduction": { + "description": "Required for APNs only. 'true' for apps available on the Appstore", + "type": "boolean", + "default": true + }, + "sendNewMessageNotification": { + "type": "boolean", + "default": true + }, + "sendEditMessageNotification": { + "type": "boolean", + "default": false + }, + "sendDeleteMessageNotification": { + "type": "boolean", + "default": false + }, + "sendThreadedMessageNotification": { + "type": "boolean", + "default": true + }, + "sendIncomingCallNotification": { + "type": "boolean", + "default": true + }, + "sendMissedCallNotification": { + "type": "boolean", + "default": true + }, + "sendMemberJoinedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberLeftNotification": { + "type": "boolean", + "default": true + }, + "sendMemberKickedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberBannedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberUnbannedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberAddedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberScopeChangedNotification": { + "type": "boolean", + "default": false + }, + "appId": { + "type": "string" + }, + "cometchatMessagePayloadOptions": { + "description": "Optional property", + "properties": { + "skipSenderMetadata": { + "description": "Excludes sender's metadata from the message object in the push payload", + "type": "boolean", + "default": false + }, + "skipReceiverMetadata": { + "description": "Excludes receiver's metadata from the message object in the push payload", + "type": "boolean", + "default": false + }, + "skipMessageMetadata": { + "description": "Excludes the message metadata from the message object in the push payload", + "type": "boolean", + "default": false + }, + "trimMessageText": { + "description": "Trims the message text from the message object in the push payload to ensure the payload size does not exceed 4KB; exceeding this limit may prevent notifications from being delivered.", + "type": "boolean", + "default": true + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "pushNotificationSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "version": { + "description": "2: Token-based (Recommended) | 0: Topic-based + Token-based | 1: Topic-based (Legacy)", + "type": "number", + "default": 2 + }, + "pushProvider": { + "description": "1: FCM | 2: APNs | 0: FCM+APNs", + "type": "number", + "default": 1 + }, + "fcmServerKey": { + "type": "string" + }, + "notificationInPayload": { "properties": { - "dev1@cometchat.com": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } + "web": { + "description": "Include 'notification' key for Web", + "type": "boolean", + "default": true + }, + "android": { + "description": "Include 'notification' key for Android", + "type": "boolean", + "default": false + }, + "ionic_cordova": { + "description": "Include 'notification' key for Ionic", + "type": "boolean", + "default": true + }, + "react_native": { + "description": "Include 'notification' key for React native", + "type": "boolean", + "default": false + }, + "ios": { + "description": "Include 'notification' key for iOS", + "type": "boolean", + "default": true + } }, "type": "object" + }, + "useP8": { + "description": "Required for APNs only. Use .p8; as it never expires", + "type": "boolean", + "default": true + }, + "keyId": { + "description": "Required for APNs only.", + "type": "string", + "default": "" + }, + "teamId": { + "description": "Required for APNs only.", + "type": "string", + "default": "" + }, + "bundleId": { + "description": "Required for APNs only.", + "type": "string", + "default": "" + }, + "sendApnsProduction": { + "description": "Required for APNs only. 'true' for apps available on the Appstore", + "type": "boolean", + "default": false + }, + "sendNewMessageNotification": { + "type": "boolean", + "default": true + }, + "sendEditMessageNotification": { + "type": "boolean", + "default": false + }, + "sendDeleteMessageNotification": { + "type": "boolean", + "default": false + }, + "sendThreadedMessageNotification": { + "type": "boolean", + "default": true + }, + "sendIncomingCallNotification": { + "type": "boolean", + "default": true + }, + "sendMissedCallNotification": { + "type": "boolean", + "default": true + }, + "sendMemberJoinedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberLeftNotification": { + "type": "boolean", + "default": true + }, + "sendMemberKickedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberBannedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberUnbannedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberAddedNotification": { + "type": "boolean", + "default": true + }, + "sendMemberScopeChangedNotification": { + "type": "boolean", + "default": false + }, + "appId": { + "type": "string" + } }, - "moderators": { - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "tenorCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportMessageCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { + "settings": { + "properties": { + "maxReports": { "type": "number" + }, + "useWebhook": { + "type": "boolean" + }, + "webhookURL": { + "type": "string" + }, + "basicAuthUsername": { + "type": "string" + }, + "basicAuthPassword": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "tenorApiKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "tenorDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportMessageDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "success": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "tenorGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportMessageGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { + "settings": { + "properties": { + "maxReports": { "type": "number" + }, + "useWebhook": { + "type": "boolean" + }, + "webhookURL": { + "type": "string" + }, + "basicAuthUsername": { + "type": "string" + }, + "basicAuthPassword": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "tenorApiKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "reportMessageRequestSchema": { + "properties": { + "settings": { + "required": [ + "maxReports", + "useWebhook" + ], + "properties": { + "maxReports": { + "description": "Maximum number of unique reports after which moderation actions needs to be taken", + "type": "number", + "default": 3 + }, + "useWebhook": { + "description": "Send reports to webhook and perform custom actions", + "type": "boolean", + "default": true + }, + "webhookURL": { + "description": "The webhook URL to be triggered", + "type": "string", + "default": "https://www.your-domain.com/take-action" + }, + "basicAuthUsername": { + "description": "Basic Auth messagename to use for calling your webhook URL", + "type": "string", + "default": "abcd" + }, + "basicAuthPassword": { + "description": "Basic Auth password to use for calling your webhook URL", + "type": "string", + "default": "1234" + } }, - "tenorRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportUserCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "tenorApiKey" - ], - "properties": { - "tenorApiKey": { - "description": "Tenor Api Key obtained from their Dashboard", - "type": "string", - "default": "abcd12345678" - } - }, - "type": "object" - } + "settings": { + "properties": { + "maxReports": { + "type": "number" + }, + "useWebhook": { + "type": "boolean" + }, + "webhookURL": { + "type": "string" + }, + "basicAuthUsername": { + "type": "string" + }, + "basicAuthPassword": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } }, - "tinyUrlCreateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportUserDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "success": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "tinyUrlAPIToken": { - "type": "string" - }, - "tinyUrlDomain": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "tinyUrlDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "reportUserGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "maxReports": { + "type": "number" + }, + "useWebhook": { "type": "boolean" + }, + "webhookURL": { + "type": "string" + }, + "basicAuthUsername": { + "type": "string" + }, + "basicAuthPassword": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "responseTime": { - "type": "number" + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "reportUserRequestSchema": { + "properties": { + "settings": { + "required": [ + "maxReports", + "useWebhook" + ], + "properties": { + "maxReports": { + "description": "Maximum number of unique reports after which moderation actions needs to be taken", + "type": "number", + "default": 3 + }, + "useWebhook": { + "description": "Send reports to webhook and perform custom actions", + "type": "boolean", + "default": true + }, + "webhookURL": { + "description": "The webhook URL to be triggered", + "type": "string", + "default": "https://www.your-domain.com/take-action" + }, + "basicAuthUsername": { + "description": "Basic Auth username to use for calling your webhook URL", + "type": "string", + "default": "abcd" + }, + "basicAuthPassword": { + "description": "Basic Auth password to use for calling your webhook URL", + "type": "string", + "default": "1234" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "richMediaPreviewCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "iframelyApiKey": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "richMediaPreviewDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "tinyUrlGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "richMediaPreviewGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "iframelyApiKey": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "tinyUrlAPIToken": { - "type": "string" - }, - "tinyUrlDomain": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "richMediaPreviewRequestSchema": { + "properties": { + "settings": { + "required": [ + "iframelyApiKey" + ], + "properties": { + "iframelyApiKey": { + "description": "iFramely Api Key obtained from their Dashboard", + "type": "string", + "default": "abcd12345678" + } }, - "tinyUrlRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "sentimentAnalysisDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "tinyUrlAPIToken", - "tinyUrlDomain" - ], - "properties": { - "tinyUrlAPIToken": { - "description": "Used to provide authentication mechanism to access tiny-url", - "type": "string", - "default": "1kn2kenkdnwnrn2in1n1" - }, - "tinyUrlDomain": { - "description": "Domain if you have chosen paid plan otherwise default", - "type": "string", - "default": "tiny.one" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "triggerSchema": { + "type": "object" + } + }, + "type": "object" + }, + "sentimentAnalysisGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "success": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + }, + "appId": { + "type": "integer" + } }, - "message": { - "type": "string" - } + "type": "object" + } }, "type": "object" + } }, - "videoBroadcastingDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "sentimentAnalysisRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage" + ], + "properties": { + "dropMessage": { + "description": "Should drop the message with Negative sentiments", + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sentimentAnalysisSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "dropMessage": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "settingsMapSchema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/deleteSchema" + } + }, + "settingsUnMapSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "smsNotificationDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "success": { + "type": "boolean" + } }, - "videoBroadcastingGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "smsNotificationGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { + "settings": { + "properties": { + "fromMobileNo": { + "type": "string" + }, + "messageDelay": { "type": "number" + }, + "twilioAccountSid": { + "type": "string" + }, + "twilioAuthToken": { + "type": "string" + }, + "websiteURL": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "apiVideoKey": { - "type": "string" - }, - "appId": { - "type": "string" - }, - "recordVideo": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "smsNotificationRequestSchema": { + "properties": { + "settings": { + "required": [ + "fromMobileNo", + "messageDelay", + "twilioAccountSid", + "twilioAuthToken", + "websiteURL" + ], + "properties": { + "fromMobileNo": { + "description": "For sending SMS Notifications", + "type": "string", + "default": "+12345678" + }, + "messageDelay": { + "description": "Send an sms if a message has not been read before these many seconds", + "type": "number", + "default": 60 + }, + "twilioAccountSid": { + "description": "Found on your Twilio console", + "type": "string", + "default": "ACfe6cccc530a5151a8eff415###" + }, + "twilioAuthToken": { + "description": "Found on your Twilio console", + "type": "string", + "default": "6928f0cadd4e62d4311234563ef3###" + }, + "websiteURL": { + "description": "A website url", + "type": "string", + "default": "www.somewebsite.com" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "smsNotificationSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "success": { + "type": "boolean" + } }, - "videoBroadcastingRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "stickersGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "apiVideoKey", - "recordVideo" - ], - "properties": { - "apiVideoKey": { - "description": "API video production API Key", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + "settings": { + "properties": { + "dropMessage": { + "type": "boolean" + }, + "defaultMasterStickersData": { + "type": "array", + "items": { + "properties": { + "enableFlag": { + "type": "boolean" + }, + "stickerName": { + "type": "string" + }, + "stickerOrder": { + "type": "number" }, - "recordVideo": { - "description": "Enable to record the video", - "type": "boolean", - "default": false + "stickerSetId": { + "type": "string" + }, + "stickerSetOrder": { + "type": "number" + }, + "stickerSetName": { + "type": "string" + }, + "stickerUrl": { + "type": "string" } - }, - "type": "object" - } + }, + "type": "object" + } + }, + "customStickersData": { + "type": "array", + "items": { + "properties": { + "appId": { + "type": "string" + }, + "enableFlag": { + "type": "boolean" + }, + "stickerName": { + "type": "string" + }, + "stickerOrder": { + "type": "number" + }, + "stickerOrderCount": { + "type": "number" + }, + "stickerSetId": { + "type": "string" + }, + "stickerSetOrder": { + "type": "number" + }, + "stickerSetName": { + "type": "string" + }, + "stickerUrl": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "stickersRequestSchema": { + "required": [ + "dropMessage", + "customregexData", + "defaultRegexData", + "deleteCustomRegexData" + ], + "properties": { + "appId": { + "description": "App Id", + "type": "string", + "default": "appId_1234" + }, + "defaultMasterStickersData": { + "description": "Configure the default stickers", + "type": "array", + "items": { + "type": "object" + }, + "default": [ + { + "enableFlag": false, + "id": "1", + "stickerName": "US Phone numbers", + "stickerOrder": "", + "stickerSetId": "sticker_1234", + "stickerSetName": "good_Sticker", + "stickerSetOrder": 1, + "stickerUrl": "https://data-us.cometchat.io/stickers/littledyno/litt_14.png" + } + ] + }, + "customStickersData": { + "description": "Configure the custom stickers", + "type": "array", + "items": { + "type": "object" }, - "videoBroadcastingSchema": { + "default": [ + { + "appId": "appId1234", + "enableFlag": true, + "stickerName": "goodSticker", + "stickerOrder": 1, + "stickerSetId": "stickerSetId1234", + "stickerSetOrder": 1, + "stickerSetName": "stickerSetName", + "stickerUrl": "https://mysite.com/some_sticker.png", + "id": "" + } + ] + } + }, + "type": "object" + }, + "stickersResponseSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "apiVideoKey": { - "type": "string" - }, - "recordVideo": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "virusMalwareScannerDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "stipopCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "stipopApiKey": { + "type": "string" + }, + "stipopAppId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "virusMalwareScannerGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "stipopDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "success": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "stipopGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "stipopApiKey": { + "type": "string" + }, + "stipopAppId": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "scaniiApiKey": { - "type": "string" - }, - "scaniiSecretKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "stipopRequestSchema": { + "properties": { + "settings": { + "required": [ + "stipopApiKey", + "stipopAppId" + ], + "properties": { + "stipopApiKey": { + "description": "Used as Authentication mechanism to connect with stipop", + "type": "string", + "default": "e24ce#2324b2jrbj3212" + }, + "stipopAppId": { + "description": "Determines a particular app in stipop", + "type": "string", + "default": "9221#njdwe112213131" + } }, - "virusMalwareScannerRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "teamMgmtGetSchema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + }, + "type": "object" + }, + "teamMgmtSchema": { + "properties": { + "collaboratorsToRemove": { + "type": "object" + }, + "admins": { + "properties": { + "admin1@cometchat.com": { "properties": { - "settings": { - "required": [ - "scaniiApiKey", - "scaniiSecretKey" - ], - "properties": { - "scaniiApiKey": { - "description": " Scanii API Key obtained from their Dashboard", - "type": "string", - "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" - }, - "scaniiSecretKey": { - "description": " Scanii Secret Key obtained from their Dashboard", - "type": "string", - "default": "f5c0102d" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } + }, + "type": "object" + }, + "admin2@cometchat.com": { + "properties": { + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "virusMalwareScannerSchema": { + "type": "object" + }, + "developers": { + "properties": { + "dev1@cometchat.com": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "scaniiApiKey": { - "type": "string" - }, - "scaniiSecretKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "voiceTranscriptionCreateSchema": { + "type": "object" + }, + "moderators": { + "type": "object" + } + }, + "type": "object" + }, + "tenorCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "tenorApiKey": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "revaiAPIKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" + } }, - "voiceTranscriptionDeleteSchema": { + "type": "object" + } + }, + "type": "object" + }, + "tenorDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "success": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "voiceTranscriptionGetSchema": { + "type": "object" + } + }, + "type": "object" + }, + "tenorGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { - "type": "boolean" - }, - "responseTime": { - "type": "number" + "settings": { + "properties": { + "tenorApiKey": { + "type": "string" + }, + "appId": { + "type": "string" + } }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "revaiAPIKey": { - "type": "string" - }, - "appId": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "tenorRequestSchema": { + "properties": { + "settings": { + "required": [ + "tenorApiKey" + ], + "properties": { + "tenorApiKey": { + "description": "Tenor Api Key obtained from their Dashboard", + "type": "string", + "default": "abcd12345678" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "tinyUrlCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "tinyUrlAPIToken": { + "type": "string" + }, + "tinyUrlDomain": { + "type": "string" + } + }, + "type": "object" + } }, "type": "object" + } }, - "voiceTranscriptionRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "tinyUrlDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "revaiAPIKey" - ], - "properties": { - "revaiAPIKey": { - "description": "Used as authentication mechanism while connecting to Rev Ai", - "type": "string", - "default": "dwijdiwdwi####" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "webhookSchema": { + "type": "object" + } + }, + "type": "object" + }, + "tinyUrlGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "id": { + "settings": { + "properties": { + "tinyUrlAPIToken": { "type": "string" - }, - "name": { + }, + "tinyUrlDomain": { "type": "string" - }, - "webhookURL": { + }, + "appId": { "type": "string" + } }, - "enabled": { - "type": "boolean" - } + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "tinyUrlRequestSchema": { + "properties": { + "settings": { + "required": [ + "tinyUrlAPIToken", + "tinyUrlDomain" + ], + "properties": { + "tinyUrlAPIToken": { + "description": "Used to provide authentication mechanism to access tiny-url", + "type": "string", + "default": "1kn2kenkdnwnrn2in1n1" + }, + "tinyUrlDomain": { + "description": "Domain if you have chosen paid plan otherwise default", + "type": "string", + "default": "tiny.one" + } }, - "xssRequestSchema": { + "type": "object" + } + }, + "type": "object" + }, + "triggerSchema": { + "properties": { + "success": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "videoBroadcastingDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "dropMessage" - ], - "properties": { - "dropMessage": { - "description": "Should drop the message with XSS script", - "type": "boolean" - } - }, - "type": "object" - } + "success": { + "type": "boolean" + } }, "type": "object" + } }, - "xssRequestUpdateSchema": { + "type": "object" + } + }, + "type": "object" + }, + "videoBroadcastingGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "settings": { - "required": [ - "dropMessage" - ], - "properties": { - "dropMessage": { - "description": "Should drop the message with XSS script", - "type": "boolean", - "default": true - } - }, - "type": "object" - } + "settings": { + "properties": { + "apiVideoKey": { + "type": "string" + }, + "appId": { + "type": "string" + }, + "recordVideo": { + "type": "boolean" + } + }, + "type": "object" + } }, "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "videoBroadcastingRequestSchema": { + "properties": { + "settings": { + "required": [ + "apiVideoKey", + "recordVideo" + ], + "properties": { + "apiVideoKey": { + "description": "API video production API Key", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + }, + "recordVideo": { + "description": "Enable to record the video", + "type": "boolean", + "default": false + } }, - "xssSchema": { + "type": "object" + } + }, + "type": "object" + }, + "videoBroadcastingSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { "properties": { - "statusCode": { - "type": "integer" - }, - "success": { + "settings": { + "properties": { + "apiVideoKey": { + "type": "string" + }, + "recordVideo": { "type": "boolean" + } }, - "responseTime": { - "type": "number" - }, - "body": { - "properties": { - "data": { - "properties": { - "settings": { - "properties": { - "dropMessage": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } + "type": "object" + } }, "type": "object" - } - }, - "parameters": { - "perPage": { - "name": "perPage", - "in": "query", - "description": "Number of apps to be fetched in a request. The default value is 25 and the maximum value is 1000.", - "schema": { - "type": "string" - } + } }, - "searchKey": { - "name": "searchKey", - "in": "query", - "description": "Searches for given keyword in apps list (either App name or App ID)", - "schema": { - "type": "string" - } - }, - "builderId": { - "name": "builderId", - "in": "path", - "description": "Builder ID", - "required": true, - "schema": { - "type": "string" - } + "type": "object" + } + }, + "type": "object" + }, + "virusMalwareScannerDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "success": { + "type": "boolean" + } + }, + "type": "object" + } }, - "appIdVCB": { - "name": "appId", - "in": "path", - "description": "App ID in which the builder has to be added.", - "required": true, - "schema": { - "type": "string" - } + "type": "object" + } + }, + "type": "object" + }, + "virusMalwareScannerGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "scaniiApiKey": { + "type": "string" + }, + "scaniiSecretKey": { + "type": "string" + }, + "appId": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } }, - "perPage--extensions": { - "name": "perPage", - "in": "query", - "description": "Number of extensions to be fetched in a request. The default value is 25 and the maximum value is 1000.", - "schema": { - "type": "string", - "default": "25" - } + "type": "object" + } + }, + "type": "object" + }, + "virusMalwareScannerRequestSchema": { + "properties": { + "settings": { + "required": [ + "scaniiApiKey", + "scaniiSecretKey" + ], + "properties": { + "scaniiApiKey": { + "description": " Scanii API Key obtained from their Dashboard", + "type": "string", + "default": "1q6Re9CYAAfzLZyB8F4eMNX0Pslyv222" + }, + "scaniiSecretKey": { + "description": " Scanii Secret Key obtained from their Dashboard", + "type": "string", + "default": "f5c0102d" + } }, - "uid": { - "name": "uid", - "in": "path", - "description": "An UID of a user.", - "required": true, - "schema": { - "type": "string" + "type": "object" + } + }, + "type": "object" + }, + "virusMalwareScannerSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "scaniiApiKey": { + "type": "string" + }, + "scaniiSecretKey": { + "type": "string" + } + }, + "type": "object" + } }, - "examples": { - "string": { - "summary": "UID", - "value": "cometchat-uid-1" - } - } + "type": "object" + } }, - "X-Webhook-Version": { - "name": "X-Webhook-Version", - "in": "header", - "description": "The \"X-Webhook-Version\" header is an optional integer property.When this header is omitted from the request, the system defaults to the legacy webhook, ensuring backward compatibility and seamless operation.Conversely, setting the value of this header to \"2\" indicates the preference for the new webhook implementation.", - "required": false, - "schema": { - "type": "integer" + "type": "object" + } + }, + "type": "object" + }, + "voiceTranscriptionCreateSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "revaiAPIKey": { + "type": "string" + } + }, + "type": "object" + } }, - "examples": { - "string": { - "summary": "X-Webhook-Version", - "value": "2" - } - } + "type": "object" + } }, - "guid": { - "name": "guid", - "in": "path", - "description": "A GUID of a group.", - "required": true, - "schema": { - "type": "string" + "type": "object" + } + }, + "type": "object" + }, + "voiceTranscriptionDeleteSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "success": { + "type": "boolean" + } }, - "examples": { - "string": { - "summary": "GUID", - "value": "cometchat-guid-1" - } - } - }, - "requiredonBehalfOf": { - "name": "requiredonBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "schema": { - "type": "string" - } - }, - "onBehalfOf": { - "name": "onBehalfOf", - "in": "header", - "description": "UID of the user on whose behalf the action is performed.", - "schema": { - "type": "string" - } - }, - "appId": { - "name": "appId", - "in": "path", - "description": "AppID in which the extension has to be enabled/disabled", - "required": true, - "schema": { - "type": "string" - } - }, - "messageId": { - "name": "messageId", - "in": "path", - "description": "messageId for the moderation service", - "required": true, - "schema": { - "type": "string" - } - }, - "key": { - "name": "key", - "in": "header", - "description": "Authorization Key", - "required": true, - "schema": { - "type": "string" - } - }, - "secret": { - "name": "secret", - "in": "header", - "description": "Authorization Secret", - "required": true, - "schema": { - "type": "string" - } - }, - "ruleId": { - "name": "ruleId", - "in": "path", - "description": "Rule ID", - "required": true, - "schema": { - "type": "string" - } - }, - "keywordId": { - "name": "keywordId", - "in": "path", - "description": "Keyword ID", - "required": true, - "schema": { - "type": "string" - } + "type": "object" + } }, - "webhookId": { - "name": "webhookId", - "in": "path", - "description": "Id of the webhook", - "required": true, - "schema": { - "type": "string" - } - } + "type": "object" + } }, - "examples": { - "pushNotificationRequestExample": { - "summary": "PN Request", - "value": { - "settings": { - "version": 2, - "pushProvider": 1, - "fcmCredentials": { - "project_id": "project_id", - "client_email": "client_email", - "private_key": "private_key", - "private_key_id": "private_key_id" - }, - "notificationInPayload": { - "web": true, - "android": true, - "ionic_cordova": true, - "react_native": false, - "ios": true, - "flutter": true - }, - "useP8": true, - "sendApnsProduction": true, - "sendNewMessageNotification": true, - "sendEditMessageNotification": false, - "sendDeleteMessageNotification": false, - "sendThreadedMessageNotification": true, - "sendIncomingCallNotification": true, - "sendMissedCallNotification": true, - "sendMemberJoinedNotification": true, - "sendMemberLeftNotification": true, - "sendMemberKickedNotification": true, - "sendMemberBannedNotification": true, - "sendMemberUnbannedNotification": true, - "sendMemberAddedNotification": true, - "sendMemberScopeChangedNotification": false, - "keyId": "key_id", - "teamId": "team_id", - "bundleId": "bundle_id", - "appId": "abcd", - "cometchatMessagePayloadOptions": { - "skipSenderMetadata": false, - "skipReceiverMetadata": false, - "skipMessageMetadata": false, - "trimMessageText": true - } - } - } + "type": "object" + }, + "voiceTranscriptionGetSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "revaiAPIKey": { + "type": "string" + }, + "appId": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } }, - "pushNotificationResponseExample": { - "summary": "PN Response", - "value": { - "settings": { - "version": 2, - "pushProvider": 1, - "fcmCredentials": { - "project_id": "project_id", - "client_email": "client_email", - "private_key": "private_key", - "private_key_id": "private_key_id" - }, - "notificationInPayload": { - "web": true, - "android": true, - "ionic_cordova": true, - "react_native": false, - "ios": true, - "flutter": true - }, - "useP8": true, - "sendApnsProduction": true, - "sendNewMessageNotification": true, - "sendEditMessageNotification": false, - "sendDeleteMessageNotification": false, - "sendThreadedMessageNotification": true, - "sendIncomingCallNotification": true, - "sendMissedCallNotification": true, - "sendMemberJoinedNotification": true, - "sendMemberLeftNotification": true, - "sendMemberKickedNotification": true, - "sendMemberBannedNotification": true, - "sendMemberUnbannedNotification": true, - "sendMemberAddedNotification": true, - "sendMemberScopeChangedNotification": false, - "keyId": "key_id", - "teamId": "team_id", - "bundleId": "bundle_id", - "appId": "abcd", - "cometchatMessagePayloadOptions": { - "skipSenderMetadata": false, - "skipReceiverMetadata": false, - "skipMessageMetadata": false, - "trimMessageText": true - } - } - } - } - }, - "securitySchemes": { - "basicAuth": { - "type": "http", - "scheme": "basic" - } - } - }, - "tags": [ - { - "name": "App", - "description": "The Rest collection for app." - }, - { - "name": "Extensions", - "description": "The REST collections for extensions." - }, - { - "name": "Extensions", - "description": "The REST collections for Chat widgets." + "type": "object" + } }, - { - "name": "Extensions", - "description": "The REST collections for Giphy extension." - }, - { - "name": "Extensions", - "description": "The REST collections for XSS Filter extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Image Moderation extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Report user extension." + "type": "object" + }, + "voiceTranscriptionRequestSchema": { + "properties": { + "settings": { + "required": [ + "revaiAPIKey" + ], + "properties": { + "revaiAPIKey": { + "description": "Used as authentication mechanism while connecting to Rev Ai", + "type": "string", + "default": "dwijdiwdwi####" + } + }, + "type": "object" + } }, - { - "name": "Extensions", - "description": "The REST collections for Report message extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Sentiment analysis extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Voice transcription extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Stipop extension." - }, - { - "name": "Extensions", - "description": "The REST collections for TinyURL extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Intercom extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Bitly extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Rich media preview extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Virus Malware Scanner extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Video Broadcasting extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Tenor gifs extension." - }, - { - "name": "Extensions", - "description": "The REST collections for End-to-end encryption extension." - }, - { - "name": "Extensions", - "description": "The REST collections for In-flight message moderation extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Stickers extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Data masking extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Email replies extension." - }, - { - "name": "Extensions", - "description": "The REST collections for SMS Notification extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Push notification extension." - }, - { - "name": "Extensions", - "description": "The REST collections for Chatwoot extension." + "type": "object" + }, + "webhookSchema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "webhookURL": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } }, - { - "name": "Extensions", - "description": "The REST collections for Message shortcuts extension." + "type": "object" + }, + "xssRequestSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage" + ], + "properties": { + "dropMessage": { + "description": "Should drop the message with XSS script", + "type": "boolean" + } + }, + "type": "object" + } }, - { - "name": "Extensions", - "description": "The REST collections for Email Notification extension." + "type": "object" + }, + "xssRequestUpdateSchema": { + "properties": { + "settings": { + "required": [ + "dropMessage" + ], + "properties": { + "dropMessage": { + "description": "Should drop the message with XSS script", + "type": "boolean", + "default": true + } + }, + "type": "object" + } }, - { - "name": "Team Management", - "description": "The REST collections for team management." + "type": "object" + }, + "xssSchema": { + "properties": { + "statusCode": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "responseTime": { + "type": "number" + }, + "body": { + "properties": { + "data": { + "properties": { + "settings": { + "properties": { + "dropMessage": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } }, - { - "name": "Settings", - "description": "The REST collections for Settings." + "type": "object" + } + }, + "parameters": { + "perPage": { + "name": "perPage", + "in": "query", + "description": "Number of apps to be fetched in a request. The default value is 25 and the maximum value is 1000.", + "schema": { + "type": "string" + } + }, + "searchKey": { + "name": "searchKey", + "in": "query", + "description": "Searches for given keyword in apps list (either App name or App ID)", + "schema": { + "type": "string" + } + }, + "builderId": { + "name": "builderId", + "in": "path", + "description": "Builder ID", + "required": true, + "schema": { + "type": "string" + } + }, + "appIdVCB": { + "name": "appId", + "in": "path", + "description": "App ID in which the builder has to be added.", + "required": true, + "schema": { + "type": "string" + } + }, + "perPage--extensions": { + "name": "perPage", + "in": "query", + "description": "Number of extensions to be fetched in a request. The default value is 25 and the maximum value is 1000.", + "schema": { + "type": "string", + "default": "25" + } + }, + "uid": { + "name": "uid", + "in": "path", + "description": "An UID of a user.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Extensions", - "description": "The REST collections for Profanity-filter extension." + "examples": { + "string": { + "summary": "UID", + "value": "cometchat-uid-1" + } + } + }, + "X-Webhook-Version": { + "name": "X-Webhook-Version", + "in": "header", + "description": "The \"X-Webhook-Version\" header is an optional integer property.When this header is omitted from the request, the system defaults to the legacy webhook, ensuring backward compatibility and seamless operation.Conversely, setting the value of this header to \"2\" indicates the preference for the new webhook implementation.", + "required": false, + "schema": { + "type": "integer" }, - { - "name": "Webhooks", - "description": "The REST collections for Webhooks." + "examples": { + "string": { + "summary": "X-Webhook-Version", + "value": "2" + } + } + }, + "guid": { + "name": "guid", + "in": "path", + "description": "A GUID of a group.", + "required": true, + "schema": { + "type": "string" }, - { - "name": "Moderation", - "description": "The REST collections for Moderations." + "examples": { + "string": { + "summary": "GUID", + "value": "cometchat-guid-1" + } + } + }, + "requiredonBehalfOf": { + "name": "requiredonBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + }, + "onBehalfOf": { + "name": "onBehalfOf", + "in": "header", + "description": "UID of the user on whose behalf the action is performed.", + "schema": { + "type": "string" + } + }, + "appId": { + "name": "appId", + "in": "path", + "description": "AppID in which the extension has to be enabled/disabled", + "required": true, + "schema": { + "type": "string" + } + }, + "messageId": { + "name": "messageId", + "in": "path", + "description": "messageId for the moderation service", + "required": true, + "schema": { + "type": "string" } - ], - "x-readme": { - "explorer-enabled": true, - "proxy-enabled": true + }, + "key": { + "name": "key", + "in": "header", + "description": "Authorization Key", + "required": true, + "schema": { + "type": "string" + } + }, + "secret": { + "name": "secret", + "in": "header", + "description": "Authorization Secret", + "required": true, + "schema": { + "type": "string" + } + }, + "ruleId": { + "name": "ruleId", + "in": "path", + "description": "Rule ID", + "required": true, + "schema": { + "type": "string" + } + }, + "keywordId": { + "name": "keywordId", + "in": "path", + "description": "Keyword ID", + "required": true, + "schema": { + "type": "string" + } + }, + "webhookId": { + "name": "webhookId", + "in": "path", + "description": "Id of the webhook", + "required": true, + "schema": { + "type": "string" + } + } + }, + "examples": { + "pushNotificationRequestExample": { + "summary": "PN Request", + "value": { + "settings": { + "version": 2, + "pushProvider": 1, + "fcmCredentials": { + "project_id": "project_id", + "client_email": "client_email", + "private_key": "private_key", + "private_key_id": "private_key_id" + }, + "notificationInPayload": { + "web": true, + "android": true, + "ionic_cordova": true, + "react_native": false, + "ios": true, + "flutter": true + }, + "useP8": true, + "sendApnsProduction": true, + "sendNewMessageNotification": true, + "sendEditMessageNotification": false, + "sendDeleteMessageNotification": false, + "sendThreadedMessageNotification": true, + "sendIncomingCallNotification": true, + "sendMissedCallNotification": true, + "sendMemberJoinedNotification": true, + "sendMemberLeftNotification": true, + "sendMemberKickedNotification": true, + "sendMemberBannedNotification": true, + "sendMemberUnbannedNotification": true, + "sendMemberAddedNotification": true, + "sendMemberScopeChangedNotification": false, + "keyId": "key_id", + "teamId": "team_id", + "bundleId": "bundle_id", + "appId": "abcd", + "cometchatMessagePayloadOptions": { + "skipSenderMetadata": false, + "skipReceiverMetadata": false, + "skipMessageMetadata": false, + "trimMessageText": true + } + } + } + }, + "pushNotificationResponseExample": { + "summary": "PN Response", + "value": { + "settings": { + "version": 2, + "pushProvider": 1, + "fcmCredentials": { + "project_id": "project_id", + "client_email": "client_email", + "private_key": "private_key", + "private_key_id": "private_key_id" + }, + "notificationInPayload": { + "web": true, + "android": true, + "ionic_cordova": true, + "react_native": false, + "ios": true, + "flutter": true + }, + "useP8": true, + "sendApnsProduction": true, + "sendNewMessageNotification": true, + "sendEditMessageNotification": false, + "sendDeleteMessageNotification": false, + "sendThreadedMessageNotification": true, + "sendIncomingCallNotification": true, + "sendMissedCallNotification": true, + "sendMemberJoinedNotification": true, + "sendMemberLeftNotification": true, + "sendMemberKickedNotification": true, + "sendMemberBannedNotification": true, + "sendMemberUnbannedNotification": true, + "sendMemberAddedNotification": true, + "sendMemberScopeChangedNotification": false, + "keyId": "key_id", + "teamId": "team_id", + "bundleId": "bundle_id", + "appId": "abcd", + "cometchatMessagePayloadOptions": { + "skipSenderMetadata": false, + "skipReceiverMetadata": false, + "skipMessageMetadata": false, + "trimMessageText": true + } + } + } + } + }, + "securitySchemes": { + "basicAuth": { + "type": "http", + "scheme": "basic" + } + } + }, + "tags": [ + { + "name": "App", + "description": "The Rest collection for app." + }, + { + "name": "Extensions", + "description": "The REST collections for extensions." + }, + { + "name": "Extensions", + "description": "The REST collections for Chat widgets." + }, + { + "name": "Extensions", + "description": "The REST collections for Giphy extension." + }, + { + "name": "Extensions", + "description": "The REST collections for XSS Filter extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Image Moderation extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Report user extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Report message extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Sentiment analysis extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Voice transcription extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Stipop extension." + }, + { + "name": "Extensions", + "description": "The REST collections for TinyURL extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Intercom extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Bitly extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Rich media preview extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Virus Malware Scanner extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Video Broadcasting extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Tenor gifs extension." + }, + { + "name": "Extensions", + "description": "The REST collections for End-to-end encryption extension." + }, + { + "name": "Extensions", + "description": "The REST collections for In-flight message moderation extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Stickers extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Data masking extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Email replies extension." + }, + { + "name": "Extensions", + "description": "The REST collections for SMS Notification extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Push notification extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Chatwoot extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Message shortcuts extension." + }, + { + "name": "Extensions", + "description": "The REST collections for Email Notification extension." + }, + { + "name": "Team Management", + "description": "The REST collections for team management." + }, + { + "name": "Settings", + "description": "The REST collections for Settings." + }, + { + "name": "Extensions", + "description": "The REST collections for Profanity-filter extension." + }, + { + "name": "Webhooks", + "description": "The REST collections for Webhooks." + }, + { + "name": "Moderation", + "description": "The REST collections for Moderations." } + ], + "x-readme": { + "explorer-enabled": true, + "proxy-enabled": true + } } \ No newline at end of file From 581faf37275804b9716db5f6d3bc357c7fc06028 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Mon, 30 Mar 2026 19:53:58 +0530 Subject: [PATCH 40/56] Added cross product links --- docs.json | 274 +++++++++--------- index.mdx | 168 ++++++----- .../setup-and-authentication.mdx | 5 + rest-api/ai-agents-apis/users-and-groups.mdx | 5 + .../setup-and-authentication.mdx | 5 + .../byo-ai-agents-apis/users-and-groups.mdx | 5 + rest-api/calls-apis/overview.mdx | 261 +++++------------ .../calls-apis/setup-and-authentication.mdx | 5 + rest-api/calls-apis/users-and-groups.mdx | 5 + rest-api/calls-link.mdx | 5 + rest-api/moderation-apis/overview.mdx | 106 ++++--- .../setup-and-authentication.mdx | 5 + rest-api/moderation-apis/users-and-groups.mdx | 5 + rest-api/moderation-link.mdx | 5 + rest-api/notifications-apis/overview.mdx | 29 ++ .../setup-and-authentication.mdx | 5 + .../notifications-apis/users-and-groups.mdx | 5 + rest-api/notifications-link.mdx | 5 + 18 files changed, 456 insertions(+), 447 deletions(-) create mode 100644 rest-api/ai-agents-apis/setup-and-authentication.mdx create mode 100644 rest-api/ai-agents-apis/users-and-groups.mdx create mode 100644 rest-api/byo-ai-agents-apis/setup-and-authentication.mdx create mode 100644 rest-api/byo-ai-agents-apis/users-and-groups.mdx create mode 100644 rest-api/calls-apis/setup-and-authentication.mdx create mode 100644 rest-api/calls-apis/users-and-groups.mdx create mode 100644 rest-api/calls-link.mdx create mode 100644 rest-api/moderation-apis/setup-and-authentication.mdx create mode 100644 rest-api/moderation-apis/users-and-groups.mdx create mode 100644 rest-api/moderation-link.mdx create mode 100644 rest-api/notifications-apis/overview.mdx create mode 100644 rest-api/notifications-apis/setup-and-authentication.mdx create mode 100644 rest-api/notifications-apis/users-and-groups.mdx create mode 100644 rest-api/notifications-link.mdx diff --git a/docs.json b/docs.json index 13ef60427..5e07e0ed7 100644 --- a/docs.json +++ b/docs.json @@ -44,7 +44,9 @@ { "group": "Docs MCP", "hidden": true, - "pages": ["mcp-server"] + "pages": [ + "mcp-server" + ] } ] }, @@ -96,7 +98,9 @@ { "dropdown": "Kubernetes", "icon": "/images/icons/kubernetes.svg", - "pages": ["on-premise-deployment/kubernetes/overview"] + "pages": [ + "on-premise-deployment/kubernetes/overview" + ] } ] } @@ -107,7 +111,9 @@ "tabs": [ { "tab": "Chat & Calling", - "pages": ["chat-call"] + "pages": [ + "chat-call" + ] }, { "tab": "Platform", @@ -198,11 +204,15 @@ }, { "group": "User-Roles", - "pages": ["fundamentals/user-roles-and-permissions"] + "pages": [ + "fundamentals/user-roles-and-permissions" + ] }, { "group": "Guides", - "pages": ["fundamentals/user-auth"] + "pages": [ + "fundamentals/user-auth" + ] } ] }, @@ -218,7 +228,9 @@ "/widget/html/advanced", { "group": " ", - "pages": ["/widget/html/legacy"] + "pages": [ + "/widget/html/legacy" + ] } ] }, @@ -230,7 +242,9 @@ "/widget/wordpress/integration", { "group": " ", - "pages": ["/widget/wordpress/legacy"] + "pages": [ + "/widget/wordpress/legacy" + ] } ] }, @@ -253,7 +267,10 @@ { "dropdown": "Wix", "icon": "/images/icons/wix.svg", - "pages": ["/widget/wix/overview", "/widget/wix/integration"] + "pages": [ + "/widget/wix/overview", + "/widget/wix/integration" + ] }, { "dropdown": "Webflow", @@ -545,7 +562,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react/upgrading-from-v5"] + "pages": [ + "ui-kit/react/upgrading-from-v5" + ] }, "ui-kit/react/troubleshooting", "ui-kit/react/link/sample", @@ -988,7 +1007,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/react-native/upgrading-from-v4"] + "pages": [ + "ui-kit/react-native/upgrading-from-v4" + ] }, "ui-kit/react-native/troubleshooting", "ui-kit/react-native/link/sample", @@ -1275,7 +1296,10 @@ }, { "group": "Reference", - "pages": ["ui-kit/ios/methods", "ui-kit/ios/events"] + "pages": [ + "ui-kit/ios/methods", + "ui-kit/ios/events" + ] }, { "group": "Advanced", @@ -1301,7 +1325,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/ios/upgrading-from-v4"] + "pages": [ + "ui-kit/ios/upgrading-from-v4" + ] }, "ui-kit/ios/troubleshooting", "ui-kit/ios/link/sample", @@ -1629,7 +1655,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/android/upgrading-from-v4"] + "pages": [ + "ui-kit/android/upgrading-from-v4" + ] }, "ui-kit/android/troubleshooting", "ui-kit/android/link/sample", @@ -1940,7 +1968,9 @@ }, { "group": "Migration Guide", - "pages": ["ui-kit/flutter/upgrading-from-v4"] + "pages": [ + "ui-kit/flutter/upgrading-from-v4" + ] }, "ui-kit/flutter/link/sample", "ui-kit/flutter/link/changelog", @@ -2527,7 +2557,9 @@ }, { "group": "Setup", - "pages": ["sdk/javascript/setup-sdk"] + "pages": [ + "sdk/javascript/setup-sdk" + ] }, { "group": "Authentication", @@ -2585,7 +2617,9 @@ }, { "group": "User Presence", - "pages": ["sdk/javascript/user-presence"] + "pages": [ + "sdk/javascript/user-presence" + ] }, { "group": "Groups", @@ -4612,16 +4646,7 @@ } ] }, - { - "group": "Voice & Video Calls", - "expanded": false, - "icon": "phone-volume", - "pages": [ - "rest-api/calls", - "rest-api/list-calls", - "rest-api/get-call" - ] - }, + "rest-api/calls-link", { "group": "Platform Features", "expanded": false, @@ -4634,95 +4659,8 @@ "rest-api/metrics/message-metrics" ] }, - { - "group": "Moderation", - "pages": [ - "rest-api/moderation", - "rest-api/moderation/list-rules", - "rest-api/moderation/add-rule", - "rest-api/moderation/get-rule", - "rest-api/moderation/update-rule", - "rest-api/moderation/remove-rule", - "rest-api/moderation/list-keywords", - "rest-api/moderation/add-keywords", - "rest-api/moderation/get-keyword", - "rest-api/moderation/update-keyword", - "rest-api/moderation/remove-keyword", - "rest-api/moderation/get-rule-revisions", - "rest-api/moderation/list-blocked-messages", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/send-message", - "rest-api/moderation/list-messages", - "rest-api/moderation/get-message", - "rest-api/moderation/update-message", - "rest-api/moderation/delete-message", - "rest-api/moderation/create-reasons", - "rest-api/moderation/list-reasons", - "rest-api/moderation/get-reason-details", - "rest-api/moderation/update-reason-details", - "rest-api/moderation/delete-reasons", - "rest-api/moderation/flag-a-message", - "rest-api/moderation/review-blocked-message", - "rest-api/moderation/approve-blocked-messages", - "rest-api/moderation/blockreview-flagged-message", - "rest-api/moderation/list-flagged-messages", - "rest-api/moderation/list-reviewed-messages" - ] - }, - { - "group": "Notification Engine", - "pages": [ - "rest-api/notifications/list-settings", - "rest-api/notifications/reset-settings", - "rest-api/notifications/update-settings", - "rest-api/notifications/list-fcm-providers", - "rest-api/notifications/update-fcm-provider", - "rest-api/notifications/add-fcm-provider", - "rest-api/notifications/delete-fcm-provider", - "rest-api/notifications/change-default-fcm-provider", - "rest-api/notifications/list-apns-providers", - "rest-api/notifications/update-apns-providers", - "rest-api/notifications/add-apns-provider", - "rest-api/notifications/delete-apns-providers", - "rest-api/notifications/change-default-apns-provider", - "rest-api/notifications/list-preferences", - "rest-api/notifications/reset-preferences", - "rest-api/notifications/update-preferences", - "rest-api/notifications/list-push-tokens", - "rest-api/notifications/register-push-token", - "rest-api/notifications/unregister-push-tokens-for-authtoken", - "rest-api/notifications/delete-the-given-push-token", - "rest-api/notifications/list-muted-conversations", - "rest-api/notifications/mute-notifications-for-conversations", - "rest-api/notifications/unmute-notifications-for-conversations", - "rest-api/notifications/get-timezone", - "rest-api/notifications/update-timezone", - "rest-api/notifications/get-contact-details", - "rest-api/notifications/delete-contact-details", - "rest-api/notifications/update-contact-details", - "rest-api/notifications/get-twilio-credentials", - "rest-api/notifications/update-twilio-credentials", - "rest-api/notifications/save-twilio-credentials", - "rest-api/notifications/delete-twilio-credentials", - "rest-api/notifications/get-sendgrid-credentials", - "rest-api/notifications/update-sendgrid-credentials", - "rest-api/notifications/save-sendgrid-credentials", - "rest-api/notifications/delete-sendgrid-credentials", - "rest-api/notifications/get-custom-provider-for-push-notifications", - "rest-api/notifications/update-custom-provider-for-push-notifications", - "rest-api/notifications/save-custom-provider-for-push-notifications", - "rest-api/notifications/delete-the-custom-provider-for-push-notifications", - "rest-api/notifications/get-custom-provider-for-sms-notifications", - "rest-api/notifications/update-custom-provider-for-sms-notifications", - "rest-api/notifications/save-custom-provider-for-sms-notifications", - "rest-api/notifications/delete-the-custom-provider-for-sms-notifications", - "rest-api/notifications/get-custom-provider-for-email-notifications", - "rest-api/notifications/update-custom-provider-for-email-notifications", - "rest-api/notifications/save-custom-provider-for-email-notifications", - "rest-api/notifications/delete-the-custom-provider-for-email-notifications", - "rest-api/notifications/notifications-logs" - ] - } + "rest-api/moderation-link", + "rest-api/notifications-link" ] }, { @@ -4958,7 +4896,9 @@ "tabs": [ { "tab": "Calling", - "pages": ["calls"] + "pages": [ + "calls" + ] }, { "tab": "Platform", @@ -4979,7 +4919,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/javascript/overview"] + "pages": [ + "calls/javascript/overview" + ] }, { "group": "Integrations", @@ -5040,7 +4982,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/react-native/overview"] + "pages": [ + "calls/react-native/overview" + ] }, { "group": "Getting Started", @@ -5092,11 +5036,16 @@ "pages": [ { "group": "Overview", - "pages": ["calls/ios/overview"] + "pages": [ + "calls/ios/overview" + ] }, { "group": "Getting Started", - "pages": ["calls/ios/setup", "calls/ios/authentication"] + "pages": [ + "calls/ios/setup", + "calls/ios/authentication" + ] }, { "group": "Call Session", @@ -5141,7 +5090,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/android/overview"] + "pages": [ + "calls/android/overview" + ] }, { "group": "Getting Started", @@ -5193,7 +5144,9 @@ "pages": [ { "group": "Overview", - "pages": ["calls/flutter/overview"] + "pages": [ + "calls/flutter/overview" + ] }, { "group": "Getting Started", @@ -5248,6 +5201,8 @@ "group": "Calls APIs", "pages": [ "rest-api/calls-apis/overview", + "rest-api/calls-apis/setup-and-authentication", + "rest-api/calls-apis/users-and-groups", { "group": "Calls", "expanded": false, @@ -5277,7 +5232,9 @@ "tabs": [ { "tab": "AI Agents", - "pages": ["ai-agents"] + "pages": [ + "ai-agents" + ] }, { "tab": "Agent Builder", @@ -5340,11 +5297,15 @@ "/ai-agents/crew-ai-tools", { "group": "Guides", - "pages": ["/ai-agents/crew-ai-knowledge-agent"] + "pages": [ + "/ai-agents/crew-ai-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/crew-ai-product-hunt-agent"] + "pages": [ + "/ai-agents/crew-ai-product-hunt-agent" + ] } ] }, @@ -5357,11 +5318,15 @@ "/ai-agents/agno-tools", { "group": "Guides", - "pages": ["/ai-agents/agno-knowledge-agent"] + "pages": [ + "/ai-agents/agno-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/agno-product-hunt-agent"] + "pages": [ + "/ai-agents/agno-product-hunt-agent" + ] } ] }, @@ -5374,11 +5339,15 @@ "/ai-agents/vercel-tools", { "group": "Guides", - "pages": ["/ai-agents/vercel-knowledge-agent"] + "pages": [ + "/ai-agents/vercel-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/vercel-product-hunt-agent"] + "pages": [ + "/ai-agents/vercel-product-hunt-agent" + ] } ] }, @@ -5389,11 +5358,15 @@ "/ai-agents/langgraph", { "group": "Guides", - "pages": ["/ai-agents/langgraph-knowledge-agent"] + "pages": [ + "/ai-agents/langgraph-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/langgraph-product-hunt-agent"] + "pages": [ + "/ai-agents/langgraph-product-hunt-agent" + ] } ] }, @@ -5406,11 +5379,15 @@ "/ai-agents/ag2-tools", { "group": "Guides", - "pages": ["/ai-agents/ag2-knowledge-agent"] + "pages": [ + "/ai-agents/ag2-knowledge-agent" + ] }, { "group": "Tutorials", - "pages": ["/ai-agents/ag2-product-hunt-agent"] + "pages": [ + "/ai-agents/ag2-product-hunt-agent" + ] } ] }, @@ -5423,7 +5400,9 @@ "/ai-agents/ag-ui-tools", { "group": "Guides", - "pages": ["/ai-agents/cometchat-ag-ui-byoa"] + "pages": [ + "/ai-agents/cometchat-ag-ui-byoa" + ] }, { "group": "Implementation", @@ -5439,12 +5418,16 @@ { "tab": "Widget Builder", "tab-id": "ai-agent-chat-builder", - "pages": ["/ai-agents/chat-widget"] + "pages": [ + "/ai-agents/chat-widget" + ] }, { "tab": "Custom Bots", "hidden": true, - "pages": ["/ai-chatbots/custom-bots"] + "pages": [ + "/ai-chatbots/custom-bots" + ] }, { "tab": "AI Bots (Legacy)", @@ -5462,6 +5445,8 @@ "group": "BYO Agent APIs", "pages": [ "rest-api/byo-ai-agents-apis/overview", + "rest-api/byo-ai-agents-apis/setup-and-authentication", + "rest-api/byo-ai-agents-apis/users-and-groups", { "group": "BYO Agents", "expanded": false, @@ -5500,6 +5485,8 @@ "group": "Agent Builder APIs", "pages": [ "rest-api/ai-agents-apis/overview", + "rest-api/ai-agents-apis/setup-and-authentication", + "rest-api/ai-agents-apis/users-and-groups", { "group": "Agents", "expanded": false, @@ -5678,6 +5665,8 @@ "group": "Moderation APIs", "pages": [ "rest-api/moderation-apis/overview", + "rest-api/moderation-apis/setup-and-authentication", + "rest-api/moderation-apis/users-and-groups", { "group": "Rules", "expanded": false, @@ -5756,7 +5745,9 @@ "tabs": [ { "tab": "Notifications", - "pages": ["notifications"] + "pages": [ + "notifications" + ] }, { "tab": "Push", @@ -5817,6 +5808,9 @@ { "group": "Notification APIs", "pages": [ + "rest-api/notifications-apis/overview", + "rest-api/notifications-apis/setup-and-authentication", + "rest-api/notifications-apis/users-and-groups", { "group": "Settings", "expanded": false, @@ -5975,7 +5969,9 @@ "tabs": [ { "tab": "Insights", - "pages": ["insights"] + "pages": [ + "insights" + ] } ] } @@ -7934,4 +7930,4 @@ "redirect": true } } -} +} \ No newline at end of file diff --git a/index.mdx b/index.mdx index c5d49fd6b..b161b7282 100644 --- a/index.mdx +++ b/index.mdx @@ -5,20 +5,19 @@ description: "Technical documentation & Implementation guides to add In-app Mess canonical: "https://cometchat.com/docs" --- - {/* Hero Section */}

-{/** Products Section */} +{/* * Products Section */}
-

+

Products -

+ -

+

Explore our core offerings to power your in-app communication needs.

@@ -26,28 +25,30 @@ canonical: "https://cometchat.com/docs" } - iconType="solid" - href="/chat-call" - > + icon={Chat & Messaging} + iconType="solid" + href="/chat-call" +> Lightning-fast conversations & calling with enterprise scalability - + } - iconType="solid" - href="/calls" - > + icon={ + Voice & Video Calling + } + iconType="solid" + href="/calls" +> Add real-time voice and video calling to your apps with ease. } - iconType="solid" - href="/ai-agents" - > + icon={AI Agents} + iconType="solid" + href="/ai-agents" +> Automate conversations using AI-powered chatbot technology. @@ -55,46 +56,48 @@ canonical: "https://cometchat.com/docs"
- -{/** Features Section */} +{/* * Features Section */}
-

+

Features -

+ -

+

Enhance your app with these powerful communication features.

- } - iconType="solid" - href="/moderation/overview" - > + icon={ + AI Moderation + } + iconType="solid" + href="/moderation/overview" +> Ensure safety with advanced content filtering tools. } - iconType="solid" - href="/notifications" - > + icon={ + Notifications + } + iconType="solid" + href="/notifications" +> Boost engagement by sending instant user notifications. } - iconType="solid" - href="/insights" - > + icon={Insights} + iconType="solid" + href="/insights" +> Generate AI-powered insights for meaningful conversations. @@ -102,39 +105,32 @@ canonical: "https://cometchat.com/docs"
- -{/** More Section */} +{/* * More Section */}
-

- More -

+

More

-

+

Additional solutions to customize your CometChat experience.

- } - iconType="solid" - href="/on-premise-deployment/docker/overview" - > + title="On-Premise Deployment" + icon={ + On-Premise Deployment + } + iconType="solid" + href="/on-premise-deployment/docker/overview" +> Deploy CometChat on your own infrastructure for maximum control and security. - + Add CometChat Docs MCP to your AI tools for instant documentation access. - + @@ -144,12 +140,13 @@ canonical: "https://cometchat.com/docs"
-

+

Resources -

+ -

- Quick links to deeper integration guides, API references, and community support. +

+ Quick links to deeper integration guides, API references, and community + support.

@@ -184,35 +181,60 @@ canonical: "https://cometchat.com/docs" cta="Learn more" > Stay informed of any service interruptions. - +
-
+
-
- 2026 © CometChat -
+
2026 © CometChat
- - - + + + LinkedIn - - - + + + Twitter - - - + + + GitHub diff --git a/rest-api/ai-agents-apis/setup-and-authentication.mdx b/rest-api/ai-agents-apis/setup-and-authentication.mdx new file mode 100644 index 000000000..ad814a9df --- /dev/null +++ b/rest-api/ai-agents-apis/setup-and-authentication.mdx @@ -0,0 +1,5 @@ +--- +title: "Setup & Authentication" +icon: "key" +url: "/rest-api/authentication" +--- diff --git a/rest-api/ai-agents-apis/users-and-groups.mdx b/rest-api/ai-agents-apis/users-and-groups.mdx new file mode 100644 index 000000000..d03f5ddb4 --- /dev/null +++ b/rest-api/ai-agents-apis/users-and-groups.mdx @@ -0,0 +1,5 @@ +--- +title: "Users & Groups" +icon: "users" +url: "/rest-api/users" +--- diff --git a/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx b/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx new file mode 100644 index 000000000..ad814a9df --- /dev/null +++ b/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx @@ -0,0 +1,5 @@ +--- +title: "Setup & Authentication" +icon: "key" +url: "/rest-api/authentication" +--- diff --git a/rest-api/byo-ai-agents-apis/users-and-groups.mdx b/rest-api/byo-ai-agents-apis/users-and-groups.mdx new file mode 100644 index 000000000..d03f5ddb4 --- /dev/null +++ b/rest-api/byo-ai-agents-apis/users-and-groups.mdx @@ -0,0 +1,5 @@ +--- +title: "Users & Groups" +icon: "users" +url: "/rest-api/users" +--- diff --git a/rest-api/calls-apis/overview.mdx b/rest-api/calls-apis/overview.mdx index d6862f4c8..d548533e2 100644 --- a/rest-api/calls-apis/overview.mdx +++ b/rest-api/calls-apis/overview.mdx @@ -1,193 +1,98 @@ --- -title: "Overview" +title: "Calls APIs Overview" sidebarTitle: "Overview" +description: "Retrieve call logs and session details for audio and video calls in your CometChat app." --- The Calls API provides programmatic access to call logs and analytics. Use these APIs to retrieve call history, participant details, duration metrics, and recording information for your application. ## Base URL +The Calls API uses a different base URL than the Chat APIs: + ``` https://{appId}.call-{region}.cometchat.io/v3 ``` -| Variable | Description | -|----------|-------------| -| `appId` | Your CometChat App ID | +| Variable | Description | +| -------- | -------------------------------------- | +| `appId` | Your CometChat App ID | | `region` | Your app's region: `us`, `eu`, or `in` | ## Authentication -All API requests require authentication using your REST API Key in the header: +All API requests require authentication using your REST API Key in the `apikey` header. See the [Authentication Guide](/rest-api/authentication) for details on API key scopes and security best practices. ```bash curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls" \ -H "apikey: YOUR_REST_API_KEY" ``` - -Use the REST API Key from your [CometChat Dashboard](https://app.cometchat.com). This key has full access scope and should only be used server-side. - - ---- - -## Available Endpoints - -| Endpoint | Method | Description | -|----------|--------|-------------| -| [/calls](/rest-api/calls-apis/list-calls) | GET | List all calls with filtering options | -| [/calls/{sessionId}](/rest-api/calls-apis/get-call) | GET | Get details of a specific call | - ---- - -## Use Cases - -| Use Case | Endpoint | Description | -|----------|----------|-------------| -| Call history | List Calls | Display call logs in your app | -| Analytics dashboard | List Calls | Aggregate call duration and participant metrics | -| Call details page | Get Call | Show detailed information for a specific call | -| Recording access | Get Call | Retrieve recording URLs for playback | -| Billing reports | List Calls | Calculate audio/video minutes for billing | - ---- - -## Call Object - -The call object contains all information about a call session. - -| Property | Type | Description | -|----------|------|-------------| -| `sessionId` | string | Unique identifier for the call | -| `type` | string | Call type: `audio` or `video` | -| `mode` | string | Call mode: `call`, `meet`, or `presenter` | -| `status` | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, `canceled` | -| `receiverType` | string | Receiver type: `user` or `group` | -| `initiator` | string | UID of the user who initiated the call | -| `receiver` | string | UID of the user or GUID of the group receiving the call | -| `totalParticipants` | integer | Number of participants (multiple devices counted separately) | -| `totalAudioMinutes` | float | Total audio minutes across all participants | -| `totalVideoMinutes` | float | Total video minutes across all participants | -| `totalDurationInMinutes` | float | Total call duration (audio + video minutes) | -| `totalDuration` | string | Duration in timer format (e.g., "00:05:30") | -| `hasRecording` | boolean | Whether the call has recordings | -| `initiatedAt` | integer | Unix timestamp when call was initiated | -| `startedAt` | integer | Unix timestamp when call started (first participant joined) | -| `endedAt` | integer | Unix timestamp when call ended | -| `participants` | array | List of participant objects | -| `recordings` | array | List of recording objects (if `hasRecording` is true) | - -### Call Status Values - -| Status | Description | -|--------|-------------| -| `initiated` | Call has been initiated but no one has joined yet | -| `ongoing` | Call is currently in progress | -| `ended` | Call has ended normally | -| `unanswered` | Call was not answered within the timeout period | -| `rejected` | Receiver rejected the call | -| `canceled` | Caller canceled before receiver answered | - -### Call Mode Values - -| Mode | Description | -|------|-------------| -| `call` | Standard 1-on-1 or group call initiated via SDK | -| `meet` | Meeting/conference call with a shared session ID | -| `presenter` | Webinar-style call with presenter and viewers | - ---- - -## Participant Object - -Each participant in a call has the following properties: - -| Property | Type | Description | -|----------|------|-------------| -| `uid` | string | Unique identifier of the user | -| `deviceId` | string | Unique identifier of the device used to join | -| `isJoined` | boolean | Whether the user actually joined the call | -| `state` | string | Participant state: `ongoing`, `ended`, `unanswered`, `rejected` | -| `joinedAt` | integer | Unix timestamp when participant joined | -| `leftAt` | integer | Unix timestamp when participant left | -| `totalAudioMinutes` | float | Audio minutes for this participant | -| `totalVideoMinutes` | float | Video minutes for this participant | -| `totalDurationInMinutes` | float | Total duration for this participant | - - -If a user joins from multiple devices, each device is counted as a separate participant entry. - - ---- - -## Recording Object +## Key Behaviors -When a call has recordings, each recording contains: +- A call can have up to **50 participants**. +- Video calls support resolutions from **180p to 720p**, depending on layout and bandwidth. +- Media is encrypted using **SRTP**. Audio uses the **OPUS** codec; video uses **H.264**. +- If a participant joins from multiple devices, each device is counted separately in `totalParticipants`. -| Property | Type | Description | -|----------|------|-------------| -| `rid` | string | Unique identifier of the recording | -| `recording_url` | string | S3 URL to download/stream the recording | -| `duration` | float | Recording duration in minutes | -| `startTime` | integer | Unix timestamp when recording started | -| `endTime` | integer | Unix timestamp when recording ended | +## How Calls Connect to Other Resources ---- +- **Users** — Calls are initiated by and delivered to [Users](/rest-api/users). Each participant is identified by their UID. +- **Groups** — Calls can target a [Group](/rest-api/groups) when `receiverType` is `group`. -## Example Response - -```json -{ - "data": { - "sessionId": "v1.us.31780434a95d45.16923681138d75114d60d1345a22e4cc612263fb26c0b5cf92", - "type": "audio", - "mode": "call", - "status": "ended", - "receiverType": "user", - "initiator": "cometchat-uid-1", - "receiver": "cometchat-uid-2", - "totalParticipants": 2, - "totalAudioMinutes": 0.32, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.32, - "totalDuration": "00:00:19", - "hasRecording": false, - "initiatedAt": 1692368113, - "startedAt": 1692368127, - "endedAt": 1692368146, - "participants": [ - { - "uid": "cometchat-uid-1", - "deviceId": "70ecae89-b71c-4bb3-8220-b7c99ec1658f@rtc.cometchat.com/hsYWb5ul", - "isJoined": true, - "state": "ended", - "joinedAt": 1692368128, - "leftAt": 1692368144, - "totalAudioMinutes": 0.27, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.27 - }, - { - "uid": "cometchat-uid-2", - "deviceId": "c9ed493e-8495-428d-b6ee-b32019cc57ce@rtc.cometchat.com/CKT3xgR4", - "isJoined": true, - "state": "ended", - "joinedAt": 1692368132, - "leftAt": 1692368146, - "totalAudioMinutes": 0.23, - "totalVideoMinutes": 0, - "totalDurationInMinutes": 0.23 - } - ] - } -} -``` +## Available Endpoints ---- +| Operation | Method | Endpoint | Description | +| --------------------------------------------- | ------ | -------------------- | ----------------------------------- | +| [List Calls](/rest-api/calls-apis/list-calls) | `GET` | `/calls` | Retrieve a paginated list of calls | +| [Get Call](/rest-api/calls-apis/get-call) | `GET` | `/calls/{sessionId}` | Retrieve details of a specific call | + +## Call Properties + +| Property | Type | Description | +| ------------------------ | ------- | ---------------------------------------------------------------------------------------- | +| `sessionId` | string | Unique call identifier | +| `type` | string | Call type: `audio` or `video` | +| `mode` | string | Call mode: `call`, `meet`, or `presenter` | +| `receiverType` | string | Receiver type: `user` or `group` | +| `status` | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, or `canceled` | +| `totalAudioMinutes` | float | Total audio minutes across all participants | +| `totalVideoMinutes` | float | Total video minutes across all participants | +| `totalDurationInMinutes` | float | Total call duration (audio + video minutes) | +| `totalDuration` | string | Duration in timer format (e.g., `00:05:30`) | +| `totalParticipants` | integer | Number of participant entries (multi-device joins counted separately) | +| `hasRecording` | boolean | Whether the call has a recording | +| `startedAt` | integer | UNIX timestamp when the call was initiated | +| `endedAt` | integer | UNIX timestamp when the call ended | +| `participants` | array | Details of individual participants | + +## Participant Properties + +| Property | Type | Description | +| ------------------------ | ------- | ------------------------------------------------------------------ | +| `uid` | string | User's unique identifier | +| `totalAudioMinutes` | float | Audio minutes for this participant | +| `totalVideoMinutes` | float | Video minutes for this participant | +| `totalDurationInMinutes` | float | Total duration for this participant | +| `deviceId` | string | Unique identifier of the device used to join | +| `isJoined` | boolean | Whether the user joined the call | +| `joinedAt` | integer | UNIX timestamp when the user joined | +| `leftAt` | integer | UNIX timestamp when the user left | +| `state` | string | Participant state: `ongoing`, `ended`, `unanswered`, or `rejected` | + +## Recording Properties + +| Property | Type | Description | +| --------------- | ------- | ------------------------------------- | +| `rid` | string | Unique recording identifier | +| `duration` | float | Recording duration in minutes | +| `startTime` | integer | UNIX timestamp when recording started | +| `endTime` | integer | UNIX timestamp when recording ended | +| `recording_url` | string | URL to the recording file | ## Pagination -List endpoints return paginated results with metadata: +List endpoints return paginated results: ```json { @@ -204,36 +109,14 @@ List endpoints return paginated results with metadata: } ``` -| Property | Description | -|----------|-------------| -| `total` | Total number of records | -| `count` | Number of records in current response | -| `per_page` | Records per page | -| `current_page` | Current page number | -| `total_pages` | Total number of pages | - ---- - ## Error Handling -The API returns standard HTTP status codes: - -| Status Code | Description | -|-------------|-------------| -| `200` | Success | -| `400` | Bad request - Invalid parameters | -| `401` | Unauthorized - Invalid or missing API key | -| `404` | Not found - Call session doesn't exist | -| `429` | Rate limited - Too many requests | -| `500` | Server error | +| Error Code | Description | +| ---------------------------- | ------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `ERR_CALL_SESSION_NOT_FOUND` | The specified session ID does not exist | -Error responses include a message: +For the complete list of error codes, see [Error Codes](/rest-api/calls-apis/error-codes). -```json -{ - "error": { - "code": "ERR_SESSION_NOT_FOUND", - "message": "The specified session ID does not exist" - } -} -``` +For system limits (participant caps, codec details, resolution ranges), see [Properties and Constraints](/rest-api/calls-apis/properties-and-constraints). diff --git a/rest-api/calls-apis/setup-and-authentication.mdx b/rest-api/calls-apis/setup-and-authentication.mdx new file mode 100644 index 000000000..ad814a9df --- /dev/null +++ b/rest-api/calls-apis/setup-and-authentication.mdx @@ -0,0 +1,5 @@ +--- +title: "Setup & Authentication" +icon: "key" +url: "/rest-api/authentication" +--- diff --git a/rest-api/calls-apis/users-and-groups.mdx b/rest-api/calls-apis/users-and-groups.mdx new file mode 100644 index 000000000..d03f5ddb4 --- /dev/null +++ b/rest-api/calls-apis/users-and-groups.mdx @@ -0,0 +1,5 @@ +--- +title: "Users & Groups" +icon: "users" +url: "/rest-api/users" +--- diff --git a/rest-api/calls-link.mdx b/rest-api/calls-link.mdx new file mode 100644 index 000000000..ed570622c --- /dev/null +++ b/rest-api/calls-link.mdx @@ -0,0 +1,5 @@ +--- +title: "Calls APIs" +icon: "phone-volume" +url: "/rest-api/calls-apis/overview" +--- diff --git a/rest-api/moderation-apis/overview.mdx b/rest-api/moderation-apis/overview.mdx index 22c1b062d..1e6dbd950 100644 --- a/rest-api/moderation-apis/overview.mdx +++ b/rest-api/moderation-apis/overview.mdx @@ -1,73 +1,87 @@ --- title: "AI Moderation APIs" sidebarTitle: "Overview" +description: "Create and manage content moderation rules to maintain a safe environment across your CometChat app." --- -The Moderation Service API provides endpoints for managing and enforcing content moderation rules across various types of messages. This API enables you to create, read, update, and delete (CRUD) rules and keyword lists, ensuring your platform maintains a safe and compliant environment for users. +The Moderation API provides endpoints for managing content moderation rules and keyword lists. You can define rules that automatically detect and block inappropriate content in messages, including text profanity, AI-based image/video moderation, and custom keyword filters. -Below is an overview of the key functionalities provided by the Moderation Service API: +## Key Behaviors -1. The Rules Management endpoints allow you to define and manage moderation rules to handle inappropriate content based on various conditions -2. The Keywords Management endpoints allow you to create and manage lists of keywords or regex patterns used for content moderation. -3. The list blocked messages endpoint allows you to fetch all the violated messages. -4. Fetches the historical revisions of a rule, detailing all updates made over time. +- Default rules cover text profanity, AI-based image/video moderation, custom profanity, contact details, and email content. +- Text and custom profanity filters scan for words (including regex patterns) and drop the message if a violation is detected. +- AI-based image/video moderation scans attachments and discards the message if a violation is found. +- When a rule is violated, the message is blocked. Optionally, the sender can be kicked or banned (in groups) or blocked (in 1-on-1 conversations). +## How Moderation Connects to Other Resources +- **Messages** — Moderation rules are evaluated against [Messages](/rest-api/messages) in real time before delivery. +- **Groups** — Violations in group messages can trigger member kicks or bans via [Group Members](/rest-api/group-members) and [Banned Users](/rest-api/banned-users). +- **Blocked Users** — Violations in 1-on-1 messages can trigger a [block](/rest-api/blocked-users) on the sender. -The default rules include text profanity, AI-based moderation for images and videos, custom profanity (custom messages), contact details, and email content, ensuring comprehensive content moderation. +## Available Endpoints -The text profanity and custom profanity filters scan for words, including those matching regex patterns, and drop the message if a violation is detected. +| Operation | Description | +| ------------------------------------------------------------------- | ---------------------------------------------------------- | +| [Rules](/rest-api/moderation-apis/list-rules) | Create, read, update, and delete moderation rules | +| [Keywords](/rest-api/moderation-apis/list-keywords) | Manage keyword lists or regex patterns for text moderation | +| [Blocked Messages](/rest-api/moderation-apis/list-blocked-messages) | Retrieve messages that violated moderation rules | +| [Flagged Messages](/rest-api/moderation-apis/list-flagged-messages) | Retrieve flagged messages for review | +| [Reasons](/rest-api/moderation-apis/list-reasons) | Manage custom flag reasons | +| [Rule Revisions](/rest-api/moderation-apis/get-rule-revisions) | Fetch historical revisions of a rule | -The AI-based image and video moderation system scans for violations in images and videos and discards the message if a violation is detected. It allows the attachment of the following labels to a rule, enabling moderation for specific categories of images and videos.\ -Following are the labels that are available for Image/Video moderation: +## AI Image and Video Moderation Labels -| Labels | Definitions | -| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Violence | Instruments or devices used to cause harm or damage to living beings, structures, or systems. This includes firearms (e.g., guns, rifles, machine guns, etc.), sharp weapons (e.g., swords, knives, etc.), explosives and ammunition (e.g., missiles, bombs, bullets, etc.). | -| Alcohol | The act of drinking alcoholic beverages from bottles or glasses of alcohol or liquor. | -| Gambling | The act of participating in games of chance for a chance to win a prize in casinos, e.g., playing cards, blackjacks, roulette, slot machines at casinos, etc. | -| Drugs & Tobacco | Small, solid, often round or oval-shaped tables or capsules. The act of inhaling, exhaling, and lighting up burning substances including cigarettes, cigars, e-cigarettes, hookah, or joint. | -| Rude gestures | Visual depiction of a hand gesture with middle finger is extended upward while the other fingers are folded down. | -| Explicit Nudity | Human male/female genitalia, including the penis (whether erect or flaccid), the scrotum, and any discernible pubic hair. | -| Non-Explicit Nudity | Human posterior part where the majority of the skin is visible from the neck to the end of the spine. This term does not apply when the individual's back is partially or fully occluded. | -| Swimwear or underwear | Human clothing for female/male swimwear (e.g., one-piece swimsuits, bikinis, tankinis, swim trunks, boardshorts, swim briefs, etc) | -| Visually Disturbing | Human bodies that are extremely thin and undernourished with severe physical wasting and depletion of muscle and fat tissue. | -| Hate symbols | Visual depiction of symbols, flags, or gestures associated with Nazi Party. Images containing extremist and terrorist group flags. | - -When a rule is violated, the message will be blocked, and there is an option to either kick or ban the user in groups, or block the user in one-on-one interactions. - ---- +| Label | Description | +| --------------------- | ----------------------------------------------------------------------------------------------- | +| Violence | Instruments or devices used to cause harm — firearms, sharp weapons, explosives, and ammunition | +| Alcohol | Drinking alcoholic beverages from bottles or glasses | +| Gambling | Participating in games of chance — cards, roulette, slot machines | +| Drugs & Tobacco | Tablets, capsules, or the act of smoking cigarettes, cigars, e-cigarettes, hookah, or joints | +| Rude gestures | Hand gesture with the middle finger extended | +| Explicit Nudity | Visible human genitalia | +| Non-Explicit Nudity | Exposed human back from neck to spine without full occlusion | +| Swimwear or underwear | Swimwear or undergarments — bikinis, swim trunks, swim briefs, etc. | +| Visually Disturbing | Extremely thin, undernourished human bodies with severe physical wasting | +| Hate symbols | Symbols, flags, or gestures associated with extremist or terrorist groups | ## API Constraints -**Need higher limits?** Contact [CometChat Support](https://www.cometchat.com/contact) to discuss enterprise options for increased limits. + **Need higher limits?** Contact [CometChat + Support](https://www.cometchat.com/contact) to discuss enterprise options. - | Parameter | Limit | - |-----------|-------| - | **Rule ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **Filters per rule** | Max 10 filters | - | **Conditions per rule** | Max 10 conditions | - | **Rules per app** | Max 25 custom rules (excludes default rules) | + | Parameter | Limit | |-----------|-------| | **Rule ID** | Max 100 + characters, no spaces or special characters | | **Name** | Max 100 + characters | | **Description** | Max 255 characters | | **Filters per rule** + | Max 10 filters | | **Conditions per rule** | Max 10 conditions | | **Rules + per app** | Max 25 custom rules (excludes default rules) | - | Parameter | Limit | - |-----------|-------| - | **List ID** | Max 100 characters, no spaces or special characters | - | **Name** | Max 100 characters | - | **Description** | Max 255 characters | - | **CSV file size** | Max 1 MB | - | **Lists per app** | Max 25 custom lists (excludes default lists) | + | Parameter | Limit | |-----------|-------| | **List ID** | Max 100 + characters, no spaces or special characters | | **Name** | Max 100 + characters | | **Description** | Max 255 characters | | **CSV file size** | + Max 1 MB | | **Lists per app** | Max 25 custom lists (excludes default + lists) | - | Parameter | Limit | - |-----------|-------| - | **AI Context** | Max 50 messages sent to OpenAI/Custom API for analysis | - | **Custom Flag Reasons** | Max 5 per app | + | Parameter | Limit | |-----------|-------| | **AI Context** | Max 50 + messages sent to OpenAI/Custom API for analysis | | **Custom Flag Reasons** + | Max 5 per app | + +## Error Handling + +| Error Code | Description | +| --------------------------- | ------------------------------------------- | +| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | +| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | + +For the complete list of error codes, see [Error Codes](/rest-api/moderation-apis/error-codes). + +For system limits, see [Properties and Constraints](/rest-api/moderation-apis/properties-and-constraints). diff --git a/rest-api/moderation-apis/setup-and-authentication.mdx b/rest-api/moderation-apis/setup-and-authentication.mdx new file mode 100644 index 000000000..ad814a9df --- /dev/null +++ b/rest-api/moderation-apis/setup-and-authentication.mdx @@ -0,0 +1,5 @@ +--- +title: "Setup & Authentication" +icon: "key" +url: "/rest-api/authentication" +--- diff --git a/rest-api/moderation-apis/users-and-groups.mdx b/rest-api/moderation-apis/users-and-groups.mdx new file mode 100644 index 000000000..d03f5ddb4 --- /dev/null +++ b/rest-api/moderation-apis/users-and-groups.mdx @@ -0,0 +1,5 @@ +--- +title: "Users & Groups" +icon: "users" +url: "/rest-api/users" +--- diff --git a/rest-api/moderation-link.mdx b/rest-api/moderation-link.mdx new file mode 100644 index 000000000..65376e185 --- /dev/null +++ b/rest-api/moderation-link.mdx @@ -0,0 +1,5 @@ +--- +title: "Moderation APIs" +icon: "shield" +url: "/rest-api/moderation-apis/overview" +--- diff --git a/rest-api/notifications-apis/overview.mdx b/rest-api/notifications-apis/overview.mdx new file mode 100644 index 000000000..858af1f2b --- /dev/null +++ b/rest-api/notifications-apis/overview.mdx @@ -0,0 +1,29 @@ +--- +title: "Notification APIs Overview" +sidebarTitle: "Overview" +description: "Manage push, email, and SMS notification providers and preferences for your CometChat app." +--- + +The Notification APIs let you configure and manage notification delivery across push, email, and SMS channels. You can set up providers (FCM, APNS, SendGrid, Twilio), manage user preferences, and monitor notification logs. + +## Available Endpoints + +| Resource | Description | +| ---------------------------------------------------------------------------------- | ----------------------------------------------- | +| [Settings](/rest-api/notifications-apis/push/list-settings) | Global notification settings | +| [Preferences](/rest-api/notifications-apis/push/list-preferences) | User notification preferences and mute controls | +| [Contacts](/rest-api/notifications-apis/push/get-contact-details) | User contact details for notifications | +| [Push Notifications](/rest-api/notifications-apis/push/list-fcm-providers) | FCM, APNS, and custom push providers | +| [Email Notifications](/rest-api/notifications-apis/email/get-sendgrid-credentials) | SendGrid and custom email providers | +| [SMS Notifications](/rest-api/notifications-apis/sms/get-twilio-credentials) | Twilio and custom SMS providers | +| [Notification Logs](/rest-api/notifications-apis/push/notifications-logs) | View notification delivery logs | + +## Authentication + +All Notification API requests require a `fullAccess` API key. See the [Authentication Guide](/rest-api/authentication) for details. + +## Error Handling + +For error codes specific to Notification APIs, see [Error Codes](/rest-api/notifications-apis/error-codes). + +For system limits, see [Properties and Constraints](/rest-api/notifications-apis/properties-and-constraints). diff --git a/rest-api/notifications-apis/setup-and-authentication.mdx b/rest-api/notifications-apis/setup-and-authentication.mdx new file mode 100644 index 000000000..ad814a9df --- /dev/null +++ b/rest-api/notifications-apis/setup-and-authentication.mdx @@ -0,0 +1,5 @@ +--- +title: "Setup & Authentication" +icon: "key" +url: "/rest-api/authentication" +--- diff --git a/rest-api/notifications-apis/users-and-groups.mdx b/rest-api/notifications-apis/users-and-groups.mdx new file mode 100644 index 000000000..d03f5ddb4 --- /dev/null +++ b/rest-api/notifications-apis/users-and-groups.mdx @@ -0,0 +1,5 @@ +--- +title: "Users & Groups" +icon: "users" +url: "/rest-api/users" +--- diff --git a/rest-api/notifications-link.mdx b/rest-api/notifications-link.mdx new file mode 100644 index 000000000..c91f632e9 --- /dev/null +++ b/rest-api/notifications-link.mdx @@ -0,0 +1,5 @@ +--- +title: "Notification APIs" +icon: "bell" +url: "/rest-api/notifications-apis/overview" +--- From 4fe4fbd909c1b17f0202b76a67197a459511ab96 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 10:46:46 +0530 Subject: [PATCH 41/56] Removed orphans from REST API docs --- rest-api/moderation/add-keywords.mdx | 21 ------------- rest-api/moderation/add-rule.mdx | 21 ------------- .../moderation/approve-blocked-messages.mdx | 22 -------------- .../blockreview-flagged-message.mdx | 22 -------------- rest-api/moderation/create-reasons.mdx | 21 ------------- rest-api/moderation/delete-message.mdx | 22 -------------- rest-api/moderation/delete-reasons.mdx | 22 -------------- rest-api/moderation/flag-a-message.mdx | 22 -------------- rest-api/moderation/get-keyword.mdx | 22 -------------- rest-api/moderation/get-message.mdx | 22 -------------- rest-api/moderation/get-reason-details.mdx | 22 -------------- rest-api/moderation/get-rule-revisions.mdx | 22 -------------- rest-api/moderation/get-rule.mdx | 22 -------------- rest-api/moderation/list-blocked-messages.mdx | 21 ------------- rest-api/moderation/list-flagged-messages.mdx | 21 ------------- rest-api/moderation/list-keywords.mdx | 21 ------------- rest-api/moderation/list-messages.mdx | 21 ------------- rest-api/moderation/list-reasons.mdx | 21 ------------- .../moderation/list-reviewed-messages.mdx | 21 ------------- rest-api/moderation/list-rules.mdx | 21 ------------- rest-api/moderation/remove-keyword.mdx | 22 -------------- rest-api/moderation/remove-rule.mdx | 22 -------------- .../moderation/review-blocked-message.mdx | 22 -------------- rest-api/moderation/send-message.mdx | 21 ------------- rest-api/moderation/update-keyword.mdx | 22 -------------- rest-api/moderation/update-message.mdx | 22 -------------- rest-api/moderation/update-reason-details.mdx | 22 -------------- rest-api/moderation/update-rule.mdx | 22 -------------- rest-api/notifications/add-apns-provider.mdx | 30 ------------------- rest-api/notifications/add-fcm-provider.mdx | 30 ------------------- .../change-default-apns-provider.mdx | 30 ------------------- .../change-default-fcm-provider.mdx | 30 ------------------- .../notifications/delete-apns-providers.mdx | 30 ------------------- .../notifications/delete-contact-details.mdx | 30 ------------------- .../notifications/delete-fcm-provider.mdx | 30 ------------------- .../delete-sendgrid-credentials.mdx | 30 ------------------- ...ustom-provider-for-email-notifications.mdx | 30 ------------------- ...custom-provider-for-push-notifications.mdx | 30 ------------------- ...-custom-provider-for-sms-notifications.mdx | 30 ------------------- .../delete-the-given-push-token.mdx | 30 ------------------- .../delete-twilio-credentials.mdx | 30 ------------------- .../notifications/get-contact-details.mdx | 30 ------------------- ...ustom-provider-for-email-notifications.mdx | 30 ------------------- ...custom-provider-for-push-notifications.mdx | 30 ------------------- ...-custom-provider-for-sms-notifications.mdx | 30 ------------------- .../get-sendgrid-credentials.mdx | 30 ------------------- rest-api/notifications/get-timezone.mdx | 27 ----------------- .../notifications/get-twilio-credentials.mdx | 30 ------------------- .../notifications/list-apns-providers.mdx | 30 ------------------- rest-api/notifications/list-fcm-providers.mdx | 30 ------------------- .../list-muted-conversations.mdx | 30 ------------------- rest-api/notifications/list-preferences.mdx | 30 ------------------- rest-api/notifications/list-push-tokens.mdx | 30 ------------------- rest-api/notifications/list-settings.mdx | 24 --------------- .../mute-notifications-for-conversations.mdx | 30 ------------------- rest-api/notifications/notifications-logs.mdx | 27 ----------------- .../notifications/register-push-token.mdx | 30 ------------------- rest-api/notifications/reset-preferences.mdx | 30 ------------------- rest-api/notifications/reset-settings.mdx | 24 --------------- ...ustom-provider-for-email-notifications.mdx | 30 ------------------- ...custom-provider-for-push-notifications.mdx | 30 ------------------- ...-custom-provider-for-sms-notifications.mdx | 30 ------------------- .../save-sendgrid-credentials.mdx | 30 ------------------- .../notifications/save-twilio-credentials.mdx | 30 ------------------- ...unmute-notifications-for-conversations.mdx | 30 ------------------- .../unregister-push-tokens-for-authtoken.mdx | 30 ------------------- .../notifications/update-apns-providers.mdx | 30 ------------------- .../notifications/update-contact-details.mdx | 30 ------------------- ...ustom-provider-for-email-notifications.mdx | 30 ------------------- ...custom-provider-for-push-notifications.mdx | 30 ------------------- ...-custom-provider-for-sms-notifications.mdx | 30 ------------------- .../notifications/update-fcm-provider.mdx | 30 ------------------- rest-api/notifications/update-preferences.mdx | 30 ------------------- .../update-sendgrid-credentials.mdx | 30 ------------------- rest-api/notifications/update-settings.mdx | 24 --------------- rest-api/notifications/update-timezone.mdx | 27 ----------------- .../update-twilio-credentials.mdx | 30 ------------------- 77 files changed, 2048 deletions(-) delete mode 100644 rest-api/moderation/add-keywords.mdx delete mode 100644 rest-api/moderation/add-rule.mdx delete mode 100644 rest-api/moderation/approve-blocked-messages.mdx delete mode 100644 rest-api/moderation/blockreview-flagged-message.mdx delete mode 100644 rest-api/moderation/create-reasons.mdx delete mode 100644 rest-api/moderation/delete-message.mdx delete mode 100644 rest-api/moderation/delete-reasons.mdx delete mode 100644 rest-api/moderation/flag-a-message.mdx delete mode 100644 rest-api/moderation/get-keyword.mdx delete mode 100644 rest-api/moderation/get-message.mdx delete mode 100644 rest-api/moderation/get-reason-details.mdx delete mode 100644 rest-api/moderation/get-rule-revisions.mdx delete mode 100644 rest-api/moderation/get-rule.mdx delete mode 100644 rest-api/moderation/list-blocked-messages.mdx delete mode 100644 rest-api/moderation/list-flagged-messages.mdx delete mode 100644 rest-api/moderation/list-keywords.mdx delete mode 100644 rest-api/moderation/list-messages.mdx delete mode 100644 rest-api/moderation/list-reasons.mdx delete mode 100644 rest-api/moderation/list-reviewed-messages.mdx delete mode 100644 rest-api/moderation/list-rules.mdx delete mode 100644 rest-api/moderation/remove-keyword.mdx delete mode 100644 rest-api/moderation/remove-rule.mdx delete mode 100644 rest-api/moderation/review-blocked-message.mdx delete mode 100644 rest-api/moderation/send-message.mdx delete mode 100644 rest-api/moderation/update-keyword.mdx delete mode 100644 rest-api/moderation/update-message.mdx delete mode 100644 rest-api/moderation/update-reason-details.mdx delete mode 100644 rest-api/moderation/update-rule.mdx delete mode 100644 rest-api/notifications/add-apns-provider.mdx delete mode 100644 rest-api/notifications/add-fcm-provider.mdx delete mode 100644 rest-api/notifications/change-default-apns-provider.mdx delete mode 100644 rest-api/notifications/change-default-fcm-provider.mdx delete mode 100644 rest-api/notifications/delete-apns-providers.mdx delete mode 100644 rest-api/notifications/delete-contact-details.mdx delete mode 100644 rest-api/notifications/delete-fcm-provider.mdx delete mode 100644 rest-api/notifications/delete-sendgrid-credentials.mdx delete mode 100644 rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx delete mode 100644 rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx delete mode 100644 rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx delete mode 100644 rest-api/notifications/delete-the-given-push-token.mdx delete mode 100644 rest-api/notifications/delete-twilio-credentials.mdx delete mode 100644 rest-api/notifications/get-contact-details.mdx delete mode 100644 rest-api/notifications/get-custom-provider-for-email-notifications.mdx delete mode 100644 rest-api/notifications/get-custom-provider-for-push-notifications.mdx delete mode 100644 rest-api/notifications/get-custom-provider-for-sms-notifications.mdx delete mode 100644 rest-api/notifications/get-sendgrid-credentials.mdx delete mode 100644 rest-api/notifications/get-timezone.mdx delete mode 100644 rest-api/notifications/get-twilio-credentials.mdx delete mode 100644 rest-api/notifications/list-apns-providers.mdx delete mode 100644 rest-api/notifications/list-fcm-providers.mdx delete mode 100644 rest-api/notifications/list-muted-conversations.mdx delete mode 100644 rest-api/notifications/list-preferences.mdx delete mode 100644 rest-api/notifications/list-push-tokens.mdx delete mode 100644 rest-api/notifications/list-settings.mdx delete mode 100644 rest-api/notifications/mute-notifications-for-conversations.mdx delete mode 100644 rest-api/notifications/notifications-logs.mdx delete mode 100644 rest-api/notifications/register-push-token.mdx delete mode 100644 rest-api/notifications/reset-preferences.mdx delete mode 100644 rest-api/notifications/reset-settings.mdx delete mode 100644 rest-api/notifications/save-custom-provider-for-email-notifications.mdx delete mode 100644 rest-api/notifications/save-custom-provider-for-push-notifications.mdx delete mode 100644 rest-api/notifications/save-custom-provider-for-sms-notifications.mdx delete mode 100644 rest-api/notifications/save-sendgrid-credentials.mdx delete mode 100644 rest-api/notifications/save-twilio-credentials.mdx delete mode 100644 rest-api/notifications/unmute-notifications-for-conversations.mdx delete mode 100644 rest-api/notifications/unregister-push-tokens-for-authtoken.mdx delete mode 100644 rest-api/notifications/update-apns-providers.mdx delete mode 100644 rest-api/notifications/update-contact-details.mdx delete mode 100644 rest-api/notifications/update-custom-provider-for-email-notifications.mdx delete mode 100644 rest-api/notifications/update-custom-provider-for-push-notifications.mdx delete mode 100644 rest-api/notifications/update-custom-provider-for-sms-notifications.mdx delete mode 100644 rest-api/notifications/update-fcm-provider.mdx delete mode 100644 rest-api/notifications/update-preferences.mdx delete mode 100644 rest-api/notifications/update-sendgrid-credentials.mdx delete mode 100644 rest-api/notifications/update-settings.mdx delete mode 100644 rest-api/notifications/update-timezone.mdx delete mode 100644 rest-api/notifications/update-twilio-credentials.mdx diff --git a/rest-api/moderation/add-keywords.mdx b/rest-api/moderation/add-keywords.mdx deleted file mode 100644 index db8309ab8..000000000 --- a/rest-api/moderation/add-keywords.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: post /moderation/keywords ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/add-rule.mdx b/rest-api/moderation/add-rule.mdx deleted file mode 100644 index 7ec0a2dd4..000000000 --- a/rest-api/moderation/add-rule.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: post /moderation/rules ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/approve-blocked-messages.mdx b/rest-api/moderation/approve-blocked-messages.mdx deleted file mode 100644 index 578bce6fa..000000000 --- a/rest-api/moderation/approve-blocked-messages.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: patch /moderation/blocked-messages/{messageId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/blockreview-flagged-message.mdx b/rest-api/moderation/blockreview-flagged-message.mdx deleted file mode 100644 index 5df05af3d..000000000 --- a/rest-api/moderation/blockreview-flagged-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: patch /moderation/flagged-messages/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/create-reasons.mdx b/rest-api/moderation/create-reasons.mdx deleted file mode 100644 index 4d41d693d..000000000 --- a/rest-api/moderation/create-reasons.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: post /moderation/reasons ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/delete-message.mdx b/rest-api/moderation/delete-message.mdx deleted file mode 100644 index b77f85509..000000000 --- a/rest-api/moderation/delete-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: delete /moderation/messages/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/delete-reasons.mdx b/rest-api/moderation/delete-reasons.mdx deleted file mode 100644 index ee7004095..000000000 --- a/rest-api/moderation/delete-reasons.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: delete /moderation/reasons/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/flag-a-message.mdx b/rest-api/moderation/flag-a-message.mdx deleted file mode 100644 index 1b2577eb1..000000000 --- a/rest-api/moderation/flag-a-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: post /messages/{id}/flagged ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/get-keyword.mdx b/rest-api/moderation/get-keyword.mdx deleted file mode 100644 index 9bdf5f96b..000000000 --- a/rest-api/moderation/get-keyword.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: get /moderation/keywords/{keywordId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/get-message.mdx b/rest-api/moderation/get-message.mdx deleted file mode 100644 index addeeee5b..000000000 --- a/rest-api/moderation/get-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: get /moderation/messages/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/get-reason-details.mdx b/rest-api/moderation/get-reason-details.mdx deleted file mode 100644 index fb480e60f..000000000 --- a/rest-api/moderation/get-reason-details.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: get /moderation/reasons/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/get-rule-revisions.mdx b/rest-api/moderation/get-rule-revisions.mdx deleted file mode 100644 index 2ebfccd83..000000000 --- a/rest-api/moderation/get-rule-revisions.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: get /moderation/rules/{ruleId}/revisions ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/get-rule.mdx b/rest-api/moderation/get-rule.mdx deleted file mode 100644 index 95f16b99a..000000000 --- a/rest-api/moderation/get-rule.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: get /moderation/rules/{ruleId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-blocked-messages.mdx b/rest-api/moderation/list-blocked-messages.mdx deleted file mode 100644 index 9889d388a..000000000 --- a/rest-api/moderation/list-blocked-messages.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/blocked-messages ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-flagged-messages.mdx b/rest-api/moderation/list-flagged-messages.mdx deleted file mode 100644 index 9c5f9b86e..000000000 --- a/rest-api/moderation/list-flagged-messages.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/flagged-messages ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-keywords.mdx b/rest-api/moderation/list-keywords.mdx deleted file mode 100644 index d4605c21e..000000000 --- a/rest-api/moderation/list-keywords.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/keywords ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-messages.mdx b/rest-api/moderation/list-messages.mdx deleted file mode 100644 index 7221868f0..000000000 --- a/rest-api/moderation/list-messages.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/messages ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-reasons.mdx b/rest-api/moderation/list-reasons.mdx deleted file mode 100644 index 63b0f4f52..000000000 --- a/rest-api/moderation/list-reasons.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/reasons ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-reviewed-messages.mdx b/rest-api/moderation/list-reviewed-messages.mdx deleted file mode 100644 index b254000ec..000000000 --- a/rest-api/moderation/list-reviewed-messages.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/reviewed-messages ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/list-rules.mdx b/rest-api/moderation/list-rules.mdx deleted file mode 100644 index a4cddd8a9..000000000 --- a/rest-api/moderation/list-rules.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: get /moderation/rules ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/remove-keyword.mdx b/rest-api/moderation/remove-keyword.mdx deleted file mode 100644 index 365630d31..000000000 --- a/rest-api/moderation/remove-keyword.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: delete /moderation/keywords/{keywordId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/remove-rule.mdx b/rest-api/moderation/remove-rule.mdx deleted file mode 100644 index 9a8793654..000000000 --- a/rest-api/moderation/remove-rule.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: delete /moderation/rules/{ruleId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/review-blocked-message.mdx b/rest-api/moderation/review-blocked-message.mdx deleted file mode 100644 index 60476c19e..000000000 --- a/rest-api/moderation/review-blocked-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: patch /moderation/blocked-messages/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/send-message.mdx b/rest-api/moderation/send-message.mdx deleted file mode 100644 index 520d97022..000000000 --- a/rest-api/moderation/send-message.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -openapi: post /moderation/messages ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------- | ----------- | ----- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/update-keyword.mdx b/rest-api/moderation/update-keyword.mdx deleted file mode 100644 index fba1e3a77..000000000 --- a/rest-api/moderation/update-keyword.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: put /moderation/keywords/{keywordId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_KEYWORD_NOT_FOUND` | 404 | No keyword exists with the specified keyword ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/update-message.mdx b/rest-api/moderation/update-message.mdx deleted file mode 100644 index b9855d821..000000000 --- a/rest-api/moderation/update-message.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: put /moderation/messages/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_MESSAGE_ID_NOT_FOUND` | 404 | No message exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/update-reason-details.mdx b/rest-api/moderation/update-reason-details.mdx deleted file mode 100644 index 81dcd2d60..000000000 --- a/rest-api/moderation/update-reason-details.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: put /moderation/reasons/{id} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_REASON_NOT_FOUND` | 404 | No reason exists with the specified ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/moderation/update-rule.mdx b/rest-api/moderation/update-rule.mdx deleted file mode 100644 index e32679218..000000000 --- a/rest-api/moderation/update-rule.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -openapi: put /moderation/rules/{ruleId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_RULE_NOT_FOUND` | 404 | No rule exists with the specified rule ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View moderation configuration options. - - diff --git a/rest-api/notifications/add-apns-provider.mdx b/rest-api/notifications/add-apns-provider.mdx deleted file mode 100644 index 0c52834f1..000000000 --- a/rest-api/notifications/add-apns-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/apns ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured APNS providers. - - - Modify an existing APNS provider. - - diff --git a/rest-api/notifications/add-fcm-provider.mdx b/rest-api/notifications/add-fcm-provider.mdx deleted file mode 100644 index f2d3aee61..000000000 --- a/rest-api/notifications/add-fcm-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/fcm ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured FCM providers. - - - Modify an existing FCM provider. - - diff --git a/rest-api/notifications/change-default-apns-provider.mdx b/rest-api/notifications/change-default-apns-provider.mdx deleted file mode 100644 index 8464d6e4a..000000000 --- a/rest-api/notifications/change-default-apns-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/apns/default/{providerId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured APNS providers. - - - Set the default FCM provider instead. - - diff --git a/rest-api/notifications/change-default-fcm-provider.mdx b/rest-api/notifications/change-default-fcm-provider.mdx deleted file mode 100644 index 62a568cec..000000000 --- a/rest-api/notifications/change-default-fcm-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/fcm/default/{providerId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured FCM providers. - - - Set the default APNS provider instead. - - diff --git a/rest-api/notifications/delete-apns-providers.mdx b/rest-api/notifications/delete-apns-providers.mdx deleted file mode 100644 index 2faec9928..000000000 --- a/rest-api/notifications/delete-apns-providers.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/apns/{providerId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a new APNS provider. - - - View all configured APNS providers. - - diff --git a/rest-api/notifications/delete-contact-details.mdx b/rest-api/notifications/delete-contact-details.mdx deleted file mode 100644 index 1364a391d..000000000 --- a/rest-api/notifications/delete-contact-details.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/v1/contact-details ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current contact details. - - - Modify contact details for a user. - - diff --git a/rest-api/notifications/delete-fcm-provider.mdx b/rest-api/notifications/delete-fcm-provider.mdx deleted file mode 100644 index bf0a67956..000000000 --- a/rest-api/notifications/delete-fcm-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/fcm/{providerId} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a new FCM provider. - - - View all configured FCM providers. - - diff --git a/rest-api/notifications/delete-sendgrid-credentials.mdx b/rest-api/notifications/delete-sendgrid-credentials.mdx deleted file mode 100644 index 1bbf26bc0..000000000 --- a/rest-api/notifications/delete-sendgrid-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/email/v1/providers/sendgrid ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current SendGrid configuration. - - - Configure SendGrid for the first time. - - diff --git a/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx deleted file mode 100644 index b82c97135..000000000 --- a/rest-api/notifications/delete-the-custom-provider-for-email-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/email/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom email provider. - - - Configure a custom email provider. - - diff --git a/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx deleted file mode 100644 index 3593f432a..000000000 --- a/rest-api/notifications/delete-the-custom-provider-for-push-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/push/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom push provider. - - - Configure a custom push provider. - - diff --git a/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx deleted file mode 100644 index 5739da4dd..000000000 --- a/rest-api/notifications/delete-the-custom-provider-for-sms-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/sms/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom SMS provider. - - - Configure a custom SMS provider. - - diff --git a/rest-api/notifications/delete-the-given-push-token.mdx b/rest-api/notifications/delete-the-given-push-token.mdx deleted file mode 100644 index 1b78ece22..000000000 --- a/rest-api/notifications/delete-the-given-push-token.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/push/v1/tokens/{pushToken} ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Register a new push token. - - - View all registered push tokens. - - diff --git a/rest-api/notifications/delete-twilio-credentials.mdx b/rest-api/notifications/delete-twilio-credentials.mdx deleted file mode 100644 index 0dc515d79..000000000 --- a/rest-api/notifications/delete-twilio-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/sms/v1/providers/twilio ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current Twilio configuration. - - - Configure Twilio for the first time. - - diff --git a/rest-api/notifications/get-contact-details.mdx b/rest-api/notifications/get-contact-details.mdx deleted file mode 100644 index 906839ef5..000000000 --- a/rest-api/notifications/get-contact-details.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/v1/contact-details ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Modify contact details for a user. - - - Remove contact details for a user. - - diff --git a/rest-api/notifications/get-custom-provider-for-email-notifications.mdx b/rest-api/notifications/get-custom-provider-for-email-notifications.mdx deleted file mode 100644 index 85cba0429..000000000 --- a/rest-api/notifications/get-custom-provider-for-email-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/email/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a custom email provider. - - - Remove the custom email provider. - - diff --git a/rest-api/notifications/get-custom-provider-for-push-notifications.mdx b/rest-api/notifications/get-custom-provider-for-push-notifications.mdx deleted file mode 100644 index 0aea56344..000000000 --- a/rest-api/notifications/get-custom-provider-for-push-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a custom push provider. - - - Remove the custom push provider. - - diff --git a/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx deleted file mode 100644 index 0efe7fbe1..000000000 --- a/rest-api/notifications/get-custom-provider-for-sms-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/sms/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a custom SMS provider. - - - Remove the custom SMS provider. - - diff --git a/rest-api/notifications/get-sendgrid-credentials.mdx b/rest-api/notifications/get-sendgrid-credentials.mdx deleted file mode 100644 index 829b97434..000000000 --- a/rest-api/notifications/get-sendgrid-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/email/v1/providers/sendgrid ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure SendGrid for the first time. - - - Remove SendGrid configuration. - - diff --git a/rest-api/notifications/get-timezone.mdx b/rest-api/notifications/get-timezone.mdx deleted file mode 100644 index 29b51e10a..000000000 --- a/rest-api/notifications/get-timezone.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -openapi: get /notifications/v1/preferences/timezone ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Change the user's notification timezone. - - - Modify notification preferences. - - diff --git a/rest-api/notifications/get-twilio-credentials.mdx b/rest-api/notifications/get-twilio-credentials.mdx deleted file mode 100644 index 22118d4b0..000000000 --- a/rest-api/notifications/get-twilio-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/sms/v1/providers/twilio ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure Twilio for the first time. - - - Remove Twilio configuration. - - diff --git a/rest-api/notifications/list-apns-providers.mdx b/rest-api/notifications/list-apns-providers.mdx deleted file mode 100644 index b889bba4f..000000000 --- a/rest-api/notifications/list-apns-providers.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/apns ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a new APNS provider. - - - Remove an APNS provider. - - diff --git a/rest-api/notifications/list-fcm-providers.mdx b/rest-api/notifications/list-fcm-providers.mdx deleted file mode 100644 index ff3b06e78..000000000 --- a/rest-api/notifications/list-fcm-providers.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/push/v1/providers/fcm ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Configure a new FCM provider. - - - Remove an FCM provider. - - diff --git a/rest-api/notifications/list-muted-conversations.mdx b/rest-api/notifications/list-muted-conversations.mdx deleted file mode 100644 index acef6e236..000000000 --- a/rest-api/notifications/list-muted-conversations.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/v1/preferences/mute ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Mute notifications for specific conversations. - - - Re-enable notifications for muted conversations. - - diff --git a/rest-api/notifications/list-preferences.mdx b/rest-api/notifications/list-preferences.mdx deleted file mode 100644 index f2fe0ad6d..000000000 --- a/rest-api/notifications/list-preferences.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/v1/preferences ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Modify notification preferences. - - - Reset preferences to defaults. - - diff --git a/rest-api/notifications/list-push-tokens.mdx b/rest-api/notifications/list-push-tokens.mdx deleted file mode 100644 index 443653d3a..000000000 --- a/rest-api/notifications/list-push-tokens.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: get /notifications/push/v1/tokens ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Register a new push token for a user. - - - Remove a specific push token. - - diff --git a/rest-api/notifications/list-settings.mdx b/rest-api/notifications/list-settings.mdx deleted file mode 100644 index 6b066de32..000000000 --- a/rest-api/notifications/list-settings.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -openapi: get /notifications/v1/settings ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Modify notification settings. - - - Reset settings to defaults. - - diff --git a/rest-api/notifications/mute-notifications-for-conversations.mdx b/rest-api/notifications/mute-notifications-for-conversations.mdx deleted file mode 100644 index 5887c838d..000000000 --- a/rest-api/notifications/mute-notifications-for-conversations.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/v1/preferences/mute ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Re-enable notifications for muted conversations. - - - View all currently muted conversations. - - diff --git a/rest-api/notifications/notifications-logs.mdx b/rest-api/notifications/notifications-logs.mdx deleted file mode 100644 index 4d23d7227..000000000 --- a/rest-api/notifications/notifications-logs.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -openapi: get /notifications/v1/logs ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current notification settings. - - - View current notification preferences. - - diff --git a/rest-api/notifications/register-push-token.mdx b/rest-api/notifications/register-push-token.mdx deleted file mode 100644 index 12e0faee5..000000000 --- a/rest-api/notifications/register-push-token.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/push/v1/tokens ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all registered push tokens for a user. - - - Remove a specific push token. - - diff --git a/rest-api/notifications/reset-preferences.mdx b/rest-api/notifications/reset-preferences.mdx deleted file mode 100644 index 34770dfa2..000000000 --- a/rest-api/notifications/reset-preferences.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/v1/preferences ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current notification preferences. - - - Modify notification preferences. - - diff --git a/rest-api/notifications/reset-settings.mdx b/rest-api/notifications/reset-settings.mdx deleted file mode 100644 index 886601fe0..000000000 --- a/rest-api/notifications/reset-settings.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -openapi: delete /notifications/v1/settings ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current notification settings. - - - Modify notification settings. - - diff --git a/rest-api/notifications/save-custom-provider-for-email-notifications.mdx b/rest-api/notifications/save-custom-provider-for-email-notifications.mdx deleted file mode 100644 index 8a93304fe..000000000 --- a/rest-api/notifications/save-custom-provider-for-email-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/email/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom email provider. - - - Remove the custom email provider. - - diff --git a/rest-api/notifications/save-custom-provider-for-push-notifications.mdx b/rest-api/notifications/save-custom-provider-for-push-notifications.mdx deleted file mode 100644 index 44f02cf06..000000000 --- a/rest-api/notifications/save-custom-provider-for-push-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/push/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom push provider. - - - Remove the custom push provider. - - diff --git a/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx deleted file mode 100644 index 59472a170..000000000 --- a/rest-api/notifications/save-custom-provider-for-sms-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/sms/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom SMS provider. - - - Remove the custom SMS provider. - - diff --git a/rest-api/notifications/save-sendgrid-credentials.mdx b/rest-api/notifications/save-sendgrid-credentials.mdx deleted file mode 100644 index 837f66af2..000000000 --- a/rest-api/notifications/save-sendgrid-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/email/v1/providers/sendgrid ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current SendGrid configuration. - - - Modify SendGrid credentials. - - diff --git a/rest-api/notifications/save-twilio-credentials.mdx b/rest-api/notifications/save-twilio-credentials.mdx deleted file mode 100644 index b369cb22d..000000000 --- a/rest-api/notifications/save-twilio-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: post /notifications/sms/v1/providers/twilio ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current Twilio configuration. - - - Remove Twilio configuration. - - diff --git a/rest-api/notifications/unmute-notifications-for-conversations.mdx b/rest-api/notifications/unmute-notifications-for-conversations.mdx deleted file mode 100644 index e5b077a1e..000000000 --- a/rest-api/notifications/unmute-notifications-for-conversations.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/v1/preferences/mute ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Mute notifications for specific conversations. - - - View all currently muted conversations. - - diff --git a/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx b/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx deleted file mode 100644 index 9168622e2..000000000 --- a/rest-api/notifications/unregister-push-tokens-for-authtoken.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: delete /notifications/push/v1/tokens ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - Register a new push token. - - - View all registered push tokens. - - diff --git a/rest-api/notifications/update-apns-providers.mdx b/rest-api/notifications/update-apns-providers.mdx deleted file mode 100644 index aeb218120..000000000 --- a/rest-api/notifications/update-apns-providers.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/apns ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured APNS providers. - - - Remove an APNS provider. - - diff --git a/rest-api/notifications/update-contact-details.mdx b/rest-api/notifications/update-contact-details.mdx deleted file mode 100644 index ae47e6038..000000000 --- a/rest-api/notifications/update-contact-details.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: patch /notifications/v1/contact-details ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current contact details. - - - Remove contact details for a user. - - diff --git a/rest-api/notifications/update-custom-provider-for-email-notifications.mdx b/rest-api/notifications/update-custom-provider-for-email-notifications.mdx deleted file mode 100644 index 26631029b..000000000 --- a/rest-api/notifications/update-custom-provider-for-email-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/email/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom email provider. - - - Remove the custom email provider. - - diff --git a/rest-api/notifications/update-custom-provider-for-push-notifications.mdx b/rest-api/notifications/update-custom-provider-for-push-notifications.mdx deleted file mode 100644 index 013a2f33e..000000000 --- a/rest-api/notifications/update-custom-provider-for-push-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom push provider. - - - Remove the custom push provider. - - diff --git a/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx b/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx deleted file mode 100644 index 1d2380ea7..000000000 --- a/rest-api/notifications/update-custom-provider-for-sms-notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/sms/v1/providers/custom ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current custom SMS provider. - - - Remove the custom SMS provider. - - diff --git a/rest-api/notifications/update-fcm-provider.mdx b/rest-api/notifications/update-fcm-provider.mdx deleted file mode 100644 index 6cb309452..000000000 --- a/rest-api/notifications/update-fcm-provider.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/push/v1/providers/fcm ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all configured FCM providers. - - - Remove an FCM provider. - - diff --git a/rest-api/notifications/update-preferences.mdx b/rest-api/notifications/update-preferences.mdx deleted file mode 100644 index ae26bcdfb..000000000 --- a/rest-api/notifications/update-preferences.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: patch /notifications/v1/preferences ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current notification preferences. - - - Reset preferences to defaults. - - diff --git a/rest-api/notifications/update-sendgrid-credentials.mdx b/rest-api/notifications/update-sendgrid-credentials.mdx deleted file mode 100644 index 8439557c7..000000000 --- a/rest-api/notifications/update-sendgrid-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/email/v1/providers/sendgrid ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current SendGrid configuration. - - - Remove SendGrid configuration. - - diff --git a/rest-api/notifications/update-settings.mdx b/rest-api/notifications/update-settings.mdx deleted file mode 100644 index 4c54e3953..000000000 --- a/rest-api/notifications/update-settings.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -openapi: patch /notifications/v1/settings ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current notification settings. - - - Reset settings to defaults. - - diff --git a/rest-api/notifications/update-timezone.mdx b/rest-api/notifications/update-timezone.mdx deleted file mode 100644 index 9fb3a51f0..000000000 --- a/rest-api/notifications/update-timezone.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -openapi: patch /notifications/v1/preferences/timezone ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View the current notification timezone. - - - Modify notification preferences. - - diff --git a/rest-api/notifications/update-twilio-credentials.mdx b/rest-api/notifications/update-twilio-credentials.mdx deleted file mode 100644 index 5863f39f2..000000000 --- a/rest-api/notifications/update-twilio-credentials.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -openapi: put /notifications/sms/v1/providers/twilio ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| --------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View current Twilio configuration. - - - Remove Twilio configuration. - - From 456a19d0942da45ae33e280766d62fc1880550aa Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 10:50:00 +0530 Subject: [PATCH 42/56] Removed orphans from REST API docs --- rest-api/calls.mdx | 79 ----------------------------------------- rest-api/get-call.mdx | 23 ------------ rest-api/list-calls.mdx | 15 -------- rest-api/moderation.mdx | 57 ----------------------------- 4 files changed, 174 deletions(-) delete mode 100644 rest-api/calls.mdx delete mode 100644 rest-api/get-call.mdx delete mode 100644 rest-api/list-calls.mdx delete mode 100644 rest-api/moderation.mdx diff --git a/rest-api/calls.mdx b/rest-api/calls.mdx deleted file mode 100644 index 0f86b44ea..000000000 --- a/rest-api/calls.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: "Overview" -description: "Retrieve call logs and session details for audio and video calls in your CometChat app." ---- - -The **Calls** API provides access to call logs and session details. You can retrieve information about call duration, participants, recordings, and status for both audio and video calls. - -### Key behaviors - -- A call can have up to **50 participants**. -- Video calls support resolutions from **180p to 720p**, depending on layout and bandwidth. -- Media is encrypted using **SRTP**. Audio uses the **OPUS** codec; video uses **H.264**. -- If a participant joins from multiple devices, each device is counted separately in `totalParticipants`. - -### How calls connect to other resources - -- **Users** — Calls are initiated by and delivered to [Users](/rest-api/users). Each participant is identified by their UID. -- **Groups** — Calls can target a [Group](/rest-api/groups) when `receiverType` is `groups`. - -### Available operations - -| Operation | Method | Endpoint | Description | -| ---------------------------------- | ------ | ------------------ | ----------------------------------- | -| [List Calls](/rest-api/list-calls) | `GET` | `/calls` | Retrieve a paginated list of calls | -| [Get Call](/rest-api/get-call) | `GET` | `/calls/{session}` | Retrieve details of a specific call | - -### Call properties - -| Property | Type | Description | -| -------------------------- | ---------------- | ----------------------------------------------------------------------------------------- | -| **sessionId** | string | Unique call identifier. | -| **type** | string | Call type: `audio` or `video`. | -| **mode** | string | Call mode: `call`, `meet`, or `presenter`. | -| **receiverType** | string | Receiver type: `users` or `groups`. | -| **status** | string | Current status: `initiated`, `ongoing`, `ended`, `unanswered`, `rejected`, or `canceled`. | -| **totalAudioMinutes** | float | Total audio minutes across all participants. | -| **totalVideoMinutes** | float | Total video minutes across all participants. | -| **totalDurationInMinutes** | float | Total call duration (audio + video minutes). | -| **totalDuration** | string | Total call duration in timer format (e.g., `00:05:30`). | -| **totalParticipants** | integer | Number of participant entries. Multi-device joins are counted separately. | -| **hasRecording** | boolean | Whether the call has a recording. | -| **startedAt** | integer | UNIX timestamp of when the call was initiated. | -| **endedAt** | integer | UNIX timestamp of when the call ended. | -| **participants** | array of objects | Details of individual participants (see below). | - -### Participant properties - -| Property | Type | Description | -| -------------------------- | ------- | ------------------------------------------------------------------- | -| **uid** | string | User's unique identifier. | -| **totalAudioMinutes** | float | Audio minutes for this participant. | -| **totalVideoMinutes** | float | Video minutes for this participant. | -| **totalDurationInMinutes** | float | Total call duration for this participant. | -| **deviceId** | string | Unique identifier of the device used to join. | -| **isJoined** | boolean | Whether the user joined the call. | -| **joinedAt** | integer | UNIX timestamp of when the user joined. | -| **leftAt** | integer | UNIX timestamp of when the user left the call. | -| **state** | string | Participant state: `ongoing`, `ended`, `unanswered`, or `rejected`. | - -### Recording properties - -| Property | Type | Description | -| ----------------- | ------- | --------------------------------------------- | -| **rid** | string | Unique recording identifier. | -| **duration** | float | Total recording duration in minutes. | -| **startTime** | integer | UNIX timestamp of when the recording started. | -| **endTime** | integer | UNIX timestamp of when the recording ended. | -| **recording_url** | string | URL to the call recording file. | - -### Error handling - -| Error Code | Description | -| --------------------------- | ------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | -| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | - -For the complete list of error codes, see [Error Guide](/articles/error-guide). - -For all system limits (participant caps, codec details, resolution ranges, etc.), see [Properties and Constraints](/articles/properties-and-constraints). diff --git a/rest-api/get-call.mdx b/rest-api/get-call.mdx deleted file mode 100644 index 3e1238b16..000000000 --- a/rest-api/get-call.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -openapi: get /calls/{sessionId} -description: "Retrieves details of a specific call session" ---- - -## Common errors - -| Error Code | HTTP Status | Cause | -| ---------------------------- | ----------- | -------------------------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | -| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid or does not exist | -| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope for this operation | -| `ERR_CALL_SESSION_NOT_FOUND` | 404 | No call session exists with the specified session ID | - -For the complete error reference, see [Error Guide](/articles/error-guide). - -## Related - - - - View all call records. - - diff --git a/rest-api/list-calls.mdx b/rest-api/list-calls.mdx deleted file mode 100644 index 489064f8b..000000000 --- a/rest-api/list-calls.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -openapi: get /calls -description: "Lists all calls in the app" ---- - -## Constraints - -| Item | Constraint | Notes | -| ---- | ---------- | ----- | -| Maximum users in a call | 50 | Supports both one-on-one and group calling; works best with 50 participants | -| Default video frame rate | 30 FPS | May adapt based on network conditions | -| Video resolution | 180p - 720p | Depends on layout selected and user bandwidth | -| Media encryption | SRTP | Ensures secure real-time communication | -| Audio codec | OPUS | Optimized for low-latency voice communication | -| Video codec | H.264 | Widely supported for cross-platform compatibility | \ No newline at end of file diff --git a/rest-api/moderation.mdx b/rest-api/moderation.mdx deleted file mode 100644 index a33fb7e79..000000000 --- a/rest-api/moderation.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Overview" -description: "Create and manage content moderation rules to maintain a safe environment across your CometChat app." ---- - -The **Moderation** API provides endpoints for managing content moderation rules and keyword lists. You can define rules that automatically detect and block inappropriate content in messages, including text profanity, AI-based image/video moderation, and custom keyword filters. - -### Key behaviors - -- Default rules cover text profanity, AI-based image/video moderation, custom profanity, contact details, and email content. -- Text and custom profanity filters scan for words (including regex patterns) and drop the message if a violation is detected. -- AI-based image/video moderation scans attachments and discards the message if a violation is found. -- When a rule is violated, the message is blocked. Optionally, the sender can be kicked or banned (in groups) or blocked (in 1-on-1 conversations). - -### How moderation connects to other resources - -- **Messages** — Moderation rules are evaluated against [Messages](/rest-api/messages) in real time before delivery. -- **Groups** — Violations in group messages can trigger member kicks or bans via [Group Members](/rest-api/group-members) and [Banned Users](/rest-api/banned-users). -- **Blocked Users** — Violations in 1-on-1 messages can trigger a [block](/rest-api/blocked-users) on the sender. - -### AI image and video moderation labels - -The following labels can be attached to a rule to moderate specific categories of images and videos: - -| Label | Description | -| --------------------- | ------------------------------------------------------------------------------------------------ | -| Violence | Instruments or devices used to cause harm — firearms, sharp weapons, explosives, and ammunition. | -| Alcohol | Drinking alcoholic beverages from bottles or glasses. | -| Gambling | Participating in games of chance — cards, roulette, slot machines. | -| Drugs & Tobacco | Tablets, capsules, or the act of smoking cigarettes, cigars, e-cigarettes, hookah, or joints. | -| Rude gestures | Hand gesture with the middle finger extended. | -| Explicit Nudity | Visible human genitalia. | -| Non-Explicit Nudity | Exposed human back from neck to spine without full occlusion. | -| Swimwear or underwear | Swimwear or undergarments — bikinis, swim trunks, swim briefs, etc. | -| Visually Disturbing | Extremely thin, undernourished human bodies with severe physical wasting. | -| Hate symbols | Symbols, flags, or gestures associated with extremist or terrorist groups. | - -### Available operations - -| Operation | Description | -| --------------------- | ----------------------------------------------------------------------------------------- | -| Rules Management | Create, read, update, and delete moderation rules that define how content is evaluated. | -| Keywords Management | Create and manage keyword lists or regex patterns used for text-based content moderation. | -| List Blocked Messages | Retrieve all messages that violated moderation rules. | -| Rule Revision History | Fetch historical revisions of a rule, showing all updates made over time. | - -### Error handling - -| Error Code | Description | -| --------------------------- | ------------------------------------------- | -| `AUTH_ERR_EMPTY_APIKEY` | API key is missing from the request headers | -| `AUTH_ERR_APIKEY_NOT_FOUND` | The provided API key is invalid | -| `AUTH_ERR_NO_ACCESS` | The API key doesn't have the required scope | - -For the complete list of error codes, see [Error Guide](/articles/error-guide). - -For all system limits, see [Properties and Constraints](/articles/properties-and-constraints). From c2cb6f62a251eeca7876d47f65532a31950028ca Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 11:02:46 +0530 Subject: [PATCH 43/56] fixed broken links --- rest-api/chat-apis.mdx | 2 +- rest-api/users.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 217731301..7d0e07e9b 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -20,7 +20,7 @@ Welcome to CometChat's REST API documentation! This documentation provides detai | [Banned Users](/rest-api/banned-users) | Ban and unban users from groups | | [Roles](/rest-api/roles) | Create and manage user roles | | [API Keys](/rest-api/api-keys) | Create and manage API keys | -| [Calls](/rest-api/get-call) | Retrieve and list call records | +| [Calls](/rest-api/calls-apis/overview) | Retrieve and list call records | | [RBAC](/rest-api/rbac-overview) | Configure role-based and scope-based access control | | [Restrict Features](/rest-api/restrict-features) | Restrict features per role | | [Notifications](/rest-api/notifications-apis) | Manage push and other notifications | diff --git a/rest-api/users.mdx b/rest-api/users.mdx index 289cec13e..bea0656ea 100644 --- a/rest-api/users.mdx +++ b/rest-api/users.mdx @@ -18,7 +18,7 @@ A **User** is the core identity in CometChat. Every person (or bot) that sends m 1. [Create a User](/rest-api/users/create) with `withAuthToken: true` to get an auth token in the same call. 2. Use the auth token to initialize the CometChat SDK on the client. -3. The user can now [send messages](/rest-api/messages), [join groups](/rest-api/groups), and [make calls](/rest-api/calls). +3. The user can now [send messages](/rest-api/messages), [join groups](/rest-api/groups), and [make calls](/rest-api/calls-apis/overview). UIDs are automatically converted to lowercase during creation. For example, From 6924b7ffc3e99b4613f980c30cb0b11489ec340d Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 12:38:25 +0530 Subject: [PATCH 44/56] Added page descriptions for AEO friendliness --- rest-api/ai-agents-apis/agents/create-agent.mdx | 1 + rest-api/ai-agents-apis/agents/delete-agent.mdx | 1 + rest-api/ai-agents-apis/agents/get-agent.mdx | 1 + rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx | 1 + rest-api/ai-agents-apis/agents/list-agents.mdx | 1 + rest-api/ai-agents-apis/agents/search-agent-tools.mdx | 1 + rest-api/ai-agents-apis/agents/update-agent.mdx | 1 + .../ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx | 1 + rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx | 1 + rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx | 1 + rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx | 1 + .../custom-api-tools/remove-api-tools-from-agent.mdx | 1 + rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx | 1 + rest-api/ai-agents-apis/error-codes.mdx | 1 + .../frontend-actions/add-frontend-actions-to-agent.mdx | 1 + .../ai-agents-apis/frontend-actions/create-frontend-action.mdx | 1 + .../ai-agents-apis/frontend-actions/delete-frontend-action.mdx | 1 + .../ai-agents-apis/frontend-actions/list-frontend-actions.mdx | 1 + .../frontend-actions/remove-frontend-actions-from-agent.mdx | 1 + .../ai-agents-apis/frontend-actions/update-frontend-action.mdx | 1 + .../ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/delete-website.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx | 1 + .../knowledge-base/list-knowledge-base-records.mdx | 1 + .../knowledge-base/poll-discovered-urls-status.mdx | 1 + .../ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx | 1 + .../ai-agents-apis/knowledge-base/process-discovered-urls.mdx | 1 + .../knowledge-base/remove-knowledge-base-files.mdx | 1 + .../knowledge-base/retry-indexing-for-website-pages.mdx | 1 + .../knowledge-base/retry-knowledge-base-source-indexing.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx | 1 + rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx | 1 + rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx | 1 + rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx | 1 + rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx | 1 + rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx | 1 + .../ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx | 1 + rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx | 1 + rest-api/ai-agents-apis/overview.mdx | 1 + rest-api/ai-agents-apis/properties-and-constraints.mdx | 1 + rest-api/ai-agents-apis/setup-and-authentication.mdx | 1 + rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx | 1 + rest-api/ai-agents-apis/tools/enable-tool-actions.mdx | 1 + rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx | 1 + rest-api/ai-agents-apis/tools/remove-tool-actions.mdx | 1 + rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx | 1 + rest-api/ai-agents-apis/users-and-groups.mdx | 1 + rest-api/ai-agents-apis/variables/create-custom-variable.mdx | 1 + rest-api/ai-agents-apis/variables/delete-custom-variable.mdx | 1 + .../ai-agents-apis/variables/get-all-available-variables.mdx | 1 + rest-api/ai-agents-apis/variables/update-custom-variable.mdx | 1 + rest-api/api-keys/create.mdx | 1 + rest-api/api-keys/delete.mdx | 1 + rest-api/api-keys/get.mdx | 1 + rest-api/api-keys/list.mdx | 1 + rest-api/api-keys/update.mdx | 1 + rest-api/auth-tokens/create.mdx | 1 + rest-api/auth-tokens/delete.mdx | 1 + rest-api/auth-tokens/flush.mdx | 1 + rest-api/auth-tokens/get.mdx | 1 + rest-api/auth-tokens/list.mdx | 1 + rest-api/auth-tokens/update.mdx | 1 + rest-api/banned-users/ban.mdx | 1 + rest-api/banned-users/list.mdx | 1 + rest-api/banned-users/unban.mdx | 1 + rest-api/blocked-users/block-user.mdx | 1 + rest-api/blocked-users/list-blocked-users.mdx | 1 + rest-api/blocked-users/unblock-user.mdx | 1 + rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx | 1 + rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx | 1 + rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx | 1 + rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx | 1 + rest-api/byo-ai-agents-apis/error-codes.mdx | 1 + rest-api/byo-ai-agents-apis/overview.mdx | 1 + rest-api/byo-ai-agents-apis/properties-and-constraints.mdx | 1 + rest-api/byo-ai-agents-apis/setup-and-authentication.mdx | 1 + rest-api/byo-ai-agents-apis/tools/create-tool.mdx | 1 + rest-api/byo-ai-agents-apis/tools/delete-tool.mdx | 1 + rest-api/byo-ai-agents-apis/tools/get-tool.mdx | 1 + rest-api/byo-ai-agents-apis/tools/list-tools.mdx | 1 + rest-api/byo-ai-agents-apis/tools/update-tool.mdx | 1 + rest-api/byo-ai-agents-apis/users-and-groups.mdx | 1 + rest-api/calls-apis/error-codes.mdx | 1 + rest-api/calls-apis/get-call.mdx | 1 + rest-api/calls-apis/list-calls.mdx | 1 + rest-api/calls-apis/properties-and-constraints.mdx | 1 + rest-api/calls-apis/setup-and-authentication.mdx | 1 + rest-api/calls-apis/users-and-groups.mdx | 1 + rest-api/calls-link.mdx | 1 + rest-api/conversations/delete-conversation.mdx | 1 + rest-api/conversations/get-conversation.mdx | 1 + rest-api/conversations/get-group-conversation.mdx | 1 + rest-api/conversations/get-user-conversation.mdx | 1 + rest-api/conversations/list-conversations.mdx | 1 + rest-api/conversations/mark-conversation-messages-as-unread.mdx | 1 + rest-api/conversations/mark-group-conversation-as-delivered.mdx | 1 + rest-api/conversations/mark-group-conversation-as-read.mdx | 1 + rest-api/conversations/mark-group-conversation-as-unread.mdx | 1 + rest-api/conversations/mark-user-conversation-as-delivered.mdx | 1 + rest-api/conversations/mark-user-conversation-as-read.mdx | 1 + rest-api/conversations/reset-group-conversation.mdx | 1 + rest-api/conversations/reset-user-conversation.mdx | 1 + rest-api/conversations/update-group-conversation.mdx | 1 + rest-api/conversations/update-user-conversation.mdx | 1 + rest-api/data-import-apis/groups/import-group-members.mdx | 1 + rest-api/data-import-apis/groups/import-groups.mdx | 1 + rest-api/data-import-apis/messages/import-messages.mdx | 1 + rest-api/data-import-apis/users/import-users.mdx | 1 + rest-api/friends/add-friends.mdx | 1 + rest-api/friends/list-friends.mdx | 1 + rest-api/friends/remove-friends.mdx | 1 + rest-api/group-members/add-members.mdx | 1 + rest-api/group-members/change-scope.mdx | 1 + rest-api/group-members/kick.mdx | 1 + rest-api/group-members/list.mdx | 1 + rest-api/groups/create.mdx | 1 + rest-api/groups/delete.mdx | 1 + rest-api/groups/get.mdx | 1 + rest-api/groups/list.mdx | 1 + rest-api/groups/update.mdx | 1 + rest-api/management-apis/app/create.mdx | 1 + rest-api/management-apis/app/delete.mdx | 1 + rest-api/management-apis/app/fetch-usage.mdx | 1 + rest-api/management-apis/app/list.mdx | 1 + rest-api/management-apis/error-codes.mdx | 1 + rest-api/management-apis/extensions/bitly-delete-settings.mdx | 1 + rest-api/management-apis/extensions/bitly-get-settings.mdx | 1 + rest-api/management-apis/extensions/bitly-store-settings.mdx | 1 + rest-api/management-apis/extensions/bitly-update-settings.mdx | 1 + rest-api/management-apis/extensions/chat-widgets-create.mdx | 1 + rest-api/management-apis/extensions/chat-widgets-list.mdx | 1 + rest-api/management-apis/extensions/chat-widgets-update.mdx | 1 + rest-api/management-apis/extensions/chatwoot-delete-settings.mdx | 1 + rest-api/management-apis/extensions/chatwoot-get-settings.mdx | 1 + rest-api/management-apis/extensions/chatwoot-store-settings.mdx | 1 + rest-api/management-apis/extensions/chatwoot-update-settings.mdx | 1 + .../management-apis/extensions/data-masking-delete-settings.mdx | 1 + .../management-apis/extensions/data-masking-get-settings.mdx | 1 + .../extensions/data-masking-store-or-update-settings.mdx | 1 + .../extensions/email-notification-delete-settings.mdx | 1 + .../extensions/email-notification-get-settings.mdx | 1 + .../extensions/email-notification-store-settings.mdx | 1 + .../extensions/email-notification-update-settings.mdx | 1 + .../management-apis/extensions/email-replies-delete-settings.mdx | 1 + .../management-apis/extensions/email-replies-get-settings.mdx | 1 + .../management-apis/extensions/email-replies-store-settings.mdx | 1 + .../management-apis/extensions/email-replies-update-settings.mdx | 1 + rest-api/management-apis/extensions/enabledisable.mdx | 1 + .../extensions/end-to-end-encryption-delete-settings.mdx | 1 + .../extensions/end-to-end-encryption-get-settings.mdx | 1 + .../extensions/end-to-end-encryption-store-settings.mdx | 1 + .../extensions/end-to-end-encryption-update-settings.mdx | 1 + .../extensions/giphy-delete-settings-for-giphy.mdx | 1 + rest-api/management-apis/extensions/giphy-get-settings.mdx | 1 + rest-api/management-apis/extensions/giphy-store-settings.mdx | 1 + rest-api/management-apis/extensions/giphy-update-settings.mdx | 1 + .../extensions/image-moderation-delete-settings.mdx | 1 + .../management-apis/extensions/image-moderation-get-settings.mdx | 1 + .../extensions/image-moderation-store-settings.mdx | 1 + .../extensions/image-moderation-update-settings.mdx | 1 + .../extensions/in-flight-message-moderation-delete-settings.mdx | 1 + .../extensions/in-flight-message-moderation-get-settings.mdx | 1 + .../extensions/in-flight-message-moderation-store-settings.mdx | 1 + .../extensions/in-flight-message-moderation-update-settings.mdx | 1 + rest-api/management-apis/extensions/intercom-delete-settings.mdx | 1 + rest-api/management-apis/extensions/intercom-get-settings.mdx | 1 + rest-api/management-apis/extensions/intercom-store-settings.mdx | 1 + rest-api/management-apis/extensions/intercom-update-settings.mdx | 1 + rest-api/management-apis/extensions/list-extensions.mdx | 1 + .../extensions/message-shortcuts-delete-settings.mdx | 1 + .../extensions/message-shortcuts-get-settings.mdx | 1 + .../extensions/message-shortcuts-store-settings.mdx | 1 + .../extensions/message-shortcuts-update-settings.mdx | 1 + .../extensions/profanity-filter-adds-settings.mdx | 1 + .../extensions/profanity-filter-delete-settings.mdx | 1 + .../management-apis/extensions/profanity-filter-get-settings.mdx | 1 + .../extensions/profanity-filter-update-settings.mdx | 1 + .../extensions/push-notification-delete-settings.mdx | 1 + .../extensions/push-notification-get-certificate.mdx | 1 + .../extensions/push-notification-get-settings.mdx | 1 + .../extensions/push-notification-store-settings.mdx | 1 + .../extensions/push-notification-update-settings.mdx | 1 + .../extensions/push-notification-upload-p12-certificate.mdx | 1 + .../extensions/push-notification-upload-p8-certificate.mdx | 1 + .../extensions/report-message-delete-settings.mdx | 1 + .../management-apis/extensions/report-message-get-settings.mdx | 1 + .../management-apis/extensions/report-message-store-settings.mdx | 1 + .../extensions/report-message-update-settings.mdx | 1 + .../management-apis/extensions/report-user-delete-settings.mdx | 1 + rest-api/management-apis/extensions/report-user-get-settings.mdx | 1 + .../management-apis/extensions/report-user-store-settings.mdx | 1 + .../management-apis/extensions/report-user-update-settings.mdx | 1 + .../extensions/rich-media-preview-delete-settings.mdx | 1 + .../extensions/rich-media-preview-get-settings.mdx | 1 + .../extensions/rich-media-preview-store-settings.mdx | 1 + .../extensions/rich-media-preview-update-settings.mdx | 1 + .../extensions/sentiment-analysis-delete-settings.mdx | 1 + .../extensions/sentiment-analysis-get-settings.mdx | 1 + .../extensions/sentiment-analysis-store-settings.mdx | 1 + .../extensions/sentiment-analysis-update-settings.mdx | 1 + .../extensions/sms-notification-delete-settings.mdx | 1 + .../management-apis/extensions/sms-notification-get-settings.mdx | 1 + .../extensions/sms-notification-store-settings.mdx | 1 + .../extensions/sms-notification-update-settings.mdx | 1 + .../extensions/stickers-extension-delete-settings.mdx | 1 + .../extensions/stickers-extension-get-settings.mdx | 1 + .../extensions/stickers-extension-update-settings.mdx | 1 + rest-api/management-apis/extensions/stipop-delete-settings.mdx | 1 + rest-api/management-apis/extensions/stipop-get-settings.mdx | 1 + rest-api/management-apis/extensions/stipop-store-settings.mdx | 1 + rest-api/management-apis/extensions/stipop-update-settings.mdx | 1 + .../management-apis/extensions/tenor-gifs-delete-settings.mdx | 1 + rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx | 1 + .../management-apis/extensions/tenor-gifs-store-settings.mdx | 1 + .../management-apis/extensions/tenor-gifs-update-settings.mdx | 1 + rest-api/management-apis/extensions/tinyurl-delete-settings.mdx | 1 + rest-api/management-apis/extensions/tinyurl-get-settings.mdx | 1 + rest-api/management-apis/extensions/tinyurl-store-settings.mdx | 1 + rest-api/management-apis/extensions/tinyurl-update-settings.mdx | 1 + .../extensions/video-broadcasting-delete-settings.mdx | 1 + .../extensions/video-broadcasting-get-settings.mdx | 1 + .../extensions/video-broadcasting-store-settings.mdx | 1 + .../extensions/video-broadcasting-update-settings.mdx | 1 + .../extensions/virus-malware-scanner-delete-settings.mdx | 1 + .../extensions/virus-malware-scanner-get-settings.mdx | 1 + .../extensions/virus-malware-scanner-store-settings.mdx | 1 + .../extensions/virus-malware-scanner-update-settings.mdx | 1 + .../extensions/voice-transcription-delete-settings.mdx | 1 + .../extensions/voice-transcription-get-settings.mdx | 1 + .../extensions/voice-transcription-store-settings.mdx | 1 + .../extensions/voice-transcription-update-settings.mdx | 1 + .../management-apis/extensions/xss-filter-delete-settings.mdx | 1 + rest-api/management-apis/extensions/xss-filter-get-settings.mdx | 1 + .../management-apis/extensions/xss-filter-store-settings.mdx | 1 + .../management-apis/extensions/xss-filter-update-settings.mdx | 1 + rest-api/management-apis/properties-and-constraints.mdx | 1 + rest-api/management-apis/settings/list-settings.mdx | 1 + rest-api/management-apis/settings/maps-settings.mdx | 1 + rest-api/management-apis/settings/unmaps-settings.mdx | 1 + .../management-apis/team-management/addsremove-collaborators.mdx | 1 + rest-api/management-apis/team-management/list-collaborators.mdx | 1 + rest-api/management-apis/webhooks/add-triggers.mdx | 1 + rest-api/management-apis/webhooks/create-webhook.mdx | 1 + rest-api/management-apis/webhooks/delete-webhook.mdx | 1 + rest-api/management-apis/webhooks/get-webhook.mdx | 1 + rest-api/management-apis/webhooks/list-triggers.mdx | 1 + rest-api/management-apis/webhooks/list-webhooks.mdx | 1 + rest-api/management-apis/webhooks/overview.mdx | 1 + rest-api/management-apis/webhooks/remove-triggers.mdx | 1 + rest-api/management-apis/webhooks/update-webhook.mdx | 1 + rest-api/messages/add-reaction.mdx | 1 + rest-api/messages/delete-message.mdx | 1 + rest-api/messages/get-message.mdx | 1 + rest-api/messages/list-all-reactions.mdx | 1 + rest-api/messages/list-group-messages.mdx | 1 + rest-api/messages/list-messages.mdx | 1 + .../messages/list-reactions-with-a-specific-emoji-unicode.mdx | 1 + rest-api/messages/list-threaded-messages.mdx | 1 + rest-api/messages/list-user-messages.mdx | 1 + rest-api/messages/remove-reaction.mdx | 1 + rest-api/messages/send-bot-message.mdx | 1 + rest-api/messages/send-message.mdx | 1 + rest-api/messages/send-threaded-message.mdx | 1 + rest-api/messages/update-message.mdx | 1 + rest-api/metrics/message-metrics.mdx | 1 + rest-api/metrics/usage-metrics.mdx | 1 + rest-api/moderation-apis/add-keywords.mdx | 1 + rest-api/moderation-apis/add-rule.mdx | 1 + rest-api/moderation-apis/approve-blocked-messages.mdx | 1 + rest-api/moderation-apis/blockreview-flagged-message.mdx | 1 + rest-api/moderation-apis/create-reasons.mdx | 1 + rest-api/moderation-apis/delete-reasons.mdx | 1 + rest-api/moderation-apis/error-codes.mdx | 1 + rest-api/moderation-apis/flag-a-message.mdx | 1 + rest-api/moderation-apis/get-keyword.mdx | 1 + rest-api/moderation-apis/get-reason-details.mdx | 1 + rest-api/moderation-apis/get-rule-revisions.mdx | 1 + rest-api/moderation-apis/get-rule.mdx | 1 + rest-api/moderation-apis/list-blocked-messages.mdx | 1 + rest-api/moderation-apis/list-flagged-messages.mdx | 1 + rest-api/moderation-apis/list-keywords.mdx | 1 + rest-api/moderation-apis/list-reasons.mdx | 1 + rest-api/moderation-apis/list-reviewed-messages.mdx | 1 + rest-api/moderation-apis/list-rules.mdx | 1 + rest-api/moderation-apis/properties-and-constraints.mdx | 1 + rest-api/moderation-apis/remove-keyword.mdx | 1 + rest-api/moderation-apis/remove-rule.mdx | 1 + rest-api/moderation-apis/review-blocked-message.mdx | 1 + rest-api/moderation-apis/setup-and-authentication.mdx | 1 + rest-api/moderation-apis/update-keyword.mdx | 1 + rest-api/moderation-apis/update-reason-details.mdx | 1 + rest-api/moderation-apis/update-rule.mdx | 1 + rest-api/moderation-apis/users-and-groups.mdx | 1 + rest-api/moderation-link.mdx | 1 + rest-api/notifications-apis/email/delete-custom-provider.mdx | 1 + .../notifications-apis/email/delete-sendgrid-credentials.mdx | 1 + rest-api/notifications-apis/email/get-custom-provider.mdx | 1 + rest-api/notifications-apis/email/get-sendgrid-credentials.mdx | 1 + rest-api/notifications-apis/email/save-custom-provider.mdx | 1 + rest-api/notifications-apis/email/save-sendgrid-credentials.mdx | 1 + rest-api/notifications-apis/email/update-custom-provider.mdx | 1 + .../notifications-apis/email/update-sendgrid-credentials.mdx | 1 + rest-api/notifications-apis/error-codes.mdx | 1 + rest-api/notifications-apis/properties-and-constraints.mdx | 1 + rest-api/notifications-apis/push/add-apns-provider.mdx | 1 + rest-api/notifications-apis/push/add-fcm-provider.mdx | 1 + .../notifications-apis/push/change-default-apns-provider.mdx | 1 + rest-api/notifications-apis/push/change-default-fcm-provider.mdx | 1 + rest-api/notifications-apis/push/delete-apns-providers.mdx | 1 + rest-api/notifications-apis/push/delete-contact-details.mdx | 1 + rest-api/notifications-apis/push/delete-custom-provider.mdx | 1 + rest-api/notifications-apis/push/delete-fcm-provider.mdx | 1 + rest-api/notifications-apis/push/delete-push-token.mdx | 1 + rest-api/notifications-apis/push/get-contact-details.mdx | 1 + rest-api/notifications-apis/push/get-custom-provider.mdx | 1 + rest-api/notifications-apis/push/get-timezone.mdx | 1 + rest-api/notifications-apis/push/list-apns-providers.mdx | 1 + rest-api/notifications-apis/push/list-fcm-providers.mdx | 1 + rest-api/notifications-apis/push/list-muted-conversations.mdx | 1 + rest-api/notifications-apis/push/list-preferences.mdx | 1 + rest-api/notifications-apis/push/list-push-tokens.mdx | 1 + rest-api/notifications-apis/push/list-settings.mdx | 1 + rest-api/notifications-apis/push/mute-conversations.mdx | 1 + rest-api/notifications-apis/push/notifications-logs.mdx | 1 + rest-api/notifications-apis/push/register-push-token.mdx | 1 + rest-api/notifications-apis/push/reset-preferences.mdx | 1 + rest-api/notifications-apis/push/reset-settings.mdx | 1 + rest-api/notifications-apis/push/save-custom-provider.mdx | 1 + rest-api/notifications-apis/push/unmute-conversations.mdx | 1 + rest-api/notifications-apis/push/unregister-push-tokens.mdx | 1 + rest-api/notifications-apis/push/update-apns-providers.mdx | 1 + rest-api/notifications-apis/push/update-contact-details.mdx | 1 + rest-api/notifications-apis/push/update-custom-provider.mdx | 1 + rest-api/notifications-apis/push/update-fcm-provider.mdx | 1 + rest-api/notifications-apis/push/update-preferences.mdx | 1 + rest-api/notifications-apis/push/update-settings.mdx | 1 + rest-api/notifications-apis/push/update-timezone.mdx | 1 + rest-api/notifications-apis/setup-and-authentication.mdx | 1 + rest-api/notifications-apis/sms/delete-custom-provider.mdx | 1 + rest-api/notifications-apis/sms/delete-twilio-credentials.mdx | 1 + rest-api/notifications-apis/sms/get-custom-provider.mdx | 1 + rest-api/notifications-apis/sms/get-twilio-credentials.mdx | 1 + rest-api/notifications-apis/sms/save-custom-provider.mdx | 1 + rest-api/notifications-apis/sms/save-twilio-credentials.mdx | 1 + rest-api/notifications-apis/sms/update-custom-provider.mdx | 1 + rest-api/notifications-apis/sms/update-twilio-credentials.mdx | 1 + rest-api/notifications-apis/users-and-groups.mdx | 1 + rest-api/notifications-link.mdx | 1 + rest-api/rbac/list-role-permissions.mdx | 1 + rest-api/rbac/list-scope-permissions.mdx | 1 + rest-api/rbac/set-role-permissions.mdx | 1 + rest-api/rbac/set-scope-permissions.mdx | 1 + rest-api/rbac/unset-role-permissions.mdx | 1 + rest-api/rbac/unset-scope-permissions.mdx | 1 + rest-api/restrict-features/allow-features.mdx | 1 + rest-api/restrict-features/list-restricted-features.mdx | 1 + rest-api/restrict-features/restrict-features.mdx | 1 + rest-api/roles/create.mdx | 1 + rest-api/roles/delete.mdx | 1 + rest-api/roles/get.mdx | 1 + rest-api/roles/list.mdx | 1 + rest-api/roles/update.mdx | 1 + rest-api/users/create.mdx | 1 + rest-api/users/deactivate.mdx | 1 + rest-api/users/delete.mdx | 1 + rest-api/users/get.mdx | 1 + rest-api/users/list.mdx | 1 + rest-api/users/reactivate.mdx | 1 + rest-api/users/update.mdx | 1 + 375 files changed, 375 insertions(+) diff --git a/rest-api/ai-agents-apis/agents/create-agent.mdx b/rest-api/ai-agents-apis/agents/create-agent.mdx index ea136b527..768b51ed0 100644 --- a/rest-api/ai-agents-apis/agents/create-agent.mdx +++ b/rest-api/ai-agents-apis/agents/create-agent.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/agents +description: "Creates a new agent with optional tools, API tools, MCP servers, and frontend actions. Use this endpoint to set up a fully configured agent in a single request. **Validation:** All referenced tools," --- diff --git a/rest-api/ai-agents-apis/agents/delete-agent.mdx b/rest-api/ai-agents-apis/agents/delete-agent.mdx index 1a496aa85..ad1b87743 100644 --- a/rest-api/ai-agents-apis/agents/delete-agent.mdx +++ b/rest-api/ai-agents-apis/agents/delete-agent.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/agents/{uid} +description: "Deletes an agent by its UID." --- diff --git a/rest-api/ai-agents-apis/agents/get-agent.mdx b/rest-api/ai-agents-apis/agents/get-agent.mdx index c78ad4837..91a12f73d 100644 --- a/rest-api/ai-agents-apis/agents/get-agent.mdx +++ b/rest-api/ai-agents-apis/agents/get-agent.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/{uid} +description: "Retrieves a specific agent by its UID. Use this endpoint to inspect an agent's full configuration, including its tools, model, and instructions." --- diff --git a/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx index 97ad7ca63..2094e1365 100644 --- a/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx +++ b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/{uid}/enabled-items +description: "Retrieves all enabled items for a specific agent, categorized by type. Use this endpoint to see which tools, frontend actions, API tools, and MCP servers are currently enabled for an agent. **Categor" --- diff --git a/rest-api/ai-agents-apis/agents/list-agents.mdx b/rest-api/ai-agents-apis/agents/list-agents.mdx index 83c5d0c0f..0d7b9070c 100644 --- a/rest-api/ai-agents-apis/agents/list-agents.mdx +++ b/rest-api/ai-agents-apis/agents/list-agents.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents +description: "Retrieves a paginated list of agents for your CometChat app. Use this endpoint to browse, search, and manage your agents. **Search:** Use the `search` parameter to filter agents by name, description," --- diff --git a/rest-api/ai-agents-apis/agents/search-agent-tools.mdx b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx index 521943845..72085abaf 100644 --- a/rest-api/ai-agents-apis/agents/search-agent-tools.mdx +++ b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/{uid}/tools/search +description: "Searches across all tool types available for an agent, including ready-to-use tools, API tools, and MCP servers. Use this endpoint to find specific tools across all categories. **Filtering:** Use the" --- diff --git a/rest-api/ai-agents-apis/agents/update-agent.mdx b/rest-api/ai-agents-apis/agents/update-agent.mdx index 4555de01a..12118dfb1 100644 --- a/rest-api/ai-agents-apis/agents/update-agent.mdx +++ b/rest-api/ai-agents-apis/agents/update-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid} +description: "Updates an existing agent by its UID. Use this endpoint to modify an agent's configuration, instructions, model, or connected tools. **Validation:** Referenced tools, API tools, and MCP servers are v" --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx index ff80f873c..ef07c51fd 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/add +description: "Adds one or more API tools to a specific agent. Use this endpoint to give an agent access to custom API tool integrations. **Request body:** The `apiTools` array contains API tool slugs. Returns the" --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx index 833a8214b..22e93694f 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/api-tools +description: "Creates a new API tool configuration for the application. Use this endpoint to define a custom API endpoint that agents can call during conversations. **Uniqueness:** The slug must be unique per appl" --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx index bf04a9cd8..f5736e8e3 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/api-tools/{slug} +description: "Deletes an API tool by its slug." --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx index e9ea65da8..a06e0d806 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/api-tools +description: "Retrieves a paginated list of API tools for the application. Use this endpoint to browse and manage custom API tool configurations." --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx index 23edeb189..1c60b92dc 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/remove +description: "Removes one or more API tools from a specific agent. Use this endpoint to revoke API tool access from an agent. **Request body:** The `apiTools` array contains API tool slugs to remove. Returns the u" --- diff --git a/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx index 5ce342fff..ff2f00dde 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/api-tools/{slug} +description: "Updates an existing API tool by its slug. Use this endpoint to modify an API tool's parameters, description, or endpoint configuration." --- diff --git a/rest-api/ai-agents-apis/error-codes.mdx b/rest-api/ai-agents-apis/error-codes.mdx index 67d3014e8..ae7c601c1 100644 --- a/rest-api/ai-agents-apis/error-codes.mdx +++ b/rest-api/ai-agents-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the Agent Builder APIs. diff --git a/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx index caff2e3e6..90e154ba5 100644 --- a/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/add +description: "Adds one or more frontend actions to a specific agent. Use this endpoint to enable an agent to trigger client-side UI operations. **Frontend actions** allow agents to interact with the user interface" --- diff --git a/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx index 6ba5b596d..55ba85bca 100644 --- a/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/frontend-actions +description: "Creates a new frontend action for the application. Use this endpoint to define a client-side UI operation that agents can trigger during conversations. **Uniqueness:** The trigger function must be un" --- diff --git a/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx index 196fc06aa..37ffa57cc 100644 --- a/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/frontend-actions/{id} +description: "Deletes a frontend action by its unique ID." --- diff --git a/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx index 4b4e15540..68b477e93 100644 --- a/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/frontend-actions +description: "Retrieves a paginated list of frontend actions for the application. Use this endpoint to browse and manage frontend action configurations." --- diff --git a/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx index 57d871fd7..16720e193 100644 --- a/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/remove +description: "Removes one or more frontend actions from a specific agent. Use this endpoint to revoke frontend action capabilities from an agent. **Request body:** The `frontendActions` array contains frontend act" --- diff --git a/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx index 2b97786bb..6b7bb72d0 100644 --- a/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/frontend-actions/{id} +description: "Updates an existing frontend action by its unique ID. Use this endpoint to modify a frontend action's parameters, description, or trigger function." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx index f88c31add..689d366e3 100644 --- a/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/add +description: "Associates uploaded files or text entries with an agent's knowledge base. Use this endpoint after uploading files via the Initiate File Uploads endpoint to make them available to the agent. **Source" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx index c6fe50b21..4c9857557 100644 --- a/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/text +description: "Creates a new text-based knowledge base entry. Use this endpoint to add custom text content that agents can reference during conversations. **Processing:** Accepts a title and text content, converts" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx index 7c6422e2b..0d76dcd1d 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +description: "Deletes a text-based knowledge base entry and all associated data by its unique ID. **Cleanup:** Removes the text content, associated embeddings, and any agent references to this entry." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx index f53ec6901..983684977 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/knowledge-base/uploads/{uniqueId} +description: "Deletes an uploaded file and all associated data from the knowledge base by its unique ID. **Cleanup:** Removes the file, associated embeddings, and any agent references to this file." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx index 9fff82254..659ca80d3 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/knowledge-base/website/{uniqueId} +description: "Deletes a website crawl and all associated data from the knowledge base by its unique ID. **Cleanup:** Removes all crawled pages, associated embeddings, and any agent references to this website." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx index 7070ced9c..30b48060e 100644 --- a/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls +description: "Retrieves all URLs discovered during a website crawl. Use this endpoint to review which pages were found before processing them." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx index 2a2888e5d..6353eb145 100644 --- a/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/pages +description: "Retrieves paginated pages for a specific knowledge base source file. Use this endpoint to inspect the individual pages extracted from a knowledge base source." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx index 04acaf303..df9fd8038 100644 --- a/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/uploads/initiate +description: "Generates presigned URLs and creates upload records for one or more files. Use this endpoint to prepare files for upload to the knowledge base. **Workflow:** After receiving the presigned URLs, uploa" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx index 5586a048a..6f8e27fac 100644 --- a/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base +description: "Retrieves knowledge base records for the application. Use this endpoint to browse all knowledge base sources including files, text entries, and websites." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx index b28e053de..9f78f7e72 100644 --- a/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/status/poll +description: "Retrieves the processing status of discovered URLs by their unique IDs. Use this endpoint to monitor the progress of URL crawling within a parent website crawl. **Behavior:** Only returns records for" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx index a8d419d0c..2a5ef36b9 100644 --- a/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/status/poll +description: "Retrieves the indexing status for one or more knowledge base sources by their IDs. Use this endpoint to monitor the progress of file uploads, text entries, or website crawls being indexed. **Batch su" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx index 9b561e5e6..c2c3686c3 100644 --- a/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/process +description: "Marks discovered URLs for exclusion and initiates batch crawling of the remaining URLs. Use this endpoint to selectively process pages discovered during a website crawl." --- diff --git a/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx index e7126dc5f..f09b25463 100644 --- a/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/remove +description: "Removes files or text entries from an agent's knowledge base. Use this endpoint to disassociate specific sources from an agent without deleting the underlying content. **Source types:** Specify the s" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx index 91f50ab37..bb4478f54 100644 --- a/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/sync +description: "Retries the indexing process for specific pages under a website knowledge base source. Pass the unique IDs of the pages to re-index, or send an empty array to automatically retry all pages that failed" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx index c1da30244..72f305843 100644 --- a/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/sync +description: "Retries the indexing process for a specific knowledge base source that failed during its initial processing. Provide the source type and its unique ID to re-trigger vectorization. **Supported source" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx index 12ac66e7b..ebc62f853 100644 --- a/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/website/individual-page +description: "Scrapes a single webpage to extract its content for the knowledge base. Use this endpoint to add a specific page without crawling an entire website. **Extraction:** Returns the page title, descriptio" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx index 4e87ff062..ef58d74f5 100644 --- a/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/knowledge-base/website/scrape +description: "Scrapes a website to discover and crawl its pages for the knowledge base. Use this endpoint to add website content as a knowledge source for agents. **Configuration:** Supports options for URL filter" --- diff --git a/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx index 28dfd41a3..1ecd1faad 100644 --- a/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +description: "Updates a specific text-based knowledge base entry by its unique ID. Use this endpoint to modify the title or content of an existing text entry. **Re-indexing:** The content is re-uploaded and the en" --- diff --git a/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx index 670828d9c..7ce5e0244 100644 --- a/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/add +description: "Adds one or more MCP servers to a specific agent. Use this endpoint to connect an agent to additional Model Context Protocol servers. **Request body:** The `mcps` array contains MCP server slugs. Ret" --- diff --git a/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx index 564affd3c..2b873ebb8 100644 --- a/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/mcp-servers +description: "Creates a new MCP (Model Context Protocol) server configuration for the application. Use this endpoint to register an MCP server that agents can connect to. **Uniqueness:** The slug must be unique pe" --- diff --git a/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx index 23745cf7c..49cb4eaa3 100644 --- a/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/mcp-servers/{slug} +description: "Deletes an MCP server by its slug." --- diff --git a/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx index 013fdd6d8..d42fe21b1 100644 --- a/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/mcp-servers +description: "Retrieves a paginated list of MCP servers for the application. Use this endpoint to browse and manage MCP server configurations." --- diff --git a/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx index e2620930a..7fbf19e22 100644 --- a/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/remove +description: "Removes one or more MCP servers from a specific agent. Use this endpoint to disconnect MCP servers from an agent. **Request body:** The `mcps` array contains MCP server slugs to remove. Returns the u" --- diff --git a/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx index 425a8ca64..aeead166c 100644 --- a/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/mcp-servers/{slug} +description: "Updates an existing MCP server by its slug. Use this endpoint to modify an MCP server's configuration or connection details." --- diff --git a/rest-api/ai-agents-apis/overview.mdx b/rest-api/ai-agents-apis/overview.mdx index 741ba6ee5..70d1e115b 100644 --- a/rest-api/ai-agents-apis/overview.mdx +++ b/rest-api/ai-agents-apis/overview.mdx @@ -1,6 +1,7 @@ --- title: "Agent Builder APIs" sidebarTitle: "Overview" +description: "Overview of Agent Builder APIs in CometChat REST API." --- The Agent Builder APIs provide endpoints for creating and managing AI agents using CometChat's native agent builder. These APIs enable you to configure agents with tools, MCP servers, custom API tools, frontend actions, and RAG-based knowledge bases — all without writing your own agent orchestration logic. diff --git a/rest-api/ai-agents-apis/properties-and-constraints.mdx b/rest-api/ai-agents-apis/properties-and-constraints.mdx index dea65a30e..c56966eb3 100644 --- a/rest-api/ai-agents-apis/properties-and-constraints.mdx +++ b/rest-api/ai-agents-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the Agent Builder APIs. diff --git a/rest-api/ai-agents-apis/setup-and-authentication.mdx b/rest-api/ai-agents-apis/setup-and-authentication.mdx index ad814a9df..6c1def02e 100644 --- a/rest-api/ai-agents-apis/setup-and-authentication.mdx +++ b/rest-api/ai-agents-apis/setup-and-authentication.mdx @@ -2,4 +2,5 @@ title: "Setup & Authentication" icon: "key" url: "/rest-api/authentication" +description: "Navigate to Setup & Authentication documentation." --- diff --git a/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx index 1e32e69f5..44e1f0519 100644 --- a/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx +++ b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/add +description: "Adds one or more tools to a specific agent. Use this endpoint to extend an agent's capabilities with additional tool integrations. **Request body:** The `tools` array contains tool slugs. Returns the" --- diff --git a/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx index 4783173e1..fbdec52de 100644 --- a/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx +++ b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/add +description: "Adds actions to a specific tool attached to an agent." --- diff --git a/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx index 8f7d81638..deaee663b 100644 --- a/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx +++ b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions +description: "Lists all actions available for a specific tool attached to an agent." --- diff --git a/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx index 2db9dd77c..701bfb1ac 100644 --- a/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx +++ b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/remove +description: "Removes actions from a specific tool attached to an agent." --- diff --git a/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx index 922cd940f..388a3d4ec 100644 --- a/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx +++ b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/remove +description: "Removes one or more tools from a specific agent. Use this endpoint to revoke tool access from an agent. **Request body:** The `tools` array contains tool slugs to remove. Returns the updated agent ob" --- diff --git a/rest-api/ai-agents-apis/users-and-groups.mdx b/rest-api/ai-agents-apis/users-and-groups.mdx index d03f5ddb4..02b268808 100644 --- a/rest-api/ai-agents-apis/users-and-groups.mdx +++ b/rest-api/ai-agents-apis/users-and-groups.mdx @@ -2,4 +2,5 @@ title: "Users & Groups" icon: "users" url: "/rest-api/users" +description: "Navigate to Users & Groups documentation." --- diff --git a/rest-api/ai-agents-apis/variables/create-custom-variable.mdx b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx index dbe5b6e56..5eb2341b6 100644 --- a/rest-api/ai-agents-apis/variables/create-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/agents/variables/custom +description: "Creates a new custom variable for the application. Use this endpoint to define dynamic values that can be injected into agent instructions. **Source types:** Variables can source values from message" --- diff --git a/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx index 7bec4b90e..d28dd7345 100644 --- a/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/agents/variables/custom/{variableId} +description: "Deletes a custom variable by its ID. **Impact:** Any agent instructions referencing this variable will no longer resolve its value." --- diff --git a/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx index 30114fdd0..a24c06185 100644 --- a/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx +++ b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/variables/all +description: "Retrieves all enabled variables (predefined and custom) for the application. Use this endpoint to view variable definitions and understand where they are used. **Usage tracking:** Each variable inclu" --- diff --git a/rest-api/ai-agents-apis/variables/update-custom-variable.mdx b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx index 7a2c2b0ec..f6cdd5240 100644 --- a/rest-api/ai-agents-apis/variables/update-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agent-builder/agents/variables/custom/{variableId} +description: "Updates an existing custom variable by its ID. Use this endpoint to modify a variable's source, default value, or other properties. **Partial updates:** Only the provided fields are updated; omitted" --- diff --git a/rest-api/api-keys/create.mdx b/rest-api/api-keys/create.mdx index 1452a223c..d1e0d6658 100644 --- a/rest-api/api-keys/create.mdx +++ b/rest-api/api-keys/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /apikeys +description: "Creates a new API key" --- ## Constraints diff --git a/rest-api/api-keys/delete.mdx b/rest-api/api-keys/delete.mdx index 7afef7fb8..843660242 100644 --- a/rest-api/api-keys/delete.mdx +++ b/rest-api/api-keys/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apikeys/{apiKey} +description: "Deletes an API key" --- ## Common errors diff --git a/rest-api/api-keys/get.mdx b/rest-api/api-keys/get.mdx index 1b42cc794..e515f091f 100644 --- a/rest-api/api-keys/get.mdx +++ b/rest-api/api-keys/get.mdx @@ -1,5 +1,6 @@ --- openapi: get /apikeys/{apiKey} +description: "Retrieves API key" --- ## Common errors diff --git a/rest-api/api-keys/list.mdx b/rest-api/api-keys/list.mdx index 65a83f644..2227ed60f 100644 --- a/rest-api/api-keys/list.mdx +++ b/rest-api/api-keys/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /apikeys +description: "Lists API keys" --- ## Common errors diff --git a/rest-api/api-keys/update.mdx b/rest-api/api-keys/update.mdx index 6dab3f00a..1969e6c10 100644 --- a/rest-api/api-keys/update.mdx +++ b/rest-api/api-keys/update.mdx @@ -1,5 +1,6 @@ --- openapi: put /apikeys/{apiKey} +description: "Updates an API key" --- ## Common errors diff --git a/rest-api/auth-tokens/create.mdx b/rest-api/auth-tokens/create.mdx index d291ab861..b0f1c321d 100644 --- a/rest-api/auth-tokens/create.mdx +++ b/rest-api/auth-tokens/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /users/{uid}/auth_tokens +description: "Creates auth token for a user with the specified UID." --- ## Common errors diff --git a/rest-api/auth-tokens/delete.mdx b/rest-api/auth-tokens/delete.mdx index 43825a033..579ba34f2 100644 --- a/rest-api/auth-tokens/delete.mdx +++ b/rest-api/auth-tokens/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/auth_tokens/{authToken} +description: "Deletes an auth token for the specified UID." --- ## Common errors diff --git a/rest-api/auth-tokens/flush.mdx b/rest-api/auth-tokens/flush.mdx index 20822b526..c10aee366 100644 --- a/rest-api/auth-tokens/flush.mdx +++ b/rest-api/auth-tokens/flush.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/auth_tokens +description: "Deletes all the auth tokens for the specified UID." --- ## Common errors diff --git a/rest-api/auth-tokens/get.mdx b/rest-api/auth-tokens/get.mdx index df6ad8413..f6b3ce9b1 100644 --- a/rest-api/auth-tokens/get.mdx +++ b/rest-api/auth-tokens/get.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/auth_tokens/{authToken} +description: "Retrieves details of an auth token for the specified UID andauth token." --- ## Common errors diff --git a/rest-api/auth-tokens/list.mdx b/rest-api/auth-tokens/list.mdx index 5733e6c69..6399e508f 100644 --- a/rest-api/auth-tokens/list.mdx +++ b/rest-api/auth-tokens/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/auth_tokens +description: "Lists auth tokens for a user with the specified UID." --- ## Common errors diff --git a/rest-api/auth-tokens/update.mdx b/rest-api/auth-tokens/update.mdx index 689846423..906999196 100644 --- a/rest-api/auth-tokens/update.mdx +++ b/rest-api/auth-tokens/update.mdx @@ -1,5 +1,6 @@ --- openapi: put /users/{uid}/auth_tokens/{authToken} +description: "Updates the details of an auth token for the specified UID andauth token." --- ## Common errors diff --git a/rest-api/banned-users/ban.mdx b/rest-api/banned-users/ban.mdx index 290ecf8ac..bef30375b 100644 --- a/rest-api/banned-users/ban.mdx +++ b/rest-api/banned-users/ban.mdx @@ -1,5 +1,6 @@ --- openapi: post /groups/{guid}/bannedusers/{uid} +description: "Bans a member from a group for a given GUID and UID." --- ## Common errors diff --git a/rest-api/banned-users/list.mdx b/rest-api/banned-users/list.mdx index ceb443866..97f89e325 100644 --- a/rest-api/banned-users/list.mdx +++ b/rest-api/banned-users/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid}/bannedusers +description: "Lists banned users from a group for a given GUID." --- ## Common errors diff --git a/rest-api/banned-users/unban.mdx b/rest-api/banned-users/unban.mdx index efd3fee8f..ee80a18ef 100644 --- a/rest-api/banned-users/unban.mdx +++ b/rest-api/banned-users/unban.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid}/bannedusers/{uid} +description: "Unban a member with given UID from a group for a given GUID." --- ## Common errors diff --git a/rest-api/blocked-users/block-user.mdx b/rest-api/blocked-users/block-user.mdx index 783793163..2b53b1202 100644 --- a/rest-api/blocked-users/block-user.mdx +++ b/rest-api/blocked-users/block-user.mdx @@ -1,5 +1,6 @@ --- openapi: post /users/{uid}/blockedusers +description: "Blocks the specified user" --- ## Common errors diff --git a/rest-api/blocked-users/list-blocked-users.mdx b/rest-api/blocked-users/list-blocked-users.mdx index d363183c5..7479c212b 100644 --- a/rest-api/blocked-users/list-blocked-users.mdx +++ b/rest-api/blocked-users/list-blocked-users.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/blockedusers +description: "Retrieves the blocked users" --- ## Common errors diff --git a/rest-api/blocked-users/unblock-user.mdx b/rest-api/blocked-users/unblock-user.mdx index b10c3c08e..130398693 100644 --- a/rest-api/blocked-users/unblock-user.mdx +++ b/rest-api/blocked-users/unblock-user.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/blockedusers +description: "Unblocks the specified user" --- ## Common errors diff --git a/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx index 15246a836..9726e8a27 100644 --- a/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agents +description: "Creates a new BYO Agent that delegates conversations to an external AI Agent. Use this endpoint to register a BYO (Bring Your Own) agent powered by frameworks like Mastra, CrewAI, or LangGraph. **Val" --- diff --git a/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx index a8a9ea563..69b1a1f75 100644 --- a/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agents/{uid} +description: "Deletes a BYO Agent by its UID." --- diff --git a/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx index 471474bb6..650dbb31a 100644 --- a/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx +++ b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agents +description: "Retrieves all BYO Agents configured for your CometChat app. Use this endpoint to view all registered BYO (Bring Your Own) agents and their current configuration." --- diff --git a/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx index de39efbd2..fe515bdc9 100644 --- a/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/agents/{uid} +description: "Updates an existing BYO Agent by its UID. Use this endpoint to modify agent configuration, update referenced tools, or change the connected AI framework. **Validation:** Referenced tools and actions" --- diff --git a/rest-api/byo-ai-agents-apis/error-codes.mdx b/rest-api/byo-ai-agents-apis/error-codes.mdx index 2c2d59e20..732d6e2d2 100644 --- a/rest-api/byo-ai-agents-apis/error-codes.mdx +++ b/rest-api/byo-ai-agents-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the BYO Agent APIs. diff --git a/rest-api/byo-ai-agents-apis/overview.mdx b/rest-api/byo-ai-agents-apis/overview.mdx index 257205124..5d5debb26 100644 --- a/rest-api/byo-ai-agents-apis/overview.mdx +++ b/rest-api/byo-ai-agents-apis/overview.mdx @@ -1,6 +1,7 @@ --- title: "BYO Agent APIs" sidebarTitle: "Overview" +description: "Overview of BYO Agent APIs in CometChat REST API." --- The BYO (Bring Your Own) Agent APIs provide endpoints for creating and managing AI agents that integrate with third-party frameworks such as Vercel AI SDK, LangGraph, CrewAI, Mastra, AG2, Agno, and AG-UI. These APIs allow you to register external agents, manage custom tools and actions, and configure available integrations. diff --git a/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx index 68d3363e7..d1b4ee21f 100644 --- a/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx +++ b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the BYO Agent APIs. diff --git a/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx b/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx index ad814a9df..6c1def02e 100644 --- a/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx +++ b/rest-api/byo-ai-agents-apis/setup-and-authentication.mdx @@ -2,4 +2,5 @@ title: "Setup & Authentication" icon: "key" url: "/rest-api/authentication" +description: "Navigate to Setup & Authentication documentation." --- diff --git a/rest-api/byo-ai-agents-apis/tools/create-tool.mdx b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx index 535d26a45..e6f374976 100644 --- a/rest-api/byo-ai-agents-apis/tools/create-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/tools +description: "Defines custom tools that agents can invoke during conversations. **Naming:** The tool name must be unique per application. **Type:** When `doNotExecute` is `true`, the type is set to `tool`. Otherw" --- diff --git a/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx index 424e4cb0e..a21cdbf66 100644 --- a/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/tools/{name} +description: "Deletes a tool by its unique name." --- diff --git a/rest-api/byo-ai-agents-apis/tools/get-tool.mdx b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx index 72baf1a9f..7cf1a8ff3 100644 --- a/rest-api/byo-ai-agents-apis/tools/get-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/tools/{name} +description: "Retrieves a specific tool by its unique name. Use this endpoint to inspect a tool's configuration, parameters, and description." --- diff --git a/rest-api/byo-ai-agents-apis/tools/list-tools.mdx b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx index e5c6b459a..d6da48c65 100644 --- a/rest-api/byo-ai-agents-apis/tools/list-tools.mdx +++ b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/tools +description: "Retrieves all tools configured for your CometChat app. Use this endpoint to view available tools and actions, or filter by type. **Filtering:** Use the `type` query parameter to filter by `action` or" --- diff --git a/rest-api/byo-ai-agents-apis/tools/update-tool.mdx b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx index 551844389..080e07833 100644 --- a/rest-api/byo-ai-agents-apis/tools/update-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx @@ -1,3 +1,4 @@ --- openapi: put /ai-agents/tools/{name} +description: "Updates an existing tool by its unique name. Use this endpoint to modify a tool's description, parameters, or behavior. **Restrictions:** The tool name cannot be changed after creation. The provided" --- diff --git a/rest-api/byo-ai-agents-apis/users-and-groups.mdx b/rest-api/byo-ai-agents-apis/users-and-groups.mdx index d03f5ddb4..02b268808 100644 --- a/rest-api/byo-ai-agents-apis/users-and-groups.mdx +++ b/rest-api/byo-ai-agents-apis/users-and-groups.mdx @@ -2,4 +2,5 @@ title: "Users & Groups" icon: "users" url: "/rest-api/users" +description: "Navigate to Users & Groups documentation." --- diff --git a/rest-api/calls-apis/error-codes.mdx b/rest-api/calls-apis/error-codes.mdx index c703cfddd..53c1f668e 100644 --- a/rest-api/calls-apis/error-codes.mdx +++ b/rest-api/calls-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the Calls APIs. diff --git a/rest-api/calls-apis/get-call.mdx b/rest-api/calls-apis/get-call.mdx index a9ffd1179..e1511553b 100644 --- a/rest-api/calls-apis/get-call.mdx +++ b/rest-api/calls-apis/get-call.mdx @@ -2,6 +2,7 @@ title: "Get Call" sidebarTitle: "Get Call" openapi: get /calls/{sessionId} +description: "Fetches all the details of the call whose sessionId is passed in the URL." --- Retrieve detailed information about a specific call using its session ID. This endpoint returns complete call data including all participants, their individual metrics, and recording information. diff --git a/rest-api/calls-apis/list-calls.mdx b/rest-api/calls-apis/list-calls.mdx index 0ba3dc352..cd6dffeae 100644 --- a/rest-api/calls-apis/list-calls.mdx +++ b/rest-api/calls-apis/list-calls.mdx @@ -2,6 +2,7 @@ title: "List Calls" sidebarTitle: "List Calls" openapi: get /calls +description: "lists all the calls that are available in the app. It can include participants, and recordings property in the response (if present)." --- Retrieve a paginated list of all calls in your application. Use query parameters to filter by call type, status, date range, and more. diff --git a/rest-api/calls-apis/properties-and-constraints.mdx b/rest-api/calls-apis/properties-and-constraints.mdx index 746c3d2df..f1aa43ef4 100644 --- a/rest-api/calls-apis/properties-and-constraints.mdx +++ b/rest-api/calls-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the Calls APIs. diff --git a/rest-api/calls-apis/setup-and-authentication.mdx b/rest-api/calls-apis/setup-and-authentication.mdx index ad814a9df..6c1def02e 100644 --- a/rest-api/calls-apis/setup-and-authentication.mdx +++ b/rest-api/calls-apis/setup-and-authentication.mdx @@ -2,4 +2,5 @@ title: "Setup & Authentication" icon: "key" url: "/rest-api/authentication" +description: "Navigate to Setup & Authentication documentation." --- diff --git a/rest-api/calls-apis/users-and-groups.mdx b/rest-api/calls-apis/users-and-groups.mdx index d03f5ddb4..02b268808 100644 --- a/rest-api/calls-apis/users-and-groups.mdx +++ b/rest-api/calls-apis/users-and-groups.mdx @@ -2,4 +2,5 @@ title: "Users & Groups" icon: "users" url: "/rest-api/users" +description: "Navigate to Users & Groups documentation." --- diff --git a/rest-api/calls-link.mdx b/rest-api/calls-link.mdx index ed570622c..f9466d4d4 100644 --- a/rest-api/calls-link.mdx +++ b/rest-api/calls-link.mdx @@ -2,4 +2,5 @@ title: "Calls APIs" icon: "phone-volume" url: "/rest-api/calls-apis/overview" +description: "Navigate to Calls APIs documentation." --- diff --git a/rest-api/conversations/delete-conversation.mdx b/rest-api/conversations/delete-conversation.mdx index 019c0d88e..a2d623049 100644 --- a/rest-api/conversations/delete-conversation.mdx +++ b/rest-api/conversations/delete-conversation.mdx @@ -1,6 +1,7 @@ --- openapi: delete /conversations/{conversationId} deprecated: true +description: "This API is deprecated please use Reset User/GroupConversation API" --- diff --git a/rest-api/conversations/get-conversation.mdx b/rest-api/conversations/get-conversation.mdx index b849dad89..6e5bd9e33 100644 --- a/rest-api/conversations/get-conversation.mdx +++ b/rest-api/conversations/get-conversation.mdx @@ -1,6 +1,7 @@ --- openapi: get /conversations/{conversationId} deprecated: true +description: "This API is deprecated please use Get User/Group ConversationAPI" --- diff --git a/rest-api/conversations/get-group-conversation.mdx b/rest-api/conversations/get-group-conversation.mdx index a813a1a6e..4d2bb6bd9 100644 --- a/rest-api/conversations/get-group-conversation.mdx +++ b/rest-api/conversations/get-group-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid}/conversation +description: "Getting group conversation" --- ## Common errors diff --git a/rest-api/conversations/get-user-conversation.mdx b/rest-api/conversations/get-user-conversation.mdx index 3b96e96b7..579955d86 100644 --- a/rest-api/conversations/get-user-conversation.mdx +++ b/rest-api/conversations/get-user-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/conversation +description: "Getting user conversation" --- ## Common errors diff --git a/rest-api/conversations/list-conversations.mdx b/rest-api/conversations/list-conversations.mdx index c93948b44..3560809f7 100644 --- a/rest-api/conversations/list-conversations.mdx +++ b/rest-api/conversations/list-conversations.mdx @@ -1,5 +1,6 @@ --- openapi: get /conversations +description: "Fetching all the conversations" --- ## Common errors diff --git a/rest-api/conversations/mark-conversation-messages-as-unread.mdx b/rest-api/conversations/mark-conversation-messages-as-unread.mdx index 3a3276319..1b9263a85 100644 --- a/rest-api/conversations/mark-conversation-messages-as-unread.mdx +++ b/rest-api/conversations/mark-conversation-messages-as-unread.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/conversation/read +description: "Allows you to mark messages within a conversation as unread" --- ## Common errors diff --git a/rest-api/conversations/mark-group-conversation-as-delivered.mdx b/rest-api/conversations/mark-group-conversation-as-delivered.mdx index 875669999..4e2955b1c 100644 --- a/rest-api/conversations/mark-group-conversation-as-delivered.mdx +++ b/rest-api/conversations/mark-group-conversation-as-delivered.mdx @@ -1,5 +1,6 @@ --- openapi: post /groups/{guid}/conversation/delivered +description: "This API will mark the group conversation as delivered." --- ## Common errors diff --git a/rest-api/conversations/mark-group-conversation-as-read.mdx b/rest-api/conversations/mark-group-conversation-as-read.mdx index 10facda59..7e0a4ce52 100644 --- a/rest-api/conversations/mark-group-conversation-as-read.mdx +++ b/rest-api/conversations/mark-group-conversation-as-read.mdx @@ -1,5 +1,6 @@ --- openapi: post /groups/{guid}/conversation/read +description: "This API will mark the group conversation as read." --- ## Common errors diff --git a/rest-api/conversations/mark-group-conversation-as-unread.mdx b/rest-api/conversations/mark-group-conversation-as-unread.mdx index c49f79510..4230d5f68 100644 --- a/rest-api/conversations/mark-group-conversation-as-unread.mdx +++ b/rest-api/conversations/mark-group-conversation-as-unread.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid}/conversation/read +description: "This API will mark the group conversation as unread." --- ## Common errors diff --git a/rest-api/conversations/mark-user-conversation-as-delivered.mdx b/rest-api/conversations/mark-user-conversation-as-delivered.mdx index e570e3e9e..15db1fa5e 100644 --- a/rest-api/conversations/mark-user-conversation-as-delivered.mdx +++ b/rest-api/conversations/mark-user-conversation-as-delivered.mdx @@ -1,5 +1,6 @@ --- openapi: post /users/{uid}/conversation/delivered +description: "This API will mark the user conversation as delivered." --- ## Common errors diff --git a/rest-api/conversations/mark-user-conversation-as-read.mdx b/rest-api/conversations/mark-user-conversation-as-read.mdx index b6ef5b910..d94f846b9 100644 --- a/rest-api/conversations/mark-user-conversation-as-read.mdx +++ b/rest-api/conversations/mark-user-conversation-as-read.mdx @@ -1,5 +1,6 @@ --- openapi: post /users/{uid}/conversation/read +description: "This API will mark the user conversation as read." --- ## Common errors diff --git a/rest-api/conversations/reset-group-conversation.mdx b/rest-api/conversations/reset-group-conversation.mdx index 2a2c337aa..e6e58ece3 100644 --- a/rest-api/conversations/reset-group-conversation.mdx +++ b/rest-api/conversations/reset-group-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid}/conversation +description: "Resetting Group Conversation" --- ## Common errors diff --git a/rest-api/conversations/reset-user-conversation.mdx b/rest-api/conversations/reset-user-conversation.mdx index 6eb89d98f..22bf5311c 100644 --- a/rest-api/conversations/reset-user-conversation.mdx +++ b/rest-api/conversations/reset-user-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/conversation +description: "Resetting User Conversation" --- ## Common errors diff --git a/rest-api/conversations/update-group-conversation.mdx b/rest-api/conversations/update-group-conversation.mdx index fc6d34c77..71dd16134 100644 --- a/rest-api/conversations/update-group-conversation.mdx +++ b/rest-api/conversations/update-group-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: put /groups/{guid}/conversation +description: "Updating Group Conversation" --- ## Common errors diff --git a/rest-api/conversations/update-user-conversation.mdx b/rest-api/conversations/update-user-conversation.mdx index 76a2e83bf..0664c6d51 100644 --- a/rest-api/conversations/update-user-conversation.mdx +++ b/rest-api/conversations/update-user-conversation.mdx @@ -1,5 +1,6 @@ --- openapi: put /users/{uid}/conversation +description: "Updating User Conversation" --- ## Common errors diff --git a/rest-api/data-import-apis/groups/import-group-members.mdx b/rest-api/data-import-apis/groups/import-group-members.mdx index 3c8bdb4e0..791713a9a 100644 --- a/rest-api/data-import-apis/groups/import-group-members.mdx +++ b/rest-api/data-import-apis/groups/import-group-members.mdx @@ -1,5 +1,6 @@ --- openapi: post /data_import/members +description: "The CometChat group member import API allows customers to import their group members’ data into the CometChat systems." --- ## Common errors diff --git a/rest-api/data-import-apis/groups/import-groups.mdx b/rest-api/data-import-apis/groups/import-groups.mdx index 832458c56..386f308ad 100644 --- a/rest-api/data-import-apis/groups/import-groups.mdx +++ b/rest-api/data-import-apis/groups/import-groups.mdx @@ -1,5 +1,6 @@ --- openapi: post /data_import/groups +description: "The CometChat group import API allows customers to import their groups’ data into the CometChat systems." --- ## Common errors diff --git a/rest-api/data-import-apis/messages/import-messages.mdx b/rest-api/data-import-apis/messages/import-messages.mdx index 516c006af..4af092391 100644 --- a/rest-api/data-import-apis/messages/import-messages.mdx +++ b/rest-api/data-import-apis/messages/import-messages.mdx @@ -1,5 +1,6 @@ --- openapi: post /data_import/messages +description: "The CometChat message import API allows customers to import their messages’ data into the CometChat systems." --- ## Common errors diff --git a/rest-api/data-import-apis/users/import-users.mdx b/rest-api/data-import-apis/users/import-users.mdx index 00a2a2354..8836a7e42 100644 --- a/rest-api/data-import-apis/users/import-users.mdx +++ b/rest-api/data-import-apis/users/import-users.mdx @@ -1,5 +1,6 @@ --- openapi: post /data_import/users +description: "The CometChat user import API allows customers to import their users’ data into the CometChat systems." --- ## Constraints diff --git a/rest-api/friends/add-friends.mdx b/rest-api/friends/add-friends.mdx index 1f468ab6c..17266436f 100644 --- a/rest-api/friends/add-friends.mdx +++ b/rest-api/friends/add-friends.mdx @@ -1,5 +1,6 @@ --- openapi: post /users/{uid}/friends +description: "The API allows to add multiple friends for a given UID." --- ## Common errors diff --git a/rest-api/friends/list-friends.mdx b/rest-api/friends/list-friends.mdx index 9e1b77960..8e3787163 100644 --- a/rest-api/friends/list-friends.mdx +++ b/rest-api/friends/list-friends.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/friends +description: "The API allows to fetch friends for a given UID." --- ## Common errors diff --git a/rest-api/friends/remove-friends.mdx b/rest-api/friends/remove-friends.mdx index 14c31ae98..2477903cf 100644 --- a/rest-api/friends/remove-friends.mdx +++ b/rest-api/friends/remove-friends.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid}/friends +description: "The API removes friends for a given UID." --- ## Common errors diff --git a/rest-api/group-members/add-members.mdx b/rest-api/group-members/add-members.mdx index a844edabe..a4758d025 100644 --- a/rest-api/group-members/add-members.mdx +++ b/rest-api/group-members/add-members.mdx @@ -1,5 +1,6 @@ --- openapi: post /groups/{guid}/members +description: "Adds multiple users as per the scope." --- ## Common errors diff --git a/rest-api/group-members/change-scope.mdx b/rest-api/group-members/change-scope.mdx index 8a754437f..239ec76a4 100644 --- a/rest-api/group-members/change-scope.mdx +++ b/rest-api/group-members/change-scope.mdx @@ -1,5 +1,6 @@ --- openapi: put /groups/{guid}/members/{uid} +description: "Change scope of a member to the group for a given GUID and UID" --- ## Common errors diff --git a/rest-api/group-members/kick.mdx b/rest-api/group-members/kick.mdx index 7fb35dd02..1021c448e 100644 --- a/rest-api/group-members/kick.mdx +++ b/rest-api/group-members/kick.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid}/members/{uid} +description: "Removes a member with given UID from a group for a given GUID." --- ## Common errors diff --git a/rest-api/group-members/list.mdx b/rest-api/group-members/list.mdx index 6f24806c2..ae094c982 100644 --- a/rest-api/group-members/list.mdx +++ b/rest-api/group-members/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid}/members +description: "List the members of a group for a given GUID" --- ## Common errors diff --git a/rest-api/groups/create.mdx b/rest-api/groups/create.mdx index 0091aae5f..c11ea0307 100644 --- a/rest-api/groups/create.mdx +++ b/rest-api/groups/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /groups +description: "Creates a group." --- ## Constraints diff --git a/rest-api/groups/delete.mdx b/rest-api/groups/delete.mdx index 2b8410bd3..2ea9c4b40 100644 --- a/rest-api/groups/delete.mdx +++ b/rest-api/groups/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid} +description: "Deletes a group with a given GUID." --- ## Common errors diff --git a/rest-api/groups/get.mdx b/rest-api/groups/get.mdx index 86f778424..c4313ff12 100644 --- a/rest-api/groups/get.mdx +++ b/rest-api/groups/get.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid} +description: "Retrieves details of a group for a given GUID." --- ## Common errors diff --git a/rest-api/groups/list.mdx b/rest-api/groups/list.mdx index 827e9cf38..48c6cfbb6 100644 --- a/rest-api/groups/list.mdx +++ b/rest-api/groups/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups +description: "Lists the groups." --- ## Common errors diff --git a/rest-api/groups/update.mdx b/rest-api/groups/update.mdx index 2bb52098a..9f4498b37 100644 --- a/rest-api/groups/update.mdx +++ b/rest-api/groups/update.mdx @@ -1,5 +1,6 @@ --- openapi: put /groups/{guid} +description: "Updates the group details for a given GUID." --- ## Common errors diff --git a/rest-api/management-apis/app/create.mdx b/rest-api/management-apis/app/create.mdx index b05ef3514..15b8f93f2 100644 --- a/rest-api/management-apis/app/create.mdx +++ b/rest-api/management-apis/app/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps +description: "Creates an app in the account. It returns all the app related information." --- ## Constraints diff --git a/rest-api/management-apis/app/delete.mdx b/rest-api/management-apis/app/delete.mdx index 3cae6671f..628653ee8 100644 --- a/rest-api/management-apis/app/delete.mdx +++ b/rest-api/management-apis/app/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId} +description: "Schedule a specific app for deletion." --- ## Common errors diff --git a/rest-api/management-apis/app/fetch-usage.mdx b/rest-api/management-apis/app/fetch-usage.mdx index c50a4d226..6f85c9ef4 100644 --- a/rest-api/management-apis/app/fetch-usage.mdx +++ b/rest-api/management-apis/app/fetch-usage.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/usage +description: "Retrieves usage data for multi-tenant apps." --- ## Common errors diff --git a/rest-api/management-apis/app/list.mdx b/rest-api/management-apis/app/list.mdx index 697b02508..115f2c7c2 100644 --- a/rest-api/management-apis/app/list.mdx +++ b/rest-api/management-apis/app/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps +description: "Lists all the apps for an account." --- ## Common errors diff --git a/rest-api/management-apis/error-codes.mdx b/rest-api/management-apis/error-codes.mdx index 616d167ab..0329b869c 100644 --- a/rest-api/management-apis/error-codes.mdx +++ b/rest-api/management-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the Management APIs (Multi-Tenancy). diff --git a/rest-api/management-apis/extensions/bitly-delete-settings.mdx b/rest-api/management-apis/extensions/bitly-delete-settings.mdx index 099b5ab19..f14628699 100644 --- a/rest-api/management-apis/extensions/bitly-delete-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/url-shortener-bitly/v1/settings +description: "Bitly : Delete the settings for Bitly extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/bitly-get-settings.mdx b/rest-api/management-apis/extensions/bitly-get-settings.mdx index 1d4ca3b34..3b273e6bb 100644 --- a/rest-api/management-apis/extensions/bitly-get-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/url-shortener-bitly/v1/settings +description: "Bitly : Get settings for Bitly extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/bitly-store-settings.mdx b/rest-api/management-apis/extensions/bitly-store-settings.mdx index df4c391f7..897cab304 100644 --- a/rest-api/management-apis/extensions/bitly-store-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/url-shortener-bitly/v1/settings +description: "Bitly : Store new settings for Bitly extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/bitly-update-settings.mdx b/rest-api/management-apis/extensions/bitly-update-settings.mdx index 42166e089..03c03eb48 100644 --- a/rest-api/management-apis/extensions/bitly-update-settings.mdx +++ b/rest-api/management-apis/extensions/bitly-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/url-shortener-bitly/v1/settings +description: "Bitly : Update the settings for Bitly extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/chat-widgets-create.mdx b/rest-api/management-apis/extensions/chat-widgets-create.mdx index 02c9d55d6..dd4f2b36e 100644 --- a/rest-api/management-apis/extensions/chat-widgets-create.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-create.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/widget/v2/settings +description: "Chat Widgets Create a new Chat Widget." --- ## Common errors diff --git a/rest-api/management-apis/extensions/chat-widgets-list.mdx b/rest-api/management-apis/extensions/chat-widgets-list.mdx index 26ab49204..15d65083a 100644 --- a/rest-api/management-apis/extensions/chat-widgets-list.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-list.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/widget/v2/settings +description: "Chat Widgets List all the Chat Widgets for an app." --- ## Common errors diff --git a/rest-api/management-apis/extensions/chat-widgets-update.mdx b/rest-api/management-apis/extensions/chat-widgets-update.mdx index d48a517ec..d2d8c4a10 100644 --- a/rest-api/management-apis/extensions/chat-widgets-update.mdx +++ b/rest-api/management-apis/extensions/chat-widgets-update.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/widget/v2/settings +description: "Chat Widgets Update an existing Chat Widget." --- ## Common errors diff --git a/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx b/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx index 43a38b196..bf8fa212f 100644 --- a/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/chatwoot/v1/settings +description: "Chatwoot : Delete the settings for Chatwoot extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/chatwoot-get-settings.mdx b/rest-api/management-apis/extensions/chatwoot-get-settings.mdx index 618bec50d..c111ae935 100644 --- a/rest-api/management-apis/extensions/chatwoot-get-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/chatwoot/v1/settings +description: "Chatwoot : Get settings for Chatwoot extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/chatwoot-store-settings.mdx b/rest-api/management-apis/extensions/chatwoot-store-settings.mdx index 9f9204ce6..5ea2674f3 100644 --- a/rest-api/management-apis/extensions/chatwoot-store-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/chatwoot/v1/settings +description: "Chatwoot : Store new settings for Chatwoot extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/chatwoot-update-settings.mdx b/rest-api/management-apis/extensions/chatwoot-update-settings.mdx index ca9beffa6..bde7e1f10 100644 --- a/rest-api/management-apis/extensions/chatwoot-update-settings.mdx +++ b/rest-api/management-apis/extensions/chatwoot-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/chatwoot/v1/settings +description: "Chatwoot : Update the settings for Chatwoot extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/data-masking-delete-settings.mdx b/rest-api/management-apis/extensions/data-masking-delete-settings.mdx index 3baf31cbb..6a827c088 100644 --- a/rest-api/management-apis/extensions/data-masking-delete-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/data-masking/v1/settings +description: "Data masking : Delete the settings for Data masking extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/data-masking-get-settings.mdx b/rest-api/management-apis/extensions/data-masking-get-settings.mdx index 4d363db08..3777428b7 100644 --- a/rest-api/management-apis/extensions/data-masking-get-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/data-masking/v1/settings +description: "Data masking : Get the settings for Data masking extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx b/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx index 1cfe74bdf..fcb79c955 100644 --- a/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx +++ b/rest-api/management-apis/extensions/data-masking-store-or-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/data-masking/v1/settings +description: "Data masking : Store or update the settings for Data masking extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-notification-delete-settings.mdx b/rest-api/management-apis/extensions/email-notification-delete-settings.mdx index c027f9ed5..32adecedb 100644 --- a/rest-api/management-apis/extensions/email-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/email-notification/v1/settings +description: "Email Notification : Delete the settings for Email notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-notification-get-settings.mdx b/rest-api/management-apis/extensions/email-notification-get-settings.mdx index 228ce3ad3..dc97626a9 100644 --- a/rest-api/management-apis/extensions/email-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/email-notification/v1/settings +description: "Email Notification : Get settings for Email notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-notification-store-settings.mdx b/rest-api/management-apis/extensions/email-notification-store-settings.mdx index d84f704a9..9730261e9 100644 --- a/rest-api/management-apis/extensions/email-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/email-notification/v1/settings +description: "Email Notification : Store new settings for Email notification extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-notification-update-settings.mdx b/rest-api/management-apis/extensions/email-notification-update-settings.mdx index ac62de355..13e3d3bde 100644 --- a/rest-api/management-apis/extensions/email-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/email-notification-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/email-notification/v1/settings +description: "Email Notification : Update the settings for Email notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-replies-delete-settings.mdx b/rest-api/management-apis/extensions/email-replies-delete-settings.mdx index f94ebe6d0..9236293f2 100644 --- a/rest-api/management-apis/extensions/email-replies-delete-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/email-replies/v1/settings +description: "Email replies : Delete the settings for Email replies extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-replies-get-settings.mdx b/rest-api/management-apis/extensions/email-replies-get-settings.mdx index 001d01235..8cb10cd9d 100644 --- a/rest-api/management-apis/extensions/email-replies-get-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/email-replies/v1/settings +description: "Email replies : Get settings for Email replies extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-replies-store-settings.mdx b/rest-api/management-apis/extensions/email-replies-store-settings.mdx index 08dcf8bec..3dac129ee 100644 --- a/rest-api/management-apis/extensions/email-replies-store-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/email-replies/v1/settings +description: "Email replies : Store new settings for Email replies extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/email-replies-update-settings.mdx b/rest-api/management-apis/extensions/email-replies-update-settings.mdx index 2d5df2120..3978a880a 100644 --- a/rest-api/management-apis/extensions/email-replies-update-settings.mdx +++ b/rest-api/management-apis/extensions/email-replies-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/email-replies/v1/settings +description: "Email replies : Update the settings for Email replies extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/enabledisable.mdx b/rest-api/management-apis/extensions/enabledisable.mdx index 0b093ee03..d7d2f282b 100644 --- a/rest-api/management-apis/extensions/enabledisable.mdx +++ b/rest-api/management-apis/extensions/enabledisable.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions +description: "Enables or disables the extension for an app." --- ## Common errors diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx index d34fa4e90..adadccfa9 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/e2ee/v1/settings +description: "End-to-end encryption : Delete the settings for End-to-end encryption extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx index f32322822..6ea8cb735 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/e2ee/v1/settings +description: "End-to-end encryption : Get settings for End-to-end encryption extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx index 3acf1c860..cca5999f5 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/e2ee/v1/settings +description: "End-to-end encryption : Store new settings for End-to-end encryption extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx b/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx index 26e35ae38..022032606 100644 --- a/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx +++ b/rest-api/management-apis/extensions/end-to-end-encryption-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/e2ee/v1/settings +description: "End-to-end encryption : Update the settings for End-to-end encryption extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx b/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx index 28d455c94..b44afe3d3 100644 --- a/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx +++ b/rest-api/management-apis/extensions/giphy-delete-settings-for-giphy.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/gifs-giphy/v1/settings +description: "Giphy : Deletes the settings for Giphy extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/giphy-get-settings.mdx b/rest-api/management-apis/extensions/giphy-get-settings.mdx index 8b20cd91d..f8b95f784 100644 --- a/rest-api/management-apis/extensions/giphy-get-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/gifs-giphy/v1/settings +description: "Giphy : Returns the settings for Giphy extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/giphy-store-settings.mdx b/rest-api/management-apis/extensions/giphy-store-settings.mdx index f29cf68d6..e113836cd 100644 --- a/rest-api/management-apis/extensions/giphy-store-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/gifs-giphy/v1/settings +description: "Giphy : Saving the settings for Giphy extensions for the first time" --- ## Common errors diff --git a/rest-api/management-apis/extensions/giphy-update-settings.mdx b/rest-api/management-apis/extensions/giphy-update-settings.mdx index aea7ab219..7b6f06b03 100644 --- a/rest-api/management-apis/extensions/giphy-update-settings.mdx +++ b/rest-api/management-apis/extensions/giphy-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/gifs-giphy/v1/settings +description: "Giphy : Update the settings for Giphy extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx b/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx index 1045791d1..0aa2dcd8d 100644 --- a/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/image-moderation/v1/settings +description: "Image Moderation : Delete the settings for Image moderation extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/image-moderation-get-settings.mdx b/rest-api/management-apis/extensions/image-moderation-get-settings.mdx index 23fd201d1..3576d596e 100644 --- a/rest-api/management-apis/extensions/image-moderation-get-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/image-moderation/v1/settings +description: "Image Moderation : Get settings for Image moderation extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/image-moderation-store-settings.mdx b/rest-api/management-apis/extensions/image-moderation-store-settings.mdx index 00c143634..9f593b54d 100644 --- a/rest-api/management-apis/extensions/image-moderation-store-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/image-moderation/v1/settings +description: "Image Moderation : Store new settings for Image moderation extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/image-moderation-update-settings.mdx b/rest-api/management-apis/extensions/image-moderation-update-settings.mdx index b4ad7ee5d..81923a300 100644 --- a/rest-api/management-apis/extensions/image-moderation-update-settings.mdx +++ b/rest-api/management-apis/extensions/image-moderation-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/image-moderation/v1/settings +description: "Image Moderation : Update the settings for Image moderation extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx index e7b9d8e57..13625a47c 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/human-moderation/v1/settings +description: "In-flight message moderation : Delete the settings for In-flight message moderation extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx index fa307f456..a4382bd52 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/human-moderation/v1/settings +description: "In-flight message moderation : Get settings for In-flight message moderation extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx index 522019aad..56bb53d0a 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/human-moderation/v1/settings +description: "In-flight message moderation : Store new settings for In-flight message moderation extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx b/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx index 4921ffeaa..952aaa8e4 100644 --- a/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx +++ b/rest-api/management-apis/extensions/in-flight-message-moderation-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/human-moderation/v1/settings +description: "In-flight message moderation : Update the settings for In-flight message moderation extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/intercom-delete-settings.mdx b/rest-api/management-apis/extensions/intercom-delete-settings.mdx index 1293ccc4a..ca7df9d41 100644 --- a/rest-api/management-apis/extensions/intercom-delete-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/intercom/v1/settings +description: "Intercom : Delete the settings for Intercom extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/intercom-get-settings.mdx b/rest-api/management-apis/extensions/intercom-get-settings.mdx index 2a6579737..65b18a24b 100644 --- a/rest-api/management-apis/extensions/intercom-get-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/intercom/v1/settings +description: "Intercom : Get settings for Intercom extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/intercom-store-settings.mdx b/rest-api/management-apis/extensions/intercom-store-settings.mdx index 140caffcd..e8bfe9f3a 100644 --- a/rest-api/management-apis/extensions/intercom-store-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/intercom/v1/settings +description: "Intercom : Store new settings for Intercom extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/intercom-update-settings.mdx b/rest-api/management-apis/extensions/intercom-update-settings.mdx index 33cea4306..85154e896 100644 --- a/rest-api/management-apis/extensions/intercom-update-settings.mdx +++ b/rest-api/management-apis/extensions/intercom-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/intercom/v1/settings +description: "Intercom : Update the settings for Intercom extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/list-extensions.mdx b/rest-api/management-apis/extensions/list-extensions.mdx index 20e0e3efa..4b4ccae2b 100644 --- a/rest-api/management-apis/extensions/list-extensions.mdx +++ b/rest-api/management-apis/extensions/list-extensions.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions +description: "List the Extensions." --- ## Common errors diff --git a/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx index 72a59efc6..752263d64 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/message-shortcuts/v1/settings +description: "Message Shortcuts : Delete the settings for Message shortcuts extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx index d9bc715d0..ac6a691d9 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/message-shortcuts/v1/settings +description: "Message Shortcuts : Get settings for Message shortcuts extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx index 08f05ead2..fa65b1624 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/message-shortcuts/v1/settings +description: "Message Shortcuts : Store new settings for Message shortcuts extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx b/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx index d5c9c4164..fea2fda78 100644 --- a/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx +++ b/rest-api/management-apis/extensions/message-shortcuts-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/message-shortcuts/v1/settings +description: "Message Shortcuts : Update the settings for Message shortcuts extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx index f20f138e5..c837cea8b 100644 --- a/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-adds-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/profanity-filter/v1/settings +description: "Profanity-filter : Adds settings an app." --- ## Common errors diff --git a/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx index 384ba9df6..241690c96 100644 --- a/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/profanity-filter/v1/settings +description: "Profanity-filter : Delete the settings for Profanity-filter extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx index 6722d0fe7..bcb3b1a86 100644 --- a/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/profanity-filter/v1/settings +description: "Profanity-filter : Get settings of an app." --- ## Common errors diff --git a/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx b/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx index a17ed5931..c65e9f34f 100644 --- a/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx +++ b/rest-api/management-apis/extensions/profanity-filter-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/profanity-filter/v1/settings +description: "Profanity-filter : Update the settings for Profanity-filter extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-delete-settings.mdx b/rest-api/management-apis/extensions/push-notification-delete-settings.mdx index b0dc943b3..dff9b31a1 100644 --- a/rest-api/management-apis/extensions/push-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/push-notification/v1/settings +description: "Push notification : Delete the settings for Push notifications extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-get-certificate.mdx b/rest-api/management-apis/extensions/push-notification-get-certificate.mdx index 5ac4b41ad..9d3043383 100644 --- a/rest-api/management-apis/extensions/push-notification-get-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-get-certificate.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/push-notification/v1/query-certificates +description: "Push notification : Get Certificate description" --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-get-settings.mdx b/rest-api/management-apis/extensions/push-notification-get-settings.mdx index cec289e09..5114724cc 100644 --- a/rest-api/management-apis/extensions/push-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/push-notification/v1/settings +description: "Push notification : Get settings for Push notifications extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-store-settings.mdx b/rest-api/management-apis/extensions/push-notification-store-settings.mdx index 934baee19..e91be2f21 100644 --- a/rest-api/management-apis/extensions/push-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/settings +description: "Push notification : Store new settings for Push notifications extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-update-settings.mdx b/rest-api/management-apis/extensions/push-notification-update-settings.mdx index 6e8119eb9..841ba3a31 100644 --- a/rest-api/management-apis/extensions/push-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/push-notification-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/push-notification/v1/settings +description: "Push notification : Update the settings for Push notifications extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx b/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx index 03cee7a74..d67d12ca2 100644 --- a/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-upload-p12-certificate.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/upload-certificate-p12 +description: "Push notification : Upload a p12 Certificate" --- ## Common errors diff --git a/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx b/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx index 248f23738..8ae043280 100644 --- a/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx +++ b/rest-api/management-apis/extensions/push-notification-upload-p8-certificate.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/push-notification/v1/upload-certificate-p8 +description: "Push notification : Upload a p8 Certificate" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-message-delete-settings.mdx b/rest-api/management-apis/extensions/report-message-delete-settings.mdx index 0184594f8..b390bf66a 100644 --- a/rest-api/management-apis/extensions/report-message-delete-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/report-message/v1/settings +description: "Report message : Delete the settings for Report message extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-message-get-settings.mdx b/rest-api/management-apis/extensions/report-message-get-settings.mdx index 73d65cec7..3a453bc2c 100644 --- a/rest-api/management-apis/extensions/report-message-get-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/report-message/v1/settings +description: "Report message : Get settings for Report message extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-message-store-settings.mdx b/rest-api/management-apis/extensions/report-message-store-settings.mdx index 6fe3e2540..7259a9a35 100644 --- a/rest-api/management-apis/extensions/report-message-store-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/report-message/v1/settings +description: "Report message : Store new settings for Report message extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-message-update-settings.mdx b/rest-api/management-apis/extensions/report-message-update-settings.mdx index 93f537a71..1b31cbb27 100644 --- a/rest-api/management-apis/extensions/report-message-update-settings.mdx +++ b/rest-api/management-apis/extensions/report-message-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/report-message/v1/settings +description: "Report message : Update the settings for Report message extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-user-delete-settings.mdx b/rest-api/management-apis/extensions/report-user-delete-settings.mdx index 56bbea60a..6e1da6bb9 100644 --- a/rest-api/management-apis/extensions/report-user-delete-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/report-user/v1/settings +description: "Report user : Delete the settings for Report user extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-user-get-settings.mdx b/rest-api/management-apis/extensions/report-user-get-settings.mdx index 660b2a159..0af1c2fa3 100644 --- a/rest-api/management-apis/extensions/report-user-get-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/report-user/v1/settings +description: "Report user : Get settings for Report user extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-user-store-settings.mdx b/rest-api/management-apis/extensions/report-user-store-settings.mdx index 39adcd8b2..674950abf 100644 --- a/rest-api/management-apis/extensions/report-user-store-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/report-user/v1/settings +description: "Report user : Store new settings for Report user extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/report-user-update-settings.mdx b/rest-api/management-apis/extensions/report-user-update-settings.mdx index c85494cbd..f2b6eb623 100644 --- a/rest-api/management-apis/extensions/report-user-update-settings.mdx +++ b/rest-api/management-apis/extensions/report-user-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/report-user/v1/settings +description: "Report user : Update the settings for Report user extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx index e825516c5..e69f29337 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/rich-media/v1/settings +description: "Rich media preview : Delete the settings for Rich media preview extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx index 3035771b7..a5a0cf462 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/rich-media/v1/settings +description: "Rich media preview : Get settings for Rich media preview extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx index ecd4bf3ee..3f936c9e3 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/rich-media/v1/settings +description: "Rich media preview : Store new settings for Rich media preview extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx b/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx index 125b7d322..e61f6138b 100644 --- a/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx +++ b/rest-api/management-apis/extensions/rich-media-preview-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/rich-media/v1/settings +description: "Rich media preview : Update the settings for Rich media preview extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx index f7988d303..a020ee655 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/sentiment-analysis/v1/settings +description: "Sentiment analysis : Delete the settings for Sentiment analysis extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx index 5d4a77349..7c79b5f3c 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/sentiment-analysis/v1/settings +description: "Sentiment analysis : Get settings for Sentiment analysis extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx index 1358d77cb..759dbe1ca 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/sentiment-analysis/v1/settings +description: "Sentiment analysis : Store new settings for Sentiment analysis extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx b/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx index 66cd69fb3..38b78ba16 100644 --- a/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx +++ b/rest-api/management-apis/extensions/sentiment-analysis-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/sentiment-analysis/v1/settings +description: "Sentiment analysis : Update the settings for Sentiment analysis extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx b/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx index f3d604afd..323ef203e 100644 --- a/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/sms-notification/v1/settings +description: "SMS Notification : Delete the settings for SMS Notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/sms-notification-get-settings.mdx b/rest-api/management-apis/extensions/sms-notification-get-settings.mdx index bf8cf94e7..699ceec59 100644 --- a/rest-api/management-apis/extensions/sms-notification-get-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/sms-notification/v1/settings +description: "SMS Notification : Get settings for SMS Notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/sms-notification-store-settings.mdx b/rest-api/management-apis/extensions/sms-notification-store-settings.mdx index ecb8b677b..112ad7ec1 100644 --- a/rest-api/management-apis/extensions/sms-notification-store-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/sms-notification/v1/settings +description: "SMS Notification : Store new settings for SMS Notification extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/sms-notification-update-settings.mdx b/rest-api/management-apis/extensions/sms-notification-update-settings.mdx index d0c77abf5..1dca8996a 100644 --- a/rest-api/management-apis/extensions/sms-notification-update-settings.mdx +++ b/rest-api/management-apis/extensions/sms-notification-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/sms-notification/v1/settings +description: "SMS Notification : Update the settings for SMS Notification extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx index 93ef67736..1b25ffee7 100644 --- a/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/stickers/v1/settings +description: "Stickers extension : Delete the settings for Stickers extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx index d165d99d7..20ddb41df 100644 --- a/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/stickers/v1/settings +description: "Stickers extension : Get settings for Stickers extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx b/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx index d3a17b691..6dca9e8a9 100644 --- a/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx +++ b/rest-api/management-apis/extensions/stickers-extension-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/stickers/v1/settings +description: "Stickers extension : Update the settings for Stickers extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/stipop-delete-settings.mdx b/rest-api/management-apis/extensions/stipop-delete-settings.mdx index 5a23eb493..c89c4c7a9 100644 --- a/rest-api/management-apis/extensions/stipop-delete-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/stickers-stipop/v1/settings +description: "Stipop : Delete the settings for Stipop extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/stipop-get-settings.mdx b/rest-api/management-apis/extensions/stipop-get-settings.mdx index 280d1bb26..6677b6d1b 100644 --- a/rest-api/management-apis/extensions/stipop-get-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/stickers-stipop/v1/settings +description: "Stipop : Get settings for Stipop extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/stipop-store-settings.mdx b/rest-api/management-apis/extensions/stipop-store-settings.mdx index 4f0d25b50..7fa8bf9ed 100644 --- a/rest-api/management-apis/extensions/stipop-store-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/stickers-stipop/v1/settings +description: "Stipop : Store new settings for Stipop extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/stipop-update-settings.mdx b/rest-api/management-apis/extensions/stipop-update-settings.mdx index 2541fbde6..82db6c653 100644 --- a/rest-api/management-apis/extensions/stipop-update-settings.mdx +++ b/rest-api/management-apis/extensions/stipop-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/stickers-stipop/v1/settings +description: "Stipop : Update the settings for Stipop extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx index b279b3045..52b2f0901 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/gifs-tenor/v1/settings +description: "Tenor gifs : Delete the settings for Tenor gifs extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx index 30b6026a3..cff3d4ccc 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/gifs-tenor/v1/settings +description: "Tenor gifs : Get settings for Tenor gifs extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx index 6f4a69f8a..3e378bad6 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/gifs-tenor/v1/settings +description: "Tenor gifs : Store new settings for Tenor gifs extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx b/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx index 213506399..21f212a43 100644 --- a/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx +++ b/rest-api/management-apis/extensions/tenor-gifs-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/gifs-tenor/v1/settings +description: "Tenor gifs : Update the settings for Tenor gifs extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx b/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx index 1c077d04f..68f9ed3c9 100644 --- a/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings +description: "TinyURL : Delete the settings for TinyURL extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/tinyurl-get-settings.mdx b/rest-api/management-apis/extensions/tinyurl-get-settings.mdx index 91f36ec30..0122a42e3 100644 --- a/rest-api/management-apis/extensions/tinyurl-get-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings +description: "TinyURL : Get settings for TinyURL extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/tinyurl-store-settings.mdx b/rest-api/management-apis/extensions/tinyurl-store-settings.mdx index bc6ee1f6d..de84f0cda 100644 --- a/rest-api/management-apis/extensions/tinyurl-store-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings +description: "TinyURL : Store new settings for TinyURL extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/tinyurl-update-settings.mdx b/rest-api/management-apis/extensions/tinyurl-update-settings.mdx index 7fe3e67de..cc3eaab9e 100644 --- a/rest-api/management-apis/extensions/tinyurl-update-settings.mdx +++ b/rest-api/management-apis/extensions/tinyurl-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/url-shortener-tinyurl/v1/settings +description: "TinyURL : Update the settings for TinyURL extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx index d8e3c0b8a..b1c856902 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/broadcast/v1/settings +description: "Video Broadcasting : Delete the settings for Video Broadcasting extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx index 90d56470b..a91d8201c 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/broadcast/v1/settings +description: "Video Broadcasting : Get settings for Video Broadcasting extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx index 22de38208..91ba29421 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/broadcast/v1/settings +description: "Video Broadcasting : Store new settings for Video Broadcasting extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx b/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx index 6b5fd3860..728dbfb51 100644 --- a/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx +++ b/rest-api/management-apis/extensions/video-broadcasting-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/broadcast/v1/settings +description: "Video Broadcasting : Update the settings for Video Broadcasting extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx index dcf4b3e29..93c74a5d6 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/virus-malware-scanner/v1/settings +description: "Virus Malware Scanner : Delete the settings for Virus malware scanner extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx index 50d5dd85f..910120428 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/virus-malware-scanner/v1/settings +description: "Virus Malware Scanner : Get settings for Virus malware scanner extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx index efe704feb..922aa6161 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/virus-malware-scanner/v1/settings +description: "Virus Malware Scanner : Store new settings for Virus malware scanner extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx b/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx index ef3faebc8..df4bb1e19 100644 --- a/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx +++ b/rest-api/management-apis/extensions/virus-malware-scanner-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/virus-malware-scanner/v1/settings +description: "Virus Malware Scanner : Update the settings for Virus malware scanner extension." --- ## Common errors diff --git a/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx index 1bd3486bf..592a326d4 100644 --- a/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/voice-transcription/v1/settings +description: "Voice transcription : Delete the settings for Voice transcription extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx index 74ef1b7b6..df0b1814b 100644 --- a/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/voice-transcription/v1/settings +description: "Voice transcription : Get settings for Voice transcription extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx index 8efacdff6..9f16c19a5 100644 --- a/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/voice-transcription/v1/settings +description: "Voice transcription : Store new settings for Voice transcription extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx b/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx index 29df86d48..9199a2a79 100644 --- a/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx +++ b/rest-api/management-apis/extensions/voice-transcription-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/voice-transcription/v1/settings +description: "Voice transcription : Update the settings for Voice transcription extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx b/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx index 025f7ffa0..7fe2affe2 100644 --- a/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-delete-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/extensions/xss-filter/v1/settings +description: "XSS Filter : Delete the settings for XSS Filter extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/xss-filter-get-settings.mdx b/rest-api/management-apis/extensions/xss-filter-get-settings.mdx index d0c2a7620..48e28897a 100644 --- a/rest-api/management-apis/extensions/xss-filter-get-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-get-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/extensions/xss-filter/v1/settings +description: "XSS Filter : Get settings for XSS Filter extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/xss-filter-store-settings.mdx b/rest-api/management-apis/extensions/xss-filter-store-settings.mdx index 70f62590a..778a66bdb 100644 --- a/rest-api/management-apis/extensions/xss-filter-store-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-store-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/extensions/xss-filter/v1/settings +description: "XSS Filter : Store new settings for XSS Filter extension" --- ## Common errors diff --git a/rest-api/management-apis/extensions/xss-filter-update-settings.mdx b/rest-api/management-apis/extensions/xss-filter-update-settings.mdx index 927c28c0a..a790dd876 100644 --- a/rest-api/management-apis/extensions/xss-filter-update-settings.mdx +++ b/rest-api/management-apis/extensions/xss-filter-update-settings.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/extensions/xss-filter/v1/settings +description: "XSS Filter : Update the settings for XSS Filter extension" --- ## Common errors diff --git a/rest-api/management-apis/properties-and-constraints.mdx b/rest-api/management-apis/properties-and-constraints.mdx index 7c65f156b..df0ea7e3f 100644 --- a/rest-api/management-apis/properties-and-constraints.mdx +++ b/rest-api/management-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the Management APIs (Multi-Tenancy). diff --git a/rest-api/management-apis/settings/list-settings.mdx b/rest-api/management-apis/settings/list-settings.mdx index 9d8751860..f2d2bbd7a 100644 --- a/rest-api/management-apis/settings/list-settings.mdx +++ b/rest-api/management-apis/settings/list-settings.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/settings +description: "Lists settings of an app." --- ## Common errors diff --git a/rest-api/management-apis/settings/maps-settings.mdx b/rest-api/management-apis/settings/maps-settings.mdx index b7c53713b..06eb346f0 100644 --- a/rest-api/management-apis/settings/maps-settings.mdx +++ b/rest-api/management-apis/settings/maps-settings.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/settings +description: "Maps settings for an app." --- ## Common errors diff --git a/rest-api/management-apis/settings/unmaps-settings.mdx b/rest-api/management-apis/settings/unmaps-settings.mdx index 7500f654e..07f8b0f3d 100644 --- a/rest-api/management-apis/settings/unmaps-settings.mdx +++ b/rest-api/management-apis/settings/unmaps-settings.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/settings +description: "UnMaps settings of an app." --- ## Common errors diff --git a/rest-api/management-apis/team-management/addsremove-collaborators.mdx b/rest-api/management-apis/team-management/addsremove-collaborators.mdx index 88bd2a78f..e6fd85e58 100644 --- a/rest-api/management-apis/team-management/addsremove-collaborators.mdx +++ b/rest-api/management-apis/team-management/addsremove-collaborators.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/collaborators +description: "Adds or removes collaborators for an app." --- ## Common errors diff --git a/rest-api/management-apis/team-management/list-collaborators.mdx b/rest-api/management-apis/team-management/list-collaborators.mdx index 1f8ed9567..62454f091 100644 --- a/rest-api/management-apis/team-management/list-collaborators.mdx +++ b/rest-api/management-apis/team-management/list-collaborators.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/collaborators +description: "Lists all the collaborators of an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/add-triggers.mdx b/rest-api/management-apis/webhooks/add-triggers.mdx index 52d3751db..27a20ce72 100644 --- a/rest-api/management-apis/webhooks/add-triggers.mdx +++ b/rest-api/management-apis/webhooks/add-triggers.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/webhooks/{webhookId}/triggers +description: "Adds trigger to a webhook in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/create-webhook.mdx b/rest-api/management-apis/webhooks/create-webhook.mdx index 8f4987f54..914e451e8 100644 --- a/rest-api/management-apis/webhooks/create-webhook.mdx +++ b/rest-api/management-apis/webhooks/create-webhook.mdx @@ -1,5 +1,6 @@ --- openapi: post /apps/{appId}/webhooks +description: "Creates webhook in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/delete-webhook.mdx b/rest-api/management-apis/webhooks/delete-webhook.mdx index ba03e8fa5..4704ebfe0 100644 --- a/rest-api/management-apis/webhooks/delete-webhook.mdx +++ b/rest-api/management-apis/webhooks/delete-webhook.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/webhooks/{webhookId} +description: "Delete the webhook from an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/get-webhook.mdx b/rest-api/management-apis/webhooks/get-webhook.mdx index 58dd67a6a..96875bff8 100644 --- a/rest-api/management-apis/webhooks/get-webhook.mdx +++ b/rest-api/management-apis/webhooks/get-webhook.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/webhooks/{webhookId} +description: "Gets details of a webhook in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/list-triggers.mdx b/rest-api/management-apis/webhooks/list-triggers.mdx index a9605375d..ff7d6caa9 100644 --- a/rest-api/management-apis/webhooks/list-triggers.mdx +++ b/rest-api/management-apis/webhooks/list-triggers.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/webhooks/{webhookId}/triggers +description: "List triggers attached to a webhook in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/list-webhooks.mdx b/rest-api/management-apis/webhooks/list-webhooks.mdx index 776dce78b..b33c23e2c 100644 --- a/rest-api/management-apis/webhooks/list-webhooks.mdx +++ b/rest-api/management-apis/webhooks/list-webhooks.mdx @@ -1,5 +1,6 @@ --- openapi: get /apps/{appId}/webhooks +description: "Lists webhooks in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/overview.mdx b/rest-api/management-apis/webhooks/overview.mdx index 7f0f3591b..8437892c3 100644 --- a/rest-api/management-apis/webhooks/overview.mdx +++ b/rest-api/management-apis/webhooks/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat REST API." --- diff --git a/rest-api/management-apis/webhooks/remove-triggers.mdx b/rest-api/management-apis/webhooks/remove-triggers.mdx index 1a6ae86a7..7d7fc2452 100644 --- a/rest-api/management-apis/webhooks/remove-triggers.mdx +++ b/rest-api/management-apis/webhooks/remove-triggers.mdx @@ -1,5 +1,6 @@ --- openapi: delete /apps/{appId}/webhooks/{webhookId}/triggers +description: "Removes triggers from a webhook in an app." --- ## Common errors diff --git a/rest-api/management-apis/webhooks/update-webhook.mdx b/rest-api/management-apis/webhooks/update-webhook.mdx index 06a019ca9..c0a6e4514 100644 --- a/rest-api/management-apis/webhooks/update-webhook.mdx +++ b/rest-api/management-apis/webhooks/update-webhook.mdx @@ -1,5 +1,6 @@ --- openapi: put /apps/{appId}/webhooks/{webhookId} +description: "Updates webhook details of an app." --- ## Common errors diff --git a/rest-api/messages/add-reaction.mdx b/rest-api/messages/add-reaction.mdx index ec6afd9ac..ba571a829 100644 --- a/rest-api/messages/add-reaction.mdx +++ b/rest-api/messages/add-reaction.mdx @@ -1,5 +1,6 @@ --- openapi: post /messages/{id}/reactions/{reaction} +description: "Adds a reaction to a message." --- ## Common errors diff --git a/rest-api/messages/delete-message.mdx b/rest-api/messages/delete-message.mdx index 57e2e06d9..431a3c14c 100644 --- a/rest-api/messages/delete-message.mdx +++ b/rest-api/messages/delete-message.mdx @@ -1,5 +1,6 @@ --- openapi: delete /messages/{id} +description: "Deletes the message." --- ## Common errors diff --git a/rest-api/messages/get-message.mdx b/rest-api/messages/get-message.mdx index 94b65b90e..56d92ab94 100644 --- a/rest-api/messages/get-message.mdx +++ b/rest-api/messages/get-message.mdx @@ -1,5 +1,6 @@ --- openapi: get /messages/{id} +description: "Fetches the details of a message." --- ## Common errors diff --git a/rest-api/messages/list-all-reactions.mdx b/rest-api/messages/list-all-reactions.mdx index eca576a53..ad58b9662 100644 --- a/rest-api/messages/list-all-reactions.mdx +++ b/rest-api/messages/list-all-reactions.mdx @@ -1,5 +1,6 @@ --- openapi: get /messages/{id}/reactions +description: "Lists all the reactions for a message" --- ## Common errors diff --git a/rest-api/messages/list-group-messages.mdx b/rest-api/messages/list-group-messages.mdx index 029cd72c1..1640790dd 100644 --- a/rest-api/messages/list-group-messages.mdx +++ b/rest-api/messages/list-group-messages.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid}/messages +description: "Fetches the group message list for a user." --- ## Common errors diff --git a/rest-api/messages/list-messages.mdx b/rest-api/messages/list-messages.mdx index 1362baf9a..9a2e877d6 100644 --- a/rest-api/messages/list-messages.mdx +++ b/rest-api/messages/list-messages.mdx @@ -1,5 +1,6 @@ --- openapi: get /messages +description: "Fetches the messages list." --- ## Common errors diff --git a/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx b/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx index cdec92381..8d71eea12 100644 --- a/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx +++ b/rest-api/messages/list-reactions-with-a-specific-emoji-unicode.mdx @@ -1,3 +1,4 @@ --- openapi: get /messages/{id}/reactions/{reaction} +description: "List reactions with a specific emoji/unicodes for a message" --- diff --git a/rest-api/messages/list-threaded-messages.mdx b/rest-api/messages/list-threaded-messages.mdx index b3aa21775..3189cfc3e 100644 --- a/rest-api/messages/list-threaded-messages.mdx +++ b/rest-api/messages/list-threaded-messages.mdx @@ -1,5 +1,6 @@ --- openapi: get /messages/{id}/thread +description: "Fetches the messages list of a thread." --- ## Common errors diff --git a/rest-api/messages/list-user-messages.mdx b/rest-api/messages/list-user-messages.mdx index 10972e850..647da87e1 100644 --- a/rest-api/messages/list-user-messages.mdx +++ b/rest-api/messages/list-user-messages.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid}/messages +description: "Fetches messages between onBehalfOfuid and an uid from path param." --- ## Common errors diff --git a/rest-api/messages/remove-reaction.mdx b/rest-api/messages/remove-reaction.mdx index 11676d627..c21722e40 100644 --- a/rest-api/messages/remove-reaction.mdx +++ b/rest-api/messages/remove-reaction.mdx @@ -1,5 +1,6 @@ --- openapi: delete /messages/{id}/reactions/{reaction} +description: "Removes a reaction from a message" --- ## Common errors diff --git a/rest-api/messages/send-bot-message.mdx b/rest-api/messages/send-bot-message.mdx index 2d6a70110..c0305ad8b 100644 --- a/rest-api/messages/send-bot-message.mdx +++ b/rest-api/messages/send-bot-message.mdx @@ -1,5 +1,6 @@ --- openapi: post /bots/{uid}/messages +description: "Sends Message from a Bot." --- ## Common errors diff --git a/rest-api/messages/send-message.mdx b/rest-api/messages/send-message.mdx index 8440e6176..1eef7befd 100644 --- a/rest-api/messages/send-message.mdx +++ b/rest-api/messages/send-message.mdx @@ -1,5 +1,6 @@ --- openapi: post /messages +description: "Sends Message on behalf of a user." --- ## Constraints diff --git a/rest-api/messages/send-threaded-message.mdx b/rest-api/messages/send-threaded-message.mdx index 40c09bc40..975a24553 100644 --- a/rest-api/messages/send-threaded-message.mdx +++ b/rest-api/messages/send-threaded-message.mdx @@ -1,5 +1,6 @@ --- openapi: post /messages/{id}/thread +description: "Sends Threaded Message on behalf of a user." --- ## Common errors diff --git a/rest-api/messages/update-message.mdx b/rest-api/messages/update-message.mdx index 675d11bef..939ba69cc 100644 --- a/rest-api/messages/update-message.mdx +++ b/rest-api/messages/update-message.mdx @@ -1,5 +1,6 @@ --- openapi: put /messages/{id} +description: "Edits the message on behalf of a user." --- ## Common errors diff --git a/rest-api/metrics/message-metrics.mdx b/rest-api/metrics/message-metrics.mdx index c3530f33f..aa73adfa3 100644 --- a/rest-api/metrics/message-metrics.mdx +++ b/rest-api/metrics/message-metrics.mdx @@ -1,5 +1,6 @@ --- openapi: get /stats/messages +description: "Gives the number of messages sent and receipts received in an interval of five minutes." --- ## Common errors diff --git a/rest-api/metrics/usage-metrics.mdx b/rest-api/metrics/usage-metrics.mdx index fe812c018..a3fd3997c 100644 --- a/rest-api/metrics/usage-metrics.mdx +++ b/rest-api/metrics/usage-metrics.mdx @@ -1,5 +1,6 @@ --- openapi: get /stats +description: "Usage metrics of an app." --- ## Common errors diff --git a/rest-api/moderation-apis/add-keywords.mdx b/rest-api/moderation-apis/add-keywords.mdx index 2a0094302..7d93116fb 100644 --- a/rest-api/moderation-apis/add-keywords.mdx +++ b/rest-api/moderation-apis/add-keywords.mdx @@ -1,3 +1,4 @@ --- openapi: post /moderation/keywords +description: "Add keywords or regex patterns to a moderation list." --- diff --git a/rest-api/moderation-apis/add-rule.mdx b/rest-api/moderation-apis/add-rule.mdx index 7ed82c38e..9db7a0913 100644 --- a/rest-api/moderation-apis/add-rule.mdx +++ b/rest-api/moderation-apis/add-rule.mdx @@ -1,3 +1,4 @@ --- openapi: post /moderation/rules +description: "Create a new content moderation rule." --- diff --git a/rest-api/moderation-apis/approve-blocked-messages.mdx b/rest-api/moderation-apis/approve-blocked-messages.mdx index b09623f66..8415cb491 100644 --- a/rest-api/moderation-apis/approve-blocked-messages.mdx +++ b/rest-api/moderation-apis/approve-blocked-messages.mdx @@ -1,3 +1,4 @@ --- openapi: patch /moderation/blocked-messages/{messageId} +description: "Approve messages that were blocked by moderation rules." --- diff --git a/rest-api/moderation-apis/blockreview-flagged-message.mdx b/rest-api/moderation-apis/blockreview-flagged-message.mdx index 9fe7cdfc0..8a6536b08 100644 --- a/rest-api/moderation-apis/blockreview-flagged-message.mdx +++ b/rest-api/moderation-apis/blockreview-flagged-message.mdx @@ -1,3 +1,4 @@ --- openapi: patch /moderation/flagged-messages/{id} +description: "Review a flagged message and take action." --- diff --git a/rest-api/moderation-apis/create-reasons.mdx b/rest-api/moderation-apis/create-reasons.mdx index 5fda0753f..07340ba41 100644 --- a/rest-api/moderation-apis/create-reasons.mdx +++ b/rest-api/moderation-apis/create-reasons.mdx @@ -1,3 +1,4 @@ --- openapi: post /moderation/reasons +description: "Create custom flag reasons for content moderation." --- diff --git a/rest-api/moderation-apis/delete-reasons.mdx b/rest-api/moderation-apis/delete-reasons.mdx index 9e5d78ac4..eae19030f 100644 --- a/rest-api/moderation-apis/delete-reasons.mdx +++ b/rest-api/moderation-apis/delete-reasons.mdx @@ -1,3 +1,4 @@ --- openapi: delete /moderation/reasons/{id} +description: "Delete a custom flag reason." --- diff --git a/rest-api/moderation-apis/error-codes.mdx b/rest-api/moderation-apis/error-codes.mdx index 1e6be21d2..b027b9fbe 100644 --- a/rest-api/moderation-apis/error-codes.mdx +++ b/rest-api/moderation-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the AI Moderation APIs. diff --git a/rest-api/moderation-apis/flag-a-message.mdx b/rest-api/moderation-apis/flag-a-message.mdx index 77a3a6a5f..7dffef043 100644 --- a/rest-api/moderation-apis/flag-a-message.mdx +++ b/rest-api/moderation-apis/flag-a-message.mdx @@ -1,3 +1,4 @@ --- openapi: post /messages/{id}/flagged +description: "Flag a message for moderation review." --- diff --git a/rest-api/moderation-apis/get-keyword.mdx b/rest-api/moderation-apis/get-keyword.mdx index e73ab9699..93769d551 100644 --- a/rest-api/moderation-apis/get-keyword.mdx +++ b/rest-api/moderation-apis/get-keyword.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/keywords/{keywordId} +description: "Retrieve details of a specific keyword entry." --- diff --git a/rest-api/moderation-apis/get-reason-details.mdx b/rest-api/moderation-apis/get-reason-details.mdx index 715395c56..03bfbe999 100644 --- a/rest-api/moderation-apis/get-reason-details.mdx +++ b/rest-api/moderation-apis/get-reason-details.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/reasons/{id} +description: "Retrieve details of a specific flag reason." --- diff --git a/rest-api/moderation-apis/get-rule-revisions.mdx b/rest-api/moderation-apis/get-rule-revisions.mdx index 4136c7810..7104f2fc6 100644 --- a/rest-api/moderation-apis/get-rule-revisions.mdx +++ b/rest-api/moderation-apis/get-rule-revisions.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/rules/{ruleId}/revisions +description: "Fetch historical revisions of a moderation rule." --- diff --git a/rest-api/moderation-apis/get-rule.mdx b/rest-api/moderation-apis/get-rule.mdx index 07c952251..6aec156f7 100644 --- a/rest-api/moderation-apis/get-rule.mdx +++ b/rest-api/moderation-apis/get-rule.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/rules/{ruleId} +description: "Retrieve details of a specific moderation rule." --- diff --git a/rest-api/moderation-apis/list-blocked-messages.mdx b/rest-api/moderation-apis/list-blocked-messages.mdx index 206067ab8..b1d38a2c5 100644 --- a/rest-api/moderation-apis/list-blocked-messages.mdx +++ b/rest-api/moderation-apis/list-blocked-messages.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/blocked-messages +description: "List all messages blocked by moderation rules." --- diff --git a/rest-api/moderation-apis/list-flagged-messages.mdx b/rest-api/moderation-apis/list-flagged-messages.mdx index c364c406c..91d457d55 100644 --- a/rest-api/moderation-apis/list-flagged-messages.mdx +++ b/rest-api/moderation-apis/list-flagged-messages.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/flagged-messages +description: "List all messages flagged for review." --- diff --git a/rest-api/moderation-apis/list-keywords.mdx b/rest-api/moderation-apis/list-keywords.mdx index 8f4d7d9e7..905780506 100644 --- a/rest-api/moderation-apis/list-keywords.mdx +++ b/rest-api/moderation-apis/list-keywords.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/keywords +description: "List all keywords in a moderation list." --- diff --git a/rest-api/moderation-apis/list-reasons.mdx b/rest-api/moderation-apis/list-reasons.mdx index cd563ff9b..132ec8de1 100644 --- a/rest-api/moderation-apis/list-reasons.mdx +++ b/rest-api/moderation-apis/list-reasons.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/reasons +description: "List all custom flag reasons." --- diff --git a/rest-api/moderation-apis/list-reviewed-messages.mdx b/rest-api/moderation-apis/list-reviewed-messages.mdx index d0e9dc0b8..a598ee70a 100644 --- a/rest-api/moderation-apis/list-reviewed-messages.mdx +++ b/rest-api/moderation-apis/list-reviewed-messages.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/reviewed-messages +description: "List all reviewed moderation messages." --- diff --git a/rest-api/moderation-apis/list-rules.mdx b/rest-api/moderation-apis/list-rules.mdx index 223c22ecc..482a9c1f0 100644 --- a/rest-api/moderation-apis/list-rules.mdx +++ b/rest-api/moderation-apis/list-rules.mdx @@ -1,3 +1,4 @@ --- openapi: get /moderation/rules +description: "List all content moderation rules." --- diff --git a/rest-api/moderation-apis/properties-and-constraints.mdx b/rest-api/moderation-apis/properties-and-constraints.mdx index 53b6e2bde..cf7b18a54 100644 --- a/rest-api/moderation-apis/properties-and-constraints.mdx +++ b/rest-api/moderation-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the AI Moderation APIs. diff --git a/rest-api/moderation-apis/remove-keyword.mdx b/rest-api/moderation-apis/remove-keyword.mdx index 05f77fb55..09a3f5731 100644 --- a/rest-api/moderation-apis/remove-keyword.mdx +++ b/rest-api/moderation-apis/remove-keyword.mdx @@ -1,3 +1,4 @@ --- openapi: delete /moderation/keywords/{keywordId} +description: "Remove a keyword from a moderation list." --- diff --git a/rest-api/moderation-apis/remove-rule.mdx b/rest-api/moderation-apis/remove-rule.mdx index 8b91cbe7c..1608ed9d8 100644 --- a/rest-api/moderation-apis/remove-rule.mdx +++ b/rest-api/moderation-apis/remove-rule.mdx @@ -1,3 +1,4 @@ --- openapi: delete /moderation/rules/{ruleId} +description: "Delete a content moderation rule." --- diff --git a/rest-api/moderation-apis/review-blocked-message.mdx b/rest-api/moderation-apis/review-blocked-message.mdx index 79d4848fb..2de4fb681 100644 --- a/rest-api/moderation-apis/review-blocked-message.mdx +++ b/rest-api/moderation-apis/review-blocked-message.mdx @@ -1,3 +1,4 @@ --- openapi: patch /moderation/blocked-messages/{id} +description: "Review a blocked message and approve or reject it." --- diff --git a/rest-api/moderation-apis/setup-and-authentication.mdx b/rest-api/moderation-apis/setup-and-authentication.mdx index ad814a9df..6c1def02e 100644 --- a/rest-api/moderation-apis/setup-and-authentication.mdx +++ b/rest-api/moderation-apis/setup-and-authentication.mdx @@ -2,4 +2,5 @@ title: "Setup & Authentication" icon: "key" url: "/rest-api/authentication" +description: "Navigate to Setup & Authentication documentation." --- diff --git a/rest-api/moderation-apis/update-keyword.mdx b/rest-api/moderation-apis/update-keyword.mdx index 7d9ee61c1..595702881 100644 --- a/rest-api/moderation-apis/update-keyword.mdx +++ b/rest-api/moderation-apis/update-keyword.mdx @@ -1,3 +1,4 @@ --- openapi: put /moderation/keywords/{keywordId} +description: "Update a keyword entry in a moderation list." --- diff --git a/rest-api/moderation-apis/update-reason-details.mdx b/rest-api/moderation-apis/update-reason-details.mdx index 1566528a4..bb9ad0637 100644 --- a/rest-api/moderation-apis/update-reason-details.mdx +++ b/rest-api/moderation-apis/update-reason-details.mdx @@ -1,3 +1,4 @@ --- openapi: put /moderation/reasons/{id} +description: "Update a custom flag reason." --- diff --git a/rest-api/moderation-apis/update-rule.mdx b/rest-api/moderation-apis/update-rule.mdx index d42f34a5f..9d69f1980 100644 --- a/rest-api/moderation-apis/update-rule.mdx +++ b/rest-api/moderation-apis/update-rule.mdx @@ -1,3 +1,4 @@ --- openapi: put /moderation/rules/{ruleId} +description: "Update an existing content moderation rule." --- diff --git a/rest-api/moderation-apis/users-and-groups.mdx b/rest-api/moderation-apis/users-and-groups.mdx index d03f5ddb4..02b268808 100644 --- a/rest-api/moderation-apis/users-and-groups.mdx +++ b/rest-api/moderation-apis/users-and-groups.mdx @@ -2,4 +2,5 @@ title: "Users & Groups" icon: "users" url: "/rest-api/users" +description: "Navigate to Users & Groups documentation." --- diff --git a/rest-api/moderation-link.mdx b/rest-api/moderation-link.mdx index 65376e185..1cac574fb 100644 --- a/rest-api/moderation-link.mdx +++ b/rest-api/moderation-link.mdx @@ -2,4 +2,5 @@ title: "Moderation APIs" icon: "shield" url: "/rest-api/moderation-apis/overview" +description: "Navigate to Moderation APIs documentation." --- diff --git a/rest-api/notifications-apis/email/delete-custom-provider.mdx b/rest-api/notifications-apis/email/delete-custom-provider.mdx index 70ca99846..8551ad47b 100644 --- a/rest-api/notifications-apis/email/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/email/delete-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/email/v1/providers/custom +description: "Deletes the custom provider for Email Notifications for a given app." --- diff --git a/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx index 6141627ef..c5b367aac 100644 --- a/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/email/v1/providers/sendgrid +description: "Deletes the stored SendGrid credentials for the given app." --- diff --git a/rest-api/notifications-apis/email/get-custom-provider.mdx b/rest-api/notifications-apis/email/get-custom-provider.mdx index c0e76dc56..137a8571b 100644 --- a/rest-api/notifications-apis/email/get-custom-provider.mdx +++ b/rest-api/notifications-apis/email/get-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/email/v1/providers/custom +description: "Fetches the custom provider for Email Notifications for a given app." --- diff --git a/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx index 037fa29fa..83b541f49 100644 --- a/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/email/v1/providers/sendgrid +description: "Fetches the SendGrid credentials stored for the app." --- diff --git a/rest-api/notifications-apis/email/save-custom-provider.mdx b/rest-api/notifications-apis/email/save-custom-provider.mdx index 81d299c91..9d81aec39 100644 --- a/rest-api/notifications-apis/email/save-custom-provider.mdx +++ b/rest-api/notifications-apis/email/save-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/email/v1/providers/custom +description: "Saves the custom provider for Email Notifications for a given app." --- diff --git a/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx index 3aa11ff94..6d5c1b914 100644 --- a/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/email/v1/providers/sendgrid +description: "Store the SendGrid credentials for the given app." --- diff --git a/rest-api/notifications-apis/email/update-custom-provider.mdx b/rest-api/notifications-apis/email/update-custom-provider.mdx index 567934c39..7b8dd6093 100644 --- a/rest-api/notifications-apis/email/update-custom-provider.mdx +++ b/rest-api/notifications-apis/email/update-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/email/v1/providers/custom +description: "Updates the custom provider for Email Notifications for a given app." --- diff --git a/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx index cc5c3bc1b..99b9d8c42 100644 --- a/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/email/v1/providers/sendgrid +description: "Updates the SendGrid credentials for the given app." --- diff --git a/rest-api/notifications-apis/error-codes.mdx b/rest-api/notifications-apis/error-codes.mdx index 95c65c8f1..c6856d60f 100644 --- a/rest-api/notifications-apis/error-codes.mdx +++ b/rest-api/notifications-apis/error-codes.mdx @@ -1,6 +1,7 @@ --- title: "Error Codes" sidebarTitle: "Error Codes" +description: "Error Codes for CometChat REST API." --- Error codes specific to the Notification APIs. diff --git a/rest-api/notifications-apis/properties-and-constraints.mdx b/rest-api/notifications-apis/properties-and-constraints.mdx index 60698795c..1a17b6d9e 100644 --- a/rest-api/notifications-apis/properties-and-constraints.mdx +++ b/rest-api/notifications-apis/properties-and-constraints.mdx @@ -1,6 +1,7 @@ --- title: "Properties and Constraints" sidebarTitle: "Properties and Constraints" +description: "Properties and Constraints for CometChat REST API." --- Properties and constraints for the Notification APIs. diff --git a/rest-api/notifications-apis/push/add-apns-provider.mdx b/rest-api/notifications-apis/push/add-apns-provider.mdx index c8e5cb7ef..388dd119e 100644 --- a/rest-api/notifications-apis/push/add-apns-provider.mdx +++ b/rest-api/notifications-apis/push/add-apns-provider.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/push/v1/providers/apns +description: "Add new APNS provider for the given app." --- diff --git a/rest-api/notifications-apis/push/add-fcm-provider.mdx b/rest-api/notifications-apis/push/add-fcm-provider.mdx index 42f65ded8..d0585c1d6 100644 --- a/rest-api/notifications-apis/push/add-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/add-fcm-provider.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/push/v1/providers/fcm +description: "Add new FCM provider for the given app." --- diff --git a/rest-api/notifications-apis/push/change-default-apns-provider.mdx b/rest-api/notifications-apis/push/change-default-apns-provider.mdx index 05f40a27e..878d4cbe4 100644 --- a/rest-api/notifications-apis/push/change-default-apns-provider.mdx +++ b/rest-api/notifications-apis/push/change-default-apns-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/push/v1/providers/apns/default/{providerId} +description: "Change the default APNS provider for the given app." --- diff --git a/rest-api/notifications-apis/push/change-default-fcm-provider.mdx b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx index 954ec443f..eb9081687 100644 --- a/rest-api/notifications-apis/push/change-default-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/push/v1/providers/fcm/default/{providerId} +description: "Change the default FCM provider for the given app." --- diff --git a/rest-api/notifications-apis/push/delete-apns-providers.mdx b/rest-api/notifications-apis/push/delete-apns-providers.mdx index 26b769e61..bd84f4c7c 100644 --- a/rest-api/notifications-apis/push/delete-apns-providers.mdx +++ b/rest-api/notifications-apis/push/delete-apns-providers.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/push/v1/providers/apns/{providerId} +description: "Delete an APNS provider for the given app." --- diff --git a/rest-api/notifications-apis/push/delete-contact-details.mdx b/rest-api/notifications-apis/push/delete-contact-details.mdx index 9b5d1ab1a..0ca7a831a 100644 --- a/rest-api/notifications-apis/push/delete-contact-details.mdx +++ b/rest-api/notifications-apis/push/delete-contact-details.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/v1/contact-details +description: "Deletes the stored contact details for a given user." --- diff --git a/rest-api/notifications-apis/push/delete-custom-provider.mdx b/rest-api/notifications-apis/push/delete-custom-provider.mdx index 44c8f7a22..c353e0212 100644 --- a/rest-api/notifications-apis/push/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/push/delete-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/push/v1/providers/custom +description: "Deletes the custom provider for Push Notifications for a given app." --- diff --git a/rest-api/notifications-apis/push/delete-fcm-provider.mdx b/rest-api/notifications-apis/push/delete-fcm-provider.mdx index adfcc2482..c78d457ef 100644 --- a/rest-api/notifications-apis/push/delete-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/delete-fcm-provider.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/push/v1/providers/fcm/{providerId} +description: "Delete an FCM provider for the given app." --- diff --git a/rest-api/notifications-apis/push/delete-push-token.mdx b/rest-api/notifications-apis/push/delete-push-token.mdx index 4e7097897..67cac3df5 100644 --- a/rest-api/notifications-apis/push/delete-push-token.mdx +++ b/rest-api/notifications-apis/push/delete-push-token.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/push/v1/tokens/{pushToken} +description: "Deletes the given push token" --- diff --git a/rest-api/notifications-apis/push/get-contact-details.mdx b/rest-api/notifications-apis/push/get-contact-details.mdx index 753b7edf4..70d8c0edc 100644 --- a/rest-api/notifications-apis/push/get-contact-details.mdx +++ b/rest-api/notifications-apis/push/get-contact-details.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/contact-details +description: "Fetches the contact details like Email ID and Phone number for a given user." --- diff --git a/rest-api/notifications-apis/push/get-custom-provider.mdx b/rest-api/notifications-apis/push/get-custom-provider.mdx index 2f6ae6da5..838e6dd79 100644 --- a/rest-api/notifications-apis/push/get-custom-provider.mdx +++ b/rest-api/notifications-apis/push/get-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/push/v1/providers/custom +description: "Fetches the custom provider for Push Notifications for a given app." --- diff --git a/rest-api/notifications-apis/push/get-timezone.mdx b/rest-api/notifications-apis/push/get-timezone.mdx index 8bc807620..85e471948 100644 --- a/rest-api/notifications-apis/push/get-timezone.mdx +++ b/rest-api/notifications-apis/push/get-timezone.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/preferences/timezone +description: "Get the timezone on behalf of the user." --- diff --git a/rest-api/notifications-apis/push/list-apns-providers.mdx b/rest-api/notifications-apis/push/list-apns-providers.mdx index 43a6d4a0f..c32bcee53 100644 --- a/rest-api/notifications-apis/push/list-apns-providers.mdx +++ b/rest-api/notifications-apis/push/list-apns-providers.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/push/v1/providers/apns +description: "List the configured APNS providers for the given app." --- diff --git a/rest-api/notifications-apis/push/list-fcm-providers.mdx b/rest-api/notifications-apis/push/list-fcm-providers.mdx index 0151a67c5..e4043ab22 100644 --- a/rest-api/notifications-apis/push/list-fcm-providers.mdx +++ b/rest-api/notifications-apis/push/list-fcm-providers.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/push/v1/providers/fcm +description: "List the configured FCM providers for the given app." --- diff --git a/rest-api/notifications-apis/push/list-muted-conversations.mdx b/rest-api/notifications-apis/push/list-muted-conversations.mdx index e363fcc24..095cdfbef 100644 --- a/rest-api/notifications-apis/push/list-muted-conversations.mdx +++ b/rest-api/notifications-apis/push/list-muted-conversations.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/preferences/mute +description: "List the conversations where notifications have been muted on behalf of the user." --- diff --git a/rest-api/notifications-apis/push/list-preferences.mdx b/rest-api/notifications-apis/push/list-preferences.mdx index 1be2704c3..2d5016e8b 100644 --- a/rest-api/notifications-apis/push/list-preferences.mdx +++ b/rest-api/notifications-apis/push/list-preferences.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/preferences +description: "List the configured preferences for the given user." --- diff --git a/rest-api/notifications-apis/push/list-push-tokens.mdx b/rest-api/notifications-apis/push/list-push-tokens.mdx index 7158bf258..1a53c725e 100644 --- a/rest-api/notifications-apis/push/list-push-tokens.mdx +++ b/rest-api/notifications-apis/push/list-push-tokens.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/push/v1/tokens +description: "List push tokens for the given auth token." --- diff --git a/rest-api/notifications-apis/push/list-settings.mdx b/rest-api/notifications-apis/push/list-settings.mdx index 0a7dd8062..385ea9c84 100644 --- a/rest-api/notifications-apis/push/list-settings.mdx +++ b/rest-api/notifications-apis/push/list-settings.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/settings +description: "List preferences, templates and sounds for the given app." --- diff --git a/rest-api/notifications-apis/push/mute-conversations.mdx b/rest-api/notifications-apis/push/mute-conversations.mdx index 860e99bd7..2e249f8c0 100644 --- a/rest-api/notifications-apis/push/mute-conversations.mdx +++ b/rest-api/notifications-apis/push/mute-conversations.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/v1/preferences/mute +description: "Mute notifications for the conversations on behalf of the given user." --- diff --git a/rest-api/notifications-apis/push/notifications-logs.mdx b/rest-api/notifications-apis/push/notifications-logs.mdx index 24ce2e091..af5272423 100644 --- a/rest-api/notifications-apis/push/notifications-logs.mdx +++ b/rest-api/notifications-apis/push/notifications-logs.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/v1/logs +description: "Paginated API to fetch logs for notifications" --- diff --git a/rest-api/notifications-apis/push/register-push-token.mdx b/rest-api/notifications-apis/push/register-push-token.mdx index 00b55e873..79a8f1368 100644 --- a/rest-api/notifications-apis/push/register-push-token.mdx +++ b/rest-api/notifications-apis/push/register-push-token.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/push/v1/tokens +description: "Register a push token for the given auth token." --- diff --git a/rest-api/notifications-apis/push/reset-preferences.mdx b/rest-api/notifications-apis/push/reset-preferences.mdx index d623919b2..1c033a662 100644 --- a/rest-api/notifications-apis/push/reset-preferences.mdx +++ b/rest-api/notifications-apis/push/reset-preferences.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/v1/preferences +description: "Reset the preferences for the given user." --- diff --git a/rest-api/notifications-apis/push/reset-settings.mdx b/rest-api/notifications-apis/push/reset-settings.mdx index 5a0324e1e..6779eace1 100644 --- a/rest-api/notifications-apis/push/reset-settings.mdx +++ b/rest-api/notifications-apis/push/reset-settings.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/v1/settings +description: "Reset preferences, templates and sounds to default values for the given app." --- diff --git a/rest-api/notifications-apis/push/save-custom-provider.mdx b/rest-api/notifications-apis/push/save-custom-provider.mdx index 445772a46..ca7d34910 100644 --- a/rest-api/notifications-apis/push/save-custom-provider.mdx +++ b/rest-api/notifications-apis/push/save-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/push/v1/providers/custom +description: "Saves the custom provider for Push Notifications for a given app." --- diff --git a/rest-api/notifications-apis/push/unmute-conversations.mdx b/rest-api/notifications-apis/push/unmute-conversations.mdx index f24b9f475..289399839 100644 --- a/rest-api/notifications-apis/push/unmute-conversations.mdx +++ b/rest-api/notifications-apis/push/unmute-conversations.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/v1/preferences/mute +description: "Unmute notifications for the conversations on behalf of the given user." --- diff --git a/rest-api/notifications-apis/push/unregister-push-tokens.mdx b/rest-api/notifications-apis/push/unregister-push-tokens.mdx index ecb383f25..5932b5586 100644 --- a/rest-api/notifications-apis/push/unregister-push-tokens.mdx +++ b/rest-api/notifications-apis/push/unregister-push-tokens.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/push/v1/tokens +description: "Unregister push token(s) registered for the given auth token." --- diff --git a/rest-api/notifications-apis/push/update-apns-providers.mdx b/rest-api/notifications-apis/push/update-apns-providers.mdx index 06ed69deb..d47a0ed57 100644 --- a/rest-api/notifications-apis/push/update-apns-providers.mdx +++ b/rest-api/notifications-apis/push/update-apns-providers.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/push/v1/providers/apns +description: "Update existing APNS provider for the given app." --- diff --git a/rest-api/notifications-apis/push/update-contact-details.mdx b/rest-api/notifications-apis/push/update-contact-details.mdx index b7955cf41..bd6e949a1 100644 --- a/rest-api/notifications-apis/push/update-contact-details.mdx +++ b/rest-api/notifications-apis/push/update-contact-details.mdx @@ -1,3 +1,4 @@ --- openapi: patch /notifications/v1/contact-details +description: "Updates the contact details like Email ID and Phone number for a given user." --- diff --git a/rest-api/notifications-apis/push/update-custom-provider.mdx b/rest-api/notifications-apis/push/update-custom-provider.mdx index 344798a89..fc579a5d7 100644 --- a/rest-api/notifications-apis/push/update-custom-provider.mdx +++ b/rest-api/notifications-apis/push/update-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/push/v1/providers/custom +description: "Updates the custom provider for Push Notifications for a given app." --- diff --git a/rest-api/notifications-apis/push/update-fcm-provider.mdx b/rest-api/notifications-apis/push/update-fcm-provider.mdx index 5adab2233..c216170b4 100644 --- a/rest-api/notifications-apis/push/update-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/update-fcm-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/push/v1/providers/fcm +description: "Update existing FCM provider for the given app." --- diff --git a/rest-api/notifications-apis/push/update-preferences.mdx b/rest-api/notifications-apis/push/update-preferences.mdx index 3c494d4b3..787d3e19f 100644 --- a/rest-api/notifications-apis/push/update-preferences.mdx +++ b/rest-api/notifications-apis/push/update-preferences.mdx @@ -1,3 +1,4 @@ --- openapi: patch /notifications/v1/preferences +description: "Update the preference for the given user." --- diff --git a/rest-api/notifications-apis/push/update-settings.mdx b/rest-api/notifications-apis/push/update-settings.mdx index fa1688021..27ffb275e 100644 --- a/rest-api/notifications-apis/push/update-settings.mdx +++ b/rest-api/notifications-apis/push/update-settings.mdx @@ -1,3 +1,4 @@ --- openapi: patch /notifications/v1/settings +description: "Update preferences, templates and sounds for the given app." --- diff --git a/rest-api/notifications-apis/push/update-timezone.mdx b/rest-api/notifications-apis/push/update-timezone.mdx index e48af9a8b..d85e94802 100644 --- a/rest-api/notifications-apis/push/update-timezone.mdx +++ b/rest-api/notifications-apis/push/update-timezone.mdx @@ -1,3 +1,4 @@ --- openapi: patch /notifications/v1/preferences/timezone +description: "Update the timezone on behalf of the user." --- diff --git a/rest-api/notifications-apis/setup-and-authentication.mdx b/rest-api/notifications-apis/setup-and-authentication.mdx index ad814a9df..6c1def02e 100644 --- a/rest-api/notifications-apis/setup-and-authentication.mdx +++ b/rest-api/notifications-apis/setup-and-authentication.mdx @@ -2,4 +2,5 @@ title: "Setup & Authentication" icon: "key" url: "/rest-api/authentication" +description: "Navigate to Setup & Authentication documentation." --- diff --git a/rest-api/notifications-apis/sms/delete-custom-provider.mdx b/rest-api/notifications-apis/sms/delete-custom-provider.mdx index fb570f386..50ca80282 100644 --- a/rest-api/notifications-apis/sms/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/delete-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/sms/v1/providers/custom +description: "Deletes the custom provider for SMS Notifications for a given app." --- diff --git a/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx index 6e145c684..392cdbcbd 100644 --- a/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: delete /notifications/sms/v1/providers/twilio +description: "Deletes the stored Twilio credentials for the given app." --- diff --git a/rest-api/notifications-apis/sms/get-custom-provider.mdx b/rest-api/notifications-apis/sms/get-custom-provider.mdx index 792ec846e..ed1966661 100644 --- a/rest-api/notifications-apis/sms/get-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/get-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/sms/v1/providers/custom +description: "Fetches the custom provider for SMS Notifications for a given app." --- diff --git a/rest-api/notifications-apis/sms/get-twilio-credentials.mdx b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx index 056ce5f19..dc21d74af 100644 --- a/rest-api/notifications-apis/sms/get-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: get /notifications/sms/v1/providers/twilio +description: "Fetches the Twilio credentials stored for the app." --- diff --git a/rest-api/notifications-apis/sms/save-custom-provider.mdx b/rest-api/notifications-apis/sms/save-custom-provider.mdx index 55e2597d7..3760a3aad 100644 --- a/rest-api/notifications-apis/sms/save-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/save-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/sms/v1/providers/custom +description: "Saves the custom provider for SMS Notifications for a given app." --- diff --git a/rest-api/notifications-apis/sms/save-twilio-credentials.mdx b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx index 071eff9de..9e4dd5b7f 100644 --- a/rest-api/notifications-apis/sms/save-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: post /notifications/sms/v1/providers/twilio +description: "Store the Twilio credentials for the given app." --- diff --git a/rest-api/notifications-apis/sms/update-custom-provider.mdx b/rest-api/notifications-apis/sms/update-custom-provider.mdx index bf49adbf2..6c2deb54b 100644 --- a/rest-api/notifications-apis/sms/update-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/update-custom-provider.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/sms/v1/providers/custom +description: "Updates the custom provider for SMS Notifications for a given app." --- diff --git a/rest-api/notifications-apis/sms/update-twilio-credentials.mdx b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx index d385124f3..48721e217 100644 --- a/rest-api/notifications-apis/sms/update-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx @@ -1,3 +1,4 @@ --- openapi: put /notifications/sms/v1/providers/twilio +description: "Updates the Twilio credentials for the given app." --- diff --git a/rest-api/notifications-apis/users-and-groups.mdx b/rest-api/notifications-apis/users-and-groups.mdx index d03f5ddb4..02b268808 100644 --- a/rest-api/notifications-apis/users-and-groups.mdx +++ b/rest-api/notifications-apis/users-and-groups.mdx @@ -2,4 +2,5 @@ title: "Users & Groups" icon: "users" url: "/rest-api/users" +description: "Navigate to Users & Groups documentation." --- diff --git a/rest-api/notifications-link.mdx b/rest-api/notifications-link.mdx index c91f632e9..393604e1e 100644 --- a/rest-api/notifications-link.mdx +++ b/rest-api/notifications-link.mdx @@ -2,4 +2,5 @@ title: "Notification APIs" icon: "bell" url: "/rest-api/notifications-apis/overview" +description: "Navigate to Notification APIs documentation." --- diff --git a/rest-api/rbac/list-role-permissions.mdx b/rest-api/rbac/list-role-permissions.mdx index c21311f3b..6aa524cc2 100644 --- a/rest-api/rbac/list-role-permissions.mdx +++ b/rest-api/rbac/list-role-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: get /roles/{role}/permissions +description: "Lists role permissions" --- ## Common errors diff --git a/rest-api/rbac/list-scope-permissions.mdx b/rest-api/rbac/list-scope-permissions.mdx index 602ab963e..8edc4cbfc 100644 --- a/rest-api/rbac/list-scope-permissions.mdx +++ b/rest-api/rbac/list-scope-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: get /groups/{guid}/scopes/{scope}/permissions +description: "Lists scope permissions" --- ## Common errors diff --git a/rest-api/rbac/set-role-permissions.mdx b/rest-api/rbac/set-role-permissions.mdx index e526b4c38..dbb1b1e84 100644 --- a/rest-api/rbac/set-role-permissions.mdx +++ b/rest-api/rbac/set-role-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: put /roles/{role}/permissions +description: "Sets or updates permissions for a specific role" --- ## Common errors diff --git a/rest-api/rbac/set-scope-permissions.mdx b/rest-api/rbac/set-scope-permissions.mdx index db4181074..10b53632e 100644 --- a/rest-api/rbac/set-scope-permissions.mdx +++ b/rest-api/rbac/set-scope-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: put /groups/{guid}/scopes/{scope}/permissions +description: "Sets or updates permissions for a specific group scope" --- ## Common errors diff --git a/rest-api/rbac/unset-role-permissions.mdx b/rest-api/rbac/unset-role-permissions.mdx index 97796ccb0..f22049880 100644 --- a/rest-api/rbac/unset-role-permissions.mdx +++ b/rest-api/rbac/unset-role-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: delete /roles/{role}/permissions/{permission} +description: "Removes a specific permission from a role" --- ## Common errors diff --git a/rest-api/rbac/unset-scope-permissions.mdx b/rest-api/rbac/unset-scope-permissions.mdx index 2d445732f..918199611 100644 --- a/rest-api/rbac/unset-scope-permissions.mdx +++ b/rest-api/rbac/unset-scope-permissions.mdx @@ -1,5 +1,6 @@ --- openapi: delete /groups/{guid}/scopes/{scope}/permissions/{permission} +description: "Removes a specific permission from a group scope" --- ## Common errors diff --git a/rest-api/restrict-features/allow-features.mdx b/rest-api/restrict-features/allow-features.mdx index a8403102c..abbd5aafe 100644 --- a/rest-api/restrict-features/allow-features.mdx +++ b/rest-api/restrict-features/allow-features.mdx @@ -1,6 +1,7 @@ --- openapi: delete /roles/{role}/restrictedfeatures deprecated: true +description: "Allow features access for a given role." --- ## Common errors diff --git a/rest-api/restrict-features/list-restricted-features.mdx b/rest-api/restrict-features/list-restricted-features.mdx index 31125dd4b..54ecf1524 100644 --- a/rest-api/restrict-features/list-restricted-features.mdx +++ b/rest-api/restrict-features/list-restricted-features.mdx @@ -1,6 +1,7 @@ --- openapi: get /roles/{role}/restrictedfeatures deprecated: true +description: "List all restricted features for a given role." --- ## Common errors diff --git a/rest-api/restrict-features/restrict-features.mdx b/rest-api/restrict-features/restrict-features.mdx index 8e6b5f6b5..d50b30270 100644 --- a/rest-api/restrict-features/restrict-features.mdx +++ b/rest-api/restrict-features/restrict-features.mdx @@ -1,6 +1,7 @@ --- openapi: post /roles/{role}/restrictedfeatures deprecated: true +description: "Restrict Features for a given role." --- ## Common errors diff --git a/rest-api/roles/create.mdx b/rest-api/roles/create.mdx index a5200e6c5..25db6fe2d 100644 --- a/rest-api/roles/create.mdx +++ b/rest-api/roles/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /roles +description: "Creates a new user role" --- ## Constraints diff --git a/rest-api/roles/delete.mdx b/rest-api/roles/delete.mdx index 322a1f626..6d95d5a23 100644 --- a/rest-api/roles/delete.mdx +++ b/rest-api/roles/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /roles/{role} +description: "Deletes a role." --- ## Common errors diff --git a/rest-api/roles/get.mdx b/rest-api/roles/get.mdx index e7dad3146..553c4a78a 100644 --- a/rest-api/roles/get.mdx +++ b/rest-api/roles/get.mdx @@ -1,5 +1,6 @@ --- openapi: get /roles/{role} +description: "Retrieves role details for a given role." --- ## Common errors diff --git a/rest-api/roles/list.mdx b/rest-api/roles/list.mdx index 34af325f7..238a6c267 100644 --- a/rest-api/roles/list.mdx +++ b/rest-api/roles/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /roles +description: "Lists the user roles" --- ## Common errors diff --git a/rest-api/roles/update.mdx b/rest-api/roles/update.mdx index 533083c14..ca35cd2fc 100644 --- a/rest-api/roles/update.mdx +++ b/rest-api/roles/update.mdx @@ -1,5 +1,6 @@ --- openapi: put /roles/{role} +description: "Updates a given role." --- ## Common errors diff --git a/rest-api/users/create.mdx b/rest-api/users/create.mdx index 07bee68e0..c0de6c862 100644 --- a/rest-api/users/create.mdx +++ b/rest-api/users/create.mdx @@ -1,5 +1,6 @@ --- openapi: post /users +description: "Creates a new user" --- ## Constraints diff --git a/rest-api/users/deactivate.mdx b/rest-api/users/deactivate.mdx index a1d296b8e..fd7fc42ef 100644 --- a/rest-api/users/deactivate.mdx +++ b/rest-api/users/deactivate.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users +description: "Deactivates users for the specified UIDs" --- ## Common errors diff --git a/rest-api/users/delete.mdx b/rest-api/users/delete.mdx index 9f31eedba..1db023408 100644 --- a/rest-api/users/delete.mdx +++ b/rest-api/users/delete.mdx @@ -1,5 +1,6 @@ --- openapi: delete /users/{uid} +description: "Deletes a user for the specified UID" --- ## Common errors diff --git a/rest-api/users/get.mdx b/rest-api/users/get.mdx index d5c5cdcb4..a5dc8e255 100644 --- a/rest-api/users/get.mdx +++ b/rest-api/users/get.mdx @@ -1,5 +1,6 @@ --- openapi: get /users/{uid} +description: "Retrieves user details for a specified UID." --- ## Common errors diff --git a/rest-api/users/list.mdx b/rest-api/users/list.mdx index 2fba3a01f..b7421fc59 100644 --- a/rest-api/users/list.mdx +++ b/rest-api/users/list.mdx @@ -1,5 +1,6 @@ --- openapi: get /users +description: "Lists all the users of an app" --- ## Common errors diff --git a/rest-api/users/reactivate.mdx b/rest-api/users/reactivate.mdx index 1b5c4edbb..f2dd99a4a 100644 --- a/rest-api/users/reactivate.mdx +++ b/rest-api/users/reactivate.mdx @@ -1,5 +1,6 @@ --- openapi: put /users +description: "Reactivates users for the specified UIDs" --- ## Common errors diff --git a/rest-api/users/update.mdx b/rest-api/users/update.mdx index 73a0c44a8..1d908784e 100644 --- a/rest-api/users/update.mdx +++ b/rest-api/users/update.mdx @@ -1,5 +1,6 @@ --- openapi: put /users/{uid} +description: "Updates a user with the provided UID" --- ## Common errors From 46efa0b21d6fb2d4197c8439c1748ce8b9308ff9 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 13:58:34 +0530 Subject: [PATCH 45/56] fixed conversations overview table and removed CHECK THIS. --- ai-chatbots/custom-agents.mdx | 2 +- ai-chatbots/custom-bots.mdx | 2 +- rest-api/conversations.mdx | 34 +++++++++++++++++----------------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ai-chatbots/custom-agents.mdx b/ai-chatbots/custom-agents.mdx index 4b522d193..480ad6245 100644 --- a/ai-chatbots/custom-agents.mdx +++ b/ai-chatbots/custom-agents.mdx @@ -13,7 +13,7 @@ Users can interact with agents through private one-on-one conversations or withi 1. Your callback endpoint must be accessible over HTTPS. This is essential to ensure the security and integrity of data transmission. 2. This URL should be publicly accessible from the internet. 3. Ensure that your endpoint supports the HTTP POST method. Event payloads will be delivered via HTTP POST requests in JSON format. -4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. (CHECK THIS). +4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. ### Security diff --git a/ai-chatbots/custom-bots.mdx b/ai-chatbots/custom-bots.mdx index 6810c3ea8..0cb446604 100644 --- a/ai-chatbots/custom-bots.mdx +++ b/ai-chatbots/custom-bots.mdx @@ -13,7 +13,7 @@ Users can interact with bots through private one-on-one conversations or within 1. Your callback endpoint must be accessible over HTTPS. This is essential to ensure the security and integrity of data transmission. 2. This URL should be publicly accessible from the internet. 3. Ensure that your endpoint supports the HTTP POST method. Event payloads will be delivered via HTTP POST requests in JSON format. -4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. (CHECK THIS). +4. Configure your endpoint to respond immediately to the CometChat server with a 200 OK response. ### Security diff --git a/rest-api/conversations.mdx b/rest-api/conversations.mdx index d504d87bc..b5c34330a 100644 --- a/rest-api/conversations.mdx +++ b/rest-api/conversations.mdx @@ -20,23 +20,23 @@ A **Conversation** represents an ongoing message exchange between a user and ano ### Available operations -| Operation | Method | Endpoint | Description | -| ---------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------- | ------------------------------------------------------- | -| [List Conversations](/rest-api/conversations/list-conversations) | `GET` | `/users/{uid}/conversations` | Retrieve all conversations for a user | -| [Get Conversation](/rest-api/conversations/get-conversation) | `GET` | `/users/{uid}/conversations/{conversationId}` | Retrieve a specific conversation | -| [Get User Conversation](/rest-api/conversations/get-user-conversation) | `GET` | `/users/{uid}/conversations/user_{peerUid}` | Retrieve a 1-on-1 conversation with a specific user | -| [Get Group Conversation](/rest-api/conversations/get-group-conversation) | `GET` | `/users/{uid}/conversations/group_{guid}` | Retrieve a group conversation | -| [Update User Conversation](/rest-api/conversations/update-user-conversation) | `PUT` | `/users/{uid}/conversations/user_{peerUid}` | Update tags on a 1-on-1 conversation | -| [Update Group Conversation](/rest-api/conversations/update-group-conversation) | `PUT` | `/users/{uid}/conversations/group_{guid}` | Update tags on a group conversation | -| [Delete Conversation](/rest-api/conversations/delete-conversation) | `DELETE` | `/users/{uid}/conversations/{conversationId}` | Delete a conversation for a user | -| [Reset User Conversation](/rest-api/conversations/reset-user-conversation) | `DELETE` | `/users/{uid}/conversations/user_{peerUid}/reset` | Reset unread count for a 1-on-1 conversation | -| [Reset Group Conversation](/rest-api/conversations/reset-group-conversation) | `DELETE` | `/users/{uid}/conversations/group_{guid}/reset` | Reset unread count for a group conversation | -| [Mark User Conversation as Read](/rest-api/conversations/mark-user-conversation-as-read) | `PUT` | `/users/{uid}/conversations/user_{peerUid}/read` | Mark all messages as read in a 1-on-1 conversation | -| [Mark Group Conversation as Read](/rest-api/conversations/mark-group-conversation-as-read) | `PUT` | `/users/{uid}/conversations/group_{guid}/read` | Mark all messages as read in a group conversation | -| [Mark User Conversation as Delivered](/rest-api/conversations/mark-user-conversation-as-delivered) | `PUT` | `/users/{uid}/conversations/user_{peerUid}/delivered` | Mark all messages as delivered in a 1-on-1 conversation | -| [Mark Group Conversation as Delivered](/rest-api/conversations/mark-group-conversation-as-delivered) | `PUT` | `/users/{uid}/conversations/group_{guid}/delivered` | Mark all messages as delivered in a group conversation | -| [Mark Conversation as Unread](/rest-api/conversations/mark-conversation-messages-as-unread) | `POST` | `/users/{uid}/conversations/{conversationId}/unread` | Mark a conversation as unread | -| [Mark Group Conversation as Unread](/rest-api/conversations/mark-group-conversation-as-unread) | `POST` | `/users/{uid}/conversations/group_{guid}/unread` | Mark a group conversation as unread | +| Operation | Method | Endpoint | Description | +| ---------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------ | ------------------------------------------------------- | +| [List Conversations](/rest-api/conversations/list-conversations) | `GET` | `/conversations` | Retrieve all conversations for a user | +| [Get Conversation](/rest-api/conversations/get-conversation) | `GET` | `/conversations/{conversationId}` | Retrieve a specific conversation _(deprecated)_ | +| [Delete Conversation](/rest-api/conversations/delete-conversation) | `DELETE` | `/conversations/{conversationId}` | Delete a conversation for a user _(deprecated)_ | +| [Get User Conversation](/rest-api/conversations/get-user-conversation) | `GET` | `/users/{uid}/conversation` | Retrieve a 1-on-1 conversation with a specific user | +| [Get Group Conversation](/rest-api/conversations/get-group-conversation) | `GET` | `/groups/{guid}/conversation` | Retrieve a group conversation | +| [Update User Conversation](/rest-api/conversations/update-user-conversation) | `PUT` | `/users/{uid}/conversation` | Update tags on a 1-on-1 conversation | +| [Update Group Conversation](/rest-api/conversations/update-group-conversation) | `PUT` | `/groups/{guid}/conversation` | Update tags on a group conversation | +| [Reset User Conversation](/rest-api/conversations/reset-user-conversation) | `DELETE` | `/users/{uid}/conversation` | Reset unread count for a 1-on-1 conversation | +| [Reset Group Conversation](/rest-api/conversations/reset-group-conversation) | `DELETE` | `/groups/{guid}/conversation` | Reset unread count for a group conversation | +| [Mark User Conversation as Read](/rest-api/conversations/mark-user-conversation-as-read) | `POST` | `/users/{uid}/conversation/read` | Mark all messages as read in a 1-on-1 conversation | +| [Mark Group Conversation as Read](/rest-api/conversations/mark-group-conversation-as-read) | `POST` | `/groups/{guid}/conversation/read` | Mark all messages as read in a group conversation | +| [Mark User Conversation as Delivered](/rest-api/conversations/mark-user-conversation-as-delivered) | `POST` | `/users/{uid}/conversation/delivered` | Mark all messages as delivered in a 1-on-1 conversation | +| [Mark Group Conversation as Delivered](/rest-api/conversations/mark-group-conversation-as-delivered) | `POST` | `/groups/{guid}/conversation/delivered` | Mark all messages as delivered in a group conversation | +| [Mark Conversation as Unread](/rest-api/conversations/mark-conversation-messages-as-unread) | `DELETE` | `/users/{uid}/conversation/read` | Mark a user conversation as unread | +| [Mark Group Conversation as Unread](/rest-api/conversations/mark-group-conversation-as-unread) | `DELETE` | `/groups/{guid}/conversation/read` | Mark a group conversation as unread | ### Conversation properties From f5a019a5f7038fd3338b9e283449b4e71c16effa Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 14:09:53 +0530 Subject: [PATCH 46/56] Fixed p1 issues from audit --- notifications/legacy-push-notifications.mdx | 2 +- rest-api/messages.mdx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/notifications/legacy-push-notifications.mdx b/notifications/legacy-push-notifications.mdx index e6b6c4e0b..ef7ddfb29 100644 --- a/notifications/legacy-push-notifications.mdx +++ b/notifications/legacy-push-notifications.mdx @@ -5,7 +5,7 @@ title: "Integration Guide for Legacy Push Notifications" Migrate to Token-based Push Notifications -You can check out our new Token-based implementation [here](/notifications/push-notification-extension-overview). +You can check out our new Token-based implementation [here](/notifications/push-overview). diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index 50dc81731..c97fec9c5 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -34,11 +34,11 @@ A **Message** is the core unit of communication in CometChat. Users can send tex | [Get Message](/rest-api/messages/get-message) | `GET` | `/messages/{id}` | Retrieve a specific message by ID | | [Update Message](/rest-api/messages/update-message) | `PUT` | `/messages/{id}` | Edit a sent message | | [Delete Message](/rest-api/messages/delete-message) | `DELETE` | `/messages/{id}` | Soft-delete or permanently delete a message | -| [Send Threaded Message](/rest-api/messages/send-threaded-message) | `POST` | `/messages/{id}/replies` | Reply to a message in a thread | -| [List Threaded Messages](/rest-api/messages/list-threaded-messages) | `GET` | `/messages/{id}/replies` | Retrieve all replies in a thread | +| [Send Threaded Message](/rest-api/messages/send-threaded-message) | `POST` | `/messages/{id}/thread` | Reply to a message in a thread | +| [List Threaded Messages](/rest-api/messages/list-threaded-messages) | `GET` | `/messages/{id}/thread` | Retrieve all replies in a thread | | [Send Bot Message](/rest-api/messages/send-bot-message) | `POST` | `/bots/{uid}/messages` | Send a message as a bot user | | [Add Reaction](/rest-api/messages/add-reaction) | `POST` | `/messages/{id}/reactions` | Add an emoji reaction to a message | -| [Remove Reaction](/rest-api/messages/remove-reaction) | `DELETE` | `/messages/{id}/reactions` | Remove an emoji reaction from a message | +| [Remove Reaction](/rest-api/messages/remove-reaction) | `DELETE` | `/messages/{id}/reactions/{reaction}` | Remove an emoji reaction from a message | | [List All Reactions](/rest-api/messages/list-all-reactions) | `GET` | `/messages/{id}/reactions` | List all reactions on a message | ### Message properties From 90c4c8abc3685bedd1cc2b9ddab0d23cefa1fe65 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 14:43:31 +0530 Subject: [PATCH 47/56] Fixed P2s from audit. --- ai-agent-service.json | 4 +- ai-chatbots/ai-bots/overview.mdx | 4 + ai-chatbots/custom-agents.mdx | 4 +- ai-chatbots/custom-bots.mdx | 4 +- articles/error-guide.mdx | 1 + calls.json | 10 +- chat-apis.json | 4 +- data-import-apis.json | 4 +- moderation/constraints-and-limits.mdx | 2 +- notifications/email-overview.mdx | 9 +- notifications/ios-apns-push-notifications.mdx | 133 +++++++++++++++++- rest-api/authentication.mdx | 4 + rest-api/chat-apis.mdx | 2 +- rest-api/messages.mdx | 1 + 14 files changed, 167 insertions(+), 19 deletions(-) diff --git a/ai-agent-service.json b/ai-agent-service.json index 83caa4fdf..a3f047bcf 100644 --- a/ai-agent-service.json +++ b/ai-agent-service.json @@ -8191,9 +8191,9 @@ ], "servers": [ { - "url": "https://{appid}.api-{region}.cometchat.io/v3", + "url": "https://{appId}.api-{region}.cometchat.io/v3", "variables": { - "appid": { + "appId": { "default": "appId", "description": "(Required) App ID" }, diff --git a/ai-chatbots/ai-bots/overview.mdx b/ai-chatbots/ai-bots/overview.mdx index 552654f59..a16dc4ca9 100644 --- a/ai-chatbots/ai-bots/overview.mdx +++ b/ai-chatbots/ai-bots/overview.mdx @@ -6,6 +6,10 @@ title: "Overview" For users seeking guidance or insights from automated assistants, the **AI Bots** and **Ask Bot** features are designed to maintain conversational momentum. + +**AI Bots vs AI Agents** — AI Bots are simple, OpenAI-powered chatbots configured directly from the CometChat dashboard with a model name, API key, and temperature setting. For more advanced capabilities — including multi-framework support (Mastra, Vercel AI SDK, LangGraph, CrewAI, and more), tool calling, knowledge bases, MCP servers, and RAG — see [AI Agents](/rest-api/ai-agents-apis/overview). + + ## Pre-requisite * Login to your [CometChat dashboard](https://app.cometchat.com/login) and choose your app. diff --git a/ai-chatbots/custom-agents.mdx b/ai-chatbots/custom-agents.mdx index 480ad6245..54a252d44 100644 --- a/ai-chatbots/custom-agents.mdx +++ b/ai-chatbots/custom-agents.mdx @@ -29,7 +29,7 @@ Authorization: Basic CometChat requires each bot to be linked to a user account. This approach offers a significant benefit: It allows you to log in as the bot at any time and send personalized responses. -Therefore, before setting up a bot, you must first create a new user. You can create a user from CometChat dashboard or make use of CometChat's [Create user](https://api-explorer.cometchat.com/reference/creates-user) REST API to do so. +Therefore, before setting up a bot, you must first create a new user. You can create a user from CometChat dashboard or make use of CometChat's [Create user](/rest-api/users/create) REST API to do so. ### Create a bot @@ -56,4 +56,4 @@ The actual development and behavior of the agent are completely in your hands. A ### Responding as an agent -After your bot's callback endpoint has received and processed a message, and you're ready to send a response back, make use of CometChat's [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) REST API to do so. +After your bot's callback endpoint has received and processed a message, and you're ready to send a response back, make use of CometChat's [Send Bot Message](/rest-api/messages/send-bot-message) REST API to do so. diff --git a/ai-chatbots/custom-bots.mdx b/ai-chatbots/custom-bots.mdx index 0cb446604..e81f99a62 100644 --- a/ai-chatbots/custom-bots.mdx +++ b/ai-chatbots/custom-bots.mdx @@ -29,7 +29,7 @@ Authorization: Basic CometChat requires each bot to be linked to a user account. This approach offers a significant benefit: It allows you to log in as the bot at any time and send personalized responses. -Therefore, before setting up a bot, you must first create a new user. You can create a user from CometChat dashboard or make use of CometChat's [Create user](https://api-explorer.cometchat.com/reference/creates-user) REST API to do so. +Therefore, before setting up a bot, you must first create a new user. You can create a user from CometChat dashboard or make use of CometChat's [Create user](/rest-api/users/create) REST API to do so. ### Create a bot @@ -56,4 +56,4 @@ The actual development and behavior of the bot are completely in your hands. All ### Responding as a bot -After your bot's callback endpoint has received and processed a message, and you're ready to send a response back, make use of CometChat's [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) REST API to do so. +After your bot's callback endpoint has received and processed a message, and you're ready to send a response back, make use of CometChat's [Send Bot Message](/rest-api/messages/send-bot-message) REST API to do so. diff --git a/articles/error-guide.mdx b/articles/error-guide.mdx index 9b70f9596..00a3f56b5 100644 --- a/articles/error-guide.mdx +++ b/articles/error-guide.mdx @@ -11,6 +11,7 @@ sidebarTitle: "Error Codes" | `AUTH_ERR_EMPTY_APIKEY` | Indicates empty API Key in the headers. | | `AUTH_ERR_APIKEY_NOT_FOUND` | Indicates incorrect API Key in the headers. | | `AUTH_ERR_NO_ACCESS` | Indicates API Key in the headers can not be used to perform the action. For example, the API key with authOnly scope cannot be used to create a user. | +| `AUTH_ERR_EMPTY_AUTH_HEADER` | Indicates the Basic Auth header is missing. Applies to Management APIs, which use HTTP Basic Auth instead of the `apikey` header. | | `AUTH_ERR_EMPTY_AUTH_TOKEN` | Indicates empty auth token in the headers. | | `AUTH_ERR_AUTH_TOKEN_NOT_FOUND` | Indicates incorrect auth token. | | **API Key Errors** | | diff --git a/calls.json b/calls.json index 7c92a2bcd..aae3b52f7 100644 --- a/calls.json +++ b/calls.json @@ -85,16 +85,18 @@ { "name": "status", "in": "query", - "description": "It indicates the status of the call. Possible values are unanswered, rejected, ongoing, ended.", + "description": "It indicates the status of the call. Possible values are initiated, ongoing, ended, unanswered, rejected, canceled.", "schema": { "type": "string", "enum": [ + "initiated", + "ongoing", + "ended", "unanswered", "rejected", - "ongoing", - "ended" + "canceled" ], - "description": "Allowed values: unanswered, rejected, ongoing, ended" + "description": "Allowed values: initiated, ongoing, ended, unanswered, rejected, canceled" } }, { diff --git a/chat-apis.json b/chat-apis.json index e17d87545..f73e54833 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -7,9 +7,9 @@ }, "servers": [ { - "url": "https://{appid}.api-{region}.cometchat.io/v3", + "url": "https://{appId}.api-{region}.cometchat.io/v3", "variables": { - "appid": { + "appId": { "default": "appId", "description": "(Required) App ID" }, diff --git a/data-import-apis.json b/data-import-apis.json index 0a2bec849..5585c22e2 100644 --- a/data-import-apis.json +++ b/data-import-apis.json @@ -7,9 +7,9 @@ }, "servers": [ { - "url": "https://{appid}.api-{region}.cometchat.io/v3", + "url": "https://{appId}.api-{region}.cometchat.io/v3", "variables": { - "appid": { + "appId": { "default": "appId", "description": "(Required) App ID" }, diff --git a/moderation/constraints-and-limits.mdx b/moderation/constraints-and-limits.mdx index 62e6d979d..7b0e46f84 100644 --- a/moderation/constraints-and-limits.mdx +++ b/moderation/constraints-and-limits.mdx @@ -9,7 +9,7 @@ This page outlines the system constraints and limitations for CometChat's Modera -For detailed API parameter constraints (Rules, Lists, Advanced Settings), see the [API Overview](/moderation/api-explorer#api-constraints). +For detailed API parameter constraints (Rules, Lists, Advanced Settings), see the [Properties and Constraints](/rest-api/moderation-apis/properties-and-constraints). --- diff --git a/notifications/email-overview.mdx b/notifications/email-overview.mdx index 1b8bee9bb..d91731a11 100644 --- a/notifications/email-overview.mdx +++ b/notifications/email-overview.mdx @@ -13,7 +13,6 @@ Email acts as a safety net when users miss push: if a message stays unread past - **Templates**: Customize subject/body (sender name, snippet, deep link) per message type; manage in Templates & Sounds. - **Preferences/DND**: Honors user/channel mutes, global DND, and quiet hours before sending. - **Scheduling + timezones**: Respect quiet hours and deliver in the recipient’s local timezone. -- **Preferences**: Honors per-user/per-conversation mutes before sending. - **Observability**: Use logs to verify sends and diagnose drops. ## Key capabilities @@ -22,3 +21,11 @@ Email acts as a safety net when users miss push: if a message stays unread past - Per-template customization with dynamic variables for sender, preview text, and links. - Mute/quiet hours enforcement to avoid fatigue. - Works alongside push/SMS as layered fallbacks. + +## Setup checklist + +1. **Enable email notifications** — Turn on email in your [CometChat dashboard](https://app.cometchat.com/). +2. **Connect your email provider** — Configure SMTP or a supported provider in [Email Integration](/notifications/email-integration). +3. **Customize templates** — Set subject lines, body content, and dynamic variables in [Email Templates](/notifications/email-templates). +4. **Set preferences** — Configure mute rules, DND windows, and quiet hours in [Email Preferences](/notifications/email-preferences). +5. **Verify delivery** — Check send status and troubleshoot drops in [Logs](/notifications/logs). diff --git a/notifications/ios-apns-push-notifications.mdx b/notifications/ios-apns-push-notifications.mdx index 7fe49aca0..fd5fcad0a 100644 --- a/notifications/ios-apns-push-notifications.mdx +++ b/notifications/ios-apns-push-notifications.mdx @@ -1161,7 +1161,134 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } ``` -## 5. Testing checklist +## 5. Unregister the token on logout + +Before logging the user out, unregister the push token so the device stops receiving notifications for that user. + +```swift lines +CometChatNotifications.unregisterPushToken( + onSuccess: { success in + print("Push token unregistered: \(success)") + CometChatUIKit.logout(onSuccess: { _ in + print("Logout successful") + }, onError: { error in + print("Logout failed: \(error.errorDescription)") + }) + }, + onError: { error in + print("Token unregister failed: \(error.errorCode) - \(error.errorDescription)") + } +) +``` + +Always call `CometChatNotifications.unregisterPushToken()` **before** `CometChatUIKit.logout()`. If you skip this step, the device may continue to receive pushes for the logged-out user. + +## 6. Badge count + +CometChat's Enhanced Push Notification payload includes an `unreadMessageCount` field (a string) representing the total unread messages across all conversations for the logged-in user. You can use this to set the app icon badge. + +### 6.1 Enable unread badge count on the CometChat Dashboard + +1. Go to **CometChat Dashboard → Notification Engine → Settings → Preferences → Push Notification Preferences**. +2. Scroll to the bottom and enable the **Unread Badge Count** toggle. + +This ensures CometChat includes the `unreadMessageCount` field in every push payload sent to your app. + +### 6.2 Expected payload format + +CometChat sends APNs payloads with this structure (relevant fields): + +```json +{ + "unreadMessageCount": "5", + "title": "New Message", + "alert": "John: Hello!", + "conversationId": "user_abc123", + "receiverType": "user" +} +``` + +`unreadMessageCount` is a string representing the total unread messages across all conversations for the logged-in user. + +### 6.3 Update the app badge from the push payload + +Inside your `UNUserNotificationCenterDelegate` method (for example `willPresent` or a Notification Service Extension), parse `unreadMessageCount` and update the badge: + +```swift lines +// Inside userNotificationCenter(_:willPresent:) or a Notification Service Extension +let userInfo = notification.request.content.userInfo + +if let unreadCountStr = userInfo["unreadMessageCount"] as? String, + let count = Int(unreadCountStr), count >= 0 { + DispatchQueue.main.async { + UIApplication.shared.applicationIconBadgeNumber = count + } +} else { + print("No valid unreadMessageCount in payload") +} +``` + +Setting `applicationIconBadgeNumber` to `0` clears the badge. + +### 6.4 Clear badge when the app opens + +Clear the badge count when the app launches and every time it returns to the foreground. In your `SceneDelegate` or `AppDelegate`: + +```swift lines +func sceneDidBecomeActive(_ scene: UIScene) { + UIApplication.shared.applicationIconBadgeNumber = 0 +} +``` + +This keeps the badge in sync with the actual unread state. + +## 7. Navigation from notifications + +When the user taps a notification, use `userNotificationCenter(_:didReceive:withCompletionHandler:)` to extract conversation details and navigate to the correct screen. + +```swift lines +func userNotificationCenter( + _ center: UNUserNotificationCenter, + didReceive response: UNNotificationResponse, + withCompletionHandler completionHandler: @escaping () -> Void +) { + let userInfo = response.notification.request.content.userInfo + + guard let receiverType = userInfo["receiverType"] as? String else { + completionHandler() + return + } + + if receiverType == "user" { + guard let senderUid = userInfo["sender"] as? String, + let senderName = userInfo["senderName"] as? String else { + completionHandler() + return + } + let user = User(uid: senderUid, name: senderName) + let messagesVC = MessagesVC() + messagesVC.user = user + navigateToViewController(messagesVC) + + } else if receiverType == "group" { + guard let groupId = userInfo["receiver"] as? String, + let groupName = userInfo["receiverName"] as? String else { + completionHandler() + return + } + let group = Group(guid: groupId, name: groupName, groupType: .public, password: nil) + let messagesVC = MessagesVC() + messagesVC.group = group + navigateToViewController(messagesVC) + } + + completionHandler() +} +``` + +The `navigateToViewController` helper (shown in `CometChatPNHelper.swift` above) pushes the `MessagesVC` onto the navigation stack. Ensure the root view controller is ready before navigation -- if the app was terminated, wait until login completes before routing. + +## 8. Testing checklist 1. Install on a device; grant notification permission. Verify APNs device token logs. 2. Log in, then confirm both device + VoIP tokens register with CometChat (success callbacks). @@ -1171,7 +1298,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { 4. Trigger an incoming call; CallKit UI should show caller info. Accept should join the call; Decline should reject via CometChat and end CallKit. 5. Rotate tokens (reinstall or toggle VoIP) to ensure re-registration works. -## 6. Troubleshooting +## 9. Troubleshooting | Symptom | Quick checks | | --- | --- | @@ -1180,3 +1307,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate { | Taps do nothing | Verify notification center delegate and navigation readiness before routing. | | Call UI missing | Ensure PushKit delegate fires, CallKit capabilities enabled, VoIP provider ID set. | | Audio errors | Configure `AVAudioSession` for playAndRecord when reporting/accepting calls. | +| Badge count not showing | Verify **Unread Badge Count** is enabled in CometChat Dashboard and that your app reads `unreadMessageCount` from the payload. | +| Notification tap does not navigate | Ensure `UNUserNotificationCenterDelegate` is set, payload contains `receiverType`/`sender`/`receiver`, and root view controller is ready. | diff --git a/rest-api/authentication.mdx b/rest-api/authentication.mdx index c0629f03c..418a8ef79 100644 --- a/rest-api/authentication.mdx +++ b/rest-api/authentication.mdx @@ -6,6 +6,10 @@ description: "How to authenticate REST API requests to CometChat." All CometChat REST API requests must be authenticated using an API key passed in the `apikey` HTTP header. + +**Management APIs** use a different authentication mechanism — HTTP Basic Auth with your management key and secret, not the `apikey` header. See the [Management APIs overview](/rest-api/management-apis) for details. + + ## API Key Scopes CometChat supports two API key scopes: diff --git a/rest-api/chat-apis.mdx b/rest-api/chat-apis.mdx index 7d0e07e9b..3af0add2d 100644 --- a/rest-api/chat-apis.mdx +++ b/rest-api/chat-apis.mdx @@ -69,7 +69,7 @@ Example of a List users API request in curl command syntax: ```powershell cURL curl -X GET \ -H "Content-Type: application/json" \ --H "apiKey: YOUR_APIKEY_HERE" \ +-H "apikey: YOUR_APIKEY_HERE" \ "https://.api-.cometchat.io/v3/users" ``` diff --git a/rest-api/messages.mdx b/rest-api/messages.mdx index c97fec9c5..557dcf5c3 100644 --- a/rest-api/messages.mdx +++ b/rest-api/messages.mdx @@ -40,6 +40,7 @@ A **Message** is the core unit of communication in CometChat. Users can send tex | [Add Reaction](/rest-api/messages/add-reaction) | `POST` | `/messages/{id}/reactions` | Add an emoji reaction to a message | | [Remove Reaction](/rest-api/messages/remove-reaction) | `DELETE` | `/messages/{id}/reactions/{reaction}` | Remove an emoji reaction from a message | | [List All Reactions](/rest-api/messages/list-all-reactions) | `GET` | `/messages/{id}/reactions` | List all reactions on a message | +| [List Reactions by Emoji](/rest-api/messages/list-reactions-with-a-specific-emoji-unicode) | `GET` | `/messages/{id}/reactions/{reaction}` | List reactions filtered by a specific emoji | ### Message properties From 22dd3edf4278c43fb799b67ab5573a8819b89993 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 14:47:29 +0530 Subject: [PATCH 48/56] Added undocumented APIs from AI Agents. --- docs.json | 8 +++++++- rest-api/ai-agents-apis/agents/list-available-models.mdx | 4 ++++ rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx | 4 ++++ .../frontend-actions/get-frontend-action.mdx | 4 ++++ rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx | 4 ++++ .../ai-agents-apis/knowledge-base/list-text-entries.mdx | 4 ++++ rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx | 4 ++++ 7 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 rest-api/ai-agents-apis/agents/list-available-models.mdx create mode 100644 rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx create mode 100644 rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx create mode 100644 rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx create mode 100644 rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx diff --git a/docs.json b/docs.json index 5e07e0ed7..130a5cf06 100644 --- a/docs.json +++ b/docs.json @@ -5498,7 +5498,8 @@ "rest-api/ai-agents-apis/agents/update-agent", "rest-api/ai-agents-apis/agents/delete-agent", "rest-api/ai-agents-apis/agents/search-agent-tools", - "rest-api/ai-agents-apis/agents/list-agent-tools-and-actions" + "rest-api/ai-agents-apis/agents/list-agent-tools-and-actions", + "rest-api/ai-agents-apis/agents/list-available-models" ] }, { @@ -5519,6 +5520,7 @@ "icon": "code", "pages": [ "rest-api/ai-agents-apis/custom-api-tools/list-api-tools", + "rest-api/ai-agents-apis/custom-api-tools/get-api-tool", "rest-api/ai-agents-apis/custom-api-tools/create-api-tool", "rest-api/ai-agents-apis/custom-api-tools/update-api-tool", "rest-api/ai-agents-apis/custom-api-tools/delete-api-tool", @@ -5532,6 +5534,7 @@ "icon": "window", "pages": [ "rest-api/ai-agents-apis/frontend-actions/list-frontend-actions", + "rest-api/ai-agents-apis/frontend-actions/get-frontend-action", "rest-api/ai-agents-apis/frontend-actions/create-frontend-action", "rest-api/ai-agents-apis/frontend-actions/update-frontend-action", "rest-api/ai-agents-apis/frontend-actions/delete-frontend-action", @@ -5545,6 +5548,7 @@ "icon": "server", "pages": [ "rest-api/ai-agents-apis/mcp-servers/list-mcp-servers", + "rest-api/ai-agents-apis/mcp-servers/get-mcp-server", "rest-api/ai-agents-apis/mcp-servers/create-mcp-server", "rest-api/ai-agents-apis/mcp-servers/update-mcp-server", "rest-api/ai-agents-apis/mcp-servers/delete-mcp-server", @@ -5562,6 +5566,8 @@ "rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing", "rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads", "rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file", + "rest-api/ai-agents-apis/knowledge-base/list-text-entries", + "rest-api/ai-agents-apis/knowledge-base/get-text-entry", "rest-api/ai-agents-apis/knowledge-base/create-text-detail", "rest-api/ai-agents-apis/knowledge-base/update-text-detail", "rest-api/ai-agents-apis/knowledge-base/delete-text-detail", diff --git a/rest-api/ai-agents-apis/agents/list-available-models.mdx b/rest-api/ai-agents-apis/agents/list-available-models.mdx new file mode 100644 index 000000000..8b694dde3 --- /dev/null +++ b/rest-api/ai-agents-apis/agents/list-available-models.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/agents/available-models +description: "Lists the AI models available for agent creation. Returns model identifiers that can be used when creating or updating an agent's configuration." +--- diff --git a/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx new file mode 100644 index 000000000..710b45626 --- /dev/null +++ b/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/api-tools/{slug} +description: "Retrieves a single custom API tool by its slug." +--- diff --git a/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx new file mode 100644 index 000000000..d3aa9f58c --- /dev/null +++ b/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/frontend-actions/{id} +description: "Retrieves a single frontend action by its ID." +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx b/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx new file mode 100644 index 000000000..682834451 --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +description: "Retrieves a specific text-based knowledge base entry by its unique ID." +--- diff --git a/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx b/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx new file mode 100644 index 000000000..c5bf67b3a --- /dev/null +++ b/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/knowledge-base/text +description: "Lists all text-based knowledge base entries for the app." +--- diff --git a/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx new file mode 100644 index 000000000..6f352edf4 --- /dev/null +++ b/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx @@ -0,0 +1,4 @@ +--- +openapi: get /ai-agents/agent-builder/mcp-servers/{slug} +description: "Retrieves a single MCP server configuration by its slug." +--- From 7330fe70b04ba7e68ddeafb50a6ab472e4e4021d Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 17:27:47 +0530 Subject: [PATCH 49/56] fixed low priority issues from the audit report. --- Warning | 0 ai-agents/langgraph.mdx | 4 + ai-agents/mastra.mdx | 10 +- ai-agents/vercel.mdx | 5 +- moderation/getting-started.mdx | 2 +- moderation/legacy-extensions.mdx | 8 ++ notifications/ios-fcm-push-notifications.mdx | 94 +++++++++++-------- notifications/legacy-push-notifications.mdx | 13 ++- notifications/overview.mdx | 6 +- .../properties-and-constraints.mdx | 11 ++- .../properties-and-constraints.mdx | 11 ++- rest-api/calls-apis/overview.mdx | 2 +- 12 files changed, 95 insertions(+), 71 deletions(-) create mode 100644 Warning diff --git a/Warning b/Warning new file mode 100644 index 000000000..e69de29bb diff --git a/ai-agents/langgraph.mdx b/ai-agents/langgraph.mdx index 71c41edb9..51328575c 100644 --- a/ai-agents/langgraph.mdx +++ b/ai-agents/langgraph.mdx @@ -121,3 +121,7 @@ Choose how you’ll ship the experience (Widget or React UI Kit export). Export the variant as code if you need deeper theming or custom logic. Preview to confirm your LangGraph agent responds and streams correctly. + +## REST API Reference + +For programmatic agent management, see the [Agent Builder APIs](/rest-api/ai-agents-apis/overview) and [BYO Agent APIs](/rest-api/byo-ai-agents-apis/overview). diff --git a/ai-agents/mastra.mdx b/ai-agents/mastra.mdx index e07c5f531..429557749 100644 --- a/ai-agents/mastra.mdx +++ b/ai-agents/mastra.mdx @@ -336,12 +336,6 @@ export default async function handler(req: VercelRequest, res: VercelResponse) { -{/* ## Next Steps +## Programmatic Management - - - Define and handle custom frontend actions your AI agent can invoke. - - Create and manage tools your AI agent can use to enhance conversations. - - */} \ No newline at end of file +To manage agents, tools, knowledge bases, and MCP servers via API instead of the dashboard, see the [BYO Agent REST APIs](/rest-api/byo-ai-agents-apis/overview) for Mastra-based agents or the [Agent Builder REST APIs](/rest-api/ai-agents-apis/overview) for native agents. \ No newline at end of file diff --git a/ai-agents/vercel.mdx b/ai-agents/vercel.mdx index 1b0dc52e6..c3febabcc 100644 --- a/ai-agents/vercel.mdx +++ b/ai-agents/vercel.mdx @@ -427,4 +427,7 @@ The vercel-cometchat-adaptor library simplifies message and event t Create and manage tools your AI agent can use to enhance conversations. - */} \ No newline at end of file + */} +## REST API Reference + +For programmatic agent management, see the [Agent Builder APIs](/rest-api/ai-agents-apis/overview) and [BYO Agent APIs](/rest-api/byo-ai-agents-apis/overview). diff --git a/moderation/getting-started.mdx b/moderation/getting-started.mdx index 9cb381f69..cee443fe3 100644 --- a/moderation/getting-started.mdx +++ b/moderation/getting-started.mdx @@ -34,7 +34,7 @@ With Moderation Integration, you can define flexible rules, receive real-time up Go to Rules Docs
- + If building a custom UI, implement moderation handling in your code. See [SDK Integration](#integrating-moderation-with-sdk) below. diff --git a/moderation/legacy-extensions.mdx b/moderation/legacy-extensions.mdx index f631395a7..44db1b127 100644 --- a/moderation/legacy-extensions.mdx +++ b/moderation/legacy-extensions.mdx @@ -9,6 +9,14 @@ These extensions are considered legacy and are scheduled for deprecation. They a For new projects, use [AI Moderation](/moderation/overview). + +**Management API endpoints** are available for programmatic configuration of these legacy extensions: +- [Profanity Filter Settings](/rest-api/management-apis/extensions/profanity-filter) +- [Image Moderation Settings](/rest-api/management-apis/extensions/image-moderation) +- [Data Masking Settings](/rest-api/management-apis/extensions/data-masking) +- [In-Flight Message Moderation Settings](/rest-api/management-apis/extensions/in-flight-message-moderation) + + ## Slow Mode Slow down messages in groups to make them legible during high-traffic events. diff --git a/notifications/ios-fcm-push-notifications.mdx b/notifications/ios-fcm-push-notifications.mdx index 0bfcaf2eb..c2b56b503 100644 --- a/notifications/ios-fcm-push-notifications.mdx +++ b/notifications/ios-fcm-push-notifications.mdx @@ -10,7 +10,7 @@ description: "Guide to integrating Firebase Cloud Messaging (FCM) push notificat icon="github" href="https://github.com/cometchat/cometchat-uikit-ios/tree/v5/SampleAppPushNotificationAPNs/Push%20Notification%20%2B%20VoIP" > -Reference implementation of iOS UIKit, FCM and Push Notification Setup. + Reference implementation of iOS UIKit, FCM and Push Notification Setup. ## What this guide covers @@ -21,61 +21,76 @@ Reference implementation of iOS UIKit, FCM and Push Notification Setup. - Incoming message/call handling and deep links. - Payload customization and testing. -{/* ## What you need first +{/\* ## What you need first - CometChat App ID, Region, Auth Key; Push Notifications with **FCM iOS provider ID** (and APNs device/VoIP provider IDs if you deliver via APNs/PushKit). - Firebase project with an iOS app; `GoogleService-Info.plist` downloaded; APNs key uploaded to Firebase Cloud Messaging. -- Xcode capabilities: Push Notifications, Background Modes (Remote notifications, Voice over IP), CallKit usage descriptions. Physical device for push testing. */} +- Xcode capabilities: Push Notifications, Background Modes (Remote notifications, Voice over IP), CallKit usage descriptions. Physical device for push testing. \*/} ## How FCM + CometChat work together -- **FCM’s role:** Firebase issues the iOS FCM registration token and delivers the push payload. On iOS, FCM hands off to APNs using the APNs key/cert you upload in Firebase. -- **CometChat Notifications’ role:** The FCM iOS provider you create in the CometChat dashboard holds your Firebase service account. When you call `CometChatNotifications.registerPushToken(..., .FCM_IOS, providerId)`, CometChat binds that FCM token to the logged-in user and sends pushes to FCM on your behalf. +- **FCM’s role:** Firebase issues the iOS FCM registration token and delivers the push payload. On iOS, FCM hands off to APNs using the APNs key/cert you upload in Firebase. +- **CometChat Notifications’ role:** The FCM iOS provider you create in the CometChat dashboard holds your Firebase service account. When you call `CometChatNotifications.registerPushToken(..., .FCM_IOS, providerId)`, CometChat binds that FCM token to the logged-in user and sends pushes to FCM on your behalf. - **Flow (same bridge used in `android-push-notifications.mdx`):** Request permission → register for remote notifications → FCM returns the registration token → after `CometChat.login` succeeds, register that token with `CometChatNotifications` using the FCM provider ID → CometChat sends payloads to FCM → FCM hands to APNs → `UNUserNotificationCenterDelegate` surfaces the notification/tap. ## 1. Enable push and add providers (CometChat Dashboard) -1) Go to **Notifications → Settings** and enable **Push Notifications**. +1. Go to **Notifications → Settings** and enable **Push Notifications**. - Enable Push Notifications + Enable Push Notifications -2) On Firebase: - - Go to **Project Settings → Service accounts** and generate a new private key; download the JSON file. +2. On Firebase: + - Go to **Project Settings → Service accounts** and generate a new private key; download the JSON file. - Add FCM credentials + Add FCM credentials -3) On CometChat Dashboard: +3. On CometChat Dashboard: - Add an **FCM iOS provider** and upload your Firebase service account JSON; copy the Provider ID. Add FCM credentials - ## 2. Upload your APNs Certificates +## 2. Upload your APNs Certificates -1) In the **Firebase Console**, go to **Project Settings → Cloud Messaging**. -2) Under **iOS app configuration**, upload your APNs authentication key or certificates. +1. In the **Firebase Console**, go to **Project Settings → Cloud Messaging**. +2. Under **iOS app configuration**, upload your APNs authentication key or certificates. - Upload APNs Certificates in Firebase Console + Upload APNs Certificates in Firebase Console ## 3. Prepare Firebase and CometChat -1) Firebase Console: download and add `GoogleService-Info.plist` to your target. +1. Firebase Console: download and add `GoogleService-Info.plist` to your target. - Upload APNs Certificates in Firebase Console + Upload APNs Certificates in Firebase Console -2) Xcode capabilities: Push Notifications, Background Modes → Remote notifications. +2. Xcode capabilities: Push Notifications, Background Modes → Remote notifications. - Enable Push Notifications and Background Modes for FCM + Enable Push Notifications and Background Modes for FCM ## 4. Add dependencies (Podfile) @@ -91,7 +106,6 @@ end ``` Run `pod install`. - ## 5. Wire AppDelegate (Firebase + delegates) @@ -122,7 +136,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD if let error = error { print("Permission error:", error.localizedDescription) } - + // Only register for remote notifications if permission granted if granted { DispatchQueue.main.async { @@ -142,20 +156,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data ) { Messaging.messaging().apnsToken = deviceToken - + // Store the token for later registration after login let hexString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() UserDefaults.standard.set(hexString, forKey: "apnsPushToken") print("APNs token received and stored: \(hexString)") } - + func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error ) { print("Failed to register for remote notifications: \(error.localizedDescription)") } - + func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], @@ -175,10 +189,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD } print("FCM Token received:", fcmToken) - + // Store FCM token as well UserDefaults.standard.set(fcmToken, forKey: "fcmPushToken") - + if let apnsToken = UserDefaults.standard.string(forKey: "apnsPushToken") { print("Registering APNs token with CometChat: \(apnsToken)") CometChatNotifications.registerPushToken( @@ -205,14 +219,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD ) { completionHandler([.banner, .sound, .badge]) } - + // Call this method AFTER CometChat login succeeds static func registerStoredPushToken() { guard CometChat.getLoggedInUser() != nil else { print("Cannot register push token: User not logged in") return } - + // Register APNs token if let apnsToken = UserDefaults.standard.string(forKey: "apnsPushToken") { print("Registering APNs token with CometChat: \(apnsToken)") @@ -230,7 +244,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD } else { print("No stored APNs token found - Check if Push Notifications capability is enabled in Xcode") } - + // Register FCM token if let fcmToken = UserDefaults.standard.string(forKey: "fcmPushToken") { print("Registering FCM token with CometChat...") @@ -252,9 +266,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD **What this code is doing** -- Initializes Firebase, sets `MessagingDelegate` and `UNUserNotificationCenterDelegate`, asks for alert/badge/sound permission, and registers for remote notifications. -- Sets `Messaging.messaging().apnsToken` so FCM can map the APNs token and later deliver via APNs. -- Stores the FCM registration token and calls `registerStoredPushToken()` so CometChat can bind the token to your logged-in user (using the Provider ID you configured). +- Initializes Firebase, sets `MessagingDelegate` and `UNUserNotificationCenterDelegate`, asks for alert/badge/sound permission, and registers for remote notifications. +- Sets `Messaging.messaging().apnsToken` so FCM can map the APNs token and later deliver via APNs. +- Stores the FCM registration token and calls `registerStoredPushToken()` so CometChat can bind the token to your logged-in user (using the Provider ID you configured). - Leaves `willPresent` to show banners/sounds in foreground instead of silently ignoring the notification. ## 6. Create FCM helper @@ -298,8 +312,8 @@ final class CometChatFCMHelper { **What this helper is doing** -- Wraps permission prompts + delegate wiring so you can call one method from `AppDelegate`. -- Sets the notification delegate early and registers for APNs on the main queue (Apple requirement). +- Wraps permission prompts + delegate wiring so you can call one method from `AppDelegate`. +- Sets the notification delegate early and registers for APNs on the main queue (Apple requirement). - Keeps all push setup in a reusable singleton to call from tests, scenes, or multi-target setups. ## 7. Testing checklist @@ -313,9 +327,9 @@ final class CometChatFCMHelper { ## 8. Troubleshooting -| Symptom | Quick checks | -| --- | --- | -| No FCM pushes | `GoogleService-Info.plist` present; APNs key uploaded to Firebase; bundle ID matches; permission granted. | -| Token registration fails | Run after login; provider ID matches FCM iOS provider; `Messaging.messaging().delegate` set. | -| Taps ignored | Ensure `UNUserNotificationCenterDelegate` methods fire and navigation is ready before routing. | -| Call UI missing | Add PushKit + CallKit wiring; register VoIP token with an APNs VoIP provider; ensure VoIP/background modes are enabled. | +| Symptom | Quick checks | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| No FCM pushes | `GoogleService-Info.plist` present; APNs key uploaded to Firebase; bundle ID matches; permission granted. | +| Token registration fails | Run after login; provider ID matches FCM iOS provider; `Messaging.messaging().delegate` set. | +| Taps ignored | Ensure `UNUserNotificationCenterDelegate` methods fire and navigation is ready before routing. | +| Call UI missing | Add PushKit + CallKit wiring; register VoIP token with an APNs VoIP provider; ensure VoIP/background modes are enabled. | diff --git a/notifications/legacy-push-notifications.mdx b/notifications/legacy-push-notifications.mdx index ef7ddfb29..a4355a719 100644 --- a/notifications/legacy-push-notifications.mdx +++ b/notifications/legacy-push-notifications.mdx @@ -2,12 +2,11 @@ title: "Integration Guide for Legacy Push Notifications" --- - -Migrate to Token-based Push Notifications - -You can check out our new Token-based implementation [here](/notifications/push-overview). + +**This integration is deprecated** and scheduled for removal. Migrate to the new Token-based Push Notifications. - +See the [Push Notifications Guide](/notifications/push-overview) for the current implementation. + The Push Notification extension allows you to send push notifications to mobile apps and desktop browsers. @@ -1875,7 +1874,7 @@ let processedMessage = CometChat.CometChatHelper.processMessage(JSON_MESSAGE); - + Attachments can be of the following types: `CometChatConstants.MESSAGE_TYPE_IMAGE`\ @@ -1883,4 +1882,4 @@ Attachments can be of the following types: `CometChatConstants.MESSAGE_TYPE_AUDIO`\ `CometChatConstants.MESSAGE_TYPE_FILE` - + diff --git a/notifications/overview.mdx b/notifications/overview.mdx index d671ff91d..4066f1e9a 100644 --- a/notifications/overview.mdx +++ b/notifications/overview.mdx @@ -9,18 +9,18 @@ Notifications play a crucial role in alerting users to activity within conversat Deliver instant updates and improve user engagement. CometChat has the following offerings. * [Push Notifications](/notifications/push-overview) -* [Push Notifications extension (Legacy)](/notifications/push-notification-extension-overview) +* [Push Notifications extension (Legacy)](/notifications/push-notifications-extension-legacy) ### Email Notifications Dispatch updates at intervals to re-engage users with extended absence using Emails. * [Email Notifications](/notifications/email-overview) -* [Email Notifications extension (Legacy)](/notifications/email-notification-extension). +* [Email Notifications extension (Legacy)](/notifications/email-notifications-extension-legacy). ### SMS Notifications Dispatch updates at intervals to re-engage users with extended absence using SMS. * [SMS Notifications](/notifications/sms-overview) -* [SMS Notifications extension (Legacy)](/notifications/sms-notification-extension). +* [SMS Notifications extension (Legacy)](/notifications/sms-notifications-extension-legacy). diff --git a/rest-api/ai-agents-apis/properties-and-constraints.mdx b/rest-api/ai-agents-apis/properties-and-constraints.mdx index c56966eb3..c6cd4d4a4 100644 --- a/rest-api/ai-agents-apis/properties-and-constraints.mdx +++ b/rest-api/ai-agents-apis/properties-and-constraints.mdx @@ -8,11 +8,12 @@ Properties and constraints for the Agent Builder APIs. ## Agents -| **Property** | **Constraints** | -| ---------------------- | -------------------------- | -| Agent name | Max 100 characters | -| Agent instructions | Max 32,000 characters | -| Maximum agents per app | Contact support for limits | +| **Property** | **Constraints** | +| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| Agent UID | System-generated UUID v4 (alpha-dash compatible). | +| Agent name | Max 100 characters | +| Agent instructions | Max 32,000 characters | +| Maximum agents per app | Contact support for limits | ## Tools diff --git a/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx index d1b4ee21f..a0c2c2ea6 100644 --- a/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx +++ b/rest-api/byo-ai-agents-apis/properties-and-constraints.mdx @@ -8,11 +8,12 @@ Properties and constraints for the BYO Agent APIs. ## BYO Agents -| **Property** | **Constraints** | -| -------------------------- | -------------------------- | -| Agent name | Max 100 characters | -| Agent URL | Must be a valid HTTPS URL | -| Maximum BYO agents per app | Contact support for limits | +| **Property** | **Constraints** | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| Agent UID | System-generated UUID v4 (alpha-dash compatible). | +| Agent name | Max 100 characters | +| Agent URL | Must be a valid HTTPS URL | +| Maximum BYO agents per app | Contact support for limits | ## Tools diff --git a/rest-api/calls-apis/overview.mdx b/rest-api/calls-apis/overview.mdx index d548533e2..78421e751 100644 --- a/rest-api/calls-apis/overview.mdx +++ b/rest-api/calls-apis/overview.mdx @@ -21,7 +21,7 @@ https://{appId}.call-{region}.cometchat.io/v3 ## Authentication -All API requests require authentication using your REST API Key in the `apikey` header. See the [Authentication Guide](/rest-api/authentication) for details on API key scopes and security best practices. +All API requests require authentication using your REST API Key in the `apikey` header. The `onBehalfOf` header is supported on both List Calls and Get Call endpoints to retrieve calls scoped to a specific user. See the [Authentication Guide](/rest-api/authentication) for details on API key scopes and security best practices. ```bash curl -X GET "https://{appId}.call-{region}.cometchat.io/v3/calls" \ From 2258f04e33e50685d3bc116c80ef0bd2baadf71f Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 18:37:33 +0530 Subject: [PATCH 50/56] Fixed schemas --- chat-apis.json | 468 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 440 insertions(+), 28 deletions(-) diff --git a/chat-apis.json b/chat-apis.json index f73e54833..2cfd2737e 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -132,7 +132,23 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "apiKey": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "createdAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -619,7 +635,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "link": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + } + } }, "meta": { "type": "object" @@ -1420,7 +1470,54 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "0": { + "type": "object" + }, + "guid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "membersCount": { + "type": "integer" + }, + "joinedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + }, + "hasJoined": { + "type": "boolean" + }, + "createdAt": { + "type": "integer" + }, + "owner": { + "type": "string" + }, + "tags": { + "type": "array", + "items": {} + } + } + } }, "meta": { "type": "object" @@ -2129,7 +2226,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -3234,7 +3365,32 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "conversationId": { + "type": "string" + }, + "conversationType": { + "type": "string" + }, + "unreadMessageCount": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "lastMessage": { + "type": "object" + }, + "conversationWith": { + "type": "object" + } + } + } }, "meta": { "type": "object" @@ -5806,7 +5962,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "link": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + } + } }, "meta": { "type": "object" @@ -6014,7 +6204,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "link": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "status": { + "type": "string" + }, + "role": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + }, + "conversationId": { + "type": "string" + } + } + } }, "meta": { "type": "object" @@ -6564,7 +6788,29 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "role": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "settings": { + "type": "object" + }, + "createdAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -7696,7 +7942,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -8168,7 +8448,41 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "conversationId": { + "type": "string" + }, + "sender": { + "type": "string" + }, + "receiverType": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "type": "string" + }, + "data": { + "type": "object" + }, + "sentAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -8380,7 +8694,35 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "group": { + "type": "object" + }, + "bypassPreferencesForMentions": { + "type": "boolean" + }, + "call": { + "type": "object" + }, + "oneOnOne": { + "type": "object" + }, + "mute": { + "type": "object" + }, + "email": { + "type": "object" + }, + "sms": { + "type": "object" + }, + "push": { + "type": "object" + } + } + } }, "meta": { "type": "object" @@ -8680,8 +9022,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -9141,7 +9482,20 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "group": { + "type": "object" + }, + "oneOnOne": { + "type": "object" + }, + "mute": { + "type": "object" + } + } + } }, "meta": { "type": "object" @@ -9642,8 +9996,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -9834,8 +10187,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -10006,8 +10358,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -10113,8 +10464,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -10266,8 +10616,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -10496,8 +10845,7 @@ "schema": { "properties": { "data": { - "type": "array", - "items": {} + "type": "object" }, "meta": { "type": "object" @@ -11817,7 +12165,39 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dataType": { + "type": "string" + }, + "availableValues": { + "type": "array", + "items": {} + }, + "defaultValue": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" @@ -12178,7 +12558,39 @@ "properties": { "data": { "type": "array", - "items": {} + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dataType": { + "type": "string" + }, + "availableValues": { + "type": "array", + "items": {} + }, + "defaultValue": { + "type": "string" + }, + "createdAt": { + "type": "integer" + }, + "updatedAt": { + "type": "integer" + } + } + } }, "meta": { "type": "object" From ed6ba0155c4c022616986dfd8ad51bbd7b0459af Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 21:04:04 +0530 Subject: [PATCH 51/56] Fixed all the p1s --- ai-agents/ag2-knowledge-agent.mdx | 2 +- ai-agents/mastra-backend-tools-agent.mdx | 2 +- ai-agents/mastra-coordinator-agent.mdx | 2 +- ai-agents/mastra-frontend-actions-agent.mdx | 2 +- ai-agents/mastra-knowledge-agent.mdx | 2 +- ai-agents/mastra-orchestrator-agent.mdx | 2 +- articles/migration-guide.mdx | 2 +- fundamentals/email-replies.mdx | 2 +- fundamentals/extensions-overview.mdx | 4 ++-- fundamentals/implementation-checklist.mdx | 4 ++-- fundamentals/notification-extensions.mdx | 4 ++-- moderation/legacy-extensions.mdx | 8 ++++---- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ai-agents/ag2-knowledge-agent.mdx b/ai-agents/ag2-knowledge-agent.mdx index cf95e6c62..e39300a4c 100644 --- a/ai-agents/ag2-knowledge-agent.mdx +++ b/ai-agents/ag2-knowledge-agent.mdx @@ -212,7 +212,7 @@ curl -N -X POST http://localhost:8000/agent \ Save then confirm the toggle shows Enabled. -> For more on CometChat AI Agents, see: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) *** diff --git a/ai-agents/mastra-backend-tools-agent.mdx b/ai-agents/mastra-backend-tools-agent.mdx index 78bd40997..989e11e1f 100644 --- a/ai-agents/mastra-backend-tools-agent.mdx +++ b/ai-agents/mastra-backend-tools-agent.mdx @@ -125,7 +125,7 @@ Ensure your public route: **`/api/agents/deals/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) --- diff --git a/ai-agents/mastra-coordinator-agent.mdx b/ai-agents/mastra-coordinator-agent.mdx index d074471b8..9fc8d0092 100644 --- a/ai-agents/mastra-coordinator-agent.mdx +++ b/ai-agents/mastra-coordinator-agent.mdx @@ -180,7 +180,7 @@ Ensure your public route: **`/api/agents/relay/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) --- diff --git a/ai-agents/mastra-frontend-actions-agent.mdx b/ai-agents/mastra-frontend-actions-agent.mdx index d34f297e9..4de78d8ea 100644 --- a/ai-agents/mastra-frontend-actions-agent.mdx +++ b/ai-agents/mastra-frontend-actions-agent.mdx @@ -149,7 +149,7 @@ Ensure your public route: **`/api/agents/celebration/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) --- diff --git a/ai-agents/mastra-knowledge-agent.mdx b/ai-agents/mastra-knowledge-agent.mdx index 10f7d6fc5..10c75d515 100644 --- a/ai-agents/mastra-knowledge-agent.mdx +++ b/ai-agents/mastra-knowledge-agent.mdx @@ -182,7 +182,7 @@ Ensure the public route: **`/api/agents/knowledge/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) --- diff --git a/ai-agents/mastra-orchestrator-agent.mdx b/ai-agents/mastra-orchestrator-agent.mdx index f36f59d43..f8e44209e 100644 --- a/ai-agents/mastra-orchestrator-agent.mdx +++ b/ai-agents/mastra-orchestrator-agent.mdx @@ -175,7 +175,7 @@ Ensure your public route: **`/api/agents/orchestratorAgent/generate`** is reacha Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/overview) · [Instructions](/ai-agents/instructions) · [Custom agents](/ai-agents/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) --- diff --git a/articles/migration-guide.mdx b/articles/migration-guide.mdx index b195d998c..7edd1130d 100644 --- a/articles/migration-guide.mdx +++ b/articles/migration-guide.mdx @@ -56,7 +56,7 @@ Android: [Upgrading from v3](/sdk/android/upgrading-from-v3-guide) React Native: [Upgrading from v2](/sdk/react-native/3.0/resources-upgrading-from-v2) -Ionic Cordova Capacitor: [Upgrading from v2](/sdk/ionic/3.0/resources-upgrading-from-v2) +Ionic Cordova Capacitor: [Upgrading from v2](/sdk/ionic-legacy/3.0/resources-upgrading-from-v2) *Note: if you mark your migration as complete without following the specified upgrade guide fully, your application may become stuck in a broken state, with out-of-sync SDK / API and application versions unable to communicate properly. If this happens, contact support.* diff --git a/fundamentals/email-replies.mdx b/fundamentals/email-replies.mdx index e80576d82..31c5612b4 100644 --- a/fundamentals/email-replies.mdx +++ b/fundamentals/email-replies.mdx @@ -16,7 +16,7 @@ The Email Replies adds extra functionality to the Email Notifications extension ## Pre-requisite -To start using Email Notifications with Replies, you need to first enable and save the settings for Email Notifications extension. [Learn more](/fundamentals/email-notifications). +To start using Email Notifications with Replies, you need to first enable and save the settings for Email Notifications extension. [Learn more](/notifications/email-overview). Once it is set up, you can come back and proceed from here. diff --git a/fundamentals/extensions-overview.mdx b/fundamentals/extensions-overview.mdx index 3aa338a73..b05699a8c 100644 --- a/fundamentals/extensions-overview.mdx +++ b/fundamentals/extensions-overview.mdx @@ -65,8 +65,8 @@ Extensions that help you add support to your app. *Recommended for advanced apps Extensions that help alert users of new messages. *Recommended for all apps.* [Push Notification](/notifications/web-push-notifications)\ -[Email Notification](/notifications/email-notification-extension)\ -[SMS Notification](/notifications/sms-notification-extension) +[Email Notification](/notifications/email-notifications-extension-legacy)\ +[SMS Notification](/notifications/sms-notifications-extension-legacy) ### Moderation diff --git a/fundamentals/implementation-checklist.mdx b/fundamentals/implementation-checklist.mdx index 8a5a03a09..6d2f114bc 100644 --- a/fundamentals/implementation-checklist.mdx +++ b/fundamentals/implementation-checklist.mdx @@ -25,7 +25,7 @@ title: "Implementation Checklist" * Choose to integration CometChat in your app either by using UI Kits or SDKs. * Have a look at our Sample apps for quickly checking out features and functionalities. * UI Kits: [React](/ui-kit/react/overview), [React Native](/ui-kit/react-native/overview), [iOS](/ui-kit/ios/overview), [Android](/ui-kit/android/overview), [Flutter](/ui-kit/flutter/overview), [Angular](/ui-kit/angular/overview), [Vue](/ui-kit/vue/overview)\ - SDKs: [JavaScript](/sdk/javascript/overview), [React Native](/sdk/react-native/overview), [iOS](/sdk/ios/overview), [Android](/sdk/android/overview), [Flutter](/sdk/flutter/overview), [Ionic/Capacitor](/sdk/ionic/overview) & [Sample apps](https://github.com/cometchat) + SDKs: [JavaScript](/sdk/javascript/overview), [React Native](/sdk/react-native/overview), [iOS](/sdk/ios/overview), [Android](/sdk/android/overview), [Flutter](/sdk/flutter/overview), [Ionic/Capacitor](/sdk/ionic-legacy/overview) & [Sample apps](https://github.com/cometchat) ### 3. Synchronize users and groups utilizing the APIs @@ -69,7 +69,7 @@ title: "Implementation Checklist" -* [Bots](/ai-chatbots/overview) are unique users capable of autonomously sending and receiving messages. You can define a bot's behaviour by implementing and exposing your business logic using Callback URLs. +* [Bots](/ai-chatbots/bots) are unique users capable of autonomously sending and receiving messages. You can define a bot's behaviour by implementing and exposing your business logic using Callback URLs. ### 7. Set up webhooks diff --git a/fundamentals/notification-extensions.mdx b/fundamentals/notification-extensions.mdx index 0243ec6cf..73224c71c 100644 --- a/fundamentals/notification-extensions.mdx +++ b/fundamentals/notification-extensions.mdx @@ -13,7 +13,7 @@ CometChat Notifications come in two variants: 2. The Legacy Notification Extensions based on CometChat Extensions. * [Legacy Push Notifications Extension](/notifications/web-push-notifications) - * [Legacy Email Notifications Extension](/notifications/email-notification-extension) - * [Legacy SMS Notifications Extension](/notifications/sms-notification-extension) + * [Legacy Email Notifications Extension](/notifications/email-notifications-extension-legacy) + * [Legacy SMS Notifications Extension](/notifications/sms-notifications-extension-legacy) For the best experience, we recommend to use the mordern [Notifications](/notifications/overview) platform. Please visit the above mentioned links for more details. diff --git a/moderation/legacy-extensions.mdx b/moderation/legacy-extensions.mdx index 44db1b127..3f80fb2b2 100644 --- a/moderation/legacy-extensions.mdx +++ b/moderation/legacy-extensions.mdx @@ -11,10 +11,10 @@ For new projects, use [AI Moderation](/moderation/overview). **Management API endpoints** are available for programmatic configuration of these legacy extensions: -- [Profanity Filter Settings](/rest-api/management-apis/extensions/profanity-filter) -- [Image Moderation Settings](/rest-api/management-apis/extensions/image-moderation) -- [Data Masking Settings](/rest-api/management-apis/extensions/data-masking) -- [In-Flight Message Moderation Settings](/rest-api/management-apis/extensions/in-flight-message-moderation) +- [Profanity Filter Settings](/rest-api/management-apis/extensions/profanity-filter-get-settings) +- [Image Moderation Settings](/rest-api/management-apis/extensions/image-moderation-get-settings) +- [Data Masking Settings](/rest-api/management-apis/extensions/data-masking-get-settings) +- [In-Flight Message Moderation Settings](/rest-api/management-apis/extensions/in-flight-message-moderation-get-settings) ## Slow Mode From 554f0ca8f360e68b432e7a0e23fb6388a2c98d9b Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Tue, 31 Mar 2026 21:20:25 +0530 Subject: [PATCH 52/56] Fixed all the p2s --- ai-agents/langgraph.mdx | 9 +++++++ articles/migration-guide.mdx | 4 +-- calls/android/authentication.mdx | 2 +- calls/flutter/authentication.mdx | 2 +- calls/ios/authentication.mdx | 2 +- calls/javascript/authentication.mdx | 2 +- chat-apis.json | 25 +++++++++++++++---- fundamentals/implementation-checklist.mdx | 4 +-- fundamentals/user-auth.mdx | 4 +-- fundamentals/webhooks-legacy.mdx | 16 ++++++------ moderation/getting-started.mdx | 4 +++ notifications/email-custom-providers.mdx | 2 +- notifications/email-integration.mdx | 2 +- .../email-notifications-extension-legacy.mdx | 2 +- notifications/logs.mdx | 2 +- notifications/sms-custom-providers.mdx | 2 +- notifications/sms-integration.mdx | 2 +- .../sms-notifications-extension-legacy.mdx | 2 +- .../ai-agents-apis/agents/create-agent.mdx | 10 ++++++++ .../ai-agents-apis/agents/delete-agent.mdx | 10 ++++++++ rest-api/ai-agents-apis/agents/get-agent.mdx | 10 ++++++++ .../agents/list-agent-tools-and-actions.mdx | 10 ++++++++ .../ai-agents-apis/agents/list-agents.mdx | 10 ++++++++ .../agents/list-available-models.mdx | 10 ++++++++ .../agents/search-agent-tools.mdx | 10 ++++++++ .../ai-agents-apis/agents/update-agent.mdx | 10 ++++++++ .../add-api-tools-to-agent.mdx | 10 ++++++++ .../custom-api-tools/create-api-tool.mdx | 10 ++++++++ .../custom-api-tools/delete-api-tool.mdx | 10 ++++++++ .../custom-api-tools/get-api-tool.mdx | 10 ++++++++ .../custom-api-tools/list-api-tools.mdx | 10 ++++++++ .../remove-api-tools-from-agent.mdx | 10 ++++++++ .../custom-api-tools/update-api-tool.mdx | 10 ++++++++ .../add-frontend-actions-to-agent.mdx | 10 ++++++++ .../create-frontend-action.mdx | 10 ++++++++ .../delete-frontend-action.mdx | 10 ++++++++ .../frontend-actions/get-frontend-action.mdx | 10 ++++++++ .../list-frontend-actions.mdx | 10 ++++++++ .../remove-frontend-actions-from-agent.mdx | 10 ++++++++ .../update-frontend-action.mdx | 10 ++++++++ .../add-knowledge-base-files.mdx | 10 ++++++++ .../knowledge-base/create-text-detail.mdx | 10 ++++++++ .../knowledge-base/delete-text-detail.mdx | 10 ++++++++ .../knowledge-base/delete-uploaded-file.mdx | 10 ++++++++ .../knowledge-base/delete-website.mdx | 10 ++++++++ .../knowledge-base/get-discovered-urls.mdx | 10 ++++++++ .../knowledge-base/get-source-pages.mdx | 10 ++++++++ .../knowledge-base/get-text-entry.mdx | 10 ++++++++ .../knowledge-base/initiate-file-uploads.mdx | 10 ++++++++ .../list-knowledge-base-records.mdx | 10 ++++++++ .../knowledge-base/list-text-entries.mdx | 10 ++++++++ .../poll-discovered-urls-status.mdx | 10 ++++++++ .../poll-knowledge-base-status.mdx | 10 ++++++++ .../process-discovered-urls.mdx | 10 ++++++++ .../remove-knowledge-base-files.mdx | 10 ++++++++ .../retry-indexing-for-website-pages.mdx | 10 ++++++++ .../retry-knowledge-base-source-indexing.mdx | 10 ++++++++ .../knowledge-base/scrape-single-page.mdx | 10 ++++++++ .../knowledge-base/scrape-website.mdx | 10 ++++++++ .../knowledge-base/update-text-detail.mdx | 10 ++++++++ .../mcp-servers/add-mcp-servers-to-agent.mdx | 10 ++++++++ .../mcp-servers/create-mcp-server.mdx | 10 ++++++++ .../mcp-servers/delete-mcp-server.mdx | 10 ++++++++ .../mcp-servers/get-mcp-server.mdx | 10 ++++++++ .../mcp-servers/list-mcp-servers.mdx | 10 ++++++++ .../remove-mcp-servers-from-agent.mdx | 10 ++++++++ .../mcp-servers/update-mcp-server.mdx | 10 ++++++++ .../tools/add-tools-to-agent.mdx | 10 ++++++++ .../tools/enable-tool-actions.mdx | 10 ++++++++ .../tools/get-tool-actions-for-agent.mdx | 10 ++++++++ .../tools/remove-tool-actions.mdx | 10 ++++++++ .../tools/remove-tools-from-agent.mdx | 10 ++++++++ .../variables/create-custom-variable.mdx | 10 ++++++++ .../variables/delete-custom-variable.mdx | 10 ++++++++ .../variables/get-all-available-variables.mdx | 10 ++++++++ .../variables/update-custom-variable.mdx | 10 ++++++++ rest-api/authentication.mdx | 12 +++++++++ .../agents/create-byo-agent.mdx | 10 ++++++++ .../agents/delete-byo-agent.mdx | 10 ++++++++ .../agents/list-byo-agents.mdx | 10 ++++++++ .../agents/update-byo-agent.mdx | 10 ++++++++ .../byo-ai-agents-apis/tools/create-tool.mdx | 10 ++++++++ .../byo-ai-agents-apis/tools/delete-tool.mdx | 10 ++++++++ .../byo-ai-agents-apis/tools/get-tool.mdx | 10 ++++++++ .../byo-ai-agents-apis/tools/list-tools.mdx | 10 ++++++++ .../byo-ai-agents-apis/tools/update-tool.mdx | 10 ++++++++ .../email/delete-custom-provider.mdx | 10 ++++++++ .../email/delete-sendgrid-credentials.mdx | 10 ++++++++ .../email/get-custom-provider.mdx | 10 ++++++++ .../email/get-sendgrid-credentials.mdx | 10 ++++++++ .../email/save-custom-provider.mdx | 10 ++++++++ .../email/save-sendgrid-credentials.mdx | 10 ++++++++ .../email/update-custom-provider.mdx | 10 ++++++++ .../email/update-sendgrid-credentials.mdx | 10 ++++++++ .../push/add-apns-provider.mdx | 10 ++++++++ .../push/add-fcm-provider.mdx | 10 ++++++++ .../push/change-default-apns-provider.mdx | 10 ++++++++ .../push/change-default-fcm-provider.mdx | 10 ++++++++ .../push/delete-apns-providers.mdx | 10 ++++++++ .../push/delete-contact-details.mdx | 10 ++++++++ .../push/delete-custom-provider.mdx | 10 ++++++++ .../push/delete-fcm-provider.mdx | 10 ++++++++ .../push/delete-push-token.mdx | 10 ++++++++ .../push/get-contact-details.mdx | 10 ++++++++ .../push/get-custom-provider.mdx | 10 ++++++++ .../notifications-apis/push/get-timezone.mdx | 10 ++++++++ .../push/list-apns-providers.mdx | 10 ++++++++ .../push/list-fcm-providers.mdx | 10 ++++++++ .../push/list-muted-conversations.mdx | 10 ++++++++ .../push/list-preferences.mdx | 10 ++++++++ .../push/list-push-tokens.mdx | 10 ++++++++ .../notifications-apis/push/list-settings.mdx | 10 ++++++++ .../push/mute-conversations.mdx | 10 ++++++++ .../push/notifications-logs.mdx | 10 ++++++++ .../push/register-push-token.mdx | 10 ++++++++ .../push/reset-preferences.mdx | 10 ++++++++ .../push/reset-settings.mdx | 10 ++++++++ .../push/save-custom-provider.mdx | 10 ++++++++ .../push/unmute-conversations.mdx | 10 ++++++++ .../push/unregister-push-tokens.mdx | 10 ++++++++ .../push/update-apns-providers.mdx | 10 ++++++++ .../push/update-contact-details.mdx | 10 ++++++++ .../push/update-custom-provider.mdx | 10 ++++++++ .../push/update-fcm-provider.mdx | 10 ++++++++ .../push/update-preferences.mdx | 10 ++++++++ .../push/update-settings.mdx | 10 ++++++++ .../push/update-timezone.mdx | 10 ++++++++ .../sms/delete-custom-provider.mdx | 10 ++++++++ .../sms/delete-twilio-credentials.mdx | 10 ++++++++ .../sms/get-custom-provider.mdx | 10 ++++++++ .../sms/get-twilio-credentials.mdx | 10 ++++++++ .../sms/save-custom-provider.mdx | 10 ++++++++ .../sms/save-twilio-credentials.mdx | 10 ++++++++ .../sms/update-custom-provider.mdx | 10 ++++++++ .../sms/update-twilio-credentials.mdx | 10 ++++++++ sdk/android/2.0/authentication.mdx | 6 ++--- sdk/android/2.0/bots.mdx | 2 +- sdk/android/2.0/delete-conversation.mdx | 2 +- sdk/android/2.0/user-management.mdx | 6 ++--- sdk/android/3.0/authentication.mdx | 6 ++--- sdk/android/3.0/bots.mdx | 2 +- .../3.0/messaging-delete-conversation.mdx | 2 +- sdk/android/3.0/users-user-management.mdx | 6 ++--- sdk/android/authentication-overview.mdx | 6 ++--- sdk/android/delete-conversation.mdx | 2 +- sdk/android/user-management.mdx | 6 ++--- sdk/flutter/3.0/authentication.mdx | 6 ++--- .../3.0/messaging-delete-conversation.mdx | 2 +- sdk/flutter/3.0/users-user-management.mdx | 6 ++--- sdk/flutter/authentication-overview.mdx | 6 ++--- sdk/flutter/delete-conversation.mdx | 2 +- sdk/flutter/user-management.mdx | 6 ++--- sdk/ionic-legacy/2.0/authentication.mdx | 6 ++--- .../2.0/messaging-delete-conversation.mdx | 2 +- .../2.0/users-user-management.mdx | 6 ++--- sdk/ionic-legacy/3.0/authentication.mdx | 6 ++--- .../3.0/messaging-delete-conversation.mdx | 2 +- .../3.0/users-user-management.mdx | 6 ++--- sdk/ionic-legacy/authentication.mdx | 6 ++--- sdk/ionic-legacy/delete-conversation.mdx | 2 +- sdk/ionic-legacy/user-management.mdx | 6 ++--- sdk/ios/2.0/authentication.mdx | 6 ++--- sdk/ios/2.0/delete-a-conversation.mdx | 2 +- sdk/ios/2.0/user-management.mdx | 6 ++--- sdk/ios/3.0/authentication.mdx | 6 ++--- sdk/ios/3.0/delete-a-conversation.mdx | 2 +- sdk/ios/3.0/user-management.mdx | 6 ++--- sdk/ios/authentication-overview.mdx | 6 ++--- sdk/ios/delete-conversation.mdx | 2 +- sdk/ios/user-management.mdx | 6 ++--- sdk/javascript/2.0/authentication.mdx | 6 ++--- sdk/javascript/2.0/bots.mdx | 2 +- .../2.0/messaging-delete-conversation.mdx | 2 +- sdk/javascript/2.0/users-user-management.mdx | 6 ++--- sdk/javascript/3.0/authentication.mdx | 6 ++--- sdk/javascript/3.0/bots.mdx | 2 +- .../3.0/messaging-delete-conversation.mdx | 2 +- sdk/javascript/3.0/users-user-management.mdx | 6 ++--- sdk/javascript/authentication-overview.mdx | 6 ++--- sdk/javascript/delete-conversation.mdx | 2 +- sdk/javascript/user-management.mdx | 6 ++--- sdk/react-native/2.0/authentication.mdx | 6 ++--- sdk/react-native/2.0/bots.mdx | 2 +- .../2.0/messaging-delete-conversation.mdx | 2 +- .../2.0/users-user-management.mdx | 6 ++--- sdk/react-native/3.0/authentication.mdx | 6 ++--- sdk/react-native/3.0/bots.mdx | 2 +- .../3.0/messaging-delete-conversation.mdx | 2 +- .../3.0/users-user-management.mdx | 6 ++--- sdk/react-native/authentication-overview.mdx | 6 ++--- sdk/react-native/delete-conversation.mdx | 2 +- ui-kit/android/getting-started.mdx | 4 +-- ui-kit/android/methods.mdx | 4 +-- ui-kit/android/v4/methods.mdx | 4 +-- ui-kit/angular/methods.mdx | 4 +-- ui-kit/angular/v5/integration.mdx | 2 +- ui-kit/angular/v5/methods.mdx | 4 +-- ui-kit/flutter/getting-started.mdx | 2 +- ui-kit/flutter/methods.mdx | 4 +-- ui-kit/flutter/v4/methods.mdx | 4 +-- ui-kit/ios/getting-started.mdx | 4 +-- ui-kit/ios/methods.mdx | 4 +-- ui-kit/ios/v4/methods.mdx | 4 +-- ui-kit/react-native/expo-integration.mdx | 2 +- ui-kit/react-native/methods.mdx | 4 +-- .../react-native-cli-integration.mdx | 2 +- ui-kit/react-native/v4/methods.mdx | 4 +-- ui-kit/react/astro-integration.mdx | 2 +- ui-kit/react/methods.mdx | 4 +-- .../moved/builder-integration-nextjs.mdx | 2 +- .../builder-integration-react-router.mdx | 2 +- ui-kit/react/moved/builder-integration.mdx | 2 +- ui-kit/react/next-js-integration.mdx | 2 +- ui-kit/react/react-js-integration.mdx | 2 +- ui-kit/react/react-router-integration.mdx | 2 +- ui-kit/react/v4/methods.mdx | 4 +-- ui-kit/react/v5/methods.mdx | 4 +-- ui-kit/vue/integration.mdx | 4 +-- ui-kit/vue/ui-kit-methods.mdx | 4 +-- widget/html/legacy.mdx | 2 +- 220 files changed, 1398 insertions(+), 198 deletions(-) diff --git a/ai-agents/langgraph.mdx b/ai-agents/langgraph.mdx index 51328575c..dd48f74e0 100644 --- a/ai-agents/langgraph.mdx +++ b/ai-agents/langgraph.mdx @@ -125,3 +125,12 @@ Choose how you’ll ship the experience (Widget or React UI Kit export). ## REST API Reference For programmatic agent management, see the [Agent Builder APIs](/rest-api/ai-agents-apis/overview) and [BYO Agent APIs](/rest-api/byo-ai-agents-apis/overview). + +## Troubleshooting + +| Issue | Solution | +| --- | --- | +| Agent not responding | Verify your LangGraph server is running and the endpoint URL is accessible from CometChat's servers. | +| Messages not appearing | Check that the `onBehalfOf` header is set correctly and the user exists in CometChat. | +| Tool calls failing | Ensure tools are properly registered in both LangGraph and CometChat. Check the agent logs for error details. | +| Webhook not triggering | Verify the webhook URL is publicly accessible and returns a 200 status code. | diff --git a/articles/migration-guide.mdx b/articles/migration-guide.mdx index 7edd1130d..786984a02 100644 --- a/articles/migration-guide.mdx +++ b/articles/migration-guide.mdx @@ -62,7 +62,7 @@ Ionic Cordova Capacitor: [Upgrading from v2](/sdk/ionic-legacy/3.0/resources-upg ## Rest API Changes -This step is only applicable if you are using CometChat Rest APIs. Go to [Rest API documentation](https://api-explorer.cometchat.com/reference/create-apikey) Make sure you have selected V3. Select and update the API URLs applicable to your implementation. +This step is only applicable if you are using CometChat Rest APIs. Go to [Rest API documentation](/rest-api/chat-apis) Make sure you have selected V3. Select and update the API URLs applicable to your implementation. @@ -115,5 +115,5 @@ Once all the steps are done you'll be able to see that your app is migrated to v 1. Go to the dashboard and make a migration request for your application(s) 2. [Make any required platform-specific code changes](/articles/migration-guide#migrating-your-platform) - 3. [Make the API changes (Applicable if you are using CometChat Rest APIs)](https://api-explorer.cometchat.com/reference/create-apikey) + 3. [Make the API changes (Applicable if you are using CometChat Rest APIs)](/rest-api/chat-apis) 4. Mark the migration process as complete in the dashboard diff --git a/calls/android/authentication.mdx b/calls/android/authentication.mdx index e2d53d892..ff2739a42 100644 --- a/calls/android/authentication.mdx +++ b/calls/android/authentication.mdx @@ -112,7 +112,7 @@ This is the recommended authentication method for production applications. The A ### Auth Token Flow 1. User authenticates with your backend -2. Your backend calls the [CometChat Create Auth Token API](https://api-explorer.cometchat.com/reference/create-authtoken) +2. Your backend calls the [CometChat Create Auth Token API](/rest-api/chat-apis) 3. Your backend returns the Auth Token to the client 4. Client uses the Auth Token to login diff --git a/calls/flutter/authentication.mdx b/calls/flutter/authentication.mdx index 47b2e3153..662d32583 100644 --- a/calls/flutter/authentication.mdx +++ b/calls/flutter/authentication.mdx @@ -74,7 +74,7 @@ This is the recommended authentication method for production applications. The A ### Auth Token Flow 1. User authenticates with your backend -2. Your backend calls the [CometChat Create Auth Token API](https://api-explorer.cometchat.com/reference/create-authtoken) +2. Your backend calls the [CometChat Create Auth Token API](/rest-api/chat-apis) 3. Your backend returns the Auth Token to the client 4. Client uses the Auth Token to login diff --git a/calls/ios/authentication.mdx b/calls/ios/authentication.mdx index 058c80327..0e8001c4f 100644 --- a/calls/ios/authentication.mdx +++ b/calls/ios/authentication.mdx @@ -103,7 +103,7 @@ This is the recommended authentication method for production applications. The A ### Auth Token Flow 1. User authenticates with your backend -2. Your backend calls the [CometChat Create Auth Token API](https://api-explorer.cometchat.com/reference/create-authtoken) +2. Your backend calls the [CometChat Create Auth Token API](/rest-api/chat-apis) 3. Your backend returns the Auth Token to the client 4. Client uses the Auth Token to login diff --git a/calls/javascript/authentication.mdx b/calls/javascript/authentication.mdx index 71dc99b3b..c6fe66582 100644 --- a/calls/javascript/authentication.mdx +++ b/calls/javascript/authentication.mdx @@ -66,7 +66,7 @@ This is the recommended authentication method for production applications. The A ### Auth Token Flow 1. User authenticates with your backend -2. Your backend calls the [CometChat Create Auth Token API](https://api-explorer.cometchat.com/reference/create-authtoken) +2. Your backend calls the [CometChat Create Auth Token API](/rest-api/chat-apis) 3. Your backend returns the Auth Token to the client 4. Client uses the Auth Token to login diff --git a/chat-apis.json b/chat-apis.json index 2cfd2737e..3e0544938 100644 --- a/chat-apis.json +++ b/chat-apis.json @@ -9022,7 +9022,10 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": { + "type": "object" + } }, "meta": { "type": "object" @@ -9996,7 +9999,10 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": { + "type": "object" + } }, "meta": { "type": "object" @@ -10187,7 +10193,10 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": { + "type": "object" + } }, "meta": { "type": "object" @@ -10616,7 +10625,10 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": { + "type": "object" + } }, "meta": { "type": "object" @@ -10845,7 +10857,10 @@ "schema": { "properties": { "data": { - "type": "object" + "type": "array", + "items": { + "type": "object" + } }, "meta": { "type": "object" diff --git a/fundamentals/implementation-checklist.mdx b/fundamentals/implementation-checklist.mdx index 6d2f114bc..f7935b023 100644 --- a/fundamentals/implementation-checklist.mdx +++ b/fundamentals/implementation-checklist.mdx @@ -83,8 +83,8 @@ title: "Implementation Checklist" ### 9. Secure user logins with authentication tokens -* Ensuring safe and secure authentication of users in CometChat is crucial. Achieve this by utilizing [auth tokens](https://api-explorer.cometchat.com/reference/create-authtoken). -* Generate and retrieve the [auth token](https://api-explorer.cometchat.com/reference/create-authtoken) through your backend system, then supply it to the frontend. +* Ensuring safe and secure authentication of users in CometChat is crucial. Achieve this by utilizing [auth tokens](/rest-api/chat-apis). +* Generate and retrieve the [auth token](/rest-api/chat-apis) through your backend system, then supply it to the frontend. ### 10. Set up data import and migration diff --git a/fundamentals/user-auth.mdx b/fundamentals/user-auth.mdx index 7e0799364..b3414baef 100644 --- a/fundamentals/user-auth.mdx +++ b/fundamentals/user-auth.mdx @@ -27,7 +27,7 @@ Once the user is successfully logged into CometChat, we can proceed to request o 1. Handle the user creation endpoint in your application. 2. Add the user to your database. -3. Invoke the [CometChat API endpoint to create a user](https://api-explorer.cometchat.com/reference/creates-user). +3. Invoke the [CometChat API endpoint to create a user](/rest-api/chat-apis). * Optionally, pass a parameter to generate an authentication token for this user. @@ -42,7 +42,7 @@ Once the user is successfully logged into CometChat, we can proceed to request o ## Log In an Existing User 1. Authenticate the user within your application. -2. Your API will then request a CometChat auth token for the user. You can call the [create auth token API endpoint](https://api-explorer.cometchat.com/reference/create-authtoken) to create a new one. +2. Your API will then request a CometChat auth token for the user. You can call the [create auth token API endpoint](/rest-api/chat-apis) to create a new one. 3. Your server responds with the successful retrieval of the CometChat auth token to your front-end application. 4. Utilize the CometChat auth token to log the user into the [CometChat SDK / UI Kit](https://www.cometchat.com/docs/javascript-chat-sdk/authentication#login-using-auth-token), 5. If you’re using the **Widget Builder**, refer to the documentation on **[auth token–based user login](/widget/html/integration#3-backend-created-user-auth-token-login)**. diff --git a/fundamentals/webhooks-legacy.mdx b/fundamentals/webhooks-legacy.mdx index 44a02d0fa..ba7eded6a 100644 --- a/fundamentals/webhooks-legacy.mdx +++ b/fundamentals/webhooks-legacy.mdx @@ -87,19 +87,19 @@ CometChat also provides Management APIs to automate webhook and trigger manageme | Operation | API Reference | | --- | --- | -| Create a new webhook | [Create Webhook](https://api-explorer.cometchat.com/reference/create-webhook) | -| Update an existing webhook | [Update Webhook](https://api-explorer.cometchat.com/reference/update-webhook) | -| List all webhooks | [List Webhooks](https://api-explorer.cometchat.com/reference/list-webhooks) | -| Get a webhook by ID | [Get Webhook](https://api-explorer.cometchat.com/reference/get-webhook) | -| Delete a webhook | [Delete Webhook](https://api-explorer.cometchat.com/reference/delete-webhook) | +| Create a new webhook | [Create Webhook](/rest-api/chat-apis) | +| Update an existing webhook | [Update Webhook](/rest-api/chat-apis) | +| List all webhooks | [List Webhooks](/rest-api/chat-apis) | +| Get a webhook by ID | [Get Webhook](/rest-api/chat-apis) | +| Delete a webhook | [Delete Webhook](/rest-api/chat-apis) | #### Trigger management endpoints | Operation | API Reference | | --- | --- | -| Add triggers to a webhook | [Add Triggers](https://api-explorer.cometchat.com/reference/add-triggers) | -| List all triggers of a webhook | [List Triggers](https://api-explorer.cometchat.com/reference/list-triggers) | -| Remove triggers from a webhook | [Remove Triggers](https://api-explorer.cometchat.com/reference/remove-triggers) | +| Add triggers to a webhook | [Add Triggers](/rest-api/chat-apis) | +| List all triggers of a webhook | [List Triggers](/rest-api/chat-apis) | +| Remove triggers from a webhook | [Remove Triggers](/rest-api/chat-apis) | *** diff --git a/moderation/getting-started.mdx b/moderation/getting-started.mdx index cee443fe3..dba5881d0 100644 --- a/moderation/getting-started.mdx +++ b/moderation/getting-started.mdx @@ -471,3 +471,7 @@ By combining well-defined moderation rules with SDK integration, you can build a - **UI Kit users**: Just configure rules in the Dashboard - everything else is automatic - **SDK users**: Implement `onMessageModerated` listener to handle moderation results + +## REST API Reference + +For programmatic management of moderation rules, keywords, and blocked messages, see the [Moderation APIs](/rest-api/moderation-apis/overview). diff --git a/notifications/email-custom-providers.mdx b/notifications/email-custom-providers.mdx index 76beb6995..e5f2706c4 100644 --- a/notifications/email-custom-providers.mdx +++ b/notifications/email-custom-providers.mdx @@ -20,7 +20,7 @@ Authorization: Basic 2. Enable the provider. 3. Enter the publicly accessible webhook URL. 4. (Recommended) Enable Basic Authentication and set username/password. -5. Decide if you want to **Trigger only if email address is stored with CometChat** (via [Update Contact details API](https://api-explorer.cometchat.com/reference/notifications-update-contact-details)); when off, the webhook fires regardless. +5. Decide if you want to **Trigger only if email address is stored with CometChat** (via [Update Contact details API](/rest-api/chat-apis)); when off, the webhook fires regardless. 6. Save the credentials. diff --git a/notifications/email-integration.mdx b/notifications/email-integration.mdx index 8234b4288..f5c841d01 100644 --- a/notifications/email-integration.mdx +++ b/notifications/email-integration.mdx @@ -364,7 +364,7 @@ An unsubscribe group will allow your users to unsubscribe to only chat email not ### 4. Store contact details -Store each user's contact email/phone with the [Update Contact details API](https://api-explorer.cometchat.com/reference/notifications-update-contact-details). Use the user's UID in `onBehalfOf` and call the region-specific base URL (`api-us`, `api-eu`, `api-in`). +Store each user's contact email/phone with the [Update Contact details API](/rest-api/chat-apis). Use the user's UID in `onBehalfOf` and call the region-specific base URL (`api-us`, `api-eu`, `api-in`). Example request: diff --git a/notifications/email-notifications-extension-legacy.mdx b/notifications/email-notifications-extension-legacy.mdx index d4212ff83..8a750837b 100644 --- a/notifications/email-notifications-extension-legacy.mdx +++ b/notifications/email-notifications-extension-legacy.mdx @@ -27,7 +27,7 @@ These steps are required irrespective of the integration. ### 1. Storing user emails -You can use our [Update user](https://api-explorer.cometchat.com/reference/update-user) API to set private metadata for a user. We recommend adding this code where you call our [Create user](https://api-explorer.cometchat.com/reference/creates-user) API. +You can use our [Update user](/rest-api/chat-apis) API to set private metadata for a user. We recommend adding this code where you call our [Create user](/rest-api/chat-apis) API. Alternatively, just for the sake of testing purposes, you can add this from the CometChat Dashboard as well. diff --git a/notifications/logs.mdx b/notifications/logs.mdx index bda5f3b62..b108d8299 100644 --- a/notifications/logs.mdx +++ b/notifications/logs.mdx @@ -27,4 +27,4 @@ Logs are kept for up to 14 days: 7 days while logging is active, plus 7 days aft ### Access and filtering - **Dashboard:** Browse recent logs and narrow by channel, event, user, or status. -- **API:** Use the Get logs API with query parameters (event, medium, receiver, status, time window, provider) for deeper filtering. See the [API explorer](https://api-explorer.cometchat.com/reference/notifications-logs) for the full list. +- **API:** Use the Get logs API with query parameters (event, medium, receiver, status, time window, provider) for deeper filtering. See the [API explorer](/rest-api/chat-apis) for the full list. diff --git a/notifications/sms-custom-providers.mdx b/notifications/sms-custom-providers.mdx index dcd65feb0..618477c69 100644 --- a/notifications/sms-custom-providers.mdx +++ b/notifications/sms-custom-providers.mdx @@ -20,7 +20,7 @@ Authorization: Basic 2. Enable the provider. 3. Enter the publicly accessible webhook URL. 4. (Recommended) Enable Basic Authentication and set username/password. -5. Decide if you want to **Trigger only if phone number is stored with CometChat** (via [Update Contact details API](https://api-explorer.cometchat.com/reference/notifications-update-contact-details)); when off, the webhook fires regardless. +5. Decide if you want to **Trigger only if phone number is stored with CometChat** (via [Update Contact details API](/rest-api/chat-apis)); when off, the webhook fires regardless. 6. Save the credentials. diff --git a/notifications/sms-integration.mdx b/notifications/sms-integration.mdx index d493a752e..ee3b3fd2f 100644 --- a/notifications/sms-integration.mdx +++ b/notifications/sms-integration.mdx @@ -19,7 +19,7 @@ We have partnered with Twilio for sending SMS Notifications so need to set up an ### 2. Store contact details -Store each user's phone (and optional email) with the [Update Contact details API](https://api-explorer.cometchat.com/reference/notifications-update-contact-details). Use the user's UID in `onBehalfOf` and call the region-specific base URL (`api-us`, `api-eu`, `api-in`). +Store each user's phone (and optional email) with the [Update Contact details API](/rest-api/chat-apis). Use the user's UID in `onBehalfOf` and call the region-specific base URL (`api-us`, `api-eu`, `api-in`). Example request: diff --git a/notifications/sms-notifications-extension-legacy.mdx b/notifications/sms-notifications-extension-legacy.mdx index f02bdf341..4ab7bc432 100644 --- a/notifications/sms-notifications-extension-legacy.mdx +++ b/notifications/sms-notifications-extension-legacy.mdx @@ -44,7 +44,7 @@ We have partnered with Twilio for sending SMS Notifications so need to set up an ## Configure your backend to store phone number -You can use our [Update user](https://api-explorer.cometchat.com/reference/update-user) API to set private metadata for a user. We recommend adding this code when you call our [Create user](https://api-explorer.cometchat.com/reference/creates-user) API. +You can use our [Update user](/rest-api/chat-apis) API to set private metadata for a user. We recommend adding this code when you call our [Create user](/rest-api/chat-apis) API. Alternatively, just for the sake of testing purposes, you can add this from the CometChat Dashboard as well. diff --git a/rest-api/ai-agents-apis/agents/create-agent.mdx b/rest-api/ai-agents-apis/agents/create-agent.mdx index 768b51ed0..db231a066 100644 --- a/rest-api/ai-agents-apis/agents/create-agent.mdx +++ b/rest-api/ai-agents-apis/agents/create-agent.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/agents description: "Creates a new agent with optional tools, API tools, MCP servers, and frontend actions. Use this endpoint to set up a fully configured agent in a single request. **Validation:** All referenced tools," --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/delete-agent.mdx b/rest-api/ai-agents-apis/agents/delete-agent.mdx index ad1b87743..2f91c204f 100644 --- a/rest-api/ai-agents-apis/agents/delete-agent.mdx +++ b/rest-api/ai-agents-apis/agents/delete-agent.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/agents/{uid} description: "Deletes an agent by its UID." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/get-agent.mdx b/rest-api/ai-agents-apis/agents/get-agent.mdx index 91a12f73d..7690d98e3 100644 --- a/rest-api/ai-agents-apis/agents/get-agent.mdx +++ b/rest-api/ai-agents-apis/agents/get-agent.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/{uid} description: "Retrieves a specific agent by its UID. Use this endpoint to inspect an agent's full configuration, including its tools, model, and instructions." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx index 2094e1365..c16011969 100644 --- a/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx +++ b/rest-api/ai-agents-apis/agents/list-agent-tools-and-actions.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/{uid}/enabled-items description: "Retrieves all enabled items for a specific agent, categorized by type. Use this endpoint to see which tools, frontend actions, API tools, and MCP servers are currently enabled for an agent. **Categor" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/list-agents.mdx b/rest-api/ai-agents-apis/agents/list-agents.mdx index 0d7b9070c..6120c3f8a 100644 --- a/rest-api/ai-agents-apis/agents/list-agents.mdx +++ b/rest-api/ai-agents-apis/agents/list-agents.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents description: "Retrieves a paginated list of agents for your CometChat app. Use this endpoint to browse, search, and manage your agents. **Search:** Use the `search` parameter to filter agents by name, description," --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/list-available-models.mdx b/rest-api/ai-agents-apis/agents/list-available-models.mdx index 8b694dde3..9e94fe628 100644 --- a/rest-api/ai-agents-apis/agents/list-available-models.mdx +++ b/rest-api/ai-agents-apis/agents/list-available-models.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/available-models description: "Lists the AI models available for agent creation. Returns model identifiers that can be used when creating or updating an agent's configuration." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/search-agent-tools.mdx b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx index 72085abaf..fd939940d 100644 --- a/rest-api/ai-agents-apis/agents/search-agent-tools.mdx +++ b/rest-api/ai-agents-apis/agents/search-agent-tools.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/{uid}/tools/search description: "Searches across all tool types available for an agent, including ready-to-use tools, API tools, and MCP servers. Use this endpoint to find specific tools across all categories. **Filtering:** Use the" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/agents/update-agent.mdx b/rest-api/ai-agents-apis/agents/update-agent.mdx index 12118dfb1..eb2d1e9e5 100644 --- a/rest-api/ai-agents-apis/agents/update-agent.mdx +++ b/rest-api/ai-agents-apis/agents/update-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid} description: "Updates an existing agent by its UID. Use this endpoint to modify an agent's configuration, instructions, model, or connected tools. **Validation:** Referenced tools, API tools, and MCP servers are v" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx index ef07c51fd..fe81ce3d6 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/add-api-tools-to-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/add description: "Adds one or more API tools to a specific agent. Use this endpoint to give an agent access to custom API tool integrations. **Request body:** The `apiTools` array contains API tool slugs. Returns the" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx index 22e93694f..8cd0db034 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/create-api-tool.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/api-tools description: "Creates a new API tool configuration for the application. Use this endpoint to define a custom API endpoint that agents can call during conversations. **Uniqueness:** The slug must be unique per appl" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx index f5736e8e3..367875ae0 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/delete-api-tool.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/api-tools/{slug} description: "Deletes an API tool by its slug." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx index 710b45626..09cc9ee49 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/get-api-tool.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/api-tools/{slug} description: "Retrieves a single custom API tool by its slug." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx index a06e0d806..10db956da 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/list-api-tools.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/api-tools description: "Retrieves a paginated list of API tools for the application. Use this endpoint to browse and manage custom API tool configurations." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx index 1c60b92dc..3dbd98a66 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/remove-api-tools-from-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/api-tools/remove description: "Removes one or more API tools from a specific agent. Use this endpoint to revoke API tool access from an agent. **Request body:** The `apiTools` array contains API tool slugs to remove. Returns the u" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx index ff2f00dde..d9d6557c4 100644 --- a/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx +++ b/rest-api/ai-agents-apis/custom-api-tools/update-api-tool.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/api-tools/{slug} description: "Updates an existing API tool by its slug. Use this endpoint to modify an API tool's parameters, description, or endpoint configuration." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx index 90e154ba5..024345567 100644 --- a/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/add-frontend-actions-to-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/add description: "Adds one or more frontend actions to a specific agent. Use this endpoint to enable an agent to trigger client-side UI operations. **Frontend actions** allow agents to interact with the user interface" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx index 55ba85bca..8b86d3d07 100644 --- a/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/create-frontend-action.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/frontend-actions description: "Creates a new frontend action for the application. Use this endpoint to define a client-side UI operation that agents can trigger during conversations. **Uniqueness:** The trigger function must be un" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx index 37ffa57cc..c61f198cb 100644 --- a/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/delete-frontend-action.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/frontend-actions/{id} description: "Deletes a frontend action by its unique ID." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx index d3aa9f58c..284b7bae9 100644 --- a/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/get-frontend-action.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/frontend-actions/{id} description: "Retrieves a single frontend action by its ID." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx index 68b477e93..9f2dde19e 100644 --- a/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/list-frontend-actions.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/frontend-actions description: "Retrieves a paginated list of frontend actions for the application. Use this endpoint to browse and manage frontend action configurations." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx index 16720e193..1da6df5c4 100644 --- a/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/remove-frontend-actions-from-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/frontend-actions/remove description: "Removes one or more frontend actions from a specific agent. Use this endpoint to revoke frontend action capabilities from an agent. **Request body:** The `frontendActions` array contains frontend act" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx index 6b7bb72d0..9bc749550 100644 --- a/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx +++ b/rest-api/ai-agents-apis/frontend-actions/update-frontend-action.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/frontend-actions/{id} description: "Updates an existing frontend action by its unique ID. Use this endpoint to modify a frontend action's parameters, description, or trigger function." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx index 689d366e3..b8afdee99 100644 --- a/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/add-knowledge-base-files.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/add description: "Associates uploaded files or text entries with an agent's knowledge base. Use this endpoint after uploading files via the Initiate File Uploads endpoint to make them available to the agent. **Source" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx index 4c9857557..8f020b546 100644 --- a/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/create-text-detail.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/text description: "Creates a new text-based knowledge base entry. Use this endpoint to add custom text content that agents can reference during conversations. **Processing:** Accepts a title and text content, converts" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx index 0d76dcd1d..950bd4ba8 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-text-detail.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/knowledge-base/text/{uniqueId} description: "Deletes a text-based knowledge base entry and all associated data by its unique ID. **Cleanup:** Removes the text content, associated embeddings, and any agent references to this entry." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx index 983684977..2c3d7fd32 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-uploaded-file.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/knowledge-base/uploads/{uniqueId} description: "Deletes an uploaded file and all associated data from the knowledge base by its unique ID. **Cleanup:** Removes the file, associated embeddings, and any agent references to this file." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx index 659ca80d3..f28024e4c 100644 --- a/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/delete-website.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/knowledge-base/website/{uniqueId} description: "Deletes a website crawl and all associated data from the knowledge base by its unique ID. **Cleanup:** Removes all crawled pages, associated embeddings, and any agent references to this website." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx index 30b48060e..6e9357e40 100644 --- a/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/get-discovered-urls.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls description: "Retrieves all URLs discovered during a website crawl. Use this endpoint to review which pages were found before processing them." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx index 6353eb145..8c00ecb1a 100644 --- a/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/get-source-pages.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/pages description: "Retrieves paginated pages for a specific knowledge base source file. Use this endpoint to inspect the individual pages extracted from a knowledge base source." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx b/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx index 682834451..7cfc7c449 100644 --- a/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/get-text-entry.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/knowledge-base/text/{uniqueId} description: "Retrieves a specific text-based knowledge base entry by its unique ID." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx index df9fd8038..ba64a51ab 100644 --- a/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/initiate-file-uploads.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/uploads/initiate description: "Generates presigned URLs and creates upload records for one or more files. Use this endpoint to prepare files for upload to the knowledge base. **Workflow:** After receiving the presigned URLs, uploa" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx index 6f8e27fac..aaf8c3c82 100644 --- a/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/list-knowledge-base-records.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/knowledge-base description: "Retrieves knowledge base records for the application. Use this endpoint to browse all knowledge base sources including files, text entries, and websites." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx b/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx index c5bf67b3a..a8735a02d 100644 --- a/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/list-text-entries.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/knowledge-base/text description: "Lists all text-based knowledge base entries for the app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx index 9f78f7e72..fc47b67a5 100644 --- a/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/poll-discovered-urls-status.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/status/poll description: "Retrieves the processing status of discovered URLs by their unique IDs. Use this endpoint to monitor the progress of URL crawling within a parent website crawl. **Behavior:** Only returns records for" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx index 2a5ef36b9..7f39178b3 100644 --- a/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/poll-knowledge-base-status.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/status/poll description: "Retrieves the indexing status for one or more knowledge base sources by their IDs. Use this endpoint to monitor the progress of file uploads, text entries, or website crawls being indexed. **Batch su" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx index c2c3686c3..9d3ffcd6e 100644 --- a/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/process-discovered-urls.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/process description: "Marks discovered URLs for exclusion and initiates batch crawling of the remaining URLs. Use this endpoint to selectively process pages discovered during a website crawl." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx index f09b25463..8c40ecc1b 100644 --- a/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/remove-knowledge-base-files.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/knowledge-base/{sourceType}/remove description: "Removes files or text entries from an agent's knowledge base. Use this endpoint to disassociate specific sources from an agent without deleting the underlying content. **Source types:** Specify the s" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx index bb4478f54..8bea205b0 100644 --- a/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/retry-indexing-for-website-pages.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/knowledge-base/website/{parentUniqueId}/discovered-urls/sync description: "Retries the indexing process for specific pages under a website knowledge base source. Pass the unique IDs of the pages to re-index, or send an empty array to automatically retry all pages that failed" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx index 72f305843..03f05b2c1 100644 --- a/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/retry-knowledge-base-source-indexing.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/knowledge-base/{sourceType}/{uniqueId}/sync description: "Retries the indexing process for a specific knowledge base source that failed during its initial processing. Provide the source type and its unique ID to re-trigger vectorization. **Supported source" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx index ebc62f853..3a3703375 100644 --- a/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-single-page.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/website/individual-page description: "Scrapes a single webpage to extract its content for the knowledge base. Use this endpoint to add a specific page without crawling an entire website. **Extraction:** Returns the page title, descriptio" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx index ef58d74f5..5bb496cd1 100644 --- a/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/scrape-website.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/knowledge-base/website/scrape description: "Scrapes a website to discover and crawl its pages for the knowledge base. Use this endpoint to add website content as a knowledge source for agents. **Configuration:** Supports options for URL filter" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx index 1ecd1faad..41d3b5557 100644 --- a/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx +++ b/rest-api/ai-agents-apis/knowledge-base/update-text-detail.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/knowledge-base/text/{uniqueId} description: "Updates a specific text-based knowledge base entry by its unique ID. Use this endpoint to modify the title or content of an existing text entry. **Re-indexing:** The content is re-uploaded and the en" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx index 7ce5e0244..3d6337d67 100644 --- a/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/add-mcp-servers-to-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/add description: "Adds one or more MCP servers to a specific agent. Use this endpoint to connect an agent to additional Model Context Protocol servers. **Request body:** The `mcps` array contains MCP server slugs. Ret" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx index 2b873ebb8..753ec1a82 100644 --- a/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/create-mcp-server.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/mcp-servers description: "Creates a new MCP (Model Context Protocol) server configuration for the application. Use this endpoint to register an MCP server that agents can connect to. **Uniqueness:** The slug must be unique pe" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx index 49cb4eaa3..0ad9aa289 100644 --- a/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/delete-mcp-server.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/mcp-servers/{slug} description: "Deletes an MCP server by its slug." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx index 6f352edf4..82921d347 100644 --- a/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/get-mcp-server.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/mcp-servers/{slug} description: "Retrieves a single MCP server configuration by its slug." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx index d42fe21b1..297cb1d0d 100644 --- a/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/list-mcp-servers.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/mcp-servers description: "Retrieves a paginated list of MCP servers for the application. Use this endpoint to browse and manage MCP server configurations." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx index 7fbf19e22..702112748 100644 --- a/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/remove-mcp-servers-from-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/mcp/remove description: "Removes one or more MCP servers from a specific agent. Use this endpoint to disconnect MCP servers from an agent. **Request body:** The `mcps` array contains MCP server slugs to remove. Returns the u" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx index aeead166c..2fb2b2e71 100644 --- a/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx +++ b/rest-api/ai-agents-apis/mcp-servers/update-mcp-server.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/mcp-servers/{slug} description: "Updates an existing MCP server by its slug. Use this endpoint to modify an MCP server's configuration or connection details." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx index 44e1f0519..995ae099b 100644 --- a/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx +++ b/rest-api/ai-agents-apis/tools/add-tools-to-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/add description: "Adds one or more tools to a specific agent. Use this endpoint to extend an agent's capabilities with additional tool integrations. **Request body:** The `tools` array contains tool slugs. Returns the" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx index fbdec52de..6435cf308 100644 --- a/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx +++ b/rest-api/ai-agents-apis/tools/enable-tool-actions.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/add description: "Adds actions to a specific tool attached to an agent." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx index deaee663b..bc6dd423b 100644 --- a/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx +++ b/rest-api/ai-agents-apis/tools/get-tool-actions-for-agent.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions description: "Lists all actions available for a specific tool attached to an agent." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx index 701bfb1ac..21746d094 100644 --- a/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx +++ b/rest-api/ai-agents-apis/tools/remove-tool-actions.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/{slug}/actions/remove description: "Removes actions from a specific tool attached to an agent." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx index 388a3d4ec..4423b15ef 100644 --- a/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx +++ b/rest-api/ai-agents-apis/tools/remove-tools-from-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/{uid}/tools/remove description: "Removes one or more tools from a specific agent. Use this endpoint to revoke tool access from an agent. **Request body:** The `tools` array contains tool slugs to remove. Returns the updated agent ob" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/variables/create-custom-variable.mdx b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx index 5eb2341b6..2c1f30235 100644 --- a/rest-api/ai-agents-apis/variables/create-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/create-custom-variable.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agent-builder/agents/variables/custom description: "Creates a new custom variable for the application. Use this endpoint to define dynamic values that can be injected into agent instructions. **Source types:** Variables can source values from message" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx index d28dd7345..35ce11f64 100644 --- a/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/delete-custom-variable.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agent-builder/agents/variables/custom/{variableId} description: "Deletes a custom variable by its ID. **Impact:** Any agent instructions referencing this variable will no longer resolve its value." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx index a24c06185..3e405f110 100644 --- a/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx +++ b/rest-api/ai-agents-apis/variables/get-all-available-variables.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agent-builder/agents/variables/all description: "Retrieves all enabled variables (predefined and custom) for the application. Use this endpoint to view variable definitions and understand where they are used. **Usage tracking:** Each variable inclu" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/ai-agents-apis/variables/update-custom-variable.mdx b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx index f6cdd5240..359a991ea 100644 --- a/rest-api/ai-agents-apis/variables/update-custom-variable.mdx +++ b/rest-api/ai-agents-apis/variables/update-custom-variable.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agent-builder/agents/variables/custom/{variableId} description: "Updates an existing custom variable by its ID. Use this endpoint to modify a variable's source, default value, or other properties. **Partial updates:** Only the provided fields are updated; omitted" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/ai-agents-apis/error-codes). diff --git a/rest-api/authentication.mdx b/rest-api/authentication.mdx index 418a8ef79..fbdbcd172 100644 --- a/rest-api/authentication.mdx +++ b/rest-api/authentication.mdx @@ -8,6 +8,18 @@ All CometChat REST API requests must be authenticated using an API key passed in **Management APIs** use a different authentication mechanism — HTTP Basic Auth with your management key and secret, not the `apikey` header. See the [Management APIs overview](/rest-api/management-apis) for details. + +```bash +curl -X GET "https://api-us.cometchat.io/v3/apps" \ + -u "YOUR_MANAGEMENT_KEY:YOUR_MANAGEMENT_SECRET" +``` + + + + + **Calls APIs** use a different base URL: `https://{appId}.call-{region} + .cometchat.io/v3` (note `call-` instead of `api-`). Authentication still uses + the `apikey` header. ## API Key Scopes diff --git a/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx index 9726e8a27..e982fbbd5 100644 --- a/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/create-byo-agent.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/agents description: "Creates a new BYO Agent that delegates conversations to an external AI Agent. Use this endpoint to register a BYO (Bring Your Own) agent powered by frameworks like Mastra, CrewAI, or LangGraph. **Val" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx index 69b1a1f75..01eb4835e 100644 --- a/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/delete-byo-agent.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/agents/{uid} description: "Deletes a BYO Agent by its UID." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx index 650dbb31a..30b6d694a 100644 --- a/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx +++ b/rest-api/byo-ai-agents-apis/agents/list-byo-agents.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/agents description: "Retrieves all BYO Agents configured for your CometChat app. Use this endpoint to view all registered BYO (Bring Your Own) agents and their current configuration." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx index fe515bdc9..c17d140d5 100644 --- a/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx +++ b/rest-api/byo-ai-agents-apis/agents/update-byo-agent.mdx @@ -2,3 +2,13 @@ openapi: patch /ai-agents/agents/{uid} description: "Updates an existing BYO Agent by its UID. Use this endpoint to modify agent configuration, update referenced tools, or change the connected AI framework. **Validation:** Referenced tools and actions" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/tools/create-tool.mdx b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx index e6f374976..ca50ebea4 100644 --- a/rest-api/byo-ai-agents-apis/tools/create-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/create-tool.mdx @@ -2,3 +2,13 @@ openapi: post /ai-agents/tools description: "Defines custom tools that agents can invoke during conversations. **Naming:** The tool name must be unique per application. **Type:** When `doNotExecute` is `true`, the type is set to `tool`. Otherw" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx index a21cdbf66..4afc07018 100644 --- a/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/delete-tool.mdx @@ -2,3 +2,13 @@ openapi: delete /ai-agents/tools/{name} description: "Deletes a tool by its unique name." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/tools/get-tool.mdx b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx index 7cf1a8ff3..ed84564c4 100644 --- a/rest-api/byo-ai-agents-apis/tools/get-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/get-tool.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/tools/{name} description: "Retrieves a specific tool by its unique name. Use this endpoint to inspect a tool's configuration, parameters, and description." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/tools/list-tools.mdx b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx index d6da48c65..99d72306d 100644 --- a/rest-api/byo-ai-agents-apis/tools/list-tools.mdx +++ b/rest-api/byo-ai-agents-apis/tools/list-tools.mdx @@ -2,3 +2,13 @@ openapi: get /ai-agents/tools description: "Retrieves all tools configured for your CometChat app. Use this endpoint to view available tools and actions, or filter by type. **Filtering:** Use the `type` query parameter to filter by `action` or" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/byo-ai-agents-apis/tools/update-tool.mdx b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx index 080e07833..eb6a0d969 100644 --- a/rest-api/byo-ai-agents-apis/tools/update-tool.mdx +++ b/rest-api/byo-ai-agents-apis/tools/update-tool.mdx @@ -2,3 +2,13 @@ openapi: put /ai-agents/tools/{name} description: "Updates an existing tool by its unique name. Use this endpoint to modify a tool's description, parameters, or behavior. **Restrictions:** The tool name cannot be changed after creation. The provided" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/byo-ai-agents-apis/error-codes). diff --git a/rest-api/notifications-apis/email/delete-custom-provider.mdx b/rest-api/notifications-apis/email/delete-custom-provider.mdx index 8551ad47b..4a07f63fd 100644 --- a/rest-api/notifications-apis/email/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/email/delete-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/email/v1/providers/custom description: "Deletes the custom provider for Email Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx index c5b367aac..2b435c15b 100644 --- a/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/delete-sendgrid-credentials.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/email/v1/providers/sendgrid description: "Deletes the stored SendGrid credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/get-custom-provider.mdx b/rest-api/notifications-apis/email/get-custom-provider.mdx index 137a8571b..e3dfe2fb3 100644 --- a/rest-api/notifications-apis/email/get-custom-provider.mdx +++ b/rest-api/notifications-apis/email/get-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/email/v1/providers/custom description: "Fetches the custom provider for Email Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx index 83b541f49..5bd3ca5c0 100644 --- a/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/get-sendgrid-credentials.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/email/v1/providers/sendgrid description: "Fetches the SendGrid credentials stored for the app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/save-custom-provider.mdx b/rest-api/notifications-apis/email/save-custom-provider.mdx index 9d81aec39..a80316aa7 100644 --- a/rest-api/notifications-apis/email/save-custom-provider.mdx +++ b/rest-api/notifications-apis/email/save-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/email/v1/providers/custom description: "Saves the custom provider for Email Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx index 6d5c1b914..72ba96c70 100644 --- a/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/save-sendgrid-credentials.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/email/v1/providers/sendgrid description: "Store the SendGrid credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/update-custom-provider.mdx b/rest-api/notifications-apis/email/update-custom-provider.mdx index 7b8dd6093..2353e6ed7 100644 --- a/rest-api/notifications-apis/email/update-custom-provider.mdx +++ b/rest-api/notifications-apis/email/update-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/email/v1/providers/custom description: "Updates the custom provider for Email Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx index 99b9d8c42..153509564 100644 --- a/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx +++ b/rest-api/notifications-apis/email/update-sendgrid-credentials.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/email/v1/providers/sendgrid description: "Updates the SendGrid credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/add-apns-provider.mdx b/rest-api/notifications-apis/push/add-apns-provider.mdx index 388dd119e..4525dde96 100644 --- a/rest-api/notifications-apis/push/add-apns-provider.mdx +++ b/rest-api/notifications-apis/push/add-apns-provider.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/push/v1/providers/apns description: "Add new APNS provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/add-fcm-provider.mdx b/rest-api/notifications-apis/push/add-fcm-provider.mdx index d0585c1d6..8c24c93f0 100644 --- a/rest-api/notifications-apis/push/add-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/add-fcm-provider.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/push/v1/providers/fcm description: "Add new FCM provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/change-default-apns-provider.mdx b/rest-api/notifications-apis/push/change-default-apns-provider.mdx index 878d4cbe4..64fc47587 100644 --- a/rest-api/notifications-apis/push/change-default-apns-provider.mdx +++ b/rest-api/notifications-apis/push/change-default-apns-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/push/v1/providers/apns/default/{providerId} description: "Change the default APNS provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/change-default-fcm-provider.mdx b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx index eb9081687..2e7b787c3 100644 --- a/rest-api/notifications-apis/push/change-default-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/change-default-fcm-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/push/v1/providers/fcm/default/{providerId} description: "Change the default FCM provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/delete-apns-providers.mdx b/rest-api/notifications-apis/push/delete-apns-providers.mdx index bd84f4c7c..b5bdf9b08 100644 --- a/rest-api/notifications-apis/push/delete-apns-providers.mdx +++ b/rest-api/notifications-apis/push/delete-apns-providers.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/push/v1/providers/apns/{providerId} description: "Delete an APNS provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/delete-contact-details.mdx b/rest-api/notifications-apis/push/delete-contact-details.mdx index 0ca7a831a..a46475379 100644 --- a/rest-api/notifications-apis/push/delete-contact-details.mdx +++ b/rest-api/notifications-apis/push/delete-contact-details.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/v1/contact-details description: "Deletes the stored contact details for a given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/delete-custom-provider.mdx b/rest-api/notifications-apis/push/delete-custom-provider.mdx index c353e0212..7e47a548d 100644 --- a/rest-api/notifications-apis/push/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/push/delete-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/push/v1/providers/custom description: "Deletes the custom provider for Push Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/delete-fcm-provider.mdx b/rest-api/notifications-apis/push/delete-fcm-provider.mdx index c78d457ef..ad5d0af93 100644 --- a/rest-api/notifications-apis/push/delete-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/delete-fcm-provider.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/push/v1/providers/fcm/{providerId} description: "Delete an FCM provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/delete-push-token.mdx b/rest-api/notifications-apis/push/delete-push-token.mdx index 67cac3df5..ed74a6672 100644 --- a/rest-api/notifications-apis/push/delete-push-token.mdx +++ b/rest-api/notifications-apis/push/delete-push-token.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/push/v1/tokens/{pushToken} description: "Deletes the given push token" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/get-contact-details.mdx b/rest-api/notifications-apis/push/get-contact-details.mdx index 70d8c0edc..c8db6cd44 100644 --- a/rest-api/notifications-apis/push/get-contact-details.mdx +++ b/rest-api/notifications-apis/push/get-contact-details.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/contact-details description: "Fetches the contact details like Email ID and Phone number for a given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/get-custom-provider.mdx b/rest-api/notifications-apis/push/get-custom-provider.mdx index 838e6dd79..822d25e68 100644 --- a/rest-api/notifications-apis/push/get-custom-provider.mdx +++ b/rest-api/notifications-apis/push/get-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/push/v1/providers/custom description: "Fetches the custom provider for Push Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/get-timezone.mdx b/rest-api/notifications-apis/push/get-timezone.mdx index 85e471948..5e9a6b251 100644 --- a/rest-api/notifications-apis/push/get-timezone.mdx +++ b/rest-api/notifications-apis/push/get-timezone.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/preferences/timezone description: "Get the timezone on behalf of the user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-apns-providers.mdx b/rest-api/notifications-apis/push/list-apns-providers.mdx index c32bcee53..f48f01130 100644 --- a/rest-api/notifications-apis/push/list-apns-providers.mdx +++ b/rest-api/notifications-apis/push/list-apns-providers.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/push/v1/providers/apns description: "List the configured APNS providers for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-fcm-providers.mdx b/rest-api/notifications-apis/push/list-fcm-providers.mdx index e4043ab22..58b99a70f 100644 --- a/rest-api/notifications-apis/push/list-fcm-providers.mdx +++ b/rest-api/notifications-apis/push/list-fcm-providers.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/push/v1/providers/fcm description: "List the configured FCM providers for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-muted-conversations.mdx b/rest-api/notifications-apis/push/list-muted-conversations.mdx index 095cdfbef..c7e68f403 100644 --- a/rest-api/notifications-apis/push/list-muted-conversations.mdx +++ b/rest-api/notifications-apis/push/list-muted-conversations.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/preferences/mute description: "List the conversations where notifications have been muted on behalf of the user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-preferences.mdx b/rest-api/notifications-apis/push/list-preferences.mdx index 2d5016e8b..9da66b662 100644 --- a/rest-api/notifications-apis/push/list-preferences.mdx +++ b/rest-api/notifications-apis/push/list-preferences.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/preferences description: "List the configured preferences for the given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-push-tokens.mdx b/rest-api/notifications-apis/push/list-push-tokens.mdx index 1a53c725e..8e2f0aa6d 100644 --- a/rest-api/notifications-apis/push/list-push-tokens.mdx +++ b/rest-api/notifications-apis/push/list-push-tokens.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/push/v1/tokens description: "List push tokens for the given auth token." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/list-settings.mdx b/rest-api/notifications-apis/push/list-settings.mdx index 385ea9c84..67a6324eb 100644 --- a/rest-api/notifications-apis/push/list-settings.mdx +++ b/rest-api/notifications-apis/push/list-settings.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/settings description: "List preferences, templates and sounds for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/mute-conversations.mdx b/rest-api/notifications-apis/push/mute-conversations.mdx index 2e249f8c0..8a3872d97 100644 --- a/rest-api/notifications-apis/push/mute-conversations.mdx +++ b/rest-api/notifications-apis/push/mute-conversations.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/v1/preferences/mute description: "Mute notifications for the conversations on behalf of the given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/notifications-logs.mdx b/rest-api/notifications-apis/push/notifications-logs.mdx index af5272423..8820f4a7a 100644 --- a/rest-api/notifications-apis/push/notifications-logs.mdx +++ b/rest-api/notifications-apis/push/notifications-logs.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/v1/logs description: "Paginated API to fetch logs for notifications" --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/register-push-token.mdx b/rest-api/notifications-apis/push/register-push-token.mdx index 79a8f1368..de6bb4874 100644 --- a/rest-api/notifications-apis/push/register-push-token.mdx +++ b/rest-api/notifications-apis/push/register-push-token.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/push/v1/tokens description: "Register a push token for the given auth token." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/reset-preferences.mdx b/rest-api/notifications-apis/push/reset-preferences.mdx index 1c033a662..830ab2269 100644 --- a/rest-api/notifications-apis/push/reset-preferences.mdx +++ b/rest-api/notifications-apis/push/reset-preferences.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/v1/preferences description: "Reset the preferences for the given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/reset-settings.mdx b/rest-api/notifications-apis/push/reset-settings.mdx index 6779eace1..f508e4002 100644 --- a/rest-api/notifications-apis/push/reset-settings.mdx +++ b/rest-api/notifications-apis/push/reset-settings.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/v1/settings description: "Reset preferences, templates and sounds to default values for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/save-custom-provider.mdx b/rest-api/notifications-apis/push/save-custom-provider.mdx index ca7d34910..c08d609de 100644 --- a/rest-api/notifications-apis/push/save-custom-provider.mdx +++ b/rest-api/notifications-apis/push/save-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/push/v1/providers/custom description: "Saves the custom provider for Push Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/unmute-conversations.mdx b/rest-api/notifications-apis/push/unmute-conversations.mdx index 289399839..0287c2a49 100644 --- a/rest-api/notifications-apis/push/unmute-conversations.mdx +++ b/rest-api/notifications-apis/push/unmute-conversations.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/v1/preferences/mute description: "Unmute notifications for the conversations on behalf of the given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/unregister-push-tokens.mdx b/rest-api/notifications-apis/push/unregister-push-tokens.mdx index 5932b5586..36670cfb4 100644 --- a/rest-api/notifications-apis/push/unregister-push-tokens.mdx +++ b/rest-api/notifications-apis/push/unregister-push-tokens.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/push/v1/tokens description: "Unregister push token(s) registered for the given auth token." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-apns-providers.mdx b/rest-api/notifications-apis/push/update-apns-providers.mdx index d47a0ed57..047b99f9d 100644 --- a/rest-api/notifications-apis/push/update-apns-providers.mdx +++ b/rest-api/notifications-apis/push/update-apns-providers.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/push/v1/providers/apns description: "Update existing APNS provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-contact-details.mdx b/rest-api/notifications-apis/push/update-contact-details.mdx index bd6e949a1..02d45bc86 100644 --- a/rest-api/notifications-apis/push/update-contact-details.mdx +++ b/rest-api/notifications-apis/push/update-contact-details.mdx @@ -2,3 +2,13 @@ openapi: patch /notifications/v1/contact-details description: "Updates the contact details like Email ID and Phone number for a given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-custom-provider.mdx b/rest-api/notifications-apis/push/update-custom-provider.mdx index fc579a5d7..c87d111ad 100644 --- a/rest-api/notifications-apis/push/update-custom-provider.mdx +++ b/rest-api/notifications-apis/push/update-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/push/v1/providers/custom description: "Updates the custom provider for Push Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-fcm-provider.mdx b/rest-api/notifications-apis/push/update-fcm-provider.mdx index c216170b4..f9034db34 100644 --- a/rest-api/notifications-apis/push/update-fcm-provider.mdx +++ b/rest-api/notifications-apis/push/update-fcm-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/push/v1/providers/fcm description: "Update existing FCM provider for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-preferences.mdx b/rest-api/notifications-apis/push/update-preferences.mdx index 787d3e19f..1707df9ab 100644 --- a/rest-api/notifications-apis/push/update-preferences.mdx +++ b/rest-api/notifications-apis/push/update-preferences.mdx @@ -2,3 +2,13 @@ openapi: patch /notifications/v1/preferences description: "Update the preference for the given user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-settings.mdx b/rest-api/notifications-apis/push/update-settings.mdx index 27ffb275e..e1dbda936 100644 --- a/rest-api/notifications-apis/push/update-settings.mdx +++ b/rest-api/notifications-apis/push/update-settings.mdx @@ -2,3 +2,13 @@ openapi: patch /notifications/v1/settings description: "Update preferences, templates and sounds for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/push/update-timezone.mdx b/rest-api/notifications-apis/push/update-timezone.mdx index d85e94802..171336f9a 100644 --- a/rest-api/notifications-apis/push/update-timezone.mdx +++ b/rest-api/notifications-apis/push/update-timezone.mdx @@ -2,3 +2,13 @@ openapi: patch /notifications/v1/preferences/timezone description: "Update the timezone on behalf of the user." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/delete-custom-provider.mdx b/rest-api/notifications-apis/sms/delete-custom-provider.mdx index 50ca80282..a14987925 100644 --- a/rest-api/notifications-apis/sms/delete-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/delete-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/sms/v1/providers/custom description: "Deletes the custom provider for SMS Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx index 392cdbcbd..4e14648cf 100644 --- a/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/delete-twilio-credentials.mdx @@ -2,3 +2,13 @@ openapi: delete /notifications/sms/v1/providers/twilio description: "Deletes the stored Twilio credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/get-custom-provider.mdx b/rest-api/notifications-apis/sms/get-custom-provider.mdx index ed1966661..34554d0af 100644 --- a/rest-api/notifications-apis/sms/get-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/get-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/sms/v1/providers/custom description: "Fetches the custom provider for SMS Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/get-twilio-credentials.mdx b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx index dc21d74af..d2744f501 100644 --- a/rest-api/notifications-apis/sms/get-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/get-twilio-credentials.mdx @@ -2,3 +2,13 @@ openapi: get /notifications/sms/v1/providers/twilio description: "Fetches the Twilio credentials stored for the app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/save-custom-provider.mdx b/rest-api/notifications-apis/sms/save-custom-provider.mdx index 3760a3aad..564571678 100644 --- a/rest-api/notifications-apis/sms/save-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/save-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/sms/v1/providers/custom description: "Saves the custom provider for SMS Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/save-twilio-credentials.mdx b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx index 9e4dd5b7f..3dbb6839d 100644 --- a/rest-api/notifications-apis/sms/save-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/save-twilio-credentials.mdx @@ -2,3 +2,13 @@ openapi: post /notifications/sms/v1/providers/twilio description: "Store the Twilio credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/update-custom-provider.mdx b/rest-api/notifications-apis/sms/update-custom-provider.mdx index 6c2deb54b..ddf97d81e 100644 --- a/rest-api/notifications-apis/sms/update-custom-provider.mdx +++ b/rest-api/notifications-apis/sms/update-custom-provider.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/sms/v1/providers/custom description: "Updates the custom provider for SMS Notifications for a given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/rest-api/notifications-apis/sms/update-twilio-credentials.mdx b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx index 48721e217..912430a90 100644 --- a/rest-api/notifications-apis/sms/update-twilio-credentials.mdx +++ b/rest-api/notifications-apis/sms/update-twilio-credentials.mdx @@ -2,3 +2,13 @@ openapi: put /notifications/sms/v1/providers/twilio description: "Updates the Twilio credentials for the given app." --- + +## Common Errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | + +For the complete error reference, see [Error Codes](/rest-api/notifications-apis/error-codes). diff --git a/sdk/android/2.0/authentication.mdx b/sdk/android/2.0/authentication.mdx index 940c271f8..dd592e644 100644 --- a/sdk/android/2.0/authentication.mdx +++ b/sdk/android/2.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/v2/reference/createuser-1) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -94,8 +94,8 @@ Be sure to use the **Auth Only** API Key and not the **Full Access** API Key. Th This authentication procedure does not use the API Key directly in your client code ensuring that your API Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/v2/reference/createuser-1) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/v2/reference/createauthtoken-1) via the CometChat API for the new user every time the user logs in to your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user every time the user logs in to your app. 3. Pass the **Auth Token** to your client and use it in the `login()` method. diff --git a/sdk/android/2.0/bots.mdx b/sdk/android/2.0/bots.mdx index a31e17e8b..124af6f40 100644 --- a/sdk/android/2.0/bots.mdx +++ b/sdk/android/2.0/bots.mdx @@ -18,4 +18,4 @@ Once you've created a user, you can create a new bot. The actual implementation ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/android/2.0/delete-conversation.mdx b/sdk/android/2.0/delete-conversation.mdx index d65de87bc..b63f7f1e1 100644 --- a/sdk/android/2.0/delete-conversation.mdx +++ b/sdk/android/2.0/delete-conversation.mdx @@ -45,7 +45,7 @@ CometChat.deleteConversation("cometchat-guid-1", CometChatConstants.RECEIVER_TYP -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/v2/reference/delete-conversation-for-a-user). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/android/2.0/user-management.mdx b/sdk/android/2.0/user-management.mdx index 3edcf5b01..edb6318e0 100644 --- a/sdk/android/2.0/user-management.mdx +++ b/sdk/android/2.0/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating an user](https://api-explorer.cometchat.com/v2/reference/createuser-1) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating an user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `API Key` as input parameters and returns the created `User` object if the request is successful. @@ -79,7 +79,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/v2/reference/updateuser-1) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. @@ -159,7 +159,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/v2/reference/deleteuser-1) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/android/3.0/authentication.mdx b/sdk/android/3.0/authentication.mdx index c0031ad2e..41a612b67 100644 --- a/sdk/android/3.0/authentication.mdx +++ b/sdk/android/3.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -94,8 +94,8 @@ Be sure to use the **Auth Only** API Key and not the **Full Access** API Key. Th This authentication procedure does not use the API Key directly in your client code ensuring that your API Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user every time the user logs in to your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user every time the user logs in to your app. 3. Pass the **Auth Token** to your client and use it in the `login()` method. diff --git a/sdk/android/3.0/bots.mdx b/sdk/android/3.0/bots.mdx index ff0c82088..7a3076ed2 100644 --- a/sdk/android/3.0/bots.mdx +++ b/sdk/android/3.0/bots.mdx @@ -83,4 +83,4 @@ The sample bot payload looks like: ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/android/3.0/messaging-delete-conversation.mdx b/sdk/android/3.0/messaging-delete-conversation.mdx index 01b3924e8..012d10cb2 100644 --- a/sdk/android/3.0/messaging-delete-conversation.mdx +++ b/sdk/android/3.0/messaging-delete-conversation.mdx @@ -75,7 +75,7 @@ CometChat.deleteConversation(GUID, CometChatConstants.RECEIVER_TYPE_GROUP, objec -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/android/3.0/users-user-management.mdx b/sdk/android/3.0/users-user-management.mdx index 12f1b2e71..fe7c198a6 100644 --- a/sdk/android/3.0/users-user-management.mdx +++ b/sdk/android/3.0/users-user-management.mdx @@ -18,7 +18,7 @@ When a user logs into your app, you need to programmatically login the user into ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `API Key` as input parameters and returns the created `User` object if the request is successful. @@ -77,7 +77,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. @@ -175,7 +175,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user)section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis)section. ## User Class diff --git a/sdk/android/authentication-overview.mdx b/sdk/android/authentication-overview.mdx index 7e3f45b6b..3d03baa36 100644 --- a/sdk/android/authentication-overview.mdx +++ b/sdk/android/authentication-overview.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you log in a user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -88,8 +88,8 @@ After the user logs in, their information is returned in the `User` object. This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user every time the user logs in to your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user every time the user logs in to your app. 3. Pass the **Auth Token** to your client and use it in the `login()` method. diff --git a/sdk/android/delete-conversation.mdx b/sdk/android/delete-conversation.mdx index 01b3924e8..012d10cb2 100644 --- a/sdk/android/delete-conversation.mdx +++ b/sdk/android/delete-conversation.mdx @@ -75,7 +75,7 @@ CometChat.deleteConversation(GUID, CometChatConstants.RECEIVER_TYPE_GROUP, objec -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/android/user-management.mdx b/sdk/android/user-management.mdx index 9c423f8b9..44e7ee1b9 100644 --- a/sdk/android/user-management.mdx +++ b/sdk/android/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `API Key` as input parameters and returns the created `User` object if the request is successful. @@ -79,7 +79,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. @@ -177,7 +177,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user)section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis)section. ## User Class diff --git a/sdk/flutter/3.0/authentication.mdx b/sdk/flutter/3.0/authentication.mdx index da59cce5e..c1512dfc9 100644 --- a/sdk/flutter/3.0/authentication.mdx +++ b/sdk/flutter/3.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com/). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -71,8 +71,8 @@ Be sure to use the **Auth Only** API Key and not the **Full Access** API Key. Th This authentication procedure does not use the API Key directly in your client code ensuring that your API Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user every time the user logs in to your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user every time the user logs in to your app. 3. Pass the **Auth Token** to your client and use it in the `login()` method. diff --git a/sdk/flutter/3.0/messaging-delete-conversation.mdx b/sdk/flutter/3.0/messaging-delete-conversation.mdx index bc20638bc..014256cd5 100644 --- a/sdk/flutter/3.0/messaging-delete-conversation.mdx +++ b/sdk/flutter/3.0/messaging-delete-conversation.mdx @@ -43,7 +43,7 @@ await CometChat.deleteConversation(conversationWith, conversationType, -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/flutter/3.0/users-user-management.mdx b/sdk/flutter/3.0/users-user-management.mdx index fbf53b30e..96fbaed9a 100644 --- a/sdk/flutter/3.0/users-user-management.mdx +++ b/sdk/flutter/3.0/users-user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/create-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `API Key` as input parameters and returns the created `User` object if the request is successful. @@ -55,7 +55,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. Please make sure the `User` object provided to the `updateUser()` method has the `UID` of the user to be updated set. @@ -84,7 +84,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user)section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis)section. ## User Class diff --git a/sdk/flutter/authentication-overview.mdx b/sdk/flutter/authentication-overview.mdx index 5157b3883..058c8cc22 100644 --- a/sdk/flutter/authentication-overview.mdx +++ b/sdk/flutter/authentication-overview.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com/). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. @@ -64,8 +64,8 @@ After the user logs in, their information is returned in the `User` object. This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user every time the user logs in to your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user every time the user logs in to your app. 3. Pass the **Auth Token** to your client and use it in the `login()` method. diff --git a/sdk/flutter/delete-conversation.mdx b/sdk/flutter/delete-conversation.mdx index 57473b8ca..5905706c1 100644 --- a/sdk/flutter/delete-conversation.mdx +++ b/sdk/flutter/delete-conversation.mdx @@ -43,7 +43,7 @@ await CometChat.deleteConversation(conversationWith, conversationType, -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/flutter/user-management.mdx b/sdk/flutter/user-management.mdx index b58d3da36..3619b9959 100644 --- a/sdk/flutter/user-management.mdx +++ b/sdk/flutter/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/create-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `API Key` as input parameters and returns the created `User` object if the request is successful. @@ -53,7 +53,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the API Key as inputs and returns the updated `User` object on successful execution of the request. Please make sure the `User` object provided to the `updateUser()` method has the `UID` of the user to be updated set. @@ -82,7 +82,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user)section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis)section. ## User Class diff --git a/sdk/ionic-legacy/2.0/authentication.mdx b/sdk/ionic-legacy/2.0/authentication.mdx index 45ce91c68..e4e2f2f3d 100644 --- a/sdk/ionic-legacy/2.0/authentication.mdx +++ b/sdk/ionic-legacy/2.0/authentication.mdx @@ -14,7 +14,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. **Sample Users** @@ -83,8 +83,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx b/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx index 5c21dc502..44334516b 100644 --- a/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx +++ b/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx @@ -47,7 +47,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ionic-legacy/2.0/users-user-management.mdx b/sdk/ionic-legacy/2.0/users-user-management.mdx index ebb9ee1de..2c96d413c 100644 --- a/sdk/ionic-legacy/2.0/users-user-management.mdx +++ b/sdk/ionic-legacy/2.0/users-user-management.mdx @@ -24,7 +24,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -61,7 +61,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) apis section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) apis section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -122,7 +122,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/ionic-legacy/3.0/authentication.mdx b/sdk/ionic-legacy/3.0/authentication.mdx index e213d9b0b..253d0790c 100644 --- a/sdk/ionic-legacy/3.0/authentication.mdx +++ b/sdk/ionic-legacy/3.0/authentication.mdx @@ -14,7 +14,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. **Sample Users** @@ -109,8 +109,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx b/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx index b103cec9f..58c5fc269 100644 --- a/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx +++ b/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx @@ -79,7 +79,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/chat-apis). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ionic-legacy/3.0/users-user-management.mdx b/sdk/ionic-legacy/3.0/users-user-management.mdx index d88e783dc..7456b2531 100644 --- a/sdk/ionic-legacy/3.0/users-user-management.mdx +++ b/sdk/ionic-legacy/3.0/users-user-management.mdx @@ -24,7 +24,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -83,7 +83,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -187,7 +187,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/ionic-legacy/authentication.mdx b/sdk/ionic-legacy/authentication.mdx index 298a11dbe..285e8be2f 100644 --- a/sdk/ionic-legacy/authentication.mdx +++ b/sdk/ionic-legacy/authentication.mdx @@ -12,7 +12,7 @@ sidebarTitle: "Overview" Before you log in a user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -101,8 +101,8 @@ After the user logs in, their information is returned in the `User` object on `P This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/ionic-legacy/delete-conversation.mdx b/sdk/ionic-legacy/delete-conversation.mdx index 7ebe248b6..7eda13273 100644 --- a/sdk/ionic-legacy/delete-conversation.mdx +++ b/sdk/ionic-legacy/delete-conversation.mdx @@ -73,7 +73,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ionic-legacy/user-management.mdx b/sdk/ionic-legacy/user-management.mdx index be03ebbe2..7c6d1d390 100644 --- a/sdk/ionic-legacy/user-management.mdx +++ b/sdk/ionic-legacy/user-management.mdx @@ -22,7 +22,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -81,7 +81,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -185,7 +185,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/ios/2.0/authentication.mdx b/sdk/ios/2.0/authentication.mdx index 0926e0f19..60bd91b53 100644 --- a/sdk/ios/2.0/authentication.mdx +++ b/sdk/ios/2.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you log in to the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -96,8 +96,8 @@ The `login()` method returns the `User` object containing all the information of This advanced authentication procedure does not use the auth Key directly in your client code and thus ensuring that your auth Key is not leaked even if the client code is reverse engineered. -1. [Create a user](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a user](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. The login method needs to be called in the following scenarios: diff --git a/sdk/ios/2.0/delete-a-conversation.mdx b/sdk/ios/2.0/delete-a-conversation.mdx index d853dd74b..8ff28e001 100644 --- a/sdk/ios/2.0/delete-a-conversation.mdx +++ b/sdk/ios/2.0/delete-a-conversation.mdx @@ -22,7 +22,7 @@ CometChat.deleteConversation(conversationWith: "cometchat-uid-1", conversationTy -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ios/2.0/user-management.mdx b/sdk/ios/2.0/user-management.mdx index ceb00bbfc..f3e8e15f6 100644 --- a/sdk/ios/2.0/user-management.mdx +++ b/sdk/ios/2.0/user-management.mdx @@ -37,7 +37,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -65,7 +65,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. @@ -108,7 +108,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/ios/3.0/authentication.mdx b/sdk/ios/3.0/authentication.mdx index 0926e0f19..60bd91b53 100644 --- a/sdk/ios/3.0/authentication.mdx +++ b/sdk/ios/3.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you log in to the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -96,8 +96,8 @@ The `login()` method returns the `User` object containing all the information of This advanced authentication procedure does not use the auth Key directly in your client code and thus ensuring that your auth Key is not leaked even if the client code is reverse engineered. -1. [Create a user](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a user](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. The login method needs to be called in the following scenarios: diff --git a/sdk/ios/3.0/delete-a-conversation.mdx b/sdk/ios/3.0/delete-a-conversation.mdx index a9a805f8b..8f83a6b8f 100644 --- a/sdk/ios/3.0/delete-a-conversation.mdx +++ b/sdk/ios/3.0/delete-a-conversation.mdx @@ -22,7 +22,7 @@ CometChat.deleteConversation(conversationWith: "cometchat-uid-1", conversationTy -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ios/3.0/user-management.mdx b/sdk/ios/3.0/user-management.mdx index f9bf96cb9..5986a0a40 100644 --- a/sdk/ios/3.0/user-management.mdx +++ b/sdk/ios/3.0/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -48,7 +48,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. @@ -91,7 +91,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/ios/authentication-overview.mdx b/sdk/ios/authentication-overview.mdx index f063e4f66..be2205df0 100644 --- a/sdk/ios/authentication-overview.mdx +++ b/sdk/ios/authentication-overview.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you log in a user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -90,8 +90,8 @@ The `login()` method returns the `User` object containing all the information of This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a user](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a user](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. The login method needs to be called in the following scenarios: diff --git a/sdk/ios/delete-conversation.mdx b/sdk/ios/delete-conversation.mdx index a9a805f8b..8f83a6b8f 100644 --- a/sdk/ios/delete-conversation.mdx +++ b/sdk/ios/delete-conversation.mdx @@ -22,7 +22,7 @@ CometChat.deleteConversation(conversationWith: "cometchat-uid-1", conversationTy -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/ios/user-management.mdx b/sdk/ios/user-management.mdx index bdd886bd2..5ab4e8208 100644 --- a/sdk/ios/user-management.mdx +++ b/sdk/ios/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [Creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -48,7 +48,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well using the `updateUser()` method. This method takes a `User` object and the Auth Key as inputs and returns the updated `User` object on successful execution of the request. @@ -91,7 +91,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/javascript/2.0/authentication.mdx b/sdk/javascript/2.0/authentication.mdx index 1e24138ec..6e30b3d83 100644 --- a/sdk/javascript/2.0/authentication.mdx +++ b/sdk/javascript/2.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -77,8 +77,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/javascript/2.0/bots.mdx b/sdk/javascript/2.0/bots.mdx index a31e17e8b..124af6f40 100644 --- a/sdk/javascript/2.0/bots.mdx +++ b/sdk/javascript/2.0/bots.mdx @@ -18,4 +18,4 @@ Once you've created a user, you can create a new bot. The actual implementation ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/javascript/2.0/messaging-delete-conversation.mdx b/sdk/javascript/2.0/messaging-delete-conversation.mdx index ae04af17d..488c09db4 100644 --- a/sdk/javascript/2.0/messaging-delete-conversation.mdx +++ b/sdk/javascript/2.0/messaging-delete-conversation.mdx @@ -41,7 +41,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/delete-user). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/javascript/2.0/users-user-management.mdx b/sdk/javascript/2.0/users-user-management.mdx index 655d8eef5..adc64cd87 100644 --- a/sdk/javascript/2.0/users-user-management.mdx +++ b/sdk/javascript/2.0/users-user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -56,7 +56,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -115,7 +115,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/javascript/3.0/authentication.mdx b/sdk/javascript/3.0/authentication.mdx index 7ee76a061..5b996e867 100644 --- a/sdk/javascript/3.0/authentication.mdx +++ b/sdk/javascript/3.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -101,8 +101,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/javascript/3.0/bots.mdx b/sdk/javascript/3.0/bots.mdx index a31e17e8b..124af6f40 100644 --- a/sdk/javascript/3.0/bots.mdx +++ b/sdk/javascript/3.0/bots.mdx @@ -18,4 +18,4 @@ Once you've created a user, you can create a new bot. The actual implementation ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/javascript/3.0/messaging-delete-conversation.mdx b/sdk/javascript/3.0/messaging-delete-conversation.mdx index 886bc7c50..559da9ede 100644 --- a/sdk/javascript/3.0/messaging-delete-conversation.mdx +++ b/sdk/javascript/3.0/messaging-delete-conversation.mdx @@ -71,7 +71,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/javascript/3.0/users-user-management.mdx b/sdk/javascript/3.0/users-user-management.mdx index aa2e2bc3a..59d6b4c65 100644 --- a/sdk/javascript/3.0/users-user-management.mdx +++ b/sdk/javascript/3.0/users-user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -77,7 +77,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -177,7 +177,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/javascript/authentication-overview.mdx b/sdk/javascript/authentication-overview.mdx index 1df057175..1fc7839e8 100644 --- a/sdk/javascript/authentication-overview.mdx +++ b/sdk/javascript/authentication-overview.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you log in a user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. @@ -98,8 +98,8 @@ After the user logs in, their information is returned in the `User` object on `P This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/javascript/delete-conversation.mdx b/sdk/javascript/delete-conversation.mdx index b91669f6a..5fe1295f8 100644 --- a/sdk/javascript/delete-conversation.mdx +++ b/sdk/javascript/delete-conversation.mdx @@ -71,7 +71,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/resets-user-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/javascript/user-management.mdx b/sdk/javascript/user-management.mdx index 76ac2b585..b8ffb2c10 100644 --- a/sdk/javascript/user-management.mdx +++ b/sdk/javascript/user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -77,7 +77,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -177,7 +177,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/react-native/2.0/authentication.mdx b/sdk/react-native/2.0/authentication.mdx index d05ef8db9..cc70839cd 100644 --- a/sdk/react-native/2.0/authentication.mdx +++ b/sdk/react-native/2.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/v2/reference/createuser-1) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -77,8 +77,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/v2/reference/createuser-1) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/v2/reference/createuser-1) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/react-native/2.0/bots.mdx b/sdk/react-native/2.0/bots.mdx index a31e17e8b..124af6f40 100644 --- a/sdk/react-native/2.0/bots.mdx +++ b/sdk/react-native/2.0/bots.mdx @@ -18,4 +18,4 @@ Once you've created a user, you can create a new bot. The actual implementation ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/react-native/2.0/messaging-delete-conversation.mdx b/sdk/react-native/2.0/messaging-delete-conversation.mdx index 19233aa4a..b3dd49755 100644 --- a/sdk/react-native/2.0/messaging-delete-conversation.mdx +++ b/sdk/react-native/2.0/messaging-delete-conversation.mdx @@ -41,7 +41,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/react-native/2.0/users-user-management.mdx b/sdk/react-native/2.0/users-user-management.mdx index f837a5b84..ab1a643b7 100644 --- a/sdk/react-native/2.0/users-user-management.mdx +++ b/sdk/react-native/2.0/users-user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/v2/reference/createuser-1) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -56,7 +56,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/v2/reference/updateuser-1) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -115,7 +115,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/v2/reference/deleteuser-1) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/react-native/3.0/authentication.mdx b/sdk/react-native/3.0/authentication.mdx index c88f8943d..8540f7985 100644 --- a/sdk/react-native/3.0/authentication.mdx +++ b/sdk/react-native/3.0/authentication.mdx @@ -10,7 +10,7 @@ sidebarTitle: "Overview" Before you login the user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. Sample Users @@ -101,8 +101,8 @@ Be sure to use the **Auth Key** and not the **Rest API Key**. This ensures that This advanced authentication procedure does not use the Auth Key directly in your client code and thus ensuring that your Auth Key is not leaked even if the client code is reverse engineered. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/react-native/3.0/bots.mdx b/sdk/react-native/3.0/bots.mdx index a31e17e8b..124af6f40 100644 --- a/sdk/react-native/3.0/bots.mdx +++ b/sdk/react-native/3.0/bots.mdx @@ -18,4 +18,4 @@ Once you've created a user, you can create a new bot. The actual implementation ### Reply to a message -When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](https://api-explorer.cometchat.com/reference/sends-bot-message) Rest API. +When you receive a message from CometChat, you can process it and provide a response using our [Send Bot Message](/rest-api/chat-apis) Rest API. diff --git a/sdk/react-native/3.0/messaging-delete-conversation.mdx b/sdk/react-native/3.0/messaging-delete-conversation.mdx index 8d5dc07be..e9495c873 100644 --- a/sdk/react-native/3.0/messaging-delete-conversation.mdx +++ b/sdk/react-native/3.0/messaging-delete-conversation.mdx @@ -71,7 +71,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/react-native/3.0/users-user-management.mdx b/sdk/react-native/3.0/users-user-management.mdx index 1a8a83016..f892be7e9 100644 --- a/sdk/react-native/3.0/users-user-management.mdx +++ b/sdk/react-native/3.0/users-user-management.mdx @@ -20,7 +20,7 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](/rest-api/chat-apis) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. @@ -77,7 +77,7 @@ UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and othe ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](/rest-api/chat-apis) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -177,7 +177,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](/rest-api/chat-apis) section. ## User Class diff --git a/sdk/react-native/authentication-overview.mdx b/sdk/react-native/authentication-overview.mdx index 2afe70562..70134ba85 100644 --- a/sdk/react-native/authentication-overview.mdx +++ b/sdk/react-native/authentication-overview.mdx @@ -24,7 +24,7 @@ const loggedInUser = await CometChat.getLoggedinUser(); Before you log in a user, you must add the user to CometChat. 1. **For proof of concept/MVPs**: Create the user using the [CometChat Dashboard](https://app.cometchat.com). -2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. +2. **For production apps**: Use the CometChat [Create User API](/rest-api/chat-apis) to create the user when your user signs up in your app. **Sample Users:** We have set up 5 users for testing with UIDs: `cometchat-uid-1`, `cometchat-uid-2`, `cometchat-uid-3`, `cometchat-uid-4` and `cometchat-uid-5`. @@ -133,10 +133,10 @@ This advanced authentication procedure does not use the Auth Key directly in you - [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. + [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. - [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. + [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/sdk/react-native/delete-conversation.mdx b/sdk/react-native/delete-conversation.mdx index 0e0eecfac..2b9ffa259 100644 --- a/sdk/react-native/delete-conversation.mdx +++ b/sdk/react-native/delete-conversation.mdx @@ -98,7 +98,7 @@ CometChat.deleteConversation(GUID, type).then( -This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). +This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](/rest-api/chat-apis). The `deleteConversation()` method takes the following parameters: diff --git a/ui-kit/android/getting-started.mdx b/ui-kit/android/getting-started.mdx index 1fb12abe1..77b6feac1 100644 --- a/ui-kit/android/getting-started.mdx +++ b/ui-kit/android/getting-started.mdx @@ -44,7 +44,7 @@ You also need: - Gradle plugin 4.0.1 or later -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/android/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/android/methods#login-using-auth-token). Never ship Auth Keys in client code. --- @@ -163,7 +163,7 @@ android.enableJetifier=true ## Step 3 — Initialize and Login -To authenticate a user, you need a UID. You can either create users on the [CometChat Dashboard](https://app.cometchat.com), via the [SDK method](/ui-kit/android/methods#create-user), or through the [REST API](https://api-explorer.cometchat.com/reference/creates-user). +To authenticate a user, you need a UID. You can either create users on the [CometChat Dashboard](https://app.cometchat.com), via the [SDK method](/ui-kit/android/methods#create-user), or through the [REST API](/rest-api/chat-apis). For development, use one of the pre-created test UIDs: diff --git a/ui-kit/android/methods.mdx b/ui-kit/android/methods.mdx index 24bccdd2f..3124b38d9 100644 --- a/ui-kit/android/methods.mdx +++ b/ui-kit/android/methods.mdx @@ -196,9 +196,9 @@ CometChatUIKit.login(UID, new CometChat.CallbackListener() { This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/android/v4/methods.mdx b/ui-kit/android/v4/methods.mdx index 3d5d00d52..45ed3b890 100644 --- a/ui-kit/android/v4/methods.mdx +++ b/ui-kit/android/v4/methods.mdx @@ -174,9 +174,9 @@ CometChatUIKit.login(UID, object : CometChat.CallbackListener() { This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/angular/methods.mdx b/ui-kit/angular/methods.mdx index 985a1c8f3..6780532a6 100644 --- a/ui-kit/angular/methods.mdx +++ b/ui-kit/angular/methods.mdx @@ -146,8 +146,8 @@ CometChatUIKit.getLoggedinUser() This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/angular/v5/integration.mdx b/ui-kit/angular/v5/integration.mdx index e19990740..a09c6aef0 100644 --- a/ui-kit/angular/v5/integration.mdx +++ b/ui-kit/angular/v5/integration.mdx @@ -38,7 +38,7 @@ You also need: - Angular CLI (`npm install -g @angular/cli`) -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use `loginWithAuthToken()`. Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use `loginWithAuthToken()`. Never ship Auth Keys in client code. --- diff --git a/ui-kit/angular/v5/methods.mdx b/ui-kit/angular/v5/methods.mdx index 374a3b9eb..fb2e89a82 100644 --- a/ui-kit/angular/v5/methods.mdx +++ b/ui-kit/angular/v5/methods.mdx @@ -125,8 +125,8 @@ CometChatUIKit.getLoggedinUser() Production-safe authentication that does not expose the Auth Key in client code. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. ```typescript expandable diff --git a/ui-kit/flutter/getting-started.mdx b/ui-kit/flutter/getting-started.mdx index 15281ce0f..c7364a031 100644 --- a/ui-kit/flutter/getting-started.mdx +++ b/ui-kit/flutter/getting-started.mdx @@ -39,7 +39,7 @@ You need three things from the [CometChat Dashboard](https://app.cometchat.com/) You also need Flutter 3.0+ installed with Android Studio or VS Code. -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use `loginWithAuthToken()`. Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use `loginWithAuthToken()`. Never ship Auth Keys in client code. --- diff --git a/ui-kit/flutter/methods.mdx b/ui-kit/flutter/methods.mdx index 222a617cf..0cd6ce2d7 100644 --- a/ui-kit/flutter/methods.mdx +++ b/ui-kit/flutter/methods.mdx @@ -131,9 +131,9 @@ CometChatUIKit.login( Production-safe authentication that does not expose the Auth Key in client code. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/flutter/v4/methods.mdx b/ui-kit/flutter/v4/methods.mdx index b616d847b..e07b9b467 100644 --- a/ui-kit/flutter/v4/methods.mdx +++ b/ui-kit/flutter/v4/methods.mdx @@ -93,9 +93,9 @@ CometChatUIKit.login(uid, onSuccess: (s) { This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/ios/getting-started.mdx b/ui-kit/ios/getting-started.mdx index 007725f07..02c21791f 100644 --- a/ui-kit/ios/getting-started.mdx +++ b/ui-kit/ios/getting-started.mdx @@ -45,7 +45,7 @@ You also need: - macOS -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/ios/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/ios/methods#login-using-auth-token). Never ship Auth Keys in client code. --- @@ -230,7 +230,7 @@ For development, use one of the pre-created test UIDs: `cometchat-uid-1` · `cometchat-uid-2` · `cometchat-uid-3` · `cometchat-uid-4` · `cometchat-uid-5` -Or create new users via the [CometChat Dashboard](https://app.cometchat.com), [SDK method](/ui-kit/ios/methods#create-user), or [REST API](https://api-explorer.cometchat.com/reference/creates-user). +Or create new users via the [CometChat Dashboard](https://app.cometchat.com), [SDK method](/ui-kit/ios/methods#create-user), or [REST API](/rest-api/chat-apis). After running the app, you should see: diff --git a/ui-kit/ios/methods.mdx b/ui-kit/ios/methods.mdx index d59caae27..f74169ab3 100644 --- a/ui-kit/ios/methods.mdx +++ b/ui-kit/ios/methods.mdx @@ -130,8 +130,8 @@ CometChatUIKit.login(uid: "uid") { (result) in This advanced authentication procedure does not use the Auth Key directly in your client code, ensuring better security. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login(authToken:)` method. diff --git a/ui-kit/ios/v4/methods.mdx b/ui-kit/ios/v4/methods.mdx index db4f1ac6c..5ee1253d5 100644 --- a/ui-kit/ios/v4/methods.mdx +++ b/ui-kit/ios/v4/methods.mdx @@ -99,8 +99,8 @@ CometChatUIKit.login(uid: "uid") { (result) in This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login(authToken:)` method. The concluding code block: diff --git a/ui-kit/react-native/expo-integration.mdx b/ui-kit/react-native/expo-integration.mdx index 583869c18..d8fcbed46 100644 --- a/ui-kit/react-native/expo-integration.mdx +++ b/ui-kit/react-native/expo-integration.mdx @@ -43,7 +43,7 @@ You also need: - Xcode (for iOS) and Android Studio (for Android) for development builds -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react-native/methods#how-to-login-a-user-with-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react-native/methods#how-to-login-a-user-with-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react-native/methods.mdx b/ui-kit/react-native/methods.mdx index 02e9f2474..1e15a7cf7 100644 --- a/ui-kit/react-native/methods.mdx +++ b/ui-kit/react-native/methods.mdx @@ -93,8 +93,8 @@ CometChatUIKit.login({ uid: uid }) Production-safe authentication that does not expose the Auth Key in client code. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login()` method. diff --git a/ui-kit/react-native/react-native-cli-integration.mdx b/ui-kit/react-native/react-native-cli-integration.mdx index f3f4b7822..faccea709 100644 --- a/ui-kit/react-native/react-native-cli-integration.mdx +++ b/ui-kit/react-native/react-native-cli-integration.mdx @@ -39,7 +39,7 @@ You also need: - Xcode (for iOS) and Android Studio (for Android) -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react-native/methods#how-to-login-a-user-with-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react-native/methods#how-to-login-a-user-with-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react-native/v4/methods.mdx b/ui-kit/react-native/v4/methods.mdx index 031703806..485564347 100644 --- a/ui-kit/react-native/v4/methods.mdx +++ b/ui-kit/react-native/v4/methods.mdx @@ -440,8 +440,8 @@ CometChatUIKit.login({uid: uid}) This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `login({authToken: authToken})` method. diff --git a/ui-kit/react/astro-integration.mdx b/ui-kit/react/astro-integration.mdx index d1cd40283..e82de9e4b 100644 --- a/ui-kit/react/astro-integration.mdx +++ b/ui-kit/react/astro-integration.mdx @@ -42,7 +42,7 @@ You need three things from the [CometChat Dashboard](https://app.cometchat.com/) You also need Node.js (v16+) and npm/yarn installed. -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react/methods.mdx b/ui-kit/react/methods.mdx index 2b03c4a68..455556ce9 100644 --- a/ui-kit/react/methods.mdx +++ b/ui-kit/react/methods.mdx @@ -218,8 +218,8 @@ CometChatUIKit.getLoggedinUser() Production-safe authentication that does not expose the Auth Key in client code. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/react/moved/builder-integration-nextjs.mdx b/ui-kit/react/moved/builder-integration-nextjs.mdx index 24cfb126a..f44aad528 100644 --- a/ui-kit/react/moved/builder-integration-nextjs.mdx +++ b/ui-kit/react/moved/builder-integration-nextjs.mdx @@ -167,7 +167,7 @@ export default CometChatNoSSR; To authenticate a user, you need a **`UID`**. You can either: -1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](https://api-explorer.cometchat.com/reference/creates-user)**. +1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](/rest-api/chat-apis)**. 2. **Use pre-generated test users**: diff --git a/ui-kit/react/moved/builder-integration-react-router.mdx b/ui-kit/react/moved/builder-integration-react-router.mdx index 54f43b401..a7d044879 100644 --- a/ui-kit/react/moved/builder-integration-react-router.mdx +++ b/ui-kit/react/moved/builder-integration-react-router.mdx @@ -174,7 +174,7 @@ export default CometChatNoSSR; To authenticate a user, you need a **`UID`**. You can either: -1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](https://api-explorer.cometchat.com/reference/creates-user)**. +1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](/rest-api/chat-apis)**. 2. **Use pre-generated test users**: diff --git a/ui-kit/react/moved/builder-integration.mdx b/ui-kit/react/moved/builder-integration.mdx index deafcdcef..6efcbefa9 100644 --- a/ui-kit/react/moved/builder-integration.mdx +++ b/ui-kit/react/moved/builder-integration.mdx @@ -214,7 +214,7 @@ These values are required for proper authentication and seamless integration. To authenticate a user, you need a **`UID`**. You can either: -1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](https://api-explorer.cometchat.com/reference/creates-user)**. +1. **Create new users** on the **[CometChat Dashboard](https://app.cometchat.com)**, **[CometChat SDK Method](/ui-kit/react/methods#create-user)** or **[via the API](/rest-api/chat-apis)**. 2. **Use pre-generated test users**: diff --git a/ui-kit/react/next-js-integration.mdx b/ui-kit/react/next-js-integration.mdx index ca539b5ed..1bd8e2a61 100644 --- a/ui-kit/react/next-js-integration.mdx +++ b/ui-kit/react/next-js-integration.mdx @@ -46,7 +46,7 @@ You need three things from the [CometChat Dashboard](https://app.cometchat.com/) You also need Node.js (v16+) and npm/yarn installed. -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react/react-js-integration.mdx b/ui-kit/react/react-js-integration.mdx index 8f2841395..3ebf1029f 100644 --- a/ui-kit/react/react-js-integration.mdx +++ b/ui-kit/react/react-js-integration.mdx @@ -41,7 +41,7 @@ You need three things from the [CometChat Dashboard](https://app.cometchat.com/) You also need Node.js (v16+) and npm/yarn installed. -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react/react-router-integration.mdx b/ui-kit/react/react-router-integration.mdx index 477e9438d..c77c57ad6 100644 --- a/ui-kit/react/react-router-integration.mdx +++ b/ui-kit/react/react-router-integration.mdx @@ -42,7 +42,7 @@ You need three things from the [CometChat Dashboard](https://app.cometchat.com/) You also need Node.js (v16+) and npm/yarn installed. -Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](https://api-explorer.cometchat.com/) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. +Auth Key is for development only. In production, generate Auth Tokens server-side via the [REST API](/rest-api/chat-apis) and use [`loginWithAuthToken()`](/ui-kit/react/methods#login-using-auth-token). Never ship Auth Keys in client code. --- diff --git a/ui-kit/react/v4/methods.mdx b/ui-kit/react/v4/methods.mdx index 4af60644a..e86351903 100644 --- a/ui-kit/react/v4/methods.mdx +++ b/ui-kit/react/v4/methods.mdx @@ -170,8 +170,8 @@ CometChatUIKit.getLoggedinUser() This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/react/v5/methods.mdx b/ui-kit/react/v5/methods.mdx index 30673bf24..8dc6ec4c8 100644 --- a/ui-kit/react/v5/methods.mdx +++ b/ui-kit/react/v5/methods.mdx @@ -204,8 +204,8 @@ CometChatUIKit.getLoggedinUser() This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/vue/integration.mdx b/ui-kit/vue/integration.mdx index 2ba6c70fe..1b2533d66 100644 --- a/ui-kit/vue/integration.mdx +++ b/ui-kit/vue/integration.mdx @@ -172,8 +172,8 @@ const mountApp = () => { This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/ui-kit/vue/ui-kit-methods.mdx b/ui-kit/vue/ui-kit-methods.mdx index b20384675..4bcf62418 100644 --- a/ui-kit/vue/ui-kit-methods.mdx +++ b/ui-kit/vue/ui-kit-methods.mdx @@ -152,8 +152,8 @@ CometChatUIKit.getLoggedinUser() This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. +1. [Create a User](/rest-api/chat-apis) via the CometChat API when the user signs up in your app. +2. [Create an Auth Token](/rest-api/chat-apis) via the CometChat API for the new user and save the token in your database. 3. Load the Auth Token in your client and pass it to the `loginWithAuthToken()` method. diff --git a/widget/html/legacy.mdx b/widget/html/legacy.mdx index 513b26aaa..9d4763bf9 100644 --- a/widget/html/legacy.mdx +++ b/widget/html/legacy.mdx @@ -632,7 +632,7 @@ CometChatWidget.logout().then(response => { If you wish to manage the Auth Key and generate Auth Token from your server application. We recommended you follow the below steps. -Please open this document - [https://api-explorer.cometchat.com/reference/chat-apis](https://api-explorer.cometchat.com/reference/chat-apis) and refer to this Post API call ([https://api-explorer.cometchat.com/reference/create-authtoken](https://api-explorer.cometchat.com/reference/create-authtoken)) to create users and generate Auth token +Please open this document - [/rest-api/chat-apis) and refer to this Post API call ([/rest-api/chat-apis)) to create users and generate Auth token You may then use the generated **Auth Token** and pass it to the login method below to log in to the user From bc20c215655f5c516cbbaa2d9bae479602fe5394 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Wed, 1 Apr 2026 10:14:01 +0530 Subject: [PATCH 53/56] Fixed all the p3s --- ai-agents/ag2-knowledge-agent.mdx | 2 +- ai-agents/mastra-backend-tools-agent.mdx | 2 +- ai-agents/mastra-coordinator-agent.mdx | 2 +- ai-agents/mastra-frontend-actions-agent.mdx | 2 +- ai-agents/mastra-knowledge-agent.mdx | 2 +- ai-agents/mastra-orchestrator-agent.mdx | 2 +- ai-agents/mastra.mdx | 2 +- ai-chatbots/ai-bots/bots.mdx | 2 +- fundamentals/implementation-checklist.mdx | 6 +++--- fundamentals/webhooks-legacy.mdx | 2 +- .../email-notifications-extension-legacy.mdx | 2 +- .../push-notifications-extension-legacy.mdx | 2 +- rest-api/api-keys.mdx | 2 +- rest-api/auth-tokens.mdx | 2 +- rest-api/messages/send-message.mdx | 15 ++++++++++++++- sdk/android/2.0/extensions.mdx | 4 ++-- sdk/ios/2.0/extensions.mdx | 4 ++-- ui-kit/react-native/call-features.mdx | 2 +- ui-kit/react-native/calling-integration.mdx | 2 +- ui-kit/react-native/upgrading-from-v4.mdx | 6 +++--- 20 files changed, 39 insertions(+), 26 deletions(-) diff --git a/ai-agents/ag2-knowledge-agent.mdx b/ai-agents/ag2-knowledge-agent.mdx index e39300a4c..4d21d575c 100644 --- a/ai-agents/ag2-knowledge-agent.mdx +++ b/ai-agents/ag2-knowledge-agent.mdx @@ -212,7 +212,7 @@ curl -N -X POST http://localhost:8000/agent \ Save then confirm the toggle shows Enabled. -> For more on CometChat AI Agents, see: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) *** diff --git a/ai-agents/mastra-backend-tools-agent.mdx b/ai-agents/mastra-backend-tools-agent.mdx index 989e11e1f..9e7431db5 100644 --- a/ai-agents/mastra-backend-tools-agent.mdx +++ b/ai-agents/mastra-backend-tools-agent.mdx @@ -125,7 +125,7 @@ Ensure your public route: **`/api/agents/deals/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) --- diff --git a/ai-agents/mastra-coordinator-agent.mdx b/ai-agents/mastra-coordinator-agent.mdx index 9fc8d0092..8a29a2696 100644 --- a/ai-agents/mastra-coordinator-agent.mdx +++ b/ai-agents/mastra-coordinator-agent.mdx @@ -180,7 +180,7 @@ Ensure your public route: **`/api/agents/relay/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) --- diff --git a/ai-agents/mastra-frontend-actions-agent.mdx b/ai-agents/mastra-frontend-actions-agent.mdx index 4de78d8ea..f60384477 100644 --- a/ai-agents/mastra-frontend-actions-agent.mdx +++ b/ai-agents/mastra-frontend-actions-agent.mdx @@ -149,7 +149,7 @@ Ensure your public route: **`/api/agents/celebration/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) --- diff --git a/ai-agents/mastra-knowledge-agent.mdx b/ai-agents/mastra-knowledge-agent.mdx index 10c75d515..5cfd0521d 100644 --- a/ai-agents/mastra-knowledge-agent.mdx +++ b/ai-agents/mastra-knowledge-agent.mdx @@ -182,7 +182,7 @@ Ensure the public route: **`/api/agents/knowledge/generate`** is reachable. Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) --- diff --git a/ai-agents/mastra-orchestrator-agent.mdx b/ai-agents/mastra-orchestrator-agent.mdx index f8e44209e..c4bd2e550 100644 --- a/ai-agents/mastra-orchestrator-agent.mdx +++ b/ai-agents/mastra-orchestrator-agent.mdx @@ -175,7 +175,7 @@ Ensure your public route: **`/api/agents/orchestratorAgent/generate`** is reacha Save and ensure the agent toggle shows Enabled. -> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-chatbots/custom-agents) +> For more on CometChat AI Agents, see the docs: [Overview](/ai-agents/agent-builder/overview) · [Instructions](/ai-agents/agent-builder/instructions) · [Custom agents](/ai-agents/agent-builder/tools/overview) --- diff --git a/ai-agents/mastra.mdx b/ai-agents/mastra.mdx index 429557749..7f560c484 100644 --- a/ai-agents/mastra.mdx +++ b/ai-agents/mastra.mdx @@ -336,6 +336,6 @@ export default async function handler(req: VercelRequest, res: VercelResponse) { -## Programmatic Management +## REST API Reference To manage agents, tools, knowledge bases, and MCP servers via API instead of the dashboard, see the [BYO Agent REST APIs](/rest-api/byo-ai-agents-apis/overview) for Mastra-based agents or the [Agent Builder REST APIs](/rest-api/ai-agents-apis/overview) for native agents. \ No newline at end of file diff --git a/ai-chatbots/ai-bots/bots.mdx b/ai-chatbots/ai-bots/bots.mdx index b92344118..fb4e719e9 100644 --- a/ai-chatbots/ai-bots/bots.mdx +++ b/ai-chatbots/ai-bots/bots.mdx @@ -10,7 +10,7 @@ AI Bots in CometChat are designed to facilitate conversations with users. Each A -1. Configure the AI settings through the CometChat dashboard as detailed in the [Overview section](/ai-chatbots/overview). +1. Configure the AI settings through the CometChat dashboard as detailed in the [Overview section](/ai-chatbots/ai-bots/overview). 2. Navigate to AI Bots section and add a new bot by clicking on the **"+"** button. 3. Enter bot details like `UID`, `Avatar`, `Bot name` and assign a `Instruction` from the dropdown. Then "Enable" the bot. 4. These details can be edited by clicking on the three dots. Similarly, you can also delete a bot. diff --git a/fundamentals/implementation-checklist.mdx b/fundamentals/implementation-checklist.mdx index f7935b023..a18d05fc8 100644 --- a/fundamentals/implementation-checklist.mdx +++ b/fundamentals/implementation-checklist.mdx @@ -69,7 +69,7 @@ title: "Implementation Checklist" -* [Bots](/ai-chatbots/bots) are unique users capable of autonomously sending and receiving messages. You can define a bot's behaviour by implementing and exposing your business logic using Callback URLs. +* [Bots](/ai-chatbots/custom-bots) are unique users capable of autonomously sending and receiving messages. You can define a bot's behaviour by implementing and exposing your business logic using Callback URLs. ### 7. Set up webhooks @@ -79,7 +79,7 @@ title: "Implementation Checklist" -* [Webhooks](/fundamentals/webhooks-overview) faciliate real-time event-driven communication with your system, enabling you to receive HTTP POST requests from CometChat that carry details about different events. +* [Webhooks](/fundamentals/webhooks) faciliate real-time event-driven communication with your system, enabling you to receive HTTP POST requests from CometChat that carry details about different events. ### 9. Secure user logins with authentication tokens @@ -88,7 +88,7 @@ title: "Implementation Checklist" ### 10. Set up data import and migration -* To seamlessly transition from your existing chat solution to CometChat's comprehensive solution, you will need to [import your existing data](/fundamentals/import-historical-data) as well as migrate the [live data](/fundamentals/live-data-migration) to CometChat. +* To seamlessly transition from your existing chat solution to CometChat's comprehensive solution, you will need to [import your existing data](/fundamentals/data-import-and-migration) as well as migrate the [live data](/fundamentals/data-import-and-migration) to CometChat. ### 11. Launch your applications with the new messaging capabilities diff --git a/fundamentals/webhooks-legacy.mdx b/fundamentals/webhooks-legacy.mdx index ba7eded6a..b5556a02a 100644 --- a/fundamentals/webhooks-legacy.mdx +++ b/fundamentals/webhooks-legacy.mdx @@ -7,7 +7,7 @@ sidebarTitle: "Webhooks (Legacy)" **Legacy Notice**: Legacy extensions are no longer actively maintained and will not receive feature updates or enhancements. -For new projects, use **[Webhooks](/fundamentals/webhooks-overview)**. +For new projects, use **[Webhooks](/fundamentals/webhooks)**. diff --git a/notifications/email-notifications-extension-legacy.mdx b/notifications/email-notifications-extension-legacy.mdx index 8a750837b..b26ceb670 100644 --- a/notifications/email-notifications-extension-legacy.mdx +++ b/notifications/email-notifications-extension-legacy.mdx @@ -18,7 +18,7 @@ After you've configured the extension, your users will receive email notificatio The Email notifications extension allows you to have the following two integrations: -1. Integration using [Webhook](/notifications/email-notifications#integration-using-webhook) +1. Integration using [Webhook](#integration-using-webhook) 2. Integration using [SendGrid](/notifications/email-integration#sendgrid) ## Before you begin diff --git a/notifications/push-notifications-extension-legacy.mdx b/notifications/push-notifications-extension-legacy.mdx index 219096f91..f58d2a177 100644 --- a/notifications/push-notifications-extension-legacy.mdx +++ b/notifications/push-notifications-extension-legacy.mdx @@ -3420,7 +3420,7 @@ Push Notification: Payload Sample for Text Message and Attachment/Media Message * Currently we can only handle default calling notification * Whenever the user answers the call we use RNCallKeep.backToForeground(); method to bring the app in to foreground but in some devices you might need to add few more permissions for this to work For example, In MIUI 11 you need to permission for Display pop-up windows while running in the background * When the iOS app is in lock state we are not able to open the app so the call start on callkeep it self and you can hear the audio but if you want a video call then the user has to unlock the phone click on the app icon on call screen. -* If you want to use the callkit and connection service in foreground then you might consider turning the callNotifications settings in UI kit settings. For more information in UI kit settings check the [documentation](/ui-kit/react-native/getting-started#initialise-cometchatuikit). +* If you want to use the callkit and connection service in foreground then you might consider turning the callNotifications settings in UI kit settings. For more information in UI kit settings check the [documentation](/ui-kit/react-native/react-native-cli-integration#initialise-cometchatuikit). diff --git a/rest-api/api-keys.mdx b/rest-api/api-keys.mdx index 1db0fc8a5..b7ad4d466 100644 --- a/rest-api/api-keys.mdx +++ b/rest-api/api-keys.mdx @@ -5,7 +5,7 @@ description: "Manage API keys that authenticate REST API requests to your CometC **API Keys** are credentials used to authenticate REST API requests. Every request to the CometChat REST API must include a valid API key in the `apikey` header. CometChat supports two types of API keys with different access levels. -### Endpoints +### Available operations | Method | Endpoint | Description | | ------ | -------- | ----------- | diff --git a/rest-api/auth-tokens.mdx b/rest-api/auth-tokens.mdx index bb3cf9279..9534f7579 100644 --- a/rest-api/auth-tokens.mdx +++ b/rest-api/auth-tokens.mdx @@ -5,7 +5,7 @@ description: "Manage authentication tokens that allow users to log in via CometC An **Auth Token** is a credential that allows a user to authenticate with CometChat SDKs on the client side. Each token is tied to a specific user and can be used across multiple devices. -### Endpoints +### Available operations | Method | Endpoint | Description | | ------ | -------- | ----------- | diff --git a/rest-api/messages/send-message.mdx b/rest-api/messages/send-message.mdx index 1eef7befd..8e45d4d52 100644 --- a/rest-api/messages/send-message.mdx +++ b/rest-api/messages/send-message.mdx @@ -14,4 +14,17 @@ description: "Sends Message on behalf of a user." | User mentions | Up to 10 distinct users | Format: `<@uid:{uid of the user}>` | | Reactions | Max 25 distinct reactions, 45 characters each (UTF8mb4) | Emoji supported (may use multiple code points) | | Unread message count (groups) | Up to 300 members | Not updated for larger groups | -| Message receipts (groups) | Up to 300 online users | Delivery/read receipts disabled in large groups | \ No newline at end of file +| Message receipts (groups) | Up to 300 online users | Delivery/read receipts disabled in large groups | +## Common errors + +| Error Code | HTTP Status | Cause | +| --- | --- | --- | +| `AUTH_ERR_EMPTY_APIKEY` | 401 | The `apikey` header is missing from the request | +| `AUTH_ERR_APIKEY_NOT_FOUND` | 401 | The provided API key is invalid | +| `AUTH_ERR_NO_ACCESS` | 403 | The API key doesn't have the required scope | +| `ERR_EMPTY_RECEIVER` | 400 | The receiver field cannot be empty | +| `ERR_INVALID_RECEIVER_TYPE` | 400 | Invalid receiver type — must be `user` or `group` | +| `ERR_EMPTY_MESSAGE_TEXT` | 400 | Message text cannot be empty for text messages | +| `ERR_INVALID_MESSAGE_CATEGORY` | 400 | Invalid message category | + +For the complete error reference, see [Error Guide](/articles/error-guide). diff --git a/sdk/android/2.0/extensions.mdx b/sdk/android/2.0/extensions.mdx index 68e86c551..d2578c21f 100644 --- a/sdk/android/2.0/extensions.mdx +++ b/sdk/android/2.0/extensions.mdx @@ -13,8 +13,8 @@ Extensions pickup where our core leaves. They help extend the functionality of C Extensions that help alert users of new messages. *Recommended for all apps.* [Push Notification](/notifications/android-push-notifications)\ -[Email Notification](/notifications/email-notification-extension)\ -[SMS Notification](/notifications/sms-notification-extension) +[Email Notification](/notifications/email-notifications-extension-legacy)\ +[SMS Notification](/notifications/sms-notifications-extension-legacy) ### User Experience diff --git a/sdk/ios/2.0/extensions.mdx b/sdk/ios/2.0/extensions.mdx index e68c97c58..075e1ea73 100644 --- a/sdk/ios/2.0/extensions.mdx +++ b/sdk/ios/2.0/extensions.mdx @@ -13,8 +13,8 @@ Extensions pickup where our core leaves. They help extend the functionality of C Extensions that help alert users of new messages. *Recommended for all apps.* [Push Notification](/notifications/ios-fcm-push-notifications)\ -[Email Notification](/notifications/email-notification-extension)\ -[SMS Notification](/notifications/sms-notification-extension) +[Email Notification](/notifications/email-notifications-extension-legacy)\ +[SMS Notification](/notifications/sms-notifications-extension-legacy) ### User Experience diff --git a/ui-kit/react-native/call-features.mdx b/ui-kit/react-native/call-features.mdx index df77ad227..148df08fc 100644 --- a/ui-kit/react-native/call-features.mdx +++ b/ui-kit/react-native/call-features.mdx @@ -40,7 +40,7 @@ CometChat's Calls feature offers advanced functionality for seamlessly integrati ## Integration -First, make sure that you've correctly integrated the UI Kit library into your project. If you haven't done this yet or are facing difficulties, refer to the [Getting Started](/ui-kit/react-native/getting-started) guide. +First, make sure that you've correctly integrated the UI Kit library into your project. If you haven't done this yet or are facing difficulties, refer to the [Getting Started](/ui-kit/react-native/react-native-cli-integration) guide. Once you've successfully integrated the UI Kit, the next step is to add the CometChat Calls SDK to your project. This is necessary to enable the calling features in the UI Kit: diff --git a/ui-kit/react-native/calling-integration.mdx b/ui-kit/react-native/calling-integration.mdx index ea9703ebf..6badb7264 100644 --- a/ui-kit/react-native/calling-integration.mdx +++ b/ui-kit/react-native/calling-integration.mdx @@ -8,7 +8,7 @@ description: "Add voice and video calling to your React Native UI Kit applicatio This guide walks you through adding voice and video calling capabilities to your React Native application using the CometChat UI Kit. -Make sure you've completed the [Getting Started](/ui-kit/react-native/getting-started) guide before proceeding. +Make sure you've completed the [Getting Started](/ui-kit/react-native/react-native-cli-integration) guide before proceeding. ## Add the Calls SDK diff --git a/ui-kit/react-native/upgrading-from-v4.mdx b/ui-kit/react-native/upgrading-from-v4.mdx index 1e3d67c14..6760fd49d 100644 --- a/ui-kit/react-native/upgrading-from-v4.mdx +++ b/ui-kit/react-native/upgrading-from-v4.mdx @@ -43,7 +43,7 @@ To support the transition from v4 to v5, CometChat has built a [sample app](http -Learn how to build a complete messaging UI using the **v5 UI Kit** by following the step-by-step guide [here](/ui-kit/react-native/getting-started). +Learn how to build a complete messaging UI using the **v5 UI Kit** by following the step-by-step guide [here](/ui-kit/react-native/react-native-cli-integration). @@ -199,7 +199,7 @@ For a comprehensive overview of newly added, renamed, and removed properties, re Detailed reference of new, renamed, and removed props for each component - + Set up the v5 UI Kit and send your first message @@ -864,7 +864,7 @@ In CometChat v5 UI Kit, several props and methods in components have been update ## Next Steps - + Set up the v5 UI Kit and send your first message From 32e04ed1c8f905c4a89910c675867e57e11edf4b Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Wed, 1 Apr 2026 11:43:11 +0530 Subject: [PATCH 54/56] Fixes for AEO --- .../guides/implementing-authorization.mdx | 2 +- ai-agents/apis/authenticate-composio-tool.mdx | 1 + ai-agents/apis/create-tag.mdx | 1 + ai-agents/apis/get-action-edit-form.mdx | 1 + ai-agents/apis/get-actions-creation-form.mdx | 1 + ai-agents/apis/get-actions-form.mdx | 1 + ai-agents/apis/get-agent-creation-form.mdx | 1 + ai-agents/apis/get-agent-edit-form.mdx | 1 + ai-agents/apis/get-all-tools-for-agent.mdx | 1 + ai-agents/apis/get-all-variables.mdx | 1 + ai-agents/apis/get-api-tool.mdx | 1 + ai-agents/apis/get-available-models.mdx | 1 + ai-agents/apis/get-composio-tools.mdx | 1 + ai-agents/apis/get-custom-variables.mdx | 1 + ai-agents/apis/get-form-fields.mdx | 1 + ai-agents/apis/get-frontend-action.mdx | 1 + ai-agents/apis/get-mcp-server.mdx | 1 + ai-agents/apis/get-parent-urls.mdx | 1 + ai-agents/apis/get-predefined-variables.mdx | 1 + .../apis/get-sitemap-discovered-urls.mdx | 1 + ai-agents/apis/get-text-detail.mdx | 1 + ai-agents/apis/get-tool-actions.mdx | 1 + ai-agents/apis/get-tool-configurations.mdx | 1 + ai-agents/apis/get-tool-edit-form.mdx | 1 + ai-agents/apis/get-tools-creation-form.mdx | 1 + ai-agents/apis/get-tools-form.mdx | 1 + ai-agents/apis/get-upcoming-tools.mdx | 1 + ai-agents/apis/kb-delete-integration.mdx | 1 + ai-agents/apis/kb-generate-auth-url.mdx | 1 + ai-agents/apis/kb-oauth-callback.mdx | 1 + ai-agents/apis/kb-trigger-sync.mdx | 1 + ai-agents/apis/list-text-details.mdx | 1 + ai-agents/apis/oauth-redirect-composio.mdx | 1 + ai-agents/apis/test-api-tool-variables.mdx | 1 + ai-agents/apis/test-byo-agent.mdx | 1 + ai-agents/apis/test-variable-resolution.mdx | 1 + ai-agents/apis/update-tag.mdx | 1 + ai-chatbots/ai-bots/bots.mdx | 1 + ai-chatbots/ai-bots/instructions.mdx | 1 + ai-chatbots/ai-bots/overview.mdx | 1 + ai-chatbots/custom-agents.mdx | 1 + ai-chatbots/custom-bots.mdx | 1 + articles/calendar-scheduling.mdx | 1 + articles/docker.mdx | 1 + articles/error-guide.mdx | 1 + articles/migration-guide.mdx | 1 + articles/properties-and-constraints.mdx | 1 + articles/rate-limits.mdx | 1 + calls/android/actions.mdx | 1 + calls/android/audio-controls.mdx | 1 + calls/android/audio-modes.mdx | 1 + calls/android/authentication.mdx | 1 + calls/android/background-handling.mdx | 1 + calls/android/button-click-listener.mdx | 1 + calls/android/call-layouts.mdx | 1 + calls/android/call-logs.mdx | 1 + calls/android/custom-control-panel.mdx | 1 + calls/android/custom-participant-list.mdx | 1 + calls/android/events.mdx | 1 + calls/android/idle-timeout.mdx | 1 + calls/android/in-call-chat.mdx | 1 + calls/android/join-session.mdx | 1 + calls/android/layout-listener.mdx | 1 + calls/android/layout-ui.mdx | 1 + calls/android/link/changelog.mdx | 1 + calls/android/link/github.mdx | 1 + calls/android/link/sample-apps.mdx | 1 + calls/android/media-events-listener.mdx | 1 + calls/android/overview.mdx | 1 + calls/android/participant-actions.mdx | 1 + calls/android/participant-event-listener.mdx | 1 + calls/android/participant-management.mdx | 1 + calls/android/picture-in-picture.mdx | 1 + calls/android/raise-hand.mdx | 1 + calls/android/recording.mdx | 1 + calls/android/ringing.mdx | 1 + calls/android/screen-sharing.mdx | 1 + calls/android/session-control.mdx | 1 + calls/android/session-settings.mdx | 1 + calls/android/session-status-listener.mdx | 1 + calls/android/setup.mdx | 1 + calls/android/share-invite.mdx | 1 + calls/android/video-controls.mdx | 1 + calls/android/voip-calling.mdx | 1 + calls/flutter/actions.mdx | 1 + calls/flutter/audio-controls.mdx | 1 + calls/flutter/audio-modes.mdx | 1 + calls/flutter/authentication.mdx | 1 + calls/flutter/background-handling.mdx | 1 + calls/flutter/button-click-listener.mdx | 1 + calls/flutter/call-layouts.mdx | 1 + calls/flutter/call-logs.mdx | 1 + calls/flutter/custom-control-panel.mdx | 1 + calls/flutter/custom-participant-list.mdx | 1 + calls/flutter/events.mdx | 1 + calls/flutter/idle-timeout.mdx | 1 + calls/flutter/in-call-chat.mdx | 1 + calls/flutter/join-session.mdx | 1 + calls/flutter/layout-listener.mdx | 1 + calls/flutter/layout-ui.mdx | 1 + calls/flutter/link/changelog.mdx | 1 + calls/flutter/link/github.mdx | 1 + calls/flutter/link/sample-apps.mdx | 1 + calls/flutter/media-events-listener.mdx | 1 + calls/flutter/overview.mdx | 1 + calls/flutter/participant-actions.mdx | 1 + calls/flutter/participant-event-listener.mdx | 1 + calls/flutter/participant-management.mdx | 1 + calls/flutter/picture-in-picture.mdx | 1 + calls/flutter/raise-hand.mdx | 1 + calls/flutter/recording.mdx | 1 + calls/flutter/ringing.mdx | 1 + calls/flutter/screen-sharing.mdx | 1 + calls/flutter/session-control.mdx | 1 + calls/flutter/session-settings.mdx | 1 + calls/flutter/session-status-listener.mdx | 1 + calls/flutter/setup.mdx | 1 + calls/flutter/share-invite.mdx | 1 + calls/flutter/video-controls.mdx | 1 + calls/flutter/voip-calling.mdx | 1 + calls/ionic/overview.mdx | 1 + calls/ios/actions.mdx | 1 + calls/ios/audio-modes.mdx | 1 + calls/ios/authentication.mdx | 1 + calls/ios/background-handling.mdx | 1 + calls/ios/call-layouts.mdx | 1 + calls/ios/call-logs.mdx | 1 + calls/ios/custom-control-panel.mdx | 1 + calls/ios/custom-participant-list.mdx | 1 + calls/ios/events.mdx | 1 + calls/ios/idle-timeout.mdx | 1 + calls/ios/in-call-chat.mdx | 1 + calls/ios/join-session.mdx | 1 + calls/ios/link/changelog.mdx | 1 + calls/ios/link/github.mdx | 1 + calls/ios/link/sample-apps.mdx | 1 + calls/ios/overview.mdx | 1 + calls/ios/participant-management.mdx | 1 + calls/ios/picture-in-picture.mdx | 1 + calls/ios/raise-hand.mdx | 1 + calls/ios/recording.mdx | 1 + calls/ios/ringing.mdx | 1 + calls/ios/screen-sharing.mdx | 1 + calls/ios/session-settings.mdx | 1 + calls/ios/setup.mdx | 1 + calls/ios/share-invite.mdx | 1 + calls/ios/voip-calling.mdx | 1 + calls/javascript/actions.mdx | 1 + calls/javascript/angular-integration.mdx | 1 + calls/javascript/authentication.mdx | 1 + calls/javascript/call-layouts.mdx | 1 + calls/javascript/call-logs.mdx | 1 + calls/javascript/custom-control-panel.mdx | 1 + calls/javascript/device-management.mdx | 1 + calls/javascript/events.mdx | 1 + calls/javascript/idle-timeout.mdx | 1 + calls/javascript/in-call-chat.mdx | 1 + calls/javascript/ionic-integration.mdx | 1 + calls/javascript/join-session.mdx | 1 + calls/javascript/link/changelog.mdx | 1 + calls/javascript/link/github.mdx | 1 + calls/javascript/link/live-demo.mdx | 1 + calls/javascript/link/sample-apps.mdx | 1 + calls/javascript/nextjs-integration.mdx | 1 + calls/javascript/overview.mdx | 1 + calls/javascript/participant-management.mdx | 1 + calls/javascript/permissions-handling.mdx | 1 + calls/javascript/picture-in-picture.mdx | 1 + calls/javascript/raise-hand.mdx | 1 + calls/javascript/react-integration.mdx | 1 + calls/javascript/recording.mdx | 1 + calls/javascript/ringing.mdx | 1 + calls/javascript/screen-sharing.mdx | 1 + calls/javascript/session-settings.mdx | 1 + calls/javascript/setup.mdx | 1 + calls/javascript/share-invite.mdx | 1 + calls/javascript/virtual-background.mdx | 1 + calls/javascript/vue-integration.mdx | 1 + calls/react-native/actions.mdx | 1 + calls/react-native/audio-modes.mdx | 1 + calls/react-native/authentication.mdx | 1 + calls/react-native/background-handling.mdx | 1 + calls/react-native/call-layouts.mdx | 1 + calls/react-native/call-logs.mdx | 1 + calls/react-native/custom-control-panel.mdx | 1 + .../react-native/custom-participant-list.mdx | 1 + calls/react-native/events.mdx | 1 + calls/react-native/idle-timeout.mdx | 1 + calls/react-native/in-call-chat.mdx | 1 + calls/react-native/join-session.mdx | 1 + calls/react-native/link/changelog.mdx | 1 + calls/react-native/link/github.mdx | 1 + calls/react-native/link/sample-apps.mdx | 1 + calls/react-native/overview.mdx | 1 + calls/react-native/participant-management.mdx | 1 + calls/react-native/picture-in-picture.mdx | 1 + calls/react-native/raise-hand.mdx | 1 + calls/react-native/recording.mdx | 1 + calls/react-native/ringing.mdx | 1 + calls/react-native/screen-sharing.mdx | 1 + calls/react-native/session-settings.mdx | 1 + calls/react-native/setup.mdx | 1 + calls/react-native/share-invite.mdx | 1 + calls/react-native/voip-calling.mdx | 1 + chat-builder/nextjs/integration.mdx | 2 +- chat-builder/react-router/integration.mdx | 4 +- chat-builder/react/integration.mdx | 4 +- .../ai-user-copilot/conversation-starter.mdx | 1 + .../ai-user-copilot/conversation-summary.mdx | 1 + fundamentals/ai-user-copilot/overview.mdx | 1 + .../ai-user-copilot/smart-replies.mdx | 1 + fundamentals/avatars.mdx | 1 + fundamentals/bitly.mdx | 1 + fundamentals/chatwoot.mdx | 1 + fundamentals/collaborative-document.mdx | 1 + fundamentals/collaborative-whiteboard.mdx | 1 + fundamentals/data-import-and-migration.mdx | 1 + fundamentals/disappearing-messages.mdx | 1 + fundamentals/email-replies.mdx | 1 + fundamentals/emojis.mdx | 1 + fundamentals/end-to-end-encryption.mdx | 1 + fundamentals/extensions-overview.mdx | 1 + fundamentals/features-core.mdx | 1 + fundamentals/gfycat.mdx | 1 + fundamentals/giphy.mdx | 1 + fundamentals/implementation-checklist.mdx | 1 + fundamentals/intercom.mdx | 1 + fundamentals/key-concepts.mdx | 1 + fundamentals/link-preview.mdx | 1 + fundamentals/mentions.mdx | 1 + fundamentals/message-shortcuts.mdx | 1 + fundamentals/message-translation.mdx | 1 + fundamentals/moderation-extensions.mdx | 1 + fundamentals/multi-tenancy.mdx | 1 + fundamentals/notification-extensions.mdx | 1 + fundamentals/overview.mdx | 1 + fundamentals/pin-message.mdx | 1 + fundamentals/polls.mdx | 1 + fundamentals/reactions.mdx | 1 + fundamentals/reminders.mdx | 1 + fundamentals/rich-media-preview.mdx | 1 + fundamentals/save-message.mdx | 1 + fundamentals/smart-replies.mdx | 1 + fundamentals/stickers-stipop.mdx | 1 + fundamentals/stickers.mdx | 1 + fundamentals/tenor.mdx | 1 + fundamentals/thumbnail-generation.mdx | 1 + fundamentals/tinyurl.mdx | 1 + fundamentals/user-roles-and-permissions.mdx | 1 + fundamentals/video-broadcasting.mdx | 1 + fundamentals/voice-transcription.mdx | 1 + fundamentals/webhooks-legacy.mdx | 1 + fundamentals/webhooks.mdx | 1 + moderation/blocked-messages.mdx | 1 + moderation/constraints-and-limits.mdx | 1 + moderation/custom/custom-api-overview.mdx | 1 + moderation/custom/custom-api.mdx | 1 + moderation/flagged-messages.mdx | 1 + moderation/getting-started.mdx | 1 + moderation/legacy-extensions.mdx | 1 + moderation/lists-management.mdx | 1 + moderation/open-ai/openai-custom.mdx | 1 + moderation/open-ai/openai-overview.mdx | 1 + moderation/overview.mdx | 1 + moderation/reviewed-messages.mdx | 1 + moderation/rules-management.mdx | 1 + notifications/badge-count.mdx | 1 + notifications/constraints-and-limits.mdx | 1 + notifications/custom-providers.mdx | 1 + notifications/email-custom-providers.mdx | 1 + notifications/email-integration.mdx | 1 + .../email-notifications-extension-legacy.mdx | 1 + notifications/email-preferences.mdx | 1 + notifications/email-templates.mdx | 1 + notifications/legacy-push-notifications.mdx | 1 + notifications/overview.mdx | 1 + notifications/preferences.mdx | 1 + notifications/sms-custom-providers.mdx | 1 + notifications/sms-integration.mdx | 1 + .../sms-notifications-extension-legacy.mdx | 1 + notifications/sms-preferences.mdx | 1 + notifications/sms-templates.mdx | 1 + notifications/templates-and-sounds.mdx | 1 + .../docker/air-gapped-deployment.mdx | 1 + .../docker/configuration-reference.mdx | 1 + on-premise-deployment/docker/monitoring.mdx | 1 + on-premise-deployment/docker/overview.mdx | 1 + .../docker/persistence-and-backup.mdx | 1 + .../docker/prerequisites.mdx | 1 + .../docker/production-deployment.mdx | 1 + on-premise-deployment/docker/scaling.mdx | 1 + on-premise-deployment/docker/security.mdx | 1 + .../docker/troubleshooting.mdx | 1 + on-premise-deployment/docker/upgrades.mdx | 1 + on-premise-deployment/kubernetes/overview.mdx | 1 + sdk/android/2.0/add-members-to-a-group.mdx | 1 + .../2.0/additional-message-filtering.mdx | 1 + sdk/android/2.0/advanced.mdx | 1 + sdk/android/2.0/authentication.mdx | 1 + sdk/android/2.0/block-users.mdx | 1 + sdk/android/2.0/bots.mdx | 1 + sdk/android/2.0/calling.mdx | 1 + sdk/android/2.0/change-member-scope.mdx | 1 + sdk/android/2.0/connection-status.mdx | 1 + sdk/android/2.0/create-a-group.mdx | 1 + sdk/android/2.0/default-calling.mdx | 1 + sdk/android/2.0/delete-a-group.mdx | 1 + sdk/android/2.0/delete-conversation.mdx | 1 + sdk/android/2.0/delete-message.mdx | 1 + sdk/android/2.0/delivery-read-receipts.mdx | 1 + sdk/android/2.0/direct-calling.mdx | 1 + sdk/android/2.0/edit-message.mdx | 1 + sdk/android/2.0/extensions.mdx | 1 + sdk/android/2.0/groups.mdx | 1 + sdk/android/2.0/join-a-group.mdx | 1 + sdk/android/2.0/key-concepts.mdx | 1 + sdk/android/2.0/kick-member-from-a-group.mdx | 1 + sdk/android/2.0/leave-a-group.mdx | 1 + sdk/android/2.0/login-listeners.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + sdk/android/2.0/messaging.mdx | 1 + sdk/android/2.0/overview.mdx | 1 + .../2.0/publishing-app-on-playstore.mdx | 1 + sdk/android/2.0/rate-limits.mdx | 1 + sdk/android/2.0/receive-messages.mdx | 1 + .../2.0/resources-all-real-time-listeners.mdx | 1 + .../2.0/resources-upgrading-from-v1.mdx | 1 + sdk/android/2.0/resources.mdx | 1 + sdk/android/2.0/retrieve-conversations.mdx | 1 + sdk/android/2.0/retrieve-group-members.mdx | 1 + sdk/android/2.0/retrieve-groups.mdx | 1 + sdk/android/2.0/retrieve-users.mdx | 1 + sdk/android/2.0/send-message.mdx | 1 + sdk/android/2.0/setup.mdx | 1 + sdk/android/2.0/threaded-messages.mdx | 1 + sdk/android/2.0/transfer-group-ownership.mdx | 1 + sdk/android/2.0/typing-indicators.mdx | 1 + sdk/android/2.0/update-a-group.mdx | 1 + sdk/android/2.0/user-management.mdx | 1 + sdk/android/2.0/user-presence.mdx | 1 + sdk/android/2.0/users.mdx | 1 + sdk/android/2.0/webhooks.mdx | 1 + .../3.0/advanced-connection-status.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + .../advanced-publishing-app-on-playstore.mdx | 1 + sdk/android/3.0/android-3-0-overview.mdx | 1 + sdk/android/3.0/android-advanced.mdx | 1 + sdk/android/3.0/android-resources.mdx | 1 + .../3.0/authentication-login-listeners.mdx | 1 + sdk/android/3.0/authentication.mdx | 1 + sdk/android/3.0/bots.mdx | 1 + sdk/android/3.0/calling-default-calling.mdx | 1 + sdk/android/3.0/calling-direct-calling.mdx | 1 + sdk/android/3.0/calling-recording-v3.mdx | 1 + sdk/android/3.0/calling-recording.mdx | 1 + sdk/android/3.0/calling-v3.mdx | 1 + sdk/android/3.0/calling.mdx | 1 + sdk/android/3.0/default-calling-v3.mdx | 1 + sdk/android/3.0/direct-calling-v3.mdx | 1 + sdk/android/3.0/extensions-overview.mdx | 1 + .../3.0/groups-add-members-to-group.mdx | 1 + .../3.0/groups-change-member-scope.mdx | 1 + sdk/android/3.0/groups-create-group.mdx | 1 + sdk/android/3.0/groups-delete-group.mdx | 1 + sdk/android/3.0/groups-join-group.mdx | 1 + sdk/android/3.0/groups-kick-ban-members.mdx | 1 + sdk/android/3.0/groups-leave-group.mdx | 1 + .../3.0/groups-retrieve-group-members.mdx | 1 + sdk/android/3.0/groups-retrieve-groups.mdx | 1 + .../3.0/groups-transfer-group-ownership.mdx | 1 + sdk/android/3.0/groups-update-group.mdx | 1 + sdk/android/3.0/groups.mdx | 1 + sdk/android/3.0/key-concepts.mdx | 1 + sdk/android/3.0/kotlin-overview.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../3.0/messaging-delete-conversation.mdx | 1 + sdk/android/3.0/messaging-delete-message.mdx | 1 + sdk/android/3.0/messaging-edit-message.mdx | 1 + sdk/android/3.0/messaging-receipts.mdx | 1 + .../3.0/messaging-receive-messages.mdx | 1 + .../3.0/messaging-retrieve-conversations.mdx | 1 + sdk/android/3.0/messaging-send-message.mdx | 1 + .../3.0/messaging-transient-messages.mdx | 1 + .../3.0/messaging-typing-indicators.mdx | 1 + sdk/android/3.0/messaging.mdx | 1 + sdk/android/3.0/overview.mdx | 1 + sdk/android/3.0/presenter-mode.mdx | 1 + sdk/android/3.0/rate-limits.mdx | 1 + .../3.0/resources-all-real-time-listeners.mdx | 1 + .../3.0/resources-upgrading-from-v2.mdx | 1 + sdk/android/3.0/setup-v3.mdx | 1 + sdk/android/3.0/setup.mdx | 1 + sdk/android/3.0/threaded-messages.mdx | 1 + sdk/android/3.0/user-presence.mdx | 1 + sdk/android/3.0/users-block-users.mdx | 1 + sdk/android/3.0/users-retrieve-users.mdx | 1 + sdk/android/3.0/users-user-management.mdx | 1 + sdk/android/3.0/users.mdx | 1 + .../3.0/video-view-customisation-v3.mdx | 1 + sdk/android/3.0/video-view-customisation.mdx | 1 + sdk/android/3.0/webhooks.mdx | 1 + sdk/android/additional-message-filtering.mdx | 1 + sdk/android/advanced-overview.mdx | 1 + sdk/android/ai-agents.mdx | 1 + sdk/android/ai-chatbots-overview.mdx | 1 + sdk/android/ai-moderation.mdx | 1 + sdk/android/ai-user-copilot-overview.mdx | 1 + sdk/android/android-overview.mdx | 1 + sdk/android/authentication-overview.mdx | 1 + sdk/android/block-users.mdx | 1 + sdk/android/call-logs.mdx | 1 + sdk/android/calling-overview.mdx | 1 + sdk/android/calling-setup.mdx | 1 + sdk/android/changelog.mdx | 1 + sdk/android/connection-behaviour.mdx | 1 + sdk/android/connection-status.mdx | 1 + sdk/android/create-group.mdx | 1 + sdk/android/default-calling.mdx | 1 + sdk/android/delete-conversation.mdx | 1 + sdk/android/delete-group.mdx | 1 + sdk/android/delete-message.mdx | 1 + sdk/android/delivery-read-receipts.mdx | 1 + sdk/android/direct-calling.mdx | 1 + sdk/android/edit-message.mdx | 1 + sdk/android/extensions-overview.mdx | 1 + sdk/android/flag-message.mdx | 1 + sdk/android/group-add-members.mdx | 1 + sdk/android/group-change-member-scope.mdx | 1 + sdk/android/group-kick-member.mdx | 1 + sdk/android/groups-overview.mdx | 1 + sdk/android/interactive-messages.mdx | 1 + sdk/android/join-group.mdx | 1 + sdk/android/key-concepts.mdx | 1 + sdk/android/leave-group.mdx | 1 + sdk/android/login-listeners.mdx | 1 + sdk/android/mentions.mdx | 1 + .../message-structure-and-hierarchy.mdx | 1 + sdk/android/messaging-overview.mdx | 1 + sdk/android/overview.mdx | 1 + sdk/android/presenter-mode.mdx | 1 + sdk/android/publishing-app-on-playstore.mdx | 1 + sdk/android/rate-limits.mdx | 1 + sdk/android/reactions.mdx | 1 + sdk/android/real-time-listeners.mdx | 1 + sdk/android/receive-messages.mdx | 1 + sdk/android/recording.mdx | 1 + sdk/android/resources-overview.mdx | 1 + sdk/android/retrieve-conversations.mdx | 1 + sdk/android/retrieve-group-members.mdx | 1 + sdk/android/retrieve-groups.mdx | 1 + sdk/android/retrieve-users.mdx | 1 + sdk/android/send-message.mdx | 1 + sdk/android/session-timeout.mdx | 1 + sdk/android/setup.mdx | 1 + sdk/android/standalone-calling.mdx | 1 + sdk/android/threaded-messages.mdx | 1 + sdk/android/transfer-group-ownership.mdx | 1 + sdk/android/transient-messages.mdx | 1 + sdk/android/typing-indicators.mdx | 1 + sdk/android/update-group.mdx | 1 + sdk/android/upgrading-from-v3-guide.mdx | 1 + sdk/android/user-management.mdx | 1 + sdk/android/user-presence.mdx | 1 + sdk/android/users-overview.mdx | 1 + sdk/android/video-view-customisation.mdx | 1 + sdk/android/webhooks-overview.mdx | 1 + .../3.0/advanced-connection-status.mdx | 1 + ...aging-web-sockets-connections-manually.mdx | 1 + sdk/flutter/3.0/advanced.mdx | 1 + .../3.0/authentication-login-listeners.mdx | 1 + sdk/flutter/3.0/authentication.mdx | 1 + sdk/flutter/3.0/calling-setup.mdx | 1 + sdk/flutter/3.0/calling-v3.mdx | 1 + sdk/flutter/3.0/default-calling.mdx | 1 + sdk/flutter/3.0/direct-calling.mdx | 1 + sdk/flutter/3.0/flutter-resources.mdx | 1 + .../3.0/groups-add-members-to-group.mdx | 1 + .../3.0/groups-change-member-scope.mdx | 1 + sdk/flutter/3.0/groups-create-group.mdx | 1 + sdk/flutter/3.0/groups-delete-group.mdx | 1 + sdk/flutter/3.0/groups-join-group.mdx | 1 + sdk/flutter/3.0/groups-kick-ban-members.mdx | 1 + sdk/flutter/3.0/groups-leave-group.mdx | 1 + .../3.0/groups-retrieve-group-members.mdx | 1 + sdk/flutter/3.0/groups-retrieve-groups.mdx | 1 + .../3.0/groups-transfer-group-ownership.mdx | 1 + sdk/flutter/3.0/groups-update-group.mdx | 1 + sdk/flutter/3.0/groups.mdx | 1 + sdk/flutter/3.0/key-concepts.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../3.0/messaging-delete-conversation.mdx | 1 + sdk/flutter/3.0/messaging-delete-message.mdx | 1 + sdk/flutter/3.0/messaging-edit-message.mdx | 1 + sdk/flutter/3.0/messaging-receipts.mdx | 1 + .../3.0/messaging-receive-messages.mdx | 1 + .../3.0/messaging-retrieve-conversations.mdx | 1 + sdk/flutter/3.0/messaging-send-message.mdx | 1 + .../3.0/messaging-transient-messages.mdx | 1 + .../3.0/messaging-typing-indicators.mdx | 1 + sdk/flutter/3.0/messaging.mdx | 1 + sdk/flutter/3.0/overview.mdx | 1 + sdk/flutter/3.0/presenter.mdx | 1 + sdk/flutter/3.0/rate-limits.mdx | 1 + sdk/flutter/3.0/recording.mdx | 1 + .../3.0/resources-all-real-time-listeners.mdx | 1 + sdk/flutter/3.0/setup.mdx | 1 + sdk/flutter/3.0/threaded-messages.mdx | 1 + sdk/flutter/3.0/user-presence.mdx | 1 + sdk/flutter/3.0/users-block-users.mdx | 1 + sdk/flutter/3.0/users-retrieve-users.mdx | 1 + sdk/flutter/3.0/users-user-management.mdx | 1 + sdk/flutter/3.0/users.mdx | 1 + sdk/flutter/3.0/video-view-customisation.mdx | 1 + sdk/flutter/additional-message-filtering.mdx | 1 + sdk/flutter/advanced-overview.mdx | 1 + sdk/flutter/ai-agents.mdx | 1 + sdk/flutter/ai-chatbots-overview.mdx | 1 + sdk/flutter/ai-moderation.mdx | 1 + sdk/flutter/ai-user-copilot-overview.mdx | 1 + sdk/flutter/authentication-overview.mdx | 1 + sdk/flutter/block-users.mdx | 1 + sdk/flutter/call-logs.mdx | 1 + sdk/flutter/calling-overview.mdx | 1 + sdk/flutter/calling-setup.mdx | 1 + sdk/flutter/changelog.mdx | 1 + sdk/flutter/connection-behaviour.mdx | 1 + sdk/flutter/connection-status.mdx | 1 + sdk/flutter/create-group.mdx | 1 + sdk/flutter/default-call.mdx | 1 + sdk/flutter/delete-conversation.mdx | 1 + sdk/flutter/delete-group.mdx | 1 + sdk/flutter/delete-message.mdx | 1 + sdk/flutter/delivery-read-receipts.mdx | 1 + sdk/flutter/direct-call.mdx | 1 + sdk/flutter/edit-message.mdx | 1 + sdk/flutter/extensions-overview.mdx | 1 + sdk/flutter/flag-message.mdx | 1 + sdk/flutter/flutter-overview.mdx | 1 + sdk/flutter/group-add-members.mdx | 1 + sdk/flutter/group-change-member-scope.mdx | 1 + sdk/flutter/group-kick-member.mdx | 1 + sdk/flutter/groups-overview.mdx | 1 + sdk/flutter/interactive-messages.mdx | 1 + sdk/flutter/join-group.mdx | 1 + sdk/flutter/key-concepts.mdx | 1 + sdk/flutter/leave-group.mdx | 1 + sdk/flutter/login-listeners.mdx | 1 + sdk/flutter/mentions.mdx | 1 + .../message-structure-and-hierarchy.mdx | 1 + sdk/flutter/messaging-overview.mdx | 1 + sdk/flutter/overview.mdx | 1 + sdk/flutter/presenter-mode.mdx | 1 + sdk/flutter/rate-limits.mdx | 1 + sdk/flutter/reactions.mdx | 1 + sdk/flutter/real-time-listeners.mdx | 1 + sdk/flutter/receive-messages.mdx | 1 + sdk/flutter/recording.mdx | 1 + sdk/flutter/resources-overview.mdx | 1 + sdk/flutter/retrieve-conversations.mdx | 1 + sdk/flutter/retrieve-group-members.mdx | 1 + sdk/flutter/retrieve-groups.mdx | 1 + sdk/flutter/retrieve-users.mdx | 1 + sdk/flutter/send-message.mdx | 1 + sdk/flutter/session-timeout.mdx | 1 + sdk/flutter/setup.mdx | 1 + sdk/flutter/standalone-calling.mdx | 1 + sdk/flutter/threaded-messages.mdx | 1 + sdk/flutter/transfer-group-ownership.mdx | 1 + sdk/flutter/transient-messages.mdx | 1 + sdk/flutter/typing-indicators.mdx | 1 + sdk/flutter/update-group.mdx | 1 + sdk/flutter/upgrading-from-v3-guide.mdx | 1 + sdk/flutter/user-management.mdx | 1 + sdk/flutter/user-presence.mdx | 1 + sdk/flutter/users-overview.mdx | 1 + sdk/flutter/video-view-customisation.mdx | 1 + sdk/flutter/webhooks-overview.mdx | 1 + .../2.0/advanced-connection-listener.mdx | 1 + sdk/ionic-legacy/2.0/advanced.mdx | 1 + .../2.0/authentication-login-listeners.mdx | 5 ++- sdk/ionic-legacy/2.0/authentication.mdx | 1 + sdk/ionic-legacy/2.0/bots.mdx | 1 + .../2.0/calling-default-calling.mdx | 5 ++- .../2.0/calling-direct-calling.mdx | 1 + sdk/ionic-legacy/2.0/calling.mdx | 1 + .../2.0/groups-add-members-to-group.mdx | 5 ++- .../2.0/groups-change-member-scope.mdx | 3 +- sdk/ionic-legacy/2.0/groups-create-group.mdx | 3 +- sdk/ionic-legacy/2.0/groups-delete-group.mdx | 1 + sdk/ionic-legacy/2.0/groups-join-group.mdx | 3 +- .../2.0/groups-kick-ban-members.mdx | 11 ++--- sdk/ionic-legacy/2.0/groups-leave-group.mdx | 1 + .../2.0/groups-retrieve-group-members.mdx | 9 ++-- .../2.0/groups-retrieve-groups.mdx | 5 ++- .../2.0/groups-transfer-group-ownership.mdx | 1 + sdk/ionic-legacy/2.0/groups-update-group.mdx | 3 +- sdk/ionic-legacy/2.0/groups.mdx | 1 + sdk/ionic-legacy/2.0/key-concepts.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 9 ++-- .../2.0/messaging-delete-conversation.mdx | 5 ++- .../2.0/messaging-delete-message.mdx | 1 + .../2.0/messaging-edit-message.mdx | 5 ++- sdk/ionic-legacy/2.0/messaging-receipts.mdx | 7 +-- .../2.0/messaging-receive-messages.mdx | 21 ++++----- .../2.0/messaging-retrieve-conversations.mdx | 1 + .../2.0/messaging-send-message.mdx | 19 ++++---- .../2.0/messaging-typing-indicators.mdx | 11 ++--- sdk/ionic-legacy/2.0/messaging.mdx | 1 + sdk/ionic-legacy/2.0/overview.mdx | 1 + sdk/ionic-legacy/2.0/rate-limits.mdx | 1 + .../2.0/resources-all-real-time-listeners.mdx | 1 + .../2.0/resources-upgrading-from-v1.mdx | 1 + sdk/ionic-legacy/2.0/resources.mdx | 1 + sdk/ionic-legacy/2.0/setup.mdx | 1 + sdk/ionic-legacy/2.0/threaded-messages.mdx | 7 +-- sdk/ionic-legacy/2.0/user-presence.mdx | 5 ++- sdk/ionic-legacy/2.0/users-block-users.mdx | 5 ++- sdk/ionic-legacy/2.0/users-retrieve-users.mdx | 25 +++++------ .../2.0/users-user-management.mdx | 1 + sdk/ionic-legacy/2.0/users.mdx | 1 + sdk/ionic-legacy/2.0/webhooks.mdx | 1 + .../3.0/advanced-connection-listener.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + sdk/ionic-legacy/3.0/advanced.mdx | 1 + .../3.0/authentication-login-listeners.mdx | 1 + sdk/ionic-legacy/3.0/authentication.mdx | 1 + sdk/ionic-legacy/3.0/bots.mdx | 1 + .../3.0/calling-default-calling.mdx | 9 ++-- .../3.0/calling-direct-calling.mdx | 1 + sdk/ionic-legacy/3.0/calling-recording.mdx | 1 + sdk/ionic-legacy/3.0/calling-v3.mdx | 1 + sdk/ionic-legacy/3.0/calling.mdx | 1 + .../3.0/groups-add-members-to-group.mdx | 1 + .../3.0/groups-change-member-scope.mdx | 1 + sdk/ionic-legacy/3.0/groups-create-group.mdx | 1 + sdk/ionic-legacy/3.0/groups-delete-group.mdx | 1 + sdk/ionic-legacy/3.0/groups-join-group.mdx | 1 + .../3.0/groups-kick-ban-members.mdx | 1 + sdk/ionic-legacy/3.0/groups-leave-group.mdx | 1 + .../3.0/groups-retrieve-group-members.mdx | 1 + .../3.0/groups-retrieve-groups.mdx | 1 + .../3.0/groups-transfer-group-ownership.mdx | 1 + sdk/ionic-legacy/3.0/groups-update-group.mdx | 1 + sdk/ionic-legacy/3.0/groups.mdx | 1 + sdk/ionic-legacy/3.0/key-concepts.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../3.0/messaging-delete-conversation.mdx | 1 + .../3.0/messaging-delete-message.mdx | 1 + .../3.0/messaging-edit-message.mdx | 9 ++-- sdk/ionic-legacy/3.0/messaging-receipts.mdx | 1 + .../3.0/messaging-receive-messages.mdx | 1 + .../3.0/messaging-retrieve-conversations.mdx | 1 + .../3.0/messaging-send-message.mdx | 1 + .../3.0/messaging-typing-indicators.mdx | 1 + sdk/ionic-legacy/3.0/messaging.mdx | 1 + sdk/ionic-legacy/3.0/overview.mdx | 3 +- sdk/ionic-legacy/3.0/rate-limits.mdx | 1 + .../3.0/resources-all-real-time-listeners.mdx | 1 + .../3.0/resources-upgrading-from-v2.mdx | 1 + sdk/ionic-legacy/3.0/resources.mdx | 1 + sdk/ionic-legacy/3.0/setup.mdx | 5 ++- sdk/ionic-legacy/3.0/threaded-messages.mdx | 1 + sdk/ionic-legacy/3.0/transient-messages.mdx | 1 + sdk/ionic-legacy/3.0/user-presence.mdx | 1 + sdk/ionic-legacy/3.0/users-block-users.mdx | 1 + sdk/ionic-legacy/3.0/users-retrieve-users.mdx | 1 + .../3.0/users-user-management.mdx | 1 + sdk/ionic-legacy/3.0/users.mdx | 1 + sdk/ionic-legacy/3.0/v3-calling-recording.mdx | 1 + sdk/ionic-legacy/3.0/v3-setup.mdx | 3 +- .../3.0/v3-start-call-session.mdx | 1 + .../3.0/v3-video-view-customisation.mdx | 1 + .../3.0/video-view-customisation.mdx | 1 + sdk/ionic-legacy/3.0/webhooks.mdx | 1 + .../additional-message-filtering.mdx | 1 + sdk/ionic-legacy/advanced.mdx | 1 + sdk/ionic-legacy/ai-chatbots-overview.mdx | 1 + sdk/ionic-legacy/ai-user-copilot-overview.mdx | 1 + sdk/ionic-legacy/authentication.mdx | 1 + sdk/ionic-legacy/block-users.mdx | 1 + sdk/ionic-legacy/calling-overview.mdx | 1 + sdk/ionic-legacy/calling-setup.mdx | 1 + sdk/ionic-legacy/changelog.mdx | 1 + sdk/ionic-legacy/connection-behaviour.mdx | 1 + sdk/ionic-legacy/connection-status.mdx | 1 + sdk/ionic-legacy/create-group.mdx | 1 + sdk/ionic-legacy/default-call.mdx | 1 + sdk/ionic-legacy/delete-conversation.mdx | 1 + sdk/ionic-legacy/delete-group.mdx | 1 + sdk/ionic-legacy/delete-message.mdx | 1 + sdk/ionic-legacy/delivery-read-receipts.mdx | 1 + sdk/ionic-legacy/direct-call.mdx | 1 + sdk/ionic-legacy/edit-message.mdx | 1 + sdk/ionic-legacy/extensions-overview.mdx | 1 + sdk/ionic-legacy/group-add-members.mdx | 1 + .../group-change-member-scope.mdx | 1 + sdk/ionic-legacy/group-kick-member.mdx | 1 + sdk/ionic-legacy/groups-overview.mdx | 1 + sdk/ionic-legacy/interactive-messages.mdx | 1 + sdk/ionic-legacy/join-group.mdx | 1 + sdk/ionic-legacy/key-concepts.mdx | 1 + sdk/ionic-legacy/leave-group.mdx | 1 + sdk/ionic-legacy/login-listeners.mdx | 1 + .../managing-connections-manually.mdx | 1 + sdk/ionic-legacy/mentions.mdx | 1 + .../message-structure-and-hierarchy.mdx | 1 + sdk/ionic-legacy/messaging-overview.mdx | 1 + sdk/ionic-legacy/overview.mdx | 1 + sdk/ionic-legacy/presenter-mode.mdx | 1 + sdk/ionic-legacy/rate-limits.mdx | 1 + sdk/ionic-legacy/reactions.mdx | 1 + sdk/ionic-legacy/real-time-listeners.mdx | 1 + sdk/ionic-legacy/receive-messages.mdx | 1 + sdk/ionic-legacy/recording.mdx | 1 + sdk/ionic-legacy/resources-overview.mdx | 1 + sdk/ionic-legacy/retrieve-conversations.mdx | 1 + sdk/ionic-legacy/retrieve-group-members.mdx | 1 + sdk/ionic-legacy/retrieve-groups.mdx | 1 + sdk/ionic-legacy/retrieve-users.mdx | 1 + sdk/ionic-legacy/send-message.mdx | 1 + sdk/ionic-legacy/setup.mdx | 1 + sdk/ionic-legacy/threaded-messages.mdx | 1 + sdk/ionic-legacy/transfer-group-ownership.mdx | 1 + sdk/ionic-legacy/transient-messages.mdx | 1 + sdk/ionic-legacy/typing-indicators.mdx | 1 + sdk/ionic-legacy/update-group.mdx | 1 + sdk/ionic-legacy/upgrading-from-v3-guide.mdx | 1 + sdk/ionic-legacy/user-management.mdx | 1 + sdk/ionic-legacy/user-presence.mdx | 5 ++- sdk/ionic-legacy/users-overview.mdx | 1 + sdk/ionic-legacy/video-view-customisation.mdx | 1 + sdk/ionic-legacy/webhooks-overview.mdx | 1 + sdk/ios/2.0/add-members-to-a-group.mdx | 1 + sdk/ios/2.0/additional-message-filtering.mdx | 1 + sdk/ios/2.0/advanced.mdx | 1 + .../2.0/all-real-time-delegates-listeners.mdx | 1 + sdk/ios/2.0/authentication.mdx | 1 + sdk/ios/2.0/block-users.mdx | 1 + sdk/ios/2.0/bots.mdx | 1 + sdk/ios/2.0/calling.mdx | 1 + sdk/ios/2.0/change-member-scope.mdx | 1 + sdk/ios/2.0/connection-status.mdx | 1 + sdk/ios/2.0/create-a-group.mdx | 1 + sdk/ios/2.0/default-calling1.mdx | 1 + sdk/ios/2.0/delete-a-conversation.mdx | 1 + sdk/ios/2.0/delete-a-group.mdx | 1 + sdk/ios/2.0/delete-a-message.mdx | 1 + sdk/ios/2.0/delivery-read-receipts.mdx | 1 + sdk/ios/2.0/direct-calling1.mdx | 1 + sdk/ios/2.0/edit-a-message.mdx | 1 + sdk/ios/2.0/extensions.mdx | 1 + sdk/ios/2.0/groups.mdx | 1 + .../2.0/increment-app-icon-badge-count.mdx | 1 + sdk/ios/2.0/join-a-group.mdx | 1 + sdk/ios/2.0/key-concepts.mdx | 1 + sdk/ios/2.0/kick-member-from-a-group.mdx | 1 + ...all-screen-on-tap-of-push-notification.mdx | 1 + .../launch-chat-window-push-notification.mdx | 1 + sdk/ios/2.0/leave-a-group.mdx | 1 + sdk/ios/2.0/login-listeners.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + sdk/ios/2.0/messaging.mdx | 1 + sdk/ios/2.0/overview.mdx | 1 + sdk/ios/2.0/publishing-app-on-appstore.mdx | 1 + sdk/ios/2.0/rate-limits.mdx | 1 + sdk/ios/2.0/receive-a-message.mdx | 1 + .../2.0/remove-delivered-notifications.mdx | 1 + sdk/ios/2.0/resources.mdx | 1 + sdk/ios/2.0/retrieve-conversations.mdx | 1 + sdk/ios/2.0/retrieve-group-members.mdx | 1 + sdk/ios/2.0/retrieve-groups.mdx | 1 + sdk/ios/2.0/retrieve-users.mdx | 1 + sdk/ios/2.0/send-a-message.mdx | 1 + sdk/ios/2.0/setup.mdx | 1 + sdk/ios/2.0/threaded-messages.mdx | 1 + sdk/ios/2.0/transfer-group-ownership.mdx | 1 + sdk/ios/2.0/typing-indicators.mdx | 1 + sdk/ios/2.0/update-a-group.mdx | 1 + sdk/ios/2.0/upgrading-from-v1.mdx | 1 + sdk/ios/2.0/user-management.mdx | 1 + sdk/ios/2.0/user-presence.mdx | 1 + sdk/ios/2.0/users.mdx | 1 + sdk/ios/2.0/webhooks.mdx | 1 + sdk/ios/3.0/add-members-to-a-group.mdx | 1 + sdk/ios/3.0/additional-message-filtering.mdx | 1 + sdk/ios/3.0/advanced.mdx | 1 + .../3.0/all-real-time-delegates-listeners.mdx | 1 + sdk/ios/3.0/authentication.mdx | 1 + sdk/ios/3.0/block-users.mdx | 1 + sdk/ios/3.0/bots.mdx | 1 + sdk/ios/3.0/calling-v3.mdx | 1 + sdk/ios/3.0/calling.mdx | 1 + sdk/ios/3.0/change-member-scope.mdx | 1 + sdk/ios/3.0/connection-status.mdx | 1 + sdk/ios/3.0/create-a-group.mdx | 1 + sdk/ios/3.0/default-calling.mdx | 1 + sdk/ios/3.0/default-calling1.mdx | 1 + sdk/ios/3.0/delete-a-conversation.mdx | 1 + sdk/ios/3.0/delete-a-group.mdx | 1 + sdk/ios/3.0/delete-a-message.mdx | 1 + sdk/ios/3.0/delivery-read-receipts.mdx | 1 + sdk/ios/3.0/direct-calling.mdx | 1 + sdk/ios/3.0/direct-calling1.mdx | 1 + sdk/ios/3.0/edit-a-message.mdx | 1 + sdk/ios/3.0/extensions-overview.mdx | 1 + sdk/ios/3.0/groups.mdx | 1 + .../3.0/increment-app-icon-badge-count.mdx | 1 + sdk/ios/3.0/integration.mdx | 1 + sdk/ios/3.0/join-a-group.mdx | 1 + sdk/ios/3.0/key-concepts.mdx | 1 + sdk/ios/3.0/kick-member-from-a-group.mdx | 1 + ...all-screen-on-tap-of-push-notification.mdx | 1 + .../launch-chat-window-push-notification.mdx | 1 + sdk/ios/3.0/leave-a-group.mdx | 1 + sdk/ios/3.0/login-listeners.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + sdk/ios/3.0/messaging.mdx | 1 + sdk/ios/3.0/overview.mdx | 1 + ...repare-your-app-for-background-updates.mdx | 1 + sdk/ios/3.0/presenter-mode.mdx | 1 + sdk/ios/3.0/publishing-app-on-appstore.mdx | 1 + sdk/ios/3.0/rate-limits.mdx | 1 + sdk/ios/3.0/receive-a-message.mdx | 1 + sdk/ios/3.0/recording.mdx | 1 + sdk/ios/3.0/recording1.mdx | 1 + .../3.0/remove-delivered-notifications.mdx | 1 + sdk/ios/3.0/resources.mdx | 1 + sdk/ios/3.0/retrieve-conversations.mdx | 1 + sdk/ios/3.0/retrieve-group-members.mdx | 1 + sdk/ios/3.0/retrieve-groups.mdx | 1 + sdk/ios/3.0/retrieve-users.mdx | 1 + sdk/ios/3.0/send-a-message.mdx | 1 + sdk/ios/3.0/setup.mdx | 1 + sdk/ios/3.0/threaded-messages.mdx | 1 + sdk/ios/3.0/transfer-group-ownership.mdx | 1 + sdk/ios/3.0/transient-messages.mdx | 1 + sdk/ios/3.0/typing-indicators.mdx | 1 + sdk/ios/3.0/update-a-group.mdx | 1 + sdk/ios/3.0/upgrading-from-v2.mdx | 1 + sdk/ios/3.0/user-management.mdx | 1 + sdk/ios/3.0/user-presence.mdx | 1 + sdk/ios/3.0/users.mdx | 1 + sdk/ios/3.0/video-view-customisation.mdx | 1 + sdk/ios/3.0/video-view-customisation1.mdx | 1 + sdk/ios/3.0/webhooks.mdx | 1 + sdk/ios/additional-message-filtering.mdx | 1 + sdk/ios/advanced.mdx | 1 + sdk/ios/ai-agents.mdx | 1 + sdk/ios/ai-chatbots-overview.mdx | 1 + sdk/ios/ai-moderation.mdx | 1 + sdk/ios/ai-user-copilot-overview.mdx | 1 + sdk/ios/all-real-time-delegates-listeners.mdx | 1 + sdk/ios/authentication-overview.mdx | 1 + sdk/ios/block-users.mdx | 1 + sdk/ios/call-logs.mdx | 1 + sdk/ios/calling-overview.mdx | 1 + sdk/ios/calling-setup.mdx | 1 + sdk/ios/changelog.mdx | 1 + sdk/ios/connection-status.mdx | 1 + sdk/ios/create-group.mdx | 1 + sdk/ios/default-calling.mdx | 1 + sdk/ios/delete-conversation.mdx | 1 + sdk/ios/delete-group.mdx | 1 + sdk/ios/delete-message.mdx | 1 + sdk/ios/delivery-read-receipts.mdx | 1 + sdk/ios/direct-calling.mdx | 1 + sdk/ios/edit-message.mdx | 1 + sdk/ios/extensions-overview.mdx | 1 + sdk/ios/flag-message.mdx | 1 + sdk/ios/group-add-members.mdx | 1 + sdk/ios/group-change-member-scope.mdx | 1 + sdk/ios/group-kick-member.mdx | 1 + sdk/ios/groups-overview.mdx | 1 + sdk/ios/increment-app-icon-badge-count.mdx | 1 + sdk/ios/interactive-messages.mdx | 1 + sdk/ios/ios-overview.mdx | 1 + sdk/ios/join-group.mdx | 1 + sdk/ios/key-concepts.mdx | 1 + ...all-screen-on-tap-of-push-notification.mdx | 1 + ...hat-window-on-tap-of-push-notification.mdx | 1 + sdk/ios/leave-group.mdx | 1 + sdk/ios/login-listeners.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + ...rking-delivered-with-push-notification.mdx | 1 + sdk/ios/mentions.mdx | 1 + sdk/ios/message-structure-and-hierarchy.mdx | 1 + sdk/ios/messaging-overview.mdx | 1 + sdk/ios/overview.mdx | 1 + ...repare-your-app-for-background-updates.mdx | 1 + sdk/ios/presenter-mode.mdx | 1 + sdk/ios/publishing-app-on-appstore.mdx | 1 + sdk/ios/rate-limits.mdx | 1 + sdk/ios/reactions.mdx | 1 + sdk/ios/receive-message.mdx | 1 + sdk/ios/recording.mdx | 1 + sdk/ios/remove-delivered-notifications.mdx | 1 + sdk/ios/resources-overview.mdx | 1 + sdk/ios/retrieve-conversations.mdx | 1 + sdk/ios/retrieve-group-members.mdx | 1 + sdk/ios/retrieve-groups.mdx | 1 + sdk/ios/retrieve-users.mdx | 1 + sdk/ios/send-message.mdx | 1 + sdk/ios/session-timeout.mdx | 1 + sdk/ios/setup.mdx | 1 + sdk/ios/standalone-calling.mdx | 1 + sdk/ios/threaded-messages.mdx | 1 + sdk/ios/transfer-group-ownership.mdx | 1 + sdk/ios/transient-messages.mdx | 1 + sdk/ios/typing-indicators.mdx | 1 + sdk/ios/update-group.mdx | 1 + sdk/ios/upgrading-from-v2.mdx | 1 + sdk/ios/upgrading-from-v3-to-v4.mdx | 1 + sdk/ios/user-management.mdx | 1 + sdk/ios/user-presence.mdx | 1 + sdk/ios/users-overview.mdx | 1 + sdk/ios/video-view-customisation.mdx | 1 + sdk/ios/web-socket-connection-behaviour.mdx | 1 + sdk/ios/webhooks-overview.mdx | 1 + .../2.0/advanced-connection-listeners.mdx | 3 +- sdk/javascript/2.0/advanced.mdx | 1 + .../2.0/authentication-login-listeners.mdx | 1 + sdk/javascript/2.0/authentication.mdx | 1 + sdk/javascript/2.0/bots.mdx | 1 + sdk/javascript/2.0/calling-custom-css.mdx | 1 + .../2.0/calling-default-calling.mdx | 1 + sdk/javascript/2.0/calling-direct-calling.mdx | 1 + sdk/javascript/2.0/calling-recording.mdx | 1 + sdk/javascript/2.0/calling.mdx | 1 + .../2.0/groups-add-members-to-group.mdx | 1 + .../2.0/groups-change-member-scope.mdx | 1 + sdk/javascript/2.0/groups-create-group.mdx | 1 + sdk/javascript/2.0/groups-delete-group.mdx | 1 + sdk/javascript/2.0/groups-join-group.mdx | 1 + .../2.0/groups-kick-ban-members.mdx | 1 + sdk/javascript/2.0/groups-leave-group.mdx | 1 + .../2.0/groups-retrieve-group-members.mdx | 1 + sdk/javascript/2.0/groups-retrieve-groups.mdx | 1 + .../2.0/groups-transfer-group-ownership.mdx | 1 + sdk/javascript/2.0/groups-update-group.mdx | 1 + sdk/javascript/2.0/groups.mdx | 1 + sdk/javascript/2.0/key-concepts.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../2.0/messaging-delete-conversation.mdx | 1 + .../2.0/messaging-delete-message.mdx | 1 + sdk/javascript/2.0/messaging-edit-message.mdx | 1 + sdk/javascript/2.0/messaging-receipts.mdx | 1 + .../2.0/messaging-receive-message.mdx | 1 + .../2.0/messaging-retrieve-conversations.mdx | 1 + sdk/javascript/2.0/messaging-send-message.mdx | 1 + .../2.0/messaging-typing-indicators.mdx | 1 + sdk/javascript/2.0/messaging.mdx | 1 + sdk/javascript/2.0/overview.mdx | 1 + sdk/javascript/2.0/rate-limits.mdx | 1 + .../2.0/resources-all-real-time-listeners.mdx | 1 + .../2.0/resources-upgrading-from-v1.mdx | 1 + sdk/javascript/2.0/resources.mdx | 1 + sdk/javascript/2.0/setup.mdx | 1 + sdk/javascript/2.0/threaded-messages.mdx | 1 + sdk/javascript/2.0/user-presence.mdx | 5 ++- sdk/javascript/2.0/users-block-users.mdx | 1 + sdk/javascript/2.0/users-retrieve-users.mdx | 1 + sdk/javascript/2.0/users-user-management.mdx | 1 + sdk/javascript/2.0/users.mdx | 1 + sdk/javascript/2.0/webhooks.mdx | 1 + .../3.0/advanced-connection-listeners.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + sdk/javascript/3.0/advanced.mdx | 1 + sdk/javascript/3.0/angular-3-0-overview.mdx | 1 + .../3.0/authentication-login-listeners.mdx | 1 + sdk/javascript/3.0/authentication.mdx | 1 + sdk/javascript/3.0/bots.mdx | 1 + sdk/javascript/3.0/calling-custom-css.mdx | 1 + .../3.0/calling-default-calling.mdx | 43 ++++++++++--------- sdk/javascript/3.0/calling-direct-calling.mdx | 25 +++++------ sdk/javascript/3.0/calling-recording-v3.mdx | 1 + sdk/javascript/3.0/calling-recording.mdx | 13 +++--- sdk/javascript/3.0/calling-v3.mdx | 1 + sdk/javascript/3.0/calling.mdx | 1 + sdk/javascript/3.0/extensions-overview.mdx | 1 + .../3.0/groups-add-members-to-group.mdx | 1 + .../3.0/groups-change-member-scope.mdx | 1 + sdk/javascript/3.0/groups-create-group.mdx | 1 + sdk/javascript/3.0/groups-delete-group.mdx | 1 + sdk/javascript/3.0/groups-join-group.mdx | 1 + .../3.0/groups-kick-ban-members.mdx | 1 + sdk/javascript/3.0/groups-leave-group.mdx | 1 + .../3.0/groups-retrieve-group-members.mdx | 1 + sdk/javascript/3.0/groups-retrieve-groups.mdx | 1 + .../3.0/groups-transfer-group-ownership.mdx | 1 + sdk/javascript/3.0/groups-update-group.mdx | 1 + sdk/javascript/3.0/groups.mdx | 1 + sdk/javascript/3.0/key-concepts.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../3.0/messaging-delete-conversation.mdx | 1 + .../3.0/messaging-delete-message.mdx | 1 + sdk/javascript/3.0/messaging-edit-message.mdx | 1 + sdk/javascript/3.0/messaging-receipts.mdx | 1 + .../3.0/messaging-receive-message.mdx | 1 + .../3.0/messaging-retrieve-conversations.mdx | 1 + sdk/javascript/3.0/messaging-send-message.mdx | 1 + .../3.0/messaging-transient-messages.mdx | 1 + .../3.0/messaging-typing-indicators.mdx | 1 + sdk/javascript/3.0/messaging.mdx | 1 + sdk/javascript/3.0/overview.mdx | 1 + sdk/javascript/3.0/presenter-mode.mdx | 1 + sdk/javascript/3.0/rate-limits.mdx | 1 + sdk/javascript/3.0/react-v3-overview.mdx | 1 + .../3.0/resources-all-real-time-listeners.mdx | 1 + .../3.0/resources-upgrading-from-v2.mdx | 1 + sdk/javascript/3.0/resources.mdx | 1 + sdk/javascript/3.0/setup.mdx | 1 + sdk/javascript/3.0/threaded-messages.mdx | 1 + sdk/javascript/3.0/user-presence.mdx | 1 + sdk/javascript/3.0/users-block-users.mdx | 1 + sdk/javascript/3.0/users-retrieve-users.mdx | 1 + sdk/javascript/3.0/users-user-management.mdx | 1 + sdk/javascript/3.0/users.mdx | 1 + sdk/javascript/3.0/v3-default-call.mdx | 1 + sdk/javascript/3.0/v3-direct-calling.mdx | 1 + sdk/javascript/3.0/v3-setup.mdx | 1 + .../3.0/video-view-customisation-v3.mdx | 1 + .../3.0/video-view-customisation.mdx | 1 + sdk/javascript/3.0/virtual-background-v3.mdx | 1 + sdk/javascript/3.0/virtual-background.mdx | 1 + sdk/javascript/3.0/vue-3-0-overview.mdx | 1 + sdk/javascript/3.0/webhooks.mdx | 1 + .../additional-message-filtering.mdx | 1 + sdk/javascript/advanced-overview.mdx | 1 + sdk/javascript/ai-agents.mdx | 1 + sdk/javascript/ai-chatbots-overview.mdx | 1 + sdk/javascript/ai-moderation.mdx | 1 + sdk/javascript/ai-user-copilot-overview.mdx | 1 + sdk/javascript/all-real-time-listeners.mdx | 1 + sdk/javascript/angular-overview.mdx | 1 + sdk/javascript/authentication-overview.mdx | 1 + sdk/javascript/block-users.mdx | 1 + sdk/javascript/call-logs.mdx | 1 + sdk/javascript/calling-overview.mdx | 1 + sdk/javascript/calling-setup.mdx | 1 + sdk/javascript/changelog.mdx | 1 + sdk/javascript/connection-status.mdx | 1 + sdk/javascript/create-group.mdx | 1 + sdk/javascript/custom-css.mdx | 1 + sdk/javascript/default-call.mdx | 1 + sdk/javascript/delete-conversation.mdx | 1 + sdk/javascript/delete-group.mdx | 1 + sdk/javascript/delete-message.mdx | 1 + sdk/javascript/delivery-read-receipts.mdx | 1 + sdk/javascript/direct-call.mdx | 1 + sdk/javascript/edit-message.mdx | 1 + sdk/javascript/extensions-overview.mdx | 1 + sdk/javascript/flag-message.mdx | 1 + sdk/javascript/group-add-members.mdx | 1 + sdk/javascript/group-change-member-scope.mdx | 1 + sdk/javascript/group-kick-ban-members.mdx | 1 + sdk/javascript/groups-overview.mdx | 1 + sdk/javascript/interactive-messages.mdx | 1 + sdk/javascript/join-group.mdx | 1 + sdk/javascript/key-concepts.mdx | 1 + sdk/javascript/leave-group.mdx | 1 + sdk/javascript/login-listener.mdx | 1 + ...aging-web-sockets-connections-manually.mdx | 1 + sdk/javascript/mentions.mdx | 1 + .../message-structure-and-hierarchy.mdx | 1 + sdk/javascript/messaging-overview.mdx | 1 + sdk/javascript/overview.mdx | 1 + sdk/javascript/presenter-mode.mdx | 1 + sdk/javascript/rate-limits.mdx | 1 + sdk/javascript/react-overview.mdx | 1 + sdk/javascript/reactions.mdx | 1 + sdk/javascript/receive-message.mdx | 1 + sdk/javascript/recording.mdx | 1 + sdk/javascript/resources-overview.mdx | 1 + sdk/javascript/retrieve-conversations.mdx | 1 + sdk/javascript/retrieve-group-members.mdx | 1 + sdk/javascript/retrieve-groups.mdx | 1 + sdk/javascript/retrieve-users.mdx | 1 + sdk/javascript/send-message.mdx | 1 + sdk/javascript/session-timeout.mdx | 1 + sdk/javascript/setup-sdk.mdx | 1 + sdk/javascript/standalone-calling.mdx | 1 + sdk/javascript/threaded-messages.mdx | 1 + sdk/javascript/transfer-group-ownership.mdx | 1 + sdk/javascript/transient-messages.mdx | 1 + sdk/javascript/typing-indicators.mdx | 1 + sdk/javascript/update-group.mdx | 1 + sdk/javascript/upgrading-from-v3.mdx | 1 + sdk/javascript/user-management.mdx | 1 + sdk/javascript/user-presence.mdx | 5 ++- sdk/javascript/users-overview.mdx | 1 + sdk/javascript/vue-overview.mdx | 1 + sdk/javascript/webhooks-overview.mdx | 1 + .../2.0/advanced-connection-listener.mdx | 1 + sdk/react-native/2.0/advanced.mdx | 1 + .../2.0/authentication-login-listeners.mdx | 1 + sdk/react-native/2.0/authentication.mdx | 1 + sdk/react-native/2.0/bots.mdx | 1 + .../2.0/calling-default-calling.mdx | 1 + .../2.0/calling-direct-calling.mdx | 1 + sdk/react-native/2.0/calling.mdx | 1 + .../2.0/groups-add-members-to-group.mdx | 1 + .../2.0/groups-change-member-scope.mdx | 1 + sdk/react-native/2.0/groups-create-group.mdx | 1 + sdk/react-native/2.0/groups-delete-group.mdx | 1 + sdk/react-native/2.0/groups-join-group.mdx | 1 + .../2.0/groups-kick-ban-members.mdx | 1 + sdk/react-native/2.0/groups-leave-group.mdx | 1 + .../2.0/groups-retrieve-group-members.mdx | 1 + .../2.0/groups-retrieve-groups.mdx | 1 + .../2.0/groups-transfer-group-ownership.mdx | 1 + sdk/react-native/2.0/groups-update-group.mdx | 1 + sdk/react-native/2.0/groups.mdx | 1 + sdk/react-native/2.0/key-concepts.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../2.0/messaging-delete-conversation.mdx | 1 + .../2.0/messaging-delete-message.mdx | 1 + .../2.0/messaging-edit-message.mdx | 1 + sdk/react-native/2.0/messaging-receipts.mdx | 1 + .../2.0/messaging-receive-messages.mdx | 1 + .../2.0/messaging-retrieve-conversations.mdx | 1 + .../2.0/messaging-send-message.mdx | 1 + .../2.0/messaging-typing-indicators.mdx | 1 + sdk/react-native/2.0/messaging.mdx | 1 + sdk/react-native/2.0/overview.mdx | 1 + sdk/react-native/2.0/rate-limits.mdx | 1 + .../2.0/resources-all-real-time-listeners.mdx | 1 + .../2.0/resources-push-notification-setup.mdx | 1 + .../2.0/resources-upgrading-from-v1.mdx | 1 + sdk/react-native/2.0/resources.mdx | 1 + sdk/react-native/2.0/setup.mdx | 1 + sdk/react-native/2.0/threaded-messages.mdx | 1 + sdk/react-native/2.0/user-presence.mdx | 1 + sdk/react-native/2.0/users-block-users.mdx | 1 + sdk/react-native/2.0/users-retrieve-users.mdx | 1 + .../2.0/users-user-management.mdx | 1 + sdk/react-native/2.0/users.mdx | 1 + sdk/react-native/2.0/webhooks.mdx | 1 + .../3.0/advanced-connection-listener.mdx | 1 + sdk/react-native/3.0/advanced.mdx | 1 + .../3.0/authentication-login-listeners.mdx | 1 + sdk/react-native/3.0/authentication.mdx | 1 + sdk/react-native/3.0/bots.mdx | 1 + .../3.0/calling-default-calling.mdx | 1 + .../3.0/calling-direct-calling.mdx | 1 + sdk/react-native/3.0/calling-recording.mdx | 1 + sdk/react-native/3.0/calling-v3.mdx | 1 + sdk/react-native/3.0/calling.mdx | 1 + sdk/react-native/3.0/extensions-overview.mdx | 1 + .../3.0/groups-add-members-to-group.mdx | 1 + .../3.0/groups-change-member-scope.mdx | 1 + sdk/react-native/3.0/groups-create-group.mdx | 1 + sdk/react-native/3.0/groups-delete-group.mdx | 1 + sdk/react-native/3.0/groups-join-group.mdx | 1 + .../3.0/groups-kick-ban-members.mdx | 1 + sdk/react-native/3.0/groups-leave-group.mdx | 1 + .../3.0/groups-retrieve-group-members.mdx | 1 + .../3.0/groups-retrieve-groups.mdx | 1 + .../3.0/groups-transfer-group-ownership.mdx | 1 + sdk/react-native/3.0/groups-update-group.mdx | 1 + sdk/react-native/3.0/groups.mdx | 1 + sdk/react-native/3.0/key-concepts.mdx | 1 + ...naging-web-socket-connections-manually.mdx | 1 + .../3.0/message-structure-and-hierarchy.mdx | 1 + ...messaging-additional-message-filtering.mdx | 1 + .../3.0/messaging-delete-conversation.mdx | 1 + .../3.0/messaging-delete-message.mdx | 1 + .../3.0/messaging-edit-message.mdx | 1 + sdk/react-native/3.0/messaging-receipts.mdx | 1 + .../3.0/messaging-receive-messages.mdx | 1 + .../3.0/messaging-retrieve-conversations.mdx | 1 + .../3.0/messaging-send-message.mdx | 1 + .../3.0/messaging-typing-indicators.mdx | 1 + sdk/react-native/3.0/messaging.mdx | 1 + sdk/react-native/3.0/overview.mdx | 1 + sdk/react-native/3.0/presenter-mode.mdx | 1 + sdk/react-native/3.0/rate-limits.mdx | 1 + .../3.0/react-native-3-0-overview.mdx | 1 + sdk/react-native/3.0/recording-beta-v3.mdx | 1 + .../3.0/resources-all-real-time-listeners.mdx | 1 + .../3.0/resources-push-notification-setup.mdx | 1 + .../3.0/resources-upgrading-from-v2.mdx | 1 + sdk/react-native/3.0/resources.mdx | 1 + sdk/react-native/3.0/setup.mdx | 3 +- sdk/react-native/3.0/threaded-messages.mdx | 1 + sdk/react-native/3.0/transient-messages.mdx | 1 + sdk/react-native/3.0/user-presence.mdx | 1 + sdk/react-native/3.0/users-block-users.mdx | 1 + sdk/react-native/3.0/users-retrieve-users.mdx | 1 + .../3.0/users-user-management.mdx | 1 + sdk/react-native/3.0/users.mdx | 1 + sdk/react-native/3.0/v3-default-calling.mdx | 1 + sdk/react-native/3.0/v3-direct-calling.mdx | 1 + sdk/react-native/3.0/v3-setup.mdx | 1 + .../3.0/v3-video-view-customisation.mdx | 1 + .../3.0/video-view-customisation.mdx | 1 + sdk/react-native/3.0/webhooks.mdx | 1 + sdk/react-native/ai-chatbots-overview.mdx | 1 + sdk/react-native/ai-user-copilot-overview.mdx | 1 + sdk/react-native/changelog.mdx | 1 + sdk/react-native/delivery-read-receipts.mdx | 8 ++-- sdk/react-native/extensions-overview.mdx | 1 + sdk/react-native/push-notification-setup.mdx | 1 + sdk/react-native/react-native-overview.mdx | 1 + sdk/react-native/webhooks-overview.mdx | 1 + snippets/widget/advanced-js-apis-wp.mdx | 1 + snippets/widget/advanced-js-apis.mdx | 1 + ui-kit/android/link/changelog.mdx | 1 + ui-kit/android/link/figma.mdx | 1 + ui-kit/android/link/sample.mdx | 1 + ui-kit/android/v2/android-2-0-overview.mdx | 1 + ui-kit/android/v2/customize-ui-kit.mdx | 1 + .../v2/folder-structure-android-uikit.mdx | 1 + ui-kit/android/v2/key-concepts.mdx | 1 + ui-kit/android/v2/link/sdk.mdx | 1 + .../v2/message-structure-and-hierarchy.mdx | 1 + ui-kit/android/v2/overview.mdx | 1 + ui-kit/android/v2/ui-components.mdx | 1 + .../android/v3/android-customize-ui-kit.mdx | 1 + .../android/v3/android-java-ui-components.mdx | 1 + ui-kit/android/v3/conversationlist.mdx | 1 + .../v3/folder-structure-android-uikit.mdx | 1 + ui-kit/android/v3/how-to-add-uikit-module.mdx | 1 + ui-kit/android/v3/key-concepts.mdx | 1 + ui-kit/android/v3/link/extension.mdx | 1 + ui-kit/android/v3/link/sdk.mdx | 1 + ui-kit/android/v3/link/version.mdx | 1 + ui-kit/android/v3/overview.mdx | 1 + ui-kit/android/v4/action-sheet.mdx | 1 + ui-kit/android/v4/ai-features.mdx | 1 + ui-kit/android/v4/audio-bubble.mdx | 1 + ui-kit/android/v4/avatar.mdx | 1 + ui-kit/android/v4/badge.mdx | 1 + ui-kit/android/v4/banned-members.mdx | 1 + ui-kit/android/v4/call-buttons.mdx | 1 + ui-kit/android/v4/call-features.mdx | 1 + ui-kit/android/v4/call-log-details.mdx | 1 + ui-kit/android/v4/call-log-history.mdx | 1 + ui-kit/android/v4/call-log-participants.mdx | 1 + ui-kit/android/v4/call-log-recording.mdx | 1 + ui-kit/android/v4/call-log-with-details.mdx | 1 + ui-kit/android/v4/call-logs.mdx | 1 + ui-kit/android/v4/call-overview.mdx | 1 + ui-kit/android/v4/components-overview.mdx | 1 + ui-kit/android/v4/contacts.mdx | 1 + .../v4/conversations-with-messages.mdx | 1 + ui-kit/android/v4/conversations.mdx | 1 + ui-kit/android/v4/core-features.mdx | 1 + ui-kit/android/v4/create-group.mdx | 1 + ui-kit/android/v4/date.mdx | 1 + ui-kit/android/v4/events.mdx | 1 + ui-kit/android/v4/extensions.mdx | 1 + ui-kit/android/v4/file-bubble.mdx | 1 + ui-kit/android/v4/getting-started.mdx | 1 + ui-kit/android/v4/group-add-members.mdx | 1 + ui-kit/android/v4/group-details.mdx | 1 + ui-kit/android/v4/group-members.mdx | 1 + ui-kit/android/v4/groups-with-messages.mdx | 1 + ui-kit/android/v4/groups.mdx | 1 + ui-kit/android/v4/image-bubble.mdx | 1 + ui-kit/android/v4/incoming-call.mdx | 1 + .../android/v4/interactive-action-entity.mdx | 1 + .../android/v4/interactive-button-element.mdx | 1 + ui-kit/android/v4/interactive-card-bubble.mdx | 1 + .../android/v4/interactive-card-message.mdx | 1 + .../v4/interactive-checkbox-element.mdx | 1 + .../android/v4/interactive-custom-message.mdx | 1 + .../v4/interactive-date-time-element.mdx | 1 + .../android/v4/interactive-element-entity.mdx | 1 + ui-kit/android/v4/interactive-form-bubble.mdx | 1 + .../android/v4/interactive-form-message.mdx | 1 + .../android/v4/interactive-label-element.mdx | 1 + .../v4/interactive-radio-button-element.mdx | 1 + .../v4/interactive-scheduler-message.mdx | 1 + .../v4/interactive-single-select-element.mdx | 1 + .../v4/interactive-spinner-element.mdx | 1 + .../v4/interactive-textinput-element.mdx | 1 + ui-kit/android/v4/join-protected-group.mdx | 1 + ui-kit/android/v4/link/changelog.mdx | 1 + ui-kit/android/v4/link/java.mdx | 1 + ui-kit/android/v4/link/kotlin.mdx | 1 + ui-kit/android/v4/list-base.mdx | 1 + ui-kit/android/v4/list-item.mdx | 1 + ui-kit/android/v4/localize.mdx | 1 + ui-kit/android/v4/media-recorder.mdx | 1 + .../android/v4/mentions-formatter-guide.mdx | 1 + ui-kit/android/v4/message-bubble.mdx | 1 + ui-kit/android/v4/message-composer.mdx | 1 + ui-kit/android/v4/message-header.mdx | 1 + ui-kit/android/v4/message-information.mdx | 1 + ui-kit/android/v4/message-input.mdx | 1 + ui-kit/android/v4/message-list.mdx | 1 + ui-kit/android/v4/message-template.mdx | 1 + ui-kit/android/v4/messages.mdx | 1 + ui-kit/android/v4/methods.mdx | 1 + ui-kit/android/v4/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/android/v4/ongoing-call.mdx | 1 + ui-kit/android/v4/outgoing-call.mdx | 1 + ui-kit/android/v4/overview.mdx | 1 + ui-kit/android/v4/receipt.mdx | 1 + .../android/v4/shortcut-formatter-guide.mdx | 1 + ui-kit/android/v4/sound-manager.mdx | 1 + ui-kit/android/v4/status-indicator.mdx | 1 + ui-kit/android/v4/text-bubble.mdx | 1 + ui-kit/android/v4/theme.mdx | 1 + ui-kit/android/v4/threaded-messages.mdx | 1 + ui-kit/android/v4/transfer-ownership.mdx | 1 + ui-kit/android/v4/users-with-messages.mdx | 1 + ui-kit/android/v4/users.mdx | 1 + ui-kit/android/v4/video-bubble.mdx | 1 + .../angular/2.0/javascript-2-0-overview.mdx | 1 + ui-kit/angular/2.0/key-concepts.mdx | 1 + ui-kit/angular/2.0/link/sdk.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ui-kit/angular/2.0/overview.mdx | 1 + ui-kit/angular/2.0/ui-components.mdx | 1 + .../angular/3.0/javascript-3-0-overview.mdx | 1 + ui-kit/angular/3.0/key-concepts.mdx | 1 + ui-kit/angular/3.0/link/extension.mdx | 1 + ui-kit/angular/3.0/link/version.mdx | 1 + ui-kit/angular/3.0/overview.mdx | 1 + ui-kit/angular/3.0/ui-components.mdx | 1 + ui-kit/angular/action-sheet.mdx | 1 + ui-kit/angular/ai-features.mdx | 1 + ui-kit/angular/audio-bubble.mdx | 1 + ui-kit/angular/avatar.mdx | 1 + ui-kit/angular/backdrop.mdx | 1 + ui-kit/angular/badge.mdx | 1 + ui-kit/angular/button-group.mdx | 1 + ui-kit/angular/call-buttons.mdx | 1 + ui-kit/angular/call-features.mdx | 1 + ui-kit/angular/call-log-details.mdx | 1 + ui-kit/angular/call-log-history.mdx | 1 + ui-kit/angular/call-log-participants.mdx | 1 + ui-kit/angular/call-log-recording.mdx | 1 + ui-kit/angular/call-log-with-details.mdx | 1 + ui-kit/angular/call-logs.mdx | 1 + ui-kit/angular/call-overview.mdx | 1 + ui-kit/angular/checkbox.mdx | 1 + ui-kit/angular/cometchat-quick-view.mdx | 1 + ui-kit/angular/components-overview.mdx | 1 + ui-kit/angular/confirm-dialog.mdx | 1 + ui-kit/angular/contacts.mdx | 1 + .../angular/conversations-with-messages.mdx | 1 + ui-kit/angular/conversations.mdx | 1 + ui-kit/angular/core-features.mdx | 1 + ui-kit/angular/create-group.mdx | 1 + ui-kit/angular/custom-message-guide.mdx | 1 + .../angular/custom-text-formatter-guide.mdx | 1 + ui-kit/angular/date.mdx | 1 + ui-kit/angular/document-bubble.mdx | 1 + ui-kit/angular/dropdown.mdx | 1 + ui-kit/angular/emoji-keyboard.mdx | 1 + ui-kit/angular/events.mdx | 1 + ui-kit/angular/extensions.mdx | 1 + ui-kit/angular/file-bubble.mdx | 1 + ui-kit/angular/getting-started.mdx | 1 + ui-kit/angular/group-add-members.mdx | 1 + ui-kit/angular/group-banned-members.mdx | 1 + ui-kit/angular/group-details.mdx | 1 + ui-kit/angular/group-members.mdx | 1 + ui-kit/angular/group-transfer-ownership.mdx | 1 + ui-kit/angular/groups-with-messages.mdx | 1 + ui-kit/angular/groups.mdx | 1 + ui-kit/angular/icon-button.mdx | 1 + ui-kit/angular/icon.mdx | 1 + ui-kit/angular/image-bubble.mdx | 1 + ui-kit/angular/incoming-call.mdx | 1 + ui-kit/angular/input.mdx | 1 + ui-kit/angular/interactive-action-entity.mdx | 1 + ui-kit/angular/interactive-button-element.mdx | 1 + ui-kit/angular/interactive-card-bubble.mdx | 1 + ui-kit/angular/interactive-card-message.mdx | 1 + .../angular/interactive-checkbox-element.mdx | 1 + ...interactive-custom-interactive-message.mdx | 1 + .../interactive-date-time-picker-element.mdx | 1 + .../angular/interactive-dropdown-element.mdx | 1 + ui-kit/angular/interactive-element-type.mdx | 1 + ui-kit/angular/interactive-form-bubble.mdx | 1 + ui-kit/angular/interactive-form-message.mdx | 1 + ui-kit/angular/interactive-label-element.mdx | 1 + .../interactive-radio-button-element.mdx | 1 + .../angular/interactive-scheduler-bubble.mdx | 1 + .../angular/interactive-scheduler-message.mdx | 1 + .../interactive-single-select-element.mdx | 1 + .../interactive-text-input-element.mdx | 1 + ui-kit/angular/join-protected-group.mdx | 1 + ui-kit/angular/label.mdx | 1 + ui-kit/angular/link/changelog.mdx | 1 + ui-kit/angular/link/sample.mdx | 1 + ui-kit/angular/list-item.mdx | 1 + ui-kit/angular/list.mdx | 1 + ui-kit/angular/loader.mdx | 1 + ui-kit/angular/localize.mdx | 1 + ui-kit/angular/media-recorder.mdx | 1 + ui-kit/angular/mentions-formatter-guide.mdx | 1 + ui-kit/angular/message-bubble.mdx | 1 + ui-kit/angular/message-composer.mdx | 1 + ui-kit/angular/message-header.mdx | 1 + ui-kit/angular/message-information.mdx | 1 + ui-kit/angular/message-input.mdx | 1 + ui-kit/angular/message-list.mdx | 1 + ui-kit/angular/message-template.mdx | 1 + ui-kit/angular/messages.mdx | 1 + ui-kit/angular/methods.mdx | 1 + ui-kit/angular/modal.mdx | 1 + ui-kit/angular/multi-tab-chat-ui-guide.mdx | 1 + .../angular/new-attachment-option-guide.mdx | 1 + ui-kit/angular/new-message-option-guide.mdx | 1 + ui-kit/angular/ongoing-call.mdx | 1 + ui-kit/angular/outgoing-call.mdx | 1 + ui-kit/angular/overview.mdx | 1 + ui-kit/angular/pop-over.mdx | 1 + ui-kit/angular/radio-button.mdx | 1 + ui-kit/angular/reaction-info.mdx | 1 + ui-kit/angular/reaction-list.mdx | 1 + ui-kit/angular/reaction.mdx | 1 + ui-kit/angular/receipt.mdx | 1 + ui-kit/angular/search-input.mdx | 1 + ui-kit/angular/shortcut-formatter-guide.mdx | 1 + ui-kit/angular/singleselect.mdx | 1 + ui-kit/angular/sound-manager.mdx | 1 + ui-kit/angular/status-indicator.mdx | 1 + ui-kit/angular/text-bubble.mdx | 1 + ui-kit/angular/theme.mdx | 1 + ui-kit/angular/threaded-messages.mdx | 1 + ui-kit/angular/url-formatter-guide.mdx | 1 + ui-kit/angular/user-details.mdx | 1 + ui-kit/angular/user-member-wrapper.mdx | 1 + ui-kit/angular/users-with-messages.mdx | 1 + ui-kit/angular/users.mdx | 1 + ui-kit/angular/v5/overview.mdx | 1 + ui-kit/angular/video-bubble.mdx | 1 + ui-kit/flutter/link/changelog.mdx | 1 + ui-kit/flutter/link/sample.mdx | 1 + ui-kit/flutter/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/flutter/upgrading-from-v4.mdx | 1 + ui-kit/flutter/v4/action-sheet.mdx | 1 + ui-kit/flutter/v4/ai-features.mdx | 1 + ui-kit/flutter/v4/audio-bubble.mdx | 1 + ui-kit/flutter/v4/avatar.mdx | 1 + ui-kit/flutter/v4/badge.mdx | 1 + ui-kit/flutter/v4/button.mdx | 1 + ui-kit/flutter/v4/call-bubble.mdx | 1 + ui-kit/flutter/v4/call-buttons.mdx | 1 + ui-kit/flutter/v4/call-features.mdx | 1 + ui-kit/flutter/v4/call-log-details.mdx | 1 + ui-kit/flutter/v4/call-log-history.mdx | 1 + ui-kit/flutter/v4/call-log-participants.mdx | 1 + ui-kit/flutter/v4/call-log-recording.mdx | 1 + ui-kit/flutter/v4/call-log-with-details.mdx | 1 + ui-kit/flutter/v4/call-logs.mdx | 1 + ui-kit/flutter/v4/call-overview.mdx | 1 + ui-kit/flutter/v4/card.mdx | 1 + ui-kit/flutter/v4/components-overview.mdx | 1 + ui-kit/flutter/v4/confirm-dialog.mdx | 1 + ui-kit/flutter/v4/contacts.mdx | 1 + .../v4/conversations-with-messages.mdx | 1 + ui-kit/flutter/v4/conversations.mdx | 1 + ui-kit/flutter/v4/core-features.mdx | 1 + ui-kit/flutter/v4/create-group.mdx | 1 + ui-kit/flutter/v4/date.mdx | 1 + ui-kit/flutter/v4/emoji-keyboard.mdx | 1 + ui-kit/flutter/v4/events.mdx | 1 + ui-kit/flutter/v4/extensions.mdx | 1 + ui-kit/flutter/v4/file-bubble.mdx | 1 + ui-kit/flutter/v4/getting-started.mdx | 1 + ui-kit/flutter/v4/group-add-members.mdx | 1 + ui-kit/flutter/v4/group-banned-members.mdx | 1 + ui-kit/flutter/v4/group-details.mdx | 1 + ui-kit/flutter/v4/group-members.mdx | 1 + .../flutter/v4/group-transfer-ownership.mdx | 1 + ui-kit/flutter/v4/groups-with-messages.mdx | 1 + ui-kit/flutter/v4/groups.mdx | 1 + ui-kit/flutter/v4/image-bubble.mdx | 1 + ui-kit/flutter/v4/incoming-call.mdx | 1 + .../flutter/v4/interactive-action-entity.mdx | 1 + .../flutter/v4/interactive-button-element.mdx | 1 + ui-kit/flutter/v4/interactive-card-bubble.mdx | 1 + .../flutter/v4/interactive-card-message.mdx | 1 + .../v4/interactive-check-box-element.mdx | 1 + .../interactive-date-time-picker-element.mdx | 1 + .../v4/interactive-dropdown-element.mdx | 1 + .../flutter/v4/interactive-element-entity.mdx | 1 + ui-kit/flutter/v4/interactive-form-bubble.mdx | 1 + .../flutter/v4/interactive-form-message.mdx | 1 + .../flutter/v4/interactive-label-element.mdx | 1 + .../v4/interactive-radio-button-element.mdx | 1 + .../v4/interactive-scheduler-bubble.mdx | 1 + .../v4/interactive-scheduler-message.mdx | 1 + .../v4/interactive-textinput-element.mdx | 1 + ui-kit/flutter/v4/join-protected-group.mdx | 1 + ui-kit/flutter/v4/list-base.mdx | 1 + ui-kit/flutter/v4/list-item.mdx | 1 + ui-kit/flutter/v4/localize.mdx | 1 + ui-kit/flutter/v4/media-recorder.mdx | 1 + .../flutter/v4/mentions-formatter-guide.mdx | 1 + ui-kit/flutter/v4/message-bubble.mdx | 1 + ui-kit/flutter/v4/message-composer.mdx | 1 + ui-kit/flutter/v4/message-header.mdx | 1 + ui-kit/flutter/v4/message-information.mdx | 1 + ui-kit/flutter/v4/message-input.mdx | 1 + ui-kit/flutter/v4/message-list.mdx | 1 + ui-kit/flutter/v4/message-template.mdx | 1 + ui-kit/flutter/v4/messages.mdx | 1 + ui-kit/flutter/v4/methods.mdx | 1 + ui-kit/flutter/v4/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/flutter/v4/ongoing-call.mdx | 1 + ui-kit/flutter/v4/outgoing-call.mdx | 1 + ui-kit/flutter/v4/overview.mdx | 1 + ui-kit/flutter/v4/quick-view.mdx | 1 + ui-kit/flutter/v4/reactions-list.mdx | 1 + ui-kit/flutter/v4/reactions.mdx | 1 + ui-kit/flutter/v4/receipt.mdx | 1 + .../flutter/v4/shortcut-formatter-guide.mdx | 1 + ui-kit/flutter/v4/single-select.mdx | 1 + ui-kit/flutter/v4/sound-manager.mdx | 1 + ui-kit/flutter/v4/status-indicator.mdx | 1 + ui-kit/flutter/v4/text-bubble.mdx | 1 + ui-kit/flutter/v4/theme.mdx | 1 + ui-kit/flutter/v4/threaded-messages.mdx | 1 + ui-kit/flutter/v4/user-details.mdx | 1 + ui-kit/flutter/v4/users-with-messages.mdx | 1 + ui-kit/flutter/v4/users.mdx | 1 + ui-kit/flutter/v4/video-bubble.mdx | 1 + ui-kit/ios/compact-message-composer.mdx | 1 + ui-kit/ios/link/changelog.mdx | 1 + ui-kit/ios/link/figma.mdx | 1 + ui-kit/ios/link/sample.mdx | 1 + ui-kit/ios/v2/ios-2-0-overview.mdx | 1 + ui-kit/ios/v2/ios-customize-ui-kit.mdx | 1 + ui-kit/ios/v2/key-concepts.mdx | 1 + .../v2/message-structure-and-hierarchy.mdx | 1 + ui-kit/ios/v2/overview.mdx | 1 + ui-kit/ios/v2/ui-components.mdx | 1 + ui-kit/ios/v3/customize-ui-kit.mdx | 1 + ui-kit/ios/v3/ios-3-0-overview.mdx | 1 + ui-kit/ios/v3/ios-ui-components.mdx | 1 + ui-kit/ios/v3/key-concepts.mdx | 1 + ui-kit/ios/v3/link/extension.mdx | 1 + ui-kit/ios/v3/link/version.mdx | 1 + ui-kit/ios/v3/overview.mdx | 1 + ui-kit/ios/v4/action-sheet.mdx | 1 + ui-kit/ios/v4/ai-features.mdx | 1 + ui-kit/ios/v4/audio-bubble.mdx | 1 + ui-kit/ios/v4/avatar.mdx | 1 + ui-kit/ios/v4/badge.mdx | 1 + ui-kit/ios/v4/call-buttons.mdx | 1 + ui-kit/ios/v4/call-features.mdx | 1 + ui-kit/ios/v4/call-log-details.mdx | 1 + ui-kit/ios/v4/call-log-history.mdx | 1 + ui-kit/ios/v4/call-log-participants.mdx | 1 + ui-kit/ios/v4/call-log-recording.mdx | 1 + ui-kit/ios/v4/call-log-with-details.mdx | 1 + ui-kit/ios/v4/call-logs.mdx | 1 + ui-kit/ios/v4/call-overview.mdx | 1 + ui-kit/ios/v4/components-overview.mdx | 1 + ui-kit/ios/v4/contacts.mdx | 1 + ui-kit/ios/v4/conversations-with-messages.mdx | 1 + ui-kit/ios/v4/conversations.mdx | 1 + ui-kit/ios/v4/core-features.mdx | 1 + ui-kit/ios/v4/create-group.mdx | 1 + ui-kit/ios/v4/date.mdx | 1 + ui-kit/ios/v4/events.mdx | 1 + ui-kit/ios/v4/extensions.mdx | 1 + ui-kit/ios/v4/file-bubble.mdx | 1 + ui-kit/ios/v4/getting-started.mdx | 1 + ui-kit/ios/v4/group-add-members.mdx | 1 + ui-kit/ios/v4/group-banned-members.mdx | 1 + ui-kit/ios/v4/group-details.mdx | 1 + ui-kit/ios/v4/group-members.mdx | 1 + ui-kit/ios/v4/group-transfer-ownership.mdx | 1 + ui-kit/ios/v4/groups-with-messages.mdx | 1 + ui-kit/ios/v4/groups.mdx | 1 + ui-kit/ios/v4/image-bubble.mdx | 1 + ui-kit/ios/v4/incoming-call.mdx | 1 + ui-kit/ios/v4/interactive-action-entity.mdx | 1 + ui-kit/ios/v4/interactive-button-element.mdx | 1 + ui-kit/ios/v4/interactive-card-bubble.mdx | 1 + ui-kit/ios/v4/interactive-card-message.mdx | 1 + .../ios/v4/interactive-check-box-element.mdx | 1 + .../interactive-date-time-picker-element.mdx | 1 + .../ios/v4/interactive-dropdown-element.mdx | 1 + ui-kit/ios/v4/interactive-element-entity.mdx | 1 + ui-kit/ios/v4/interactive-form-bubble.mdx | 1 + ui-kit/ios/v4/interactive-form-message.mdx | 1 + ui-kit/ios/v4/interactive-label-element.mdx | 1 + .../v4/interactive-radio-button-element.mdx | 1 + .../ios/v4/interactive-scheduler-bubble.mdx | 1 + .../ios/v4/interactive-scheduler-message.mdx | 1 + .../ios/v4/interactive-textinput-element.mdx | 1 + ui-kit/ios/v4/join-protected-group.mdx | 1 + ui-kit/ios/v4/link/sample.mdx | 1 + ui-kit/ios/v4/list-base.mdx | 1 + ui-kit/ios/v4/list-item.mdx | 1 + ui-kit/ios/v4/localize.mdx | 1 + ui-kit/ios/v4/media-recorder.mdx | 1 + ui-kit/ios/v4/mentions-formatter-guide.mdx | 1 + ui-kit/ios/v4/message-bubble.mdx | 1 + ui-kit/ios/v4/message-composer.mdx | 1 + ui-kit/ios/v4/message-header.mdx | 1 + ui-kit/ios/v4/message-information.mdx | 1 + ui-kit/ios/v4/message-input.mdx | 1 + ui-kit/ios/v4/message-list.mdx | 1 + ui-kit/ios/v4/message-template.mdx | 3 +- ui-kit/ios/v4/messages.mdx | 1 + ui-kit/ios/v4/methods.mdx | 1 + ui-kit/ios/v4/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/ios/v4/ongoing-call.mdx | 1 + ui-kit/ios/v4/outgoing-call.mdx | 1 + ui-kit/ios/v4/overview.mdx | 1 + ui-kit/ios/v4/quick-reactions.mdx | 1 + ui-kit/ios/v4/reactions-list.mdx | 1 + ui-kit/ios/v4/reactions.mdx | 1 + ui-kit/ios/v4/receipt.mdx | 1 + ui-kit/ios/v4/shortcut-formatter-guide.mdx | 1 + ui-kit/ios/v4/sound-manager.mdx | 1 + ui-kit/ios/v4/status-indicator.mdx | 1 + ui-kit/ios/v4/text-bubble.mdx | 1 + ui-kit/ios/v4/theme.mdx | 1 + ui-kit/ios/v4/threaded-messages.mdx | 1 + ui-kit/ios/v4/user-details.mdx | 3 +- ui-kit/ios/v4/users-with-messages.mdx | 1 + ui-kit/ios/v4/users.mdx | 3 +- ui-kit/ios/v4/video-bubble.mdx | 1 + ui-kit/kotlin/2.0/customize-ui-kit.mdx | 1 + ui-kit/kotlin/2.0/key-concepts.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ui-kit/kotlin/2.0/overview.mdx | 1 + ui-kit/kotlin/2.0/ui-components.mdx | 1 + ui-kit/kotlin/customize-ui-kit.mdx | 1 + ui-kit/kotlin/key-concepts.mdx | 1 + ui-kit/kotlin/overview.mdx | 1 + ui-kit/kotlin/ui-components.mdx | 1 + ui-kit/react-native/link/changelog.mdx | 1 + ui-kit/react-native/link/sample.mdx | 1 + ui-kit/react-native/v2/customize-ui-kit.mdx | 1 + ui-kit/react-native/v2/key-concepts.mdx | 1 + .../v2/message-structure-and-hierarchy.mdx | 1 + ui-kit/react-native/v2/overview.mdx | 1 + .../v2/react-native-2-0-overview.mdx | 1 + ui-kit/react-native/v2/ui-components.mdx | 1 + ui-kit/react-native/v3/customize-ui-kit.mdx | 1 + ui-kit/react-native/v3/key-concepts.mdx | 1 + ui-kit/react-native/v3/link/extension.mdx | 1 + ui-kit/react-native/v3/link/sdk.mdx | 1 + ui-kit/react-native/v3/link/version.mdx | 1 + ui-kit/react-native/v3/overview.mdx | 1 + ui-kit/react-native/v3/ui-components.mdx | 1 + ui-kit/react-native/v4/ai-features.mdx | 1 + .../v4/apple-privacy-manifest-guide.mdx | 1 + ui-kit/react-native/v4/audio-bubble.mdx | 1 + ui-kit/react-native/v4/avatar.mdx | 1 + ui-kit/react-native/v4/badge.mdx | 1 + ui-kit/react-native/v4/call-buttons.mdx | 1 + ui-kit/react-native/v4/call-features.mdx | 1 + ui-kit/react-native/v4/call-log-details.mdx | 1 + ui-kit/react-native/v4/call-log-history.mdx | 1 + .../react-native/v4/call-log-participants.mdx | 1 + ui-kit/react-native/v4/call-log-recording.mdx | 1 + .../react-native/v4/call-log-with-details.mdx | 1 + ui-kit/react-native/v4/call-logs.mdx | 1 + ui-kit/react-native/v4/call-overview.mdx | 1 + .../react-native/v4/components-overview.mdx | 1 + ui-kit/react-native/v4/contacts.mdx | 1 + .../v4/conversations-with-messages.mdx | 1 + ui-kit/react-native/v4/conversations.mdx | 1 + ui-kit/react-native/v4/core-features.mdx | 1 + ui-kit/react-native/v4/create-group.mdx | 1 + ui-kit/react-native/v4/date.mdx | 1 + ui-kit/react-native/v4/events.mdx | 1 + .../v4/expo-integration-guide.mdx | 1 + ui-kit/react-native/v4/extensions.mdx | 1 + ui-kit/react-native/v4/file-bubble.mdx | 1 + ui-kit/react-native/v4/getting-started.mdx | 1 + ui-kit/react-native/v4/group-add-members.mdx | 1 + .../react-native/v4/group-banned-members.mdx | 1 + ui-kit/react-native/v4/group-details.mdx | 1 + ui-kit/react-native/v4/group-members.mdx | 1 + .../v4/group-transfer-ownership.mdx | 1 + .../react-native/v4/groups-with-messages.mdx | 1 + ui-kit/react-native/v4/groups.mdx | 1 + ui-kit/react-native/v4/image-bubble.mdx | 1 + ui-kit/react-native/v4/incoming-call.mdx | 1 + .../v4/interactive-action-entity.mdx | 1 + .../v4/interactive-button-element.mdx | 1 + .../v4/interactive-card-bubble.mdx | 1 + .../v4/interactive-card-message.mdx | 1 + .../v4/interactive-checkbox-element.mdx | 1 + ...interactive-custom-interactive-message.mdx | 1 + .../v4/interactive-dropdown-element.mdx | 1 + .../v4/interactive-element-entity.mdx | 1 + .../v4/interactive-form-bubble.mdx | 1 + .../v4/interactive-form-message.mdx | 1 + .../v4/interactive-label-element.mdx | 1 + .../v4/interactive-radio-button-element.mdx | 1 + .../v4/interactive-single-select-element.mdx | 1 + .../v4/interactive-textinput-element.mdx | 1 + .../react-native/v4/join-protected-group.mdx | 1 + ui-kit/react-native/v4/label-alignment.mdx | 1 + ui-kit/react-native/v4/link/sample.mdx | 1 + ui-kit/react-native/v4/list-item.mdx | 1 + ui-kit/react-native/v4/localize.mdx | 1 + ui-kit/react-native/v4/media-recorder.mdx | 1 + .../v4/mentions-formatter-guide.mdx | 1 + ui-kit/react-native/v4/message-bubble.mdx | 1 + ui-kit/react-native/v4/message-composer.mdx | 1 + ui-kit/react-native/v4/message-header.mdx | 1 + .../react-native/v4/message-information.mdx | 1 + ui-kit/react-native/v4/message-list.mdx | 1 + ui-kit/react-native/v4/message-template.mdx | 1 + ui-kit/react-native/v4/messages.mdx | 1 + ui-kit/react-native/v4/methods.mdx | 1 + .../v4/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/react-native/v4/ongoing-call.mdx | 1 + ui-kit/react-native/v4/outgoing-call.mdx | 1 + ui-kit/react-native/v4/overview.mdx | 1 + ui-kit/react-native/v4/quick-reactions.mdx | 1 + ui-kit/react-native/v4/reaction-list.mdx | 1 + ui-kit/react-native/v4/reaction.mdx | 1 + ui-kit/react-native/v4/receipt.mdx | 1 + .../v4/shortcut-formatter-guide.mdx | 1 + ui-kit/react-native/v4/sound-manager.mdx | 1 + ui-kit/react-native/v4/status-indicator.mdx | 1 + ui-kit/react-native/v4/text-bubble.mdx | 1 + ui-kit/react-native/v4/theme.mdx | 1 + ui-kit/react-native/v4/threaded-messages.mdx | 1 + ui-kit/react-native/v4/user-details.mdx | 1 + .../react-native/v4/users-with-messages.mdx | 1 + ui-kit/react-native/v4/users.mdx | 1 + ui-kit/react-native/v4/video-bubble.mdx | 1 + ui-kit/react/link/changelog.mdx | 1 + ui-kit/react/link/figma.mdx | 1 + ui-kit/react/link/sample.mdx | 1 + ui-kit/react/moved/builder-customisations.mdx | 1 + ui-kit/react/moved/builder-dir-structure.mdx | 1 + .../moved/builder-integration-nextjs.mdx | 3 +- .../builder-integration-react-router.mdx | 3 +- ui-kit/react/moved/builder-integration.mdx | 3 +- ui-kit/react/moved/builder-settings.mdx | 1 + ui-kit/react/v2/customize-ui-kit.mdx | 1 + ui-kit/react/v2/integration-with-nextjs.mdx | 1 + ui-kit/react/v2/javascript-2-0-overview.mdx | 1 + ui-kit/react/v2/key-concepts.mdx | 1 + .../v2/message-structure-and-hierarchy.mdx | 1 + ui-kit/react/v2/overview.mdx | 1 + ui-kit/react/v2/ui-components.mdx | 1 + ui-kit/react/v3/customize.mdx | 1 + ui-kit/react/v3/extensions-overview.mdx | 1 + ui-kit/react/v3/javascript-3-0-overview.mdx | 1 + ui-kit/react/v3/key-concepts.mdx | 1 + ui-kit/react/v3/nextjs.mdx | 1 + ui-kit/react/v3/overview.mdx | 1 + ui-kit/react/v3/ui-components.mdx | 1 + ui-kit/react/v4/action-sheet.mdx | 1 + ui-kit/react/v4/ai-features.mdx | 1 + ui-kit/react/v4/audio-bubble.mdx | 1 + ui-kit/react/v4/avatar.mdx | 1 + ui-kit/react/v4/backdrop.mdx | 1 + ui-kit/react/v4/badge.mdx | 1 + ui-kit/react/v4/button-group.mdx | 1 + ui-kit/react/v4/call-buttons.mdx | 1 + ui-kit/react/v4/call-features.mdx | 1 + ui-kit/react/v4/call-log-details.mdx | 1 + ui-kit/react/v4/call-log-history.mdx | 1 + ui-kit/react/v4/call-log-participants.mdx | 1 + ui-kit/react/v4/call-log-recording.mdx | 1 + ui-kit/react/v4/call-log-with-details.mdx | 1 + ui-kit/react/v4/call-logs.mdx | 1 + ui-kit/react/v4/call-overview.mdx | 1 + ui-kit/react/v4/checkbox.mdx | 1 + ui-kit/react/v4/cometchat-quick-view.mdx | 1 + ui-kit/react/v4/components-overview.mdx | 1 + ui-kit/react/v4/confirm-dialog.mdx | 1 + ui-kit/react/v4/contacts.mdx | 1 + .../react/v4/conversations-with-messages.mdx | 1 + ui-kit/react/v4/conversations.mdx | 1 + ui-kit/react/v4/core-features.mdx | 1 + ui-kit/react/v4/create-group.mdx | 1 + .../react/v4/custom-text-formatter-guide.mdx | 1 + ui-kit/react/v4/date.mdx | 1 + ui-kit/react/v4/document-bubble.mdx | 1 + ui-kit/react/v4/dropdown.mdx | 1 + ui-kit/react/v4/emoji-keyboard.mdx | 1 + ui-kit/react/v4/events.mdx | 1 + ui-kit/react/v4/extensions.mdx | 1 + ui-kit/react/v4/file-bubble.mdx | 1 + ui-kit/react/v4/getting-started.mdx | 1 + ui-kit/react/v4/group-add-members.mdx | 1 + ui-kit/react/v4/group-banned-members.mdx | 1 + ui-kit/react/v4/group-details.mdx | 1 + ui-kit/react/v4/group-members.mdx | 1 + ui-kit/react/v4/group-transfer-ownership.mdx | 1 + ui-kit/react/v4/groups-with-messages.mdx | 1 + ui-kit/react/v4/groups.mdx | 1 + ui-kit/react/v4/icon-button.mdx | 1 + ui-kit/react/v4/icon.mdx | 1 + ui-kit/react/v4/image-bubble.mdx | 1 + ui-kit/react/v4/incoming-call.mdx | 1 + ui-kit/react/v4/input.mdx | 1 + ui-kit/react/v4/interactive-action-entity.mdx | 1 + .../react/v4/interactive-button-element.mdx | 1 + ui-kit/react/v4/interactive-card-bubble.mdx | 1 + ui-kit/react/v4/interactive-card-message.mdx | 1 + .../react/v4/interactive-checkbox-element.mdx | 1 + ...interactive-custom-interactive-message.mdx | 1 + .../interactive-date-time-picker-element.mdx | 1 + .../react/v4/interactive-dropdown-element.mdx | 1 + ui-kit/react/v4/interactive-element-type.mdx | 1 + ui-kit/react/v4/interactive-form-bubble.mdx | 1 + ui-kit/react/v4/interactive-form-message.mdx | 1 + ui-kit/react/v4/interactive-label-element.mdx | 1 + .../v4/interactive-radio-button-element.mdx | 1 + .../react/v4/interactive-scheduler-bubble.mdx | 1 + .../v4/interactive-scheduler-message.mdx | 1 + .../v4/interactive-single-select-element.mdx | 1 + .../v4/interactive-text-input-element.mdx | 1 + ui-kit/react/v4/join-protected-group.mdx | 1 + ui-kit/react/v4/label.mdx | 1 + ui-kit/react/v4/list-item.mdx | 1 + ui-kit/react/v4/list.mdx | 1 + ui-kit/react/v4/loader.mdx | 1 + ui-kit/react/v4/localize.mdx | 1 + ui-kit/react/v4/media-recorder.mdx | 1 + ui-kit/react/v4/mentions-formatter-guide.mdx | 1 + ui-kit/react/v4/message-bubble.mdx | 1 + ui-kit/react/v4/message-composer.mdx | 1 + ui-kit/react/v4/message-header.mdx | 1 + ui-kit/react/v4/message-information.mdx | 1 + ui-kit/react/v4/message-input.mdx | 1 + ui-kit/react/v4/message-list.mdx | 1 + ui-kit/react/v4/message-template.mdx | 1 + ui-kit/react/v4/messages.mdx | 1 + ui-kit/react/v4/methods.mdx | 1 + ui-kit/react/v4/modal.mdx | 1 + ui-kit/react/v4/multi-tab-chat-ui-guide.mdx | 1 + ui-kit/react/v4/next-js-integration-guide.mdx | 1 + ui-kit/react/v4/ongoing-call.mdx | 1 + ui-kit/react/v4/outgoing-call.mdx | 1 + ui-kit/react/v4/overview.mdx | 1 + ui-kit/react/v4/pop-over.mdx | 1 + ui-kit/react/v4/property-changes.mdx | 1 + ui-kit/react/v4/radio-button.mdx | 1 + ui-kit/react/v4/reaction-info.mdx | 1 + ui-kit/react/v4/reaction-list.mdx | 1 + ui-kit/react/v4/reaction.mdx | 1 + ui-kit/react/v4/receipt.mdx | 1 + ui-kit/react/v4/search-input.mdx | 1 + ui-kit/react/v4/shortcut-formatter-guide.mdx | 1 + ui-kit/react/v4/singleselect.mdx | 1 + ui-kit/react/v4/sound-manager.mdx | 1 + ui-kit/react/v4/status-indicator.mdx | 1 + ui-kit/react/v4/text-bubble.mdx | 1 + ui-kit/react/v4/theme.mdx | 1 + ui-kit/react/v4/threaded-messages.mdx | 1 + ui-kit/react/v4/upgrade-to-v5.mdx | 1 + ui-kit/react/v4/url-formatter-guide.mdx | 1 + ui-kit/react/v4/user-member-wrapper.mdx | 1 + ui-kit/react/v4/users-details.mdx | 1 + ui-kit/react/v4/users-with-messages.mdx | 1 + ui-kit/react/v4/users.mdx | 1 + ui-kit/react/v4/video-bubble.mdx | 1 + ui-kit/react/v5/ai-features.mdx | 1 + ui-kit/react/v5/call-buttons.mdx | 1 + ui-kit/react/v5/call-features.mdx | 1 + ui-kit/react/v5/call-logs.mdx | 1 + ui-kit/react/v5/components-overview.mdx | 1 + ui-kit/react/v5/conversations.mdx | 1 + ui-kit/react/v5/core-features.mdx | 1 + .../react/v5/custom-text-formatter-guide.mdx | 1 + ui-kit/react/v5/events.mdx | 1 + ui-kit/react/v5/extensions.mdx | 1 + ui-kit/react/v5/group-members.mdx | 1 + ui-kit/react/v5/groups.mdx | 1 + ui-kit/react/v5/incoming-call.mdx | 1 + ui-kit/react/v5/integration.mdx | 1 + ui-kit/react/v5/integration/next-js.mdx | 3 +- ui-kit/react/v5/localize.mdx | 1 + ui-kit/react/v5/mentions-formatter-guide.mdx | 1 + ui-kit/react/v5/message-composer.mdx | 1 + ui-kit/react/v5/message-header.mdx | 1 + ui-kit/react/v5/message-list.mdx | 1 + ui-kit/react/v5/message-template.mdx | 1 + ui-kit/react/v5/methods.mdx | 1 + ui-kit/react/v5/outgoing-call.mdx | 1 + ui-kit/react/v5/overview.mdx | 1 + ui-kit/react/v5/property-changes.mdx | 1 + ui-kit/react/v5/shortcut-formatter-guide.mdx | 1 + ui-kit/react/v5/sound-manager.mdx | 1 + ui-kit/react/v5/theme.mdx | 1 + ui-kit/react/v5/theme/color-resources.mdx | 1 + .../react/v5/theme/message-bubble-styling.mdx | 1 + ui-kit/react/v5/threaded-message-preview.mdx | 1 + ui-kit/react/v5/upgrading-from-v4.mdx | 1 + ui-kit/react/v5/url-formatter-guide.mdx | 1 + ui-kit/react/v5/users.mdx | 1 + ui-kit/vue/2.0/javascript-2-0-overview.mdx | 1 + ui-kit/vue/2.0/key-concepts.mdx | 1 + .../2.0/message-structure-and-hierarchy.mdx | 1 + ui-kit/vue/2.0/overview.mdx | 1 + ui-kit/vue/2.0/ui-components.mdx | 1 + ui-kit/vue/3.0/integration-with-nuxtjs.mdx | 1 + ui-kit/vue/3.0/javascript-3-0-overview.mdx | 1 + ui-kit/vue/3.0/key-concepts.mdx | 1 + ui-kit/vue/3.0/link/extension.mdx | 1 + ui-kit/vue/3.0/link/version.mdx | 1 + ui-kit/vue/3.0/overview.mdx | 1 + ui-kit/vue/3.0/ui-components.mdx | 1 + ui-kit/vue/ai-assist-bot.mdx | 1 + ui-kit/vue/ai-conversation-starter.mdx | 1 + ui-kit/vue/ai-conversation-summary.mdx | 1 + ui-kit/vue/ai-integration.mdx | 1 + ui-kit/vue/ai-smart-replies.mdx | 1 + ui-kit/vue/call-buttons.mdx | 1 + ui-kit/vue/calls-integration.mdx | 1 + ui-kit/vue/contacts.mdx | 1 + ui-kit/vue/conversations-with-messages.mdx | 1 + ui-kit/vue/conversations.mdx | 1 + ui-kit/vue/group-add-members.mdx | 1 + ui-kit/vue/group-banned-members.mdx | 1 + ui-kit/vue/group-details.mdx | 1 + ui-kit/vue/group-members.mdx | 1 + ui-kit/vue/group-transfer-ownership.mdx | 1 + ui-kit/vue/groups-with-messages.mdx | 1 + ui-kit/vue/groups.mdx | 1 + ui-kit/vue/incoming-call.mdx | 1 + ui-kit/vue/integration.mdx | 3 +- ui-kit/vue/key-concepts.mdx | 1 + ui-kit/vue/link/changelog.mdx | 1 + ui-kit/vue/link/sample.mdx | 1 + ui-kit/vue/message-bubble.mdx | 1 + ui-kit/vue/message-composer.mdx | 1 + ui-kit/vue/message-header.mdx | 1 + ui-kit/vue/message-information.mdx | 1 + ui-kit/vue/message-list.mdx | 1 + ui-kit/vue/messages.mdx | 1 + ui-kit/vue/nuxtjs-integration.mdx | 1 + ui-kit/vue/ongoing-call.mdx | 1 + ui-kit/vue/outgoing-call.mdx | 1 + ui-kit/vue/overview.mdx | 1 + ui-kit/vue/shared-elements.mdx | 1 + ui-kit/vue/tabs.mdx | 1 + ui-kit/vue/theme.mdx | 1 + ui-kit/vue/threaded-messages.mdx | 1 + ui-kit/vue/ui-components-overview.mdx | 1 + ui-kit/vue/ui-kit-methods.mdx | 1 + ui-kit/vue/user-details.mdx | 1 + ui-kit/vue/user-member-wrapper.mdx | 1 + ui-kit/vue/users-with-messages.mdx | 1 + ui-kit/vue/users.mdx | 1 + ui-kit/vue/web-elements.mdx | 1 + web-elements/action-sheet.mdx | 1 + web-elements/audio-bubble.mdx | 1 + web-elements/avatar.mdx | 1 + web-elements/backdrop.mdx | 1 + web-elements/badge.mdx | 1 + web-elements/button-group.mdx | 1 + web-elements/checkbox.mdx | 1 + web-elements/cometchat-quick-view.mdx | 1 + web-elements/confirm-dialog.mdx | 1 + web-elements/date.mdx | 1 + web-elements/document-bubble.mdx | 1 + web-elements/dropdown.mdx | 1 + web-elements/emoji-keyboard.mdx | 1 + web-elements/file-bubble.mdx | 1 + web-elements/icon-button.mdx | 1 + web-elements/icon.mdx | 1 + web-elements/image-bubble.mdx | 1 + web-elements/input.mdx | 1 + web-elements/label.mdx | 1 + web-elements/list-item.mdx | 1 + web-elements/loader.mdx | 1 + web-elements/media-recorder.mdx | 1 + web-elements/message-input.mdx | 1 + web-elements/modal.mdx | 1 + web-elements/overview.mdx | 1 + web-elements/pop-over.mdx | 1 + web-elements/radio-button.mdx | 1 + web-elements/receipt.mdx | 1 + web-elements/search-input.mdx | 1 + web-elements/singleselect.mdx | 1 + web-elements/status-indicator.mdx | 1 + web-elements/text-bubble.mdx | 1 + web-elements/text-input.mdx | 1 + web-elements/video-bubble.mdx | 1 + web-shared/action-entity.mdx | 1 + web-shared/actionitem.mdx | 1 + web-shared/actionsicon.mdx | 1 + web-shared/actionsview.mdx | 1 + web-shared/add-members-configuration.mdx | 1 + web-shared/addmembersstyle.mdx | 1 + web-shared/ai-assist-bot-configuration.mdx | 1 + web-shared/ai-assist-bot-style.mdx | 1 + .../ai-conversation-starter-configuration.mdx | 1 + web-shared/ai-conversation-starter-style.mdx | 1 + .../ai-conversation-summary-configuration.mdx | 1 + web-shared/ai-conversation-summary-style.mdx | 1 + web-shared/ai-smart-replies-configuration.mdx | 1 + web-shared/ai-smart-replies-style.mdx | 1 + web-shared/auxiliarybuttonalignment.mdx | 1 + web-shared/banned-members-configuration.mdx | 1 + web-shared/bannedmembersstyle.mdx | 1 + web-shared/button-element.mdx | 1 + web-shared/call-log-details-configuration.mdx | 1 + web-shared/call-log-history-configuration.mdx | 1 + .../call-log-participants-configuration.mdx | 1 + .../call-log-recordings-configuration.mdx | 1 + web-shared/call-logs-configuration.mdx | 1 + web-shared/callbuttonsstyle.mdx | 1 + web-shared/calllogdetailsstyle.mdx | 1 + web-shared/callloghistorystyle.mdx | 1 + web-shared/calllogparticipantsstyle.mdx | 1 + web-shared/calllogrecordingsstyle.mdx | 1 + web-shared/calllogsstyle.mdx | 1 + web-shared/calls-events.mdx | 1 + web-shared/card-bubble.mdx | 1 + web-shared/card-message.mdx | 1 + web-shared/checkbox-element.mdx | 1 + web-shared/cometchatschedulerbubble.mdx | 1 + web-shared/contacts-configuration.mdx | 1 + web-shared/contactsstyle.mdx | 1 + web-shared/conversations-configuration.mdx | 1 + web-shared/conversations-events.mdx | 1 + web-shared/conversationsstyle.mdx | 1 + web-shared/creategroup-configuration.mdx | 1 + web-shared/creategroupstyle.mdx | 1 + web-shared/custom-interactive-message.mdx | 1 + web-shared/date-time-picker-element.mdx | 1 + web-shared/datepatterns.mdx | 1 + web-shared/details-configuration.mdx | 1 + web-shared/detailsoption.mdx | 1 + web-shared/detailsstyle.mdx | 1 + web-shared/detailstemplate.mdx | 1 + web-shared/documenticonalignment.mdx | 1 + web-shared/dropdown-element.mdx | 1 + web-shared/element-type.mdx | 1 + web-shared/form-bubble.mdx | 1 + web-shared/form-message.mdx | 1 + web-shared/group-members-configuration.mdx | 1 + web-shared/groupmembersstyle.mdx | 1 + web-shared/groups-configurations.mdx | 1 + web-shared/groups-events.mdx | 1 + web-shared/groupsstyle.mdx | 1 + web-shared/httpsrequestmethods.mdx | 1 + web-shared/iconbuttonalignment.mdx | 1 + web-shared/incomingcallstyle.mdx | 1 + web-shared/joinggroupstyle.mdx | 1 + web-shared/joingroup-configuration.mdx | 1 + web-shared/label-element.mdx | 1 + web-shared/labelalignment.mdx | 1 + web-shared/localize.mdx | 1 + web-shared/mentions-text-formatter.mdx | 1 + web-shared/message-composer-configuration.mdx | 1 + web-shared/message-header-configuration.mdx | 1 + .../message-information-configuration.mdx | 1 + web-shared/message-list-configuration.mdx | 1 + web-shared/message-template.mdx | 1 + web-shared/messagebubblealignment.mdx | 1 + web-shared/messagebubblestyle.mdx | 1 + web-shared/messagecomposeraction.mdx | 1 + web-shared/messagecomposerstyle.mdx | 1 + web-shared/messageheaderstyle.mdx | 1 + web-shared/messageinformationstyle.mdx | 1 + web-shared/messagelistalignment.mdx | 1 + web-shared/messageliststyle.mdx | 1 + web-shared/messages-configuration.mdx | 1 + web-shared/messages-events.mdx | 1 + web-shared/messagesstyle.mdx | 1 + web-shared/ongoingcallstyle.mdx | 1 + web-shared/option.mdx | 1 + web-shared/outgoingcallstyle.mdx | 1 + web-shared/overview.mdx | 1 + web-shared/radio-button-element.mdx | 1 + web-shared/reaction-info-configuration.mdx | 1 + web-shared/reaction-info-style.mdx | 1 + web-shared/reaction-info.mdx | 1 + web-shared/reaction-list-configuration.mdx | 1 + web-shared/reaction-list-style.mdx | 1 + web-shared/reaction-list.mdx | 1 + web-shared/reactions-configuration.mdx | 1 + web-shared/reactions-style.mdx | 1 + web-shared/reactions.mdx | 1 + web-shared/receipts.mdx | 1 + web-shared/scheduler-message.mdx | 1 + web-shared/selectionmode.mdx | 1 + web-shared/single-select-element.mdx | 1 + web-shared/sound-manager.mdx | 1 + web-shared/tabalignment.mdx | 1 + web-shared/tabitem.mdx | 1 + web-shared/tabitemstyle.mdx | 1 + web-shared/tabsstyle.mdx | 1 + web-shared/tabsvisibility.mdx | 1 + web-shared/text-formatters.mdx | 1 + web-shared/text-input-element.mdx | 1 + web-shared/theme.mdx | 1 + .../threaded-messages-configuration.mdx | 1 + web-shared/threadedmessagesstyle.mdx | 1 + web-shared/timestampalignment.mdx | 1 + .../transfer-ownership-configuration.mdx | 1 + web-shared/transferownershipstyle.mdx | 1 + web-shared/ui-events.mdx | 1 + web-shared/uikitsettings.mdx | 1 + web-shared/url-text-formatter.mdx | 1 + .../usermember-wrapper-configuration.mdx | 1 + web-shared/users-configuration.mdx | 1 + web-shared/users-events.mdx | 1 + web-shared/usersstyle.mdx | 1 + web-shared/withdetailsstyle.mdx | 1 + web-shared/withmessagesstyle.mdx | 1 + widget/html/legacy.mdx | 1 + widget/wordpress/legacy.mdx | 5 ++- 2118 files changed, 2267 insertions(+), 154 deletions(-) diff --git a/ai-agents/agent-builder/guides/implementing-authorization.mdx b/ai-agents/agent-builder/guides/implementing-authorization.mdx index 2ee2220bd..283242830 100644 --- a/ai-agents/agent-builder/guides/implementing-authorization.mdx +++ b/ai-agents/agent-builder/guides/implementing-authorization.mdx @@ -215,7 +215,7 @@ Or if content should be redacted: ``` **Agent Instructions:** -``` +```python After retrieving information from the knowledge base, call validateKnowledgeResponse with the retrieved content. diff --git a/ai-agents/apis/authenticate-composio-tool.mdx b/ai-agents/apis/authenticate-composio-tool.mdx index f07764038..325dd2569 100644 --- a/ai-agents/apis/authenticate-composio-tool.mdx +++ b/ai-agents/apis/authenticate-composio-tool.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/agents/{uid}/tools/{slug}/authenticate +description: "POST /ai-agents/agent-builder/agents/{uid}/tools/{slug}/authenticate — CometChat API endpoint." --- diff --git a/ai-agents/apis/create-tag.mdx b/ai-agents/apis/create-tag.mdx index eb1bd241f..b305d1f41 100644 --- a/ai-agents/apis/create-tag.mdx +++ b/ai-agents/apis/create-tag.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/tags +description: "POST /ai-agents/tags — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-action-edit-form.mdx b/ai-agents/apis/get-action-edit-form.mdx index e6b0efa43..71ad8529d 100644 --- a/ai-agents/apis/get-action-edit-form.mdx +++ b/ai-agents/apis/get-action-edit-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/action-edit/{name} +description: "GET /ai-agents/forms/action-edit/{name} — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-actions-creation-form.mdx b/ai-agents/apis/get-actions-creation-form.mdx index 067a15f78..d54a6996a 100644 --- a/ai-agents/apis/get-actions-creation-form.mdx +++ b/ai-agents/apis/get-actions-creation-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/actions-creation +description: "GET /ai-agents/forms/actions-creation — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-actions-form.mdx b/ai-agents/apis/get-actions-form.mdx index 4872f7750..cdf592bb4 100644 --- a/ai-agents/apis/get-actions-form.mdx +++ b/ai-agents/apis/get-actions-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/actions +description: "GET /ai-agents/forms/actions — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-agent-creation-form.mdx b/ai-agents/apis/get-agent-creation-form.mdx index a9008230f..848644eb1 100644 --- a/ai-agents/apis/get-agent-creation-form.mdx +++ b/ai-agents/apis/get-agent-creation-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/agent-creation +description: "GET /ai-agents/forms/agent-creation — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-agent-edit-form.mdx b/ai-agents/apis/get-agent-edit-form.mdx index 93766e4ed..172403b86 100644 --- a/ai-agents/apis/get-agent-edit-form.mdx +++ b/ai-agents/apis/get-agent-edit-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/agent-edit/{id} +description: "GET /ai-agents/forms/agent-edit/{id} — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-all-tools-for-agent.mdx b/ai-agents/apis/get-all-tools-for-agent.mdx index 9bb4f9d78..ba89f481b 100644 --- a/ai-agents/apis/get-all-tools-for-agent.mdx +++ b/ai-agents/apis/get-all-tools-for-agent.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/{uid}/all-tools +description: "GET /ai-agents/agent-builder/agents/{uid}/all-tools — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-all-variables.mdx b/ai-agents/apis/get-all-variables.mdx index c2f3bb5c3..56592ce62 100644 --- a/ai-agents/apis/get-all-variables.mdx +++ b/ai-agents/apis/get-all-variables.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/variables +description: "GET /ai-agents/agent-builder/agents/variables — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-api-tool.mdx b/ai-agents/apis/get-api-tool.mdx index ee77362a3..f5c69aebb 100644 --- a/ai-agents/apis/get-api-tool.mdx +++ b/ai-agents/apis/get-api-tool.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/api-tools/{slug} +description: "Retrieves a specific API tool by its slug. Use this endpoint to inspect an API tool's configuration, parameters, and connected agents." --- diff --git a/ai-agents/apis/get-available-models.mdx b/ai-agents/apis/get-available-models.mdx index 4eca2cf69..2edf4ac85 100644 --- a/ai-agents/apis/get-available-models.mdx +++ b/ai-agents/apis/get-available-models.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/available-models +description: "Retrieves the list of AI models available for agents. Use this endpoint to discover supported models before creating or updating an agent. **Model details:** Each model includes its provider, configu" --- diff --git a/ai-agents/apis/get-composio-tools.mdx b/ai-agents/apis/get-composio-tools.mdx index 540deedf6..0283205dd 100644 --- a/ai-agents/apis/get-composio-tools.mdx +++ b/ai-agents/apis/get-composio-tools.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/tools/agent/{uid} +description: "GET /ai-agents/agent-builder/tools/agent/{uid} — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-custom-variables.mdx b/ai-agents/apis/get-custom-variables.mdx index 22d5de3d7..b6d5bd5a8 100644 --- a/ai-agents/apis/get-custom-variables.mdx +++ b/ai-agents/apis/get-custom-variables.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/variables/custom +description: "Retrieves all custom variables defined for the application. Use this endpoint to view and manage dynamic variables used in agent instructions. **Variable types:** Custom variables can source values f" --- diff --git a/ai-agents/apis/get-form-fields.mdx b/ai-agents/apis/get-form-fields.mdx index e29338e1b..6ad4b8978 100644 --- a/ai-agents/apis/get-form-fields.mdx +++ b/ai-agents/apis/get-form-fields.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agents/form-fields +description: "GET /ai-agents/agents/form-fields — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-frontend-action.mdx b/ai-agents/apis/get-frontend-action.mdx index 7063cb29e..d0b65088f 100644 --- a/ai-agents/apis/get-frontend-action.mdx +++ b/ai-agents/apis/get-frontend-action.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/frontend-actions/{id} +description: "Retrieves a specific frontend action by its unique ID. Use this endpoint to inspect a frontend action's configuration, parameters, and trigger function." --- diff --git a/ai-agents/apis/get-mcp-server.mdx b/ai-agents/apis/get-mcp-server.mdx index 2f8b40045..f9d8ece73 100644 --- a/ai-agents/apis/get-mcp-server.mdx +++ b/ai-agents/apis/get-mcp-server.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/mcp-servers/{slug} +description: "Retrieves a specific MCP server by its slug. Use this endpoint to inspect an MCP server's configuration and connected agents." --- diff --git a/ai-agents/apis/get-parent-urls.mdx b/ai-agents/apis/get-parent-urls.mdx index 9cb5ff7c5..33f146378 100644 --- a/ai-agents/apis/get-parent-urls.mdx +++ b/ai-agents/apis/get-parent-urls.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/parent-urls +description: "GET /ai-agents/agent-builder/knowledge-base/parent-urls — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-predefined-variables.mdx b/ai-agents/apis/get-predefined-variables.mdx index 7f3f00096..a0e2749c5 100644 --- a/ai-agents/apis/get-predefined-variables.mdx +++ b/ai-agents/apis/get-predefined-variables.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/variables/predefined +description: "GET /ai-agents/agent-builder/agents/variables/predefined — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-sitemap-discovered-urls.mdx b/ai-agents/apis/get-sitemap-discovered-urls.mdx index 5d4659edc..4ab7f6a67 100644 --- a/ai-agents/apis/get-sitemap-discovered-urls.mdx +++ b/ai-agents/apis/get-sitemap-discovered-urls.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/website/site-map/{uniqueId}/discovered-urls +description: "GET /ai-agents/agent-builder/knowledge-base/website/site-map/{uniqueId}/discovered-urls — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-text-detail.mdx b/ai-agents/apis/get-text-detail.mdx index 2c3b702c0..f7029ebdd 100644 --- a/ai-agents/apis/get-text-detail.mdx +++ b/ai-agents/apis/get-text-detail.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/text/{uniqueId} +description: "Retrieves a specific text-based knowledge base entry by its unique ID. Use this endpoint to inspect the content and status of a text entry." --- diff --git a/ai-agents/apis/get-tool-actions.mdx b/ai-agents/apis/get-tool-actions.mdx index 17063e41c..dc8e68ce9 100644 --- a/ai-agents/apis/get-tool-actions.mdx +++ b/ai-agents/apis/get-tool-actions.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/tools/{slug}/actions +description: "GET /ai-agents/agent-builder/tools/{slug}/actions — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-tool-configurations.mdx b/ai-agents/apis/get-tool-configurations.mdx index 89761a006..b44ebdccb 100644 --- a/ai-agents/apis/get-tool-configurations.mdx +++ b/ai-agents/apis/get-tool-configurations.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/tools/{uid}/configurations +description: "GET /ai-agents/agent-builder/tools/{uid}/configurations — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-tool-edit-form.mdx b/ai-agents/apis/get-tool-edit-form.mdx index c3c56a07a..b266579d0 100644 --- a/ai-agents/apis/get-tool-edit-form.mdx +++ b/ai-agents/apis/get-tool-edit-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/tool-edit/{name} +description: "GET /ai-agents/forms/tool-edit/{name} — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-tools-creation-form.mdx b/ai-agents/apis/get-tools-creation-form.mdx index 249fff08e..8ea6352a1 100644 --- a/ai-agents/apis/get-tools-creation-form.mdx +++ b/ai-agents/apis/get-tools-creation-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/tools-creation +description: "GET /ai-agents/forms/tools-creation — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-tools-form.mdx b/ai-agents/apis/get-tools-form.mdx index 5bea618f5..c7ddfb3ba 100644 --- a/ai-agents/apis/get-tools-form.mdx +++ b/ai-agents/apis/get-tools-form.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/forms/tools +description: "GET /ai-agents/forms/tools — CometChat API endpoint." --- diff --git a/ai-agents/apis/get-upcoming-tools.mdx b/ai-agents/apis/get-upcoming-tools.mdx index a97b82ac8..7eb662935 100644 --- a/ai-agents/apis/get-upcoming-tools.mdx +++ b/ai-agents/apis/get-upcoming-tools.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/tools/upcoming-tools +description: "GET /ai-agents/agent-builder/tools/upcoming-tools — CometChat API endpoint." --- diff --git a/ai-agents/apis/kb-delete-integration.mdx b/ai-agents/apis/kb-delete-integration.mdx index 2fcfb4ba6..04b521a6a 100644 --- a/ai-agents/apis/kb-delete-integration.mdx +++ b/ai-agents/apis/kb-delete-integration.mdx @@ -1,3 +1,4 @@ --- openapi: delete /ai-agents/agent-builder/kb/integration/{integrationId}/{uniqueId} +description: "DELETE /ai-agents/agent-builder/kb/integration/{integrationId}/{uniqueId} — CometChat API endpoint." --- diff --git a/ai-agents/apis/kb-generate-auth-url.mdx b/ai-agents/apis/kb-generate-auth-url.mdx index 0f281a265..68a879ad8 100644 --- a/ai-agents/apis/kb-generate-auth-url.mdx +++ b/ai-agents/apis/kb-generate-auth-url.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/kb/integration/{integrationId}/auth-url +description: "GET /ai-agents/agent-builder/kb/integration/{integrationId}/auth-url — CometChat API endpoint." --- diff --git a/ai-agents/apis/kb-oauth-callback.mdx b/ai-agents/apis/kb-oauth-callback.mdx index ed4d944d3..f5fbf5e4d 100644 --- a/ai-agents/apis/kb-oauth-callback.mdx +++ b/ai-agents/apis/kb-oauth-callback.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/kb/integration/{integrationId}/oauth +description: "GET /ai-agents/agent-builder/kb/integration/{integrationId}/oauth — CometChat API endpoint." --- diff --git a/ai-agents/apis/kb-trigger-sync.mdx b/ai-agents/apis/kb-trigger-sync.mdx index ff05facb4..54b57bcab 100644 --- a/ai-agents/apis/kb-trigger-sync.mdx +++ b/ai-agents/apis/kb-trigger-sync.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/kb/integration/{integrationId}/{uniqueId}/sync +description: "POST /ai-agents/agent-builder/kb/integration/{integrationId}/{uniqueId}/sync — CometChat API endpoint." --- diff --git a/ai-agents/apis/list-text-details.mdx b/ai-agents/apis/list-text-details.mdx index 3423ee219..5cd00ca86 100644 --- a/ai-agents/apis/list-text-details.mdx +++ b/ai-agents/apis/list-text-details.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/knowledge-base/text +description: "Retrieves all text-based knowledge base entries for the application. Use this endpoint to view and manage text content in the knowledge base." --- diff --git a/ai-agents/apis/oauth-redirect-composio.mdx b/ai-agents/apis/oauth-redirect-composio.mdx index 0c74f4bfc..05c8d0513 100644 --- a/ai-agents/apis/oauth-redirect-composio.mdx +++ b/ai-agents/apis/oauth-redirect-composio.mdx @@ -1,3 +1,4 @@ --- openapi: get /ai-agents/agent-builder/agents/tools/auth +description: "GET /ai-agents/agent-builder/agents/tools/auth — CometChat API endpoint." --- diff --git a/ai-agents/apis/test-api-tool-variables.mdx b/ai-agents/apis/test-api-tool-variables.mdx index 70ac22c20..9995ec141 100644 --- a/ai-agents/apis/test-api-tool-variables.mdx +++ b/ai-agents/apis/test-api-tool-variables.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/agents/{uid}/api-tools/{slug}/test-variables +description: "POST /ai-agents/agent-builder/agents/{uid}/api-tools/{slug}/test-variables — CometChat API endpoint." --- diff --git a/ai-agents/apis/test-byo-agent.mdx b/ai-agents/apis/test-byo-agent.mdx index dd2390d0d..dd78965c2 100644 --- a/ai-agents/apis/test-byo-agent.mdx +++ b/ai-agents/apis/test-byo-agent.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agents/test +description: "POST /ai-agents/agents/test — CometChat API endpoint." --- diff --git a/ai-agents/apis/test-variable-resolution.mdx b/ai-agents/apis/test-variable-resolution.mdx index a373f32bd..f60ebe858 100644 --- a/ai-agents/apis/test-variable-resolution.mdx +++ b/ai-agents/apis/test-variable-resolution.mdx @@ -1,3 +1,4 @@ --- openapi: post /ai-agents/agent-builder/agents/{uid}/variables/test +description: "POST /ai-agents/agent-builder/agents/{uid}/variables/test — CometChat API endpoint." --- diff --git a/ai-agents/apis/update-tag.mdx b/ai-agents/apis/update-tag.mdx index 3424307ae..0b742080b 100644 --- a/ai-agents/apis/update-tag.mdx +++ b/ai-agents/apis/update-tag.mdx @@ -1,3 +1,4 @@ --- openapi: patch /ai-agents/tags/{id} +description: "PATCH /ai-agents/tags/{id} — CometChat API endpoint." --- diff --git a/ai-chatbots/ai-bots/bots.mdx b/ai-chatbots/ai-bots/bots.mdx index fb4e719e9..c2adf8b17 100644 --- a/ai-chatbots/ai-bots/bots.mdx +++ b/ai-chatbots/ai-bots/bots.mdx @@ -1,5 +1,6 @@ --- title: "AI Bots" +description: "AI Bots — CometChat documentation." --- AI Bots in CometChat are designed to facilitate conversations with users. Each AI Bot is associated with a specific [AI Instruction](/ai/instructions). diff --git a/ai-chatbots/ai-bots/instructions.mdx b/ai-chatbots/ai-bots/instructions.mdx index ef1148586..5311d6130 100644 --- a/ai-chatbots/ai-bots/instructions.mdx +++ b/ai-chatbots/ai-bots/instructions.mdx @@ -1,5 +1,6 @@ --- title: "AI Instructions" +description: "AI Instructions — CometChat documentation." --- CometChat AI Instructions can be linked to a bot to confer specific characteristics upon it. diff --git a/ai-chatbots/ai-bots/overview.mdx b/ai-chatbots/ai-bots/overview.mdx index a16dc4ca9..6c7513b51 100644 --- a/ai-chatbots/ai-bots/overview.mdx +++ b/ai-chatbots/ai-bots/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- ## AI-Enabled Messaging Experience diff --git a/ai-chatbots/custom-agents.mdx b/ai-chatbots/custom-agents.mdx index 54a252d44..0f67328e2 100644 --- a/ai-chatbots/custom-agents.mdx +++ b/ai-chatbots/custom-agents.mdx @@ -1,5 +1,6 @@ --- title: "Custom Agents" +description: "Custom Agents — CometChat documentation." --- In CometChat, custom agents are unique users capable of autonomously sending and receiving messages. diff --git a/ai-chatbots/custom-bots.mdx b/ai-chatbots/custom-bots.mdx index e81f99a62..0fa867f2c 100644 --- a/ai-chatbots/custom-bots.mdx +++ b/ai-chatbots/custom-bots.mdx @@ -1,5 +1,6 @@ --- title: "Custom Bots" +description: "Custom Bots — CometChat documentation." --- In CometChat, Custom bots are unique users capable of autonomously sending and receiving messages. diff --git a/articles/calendar-scheduling.mdx b/articles/calendar-scheduling.mdx index adf4f1930..74a6dc6af 100644 --- a/articles/calendar-scheduling.mdx +++ b/articles/calendar-scheduling.mdx @@ -1,5 +1,6 @@ --- title: "Calendar Scheduling" +description: "Calendar Scheduling — CometChat documentation." --- Enable users to book time on each other's calendars from CometChat. diff --git a/articles/docker.mdx b/articles/docker.mdx index 3f9e31a84..6d7a9717e 100644 --- a/articles/docker.mdx +++ b/articles/docker.mdx @@ -1,5 +1,6 @@ --- title: "Docker" +description: "Docker — CometChat documentation." --- It is suggested to be familiar with the various kinds of roles for the on-premise deployment. diff --git a/articles/error-guide.mdx b/articles/error-guide.mdx index 00a3f56b5..c34ac2647 100644 --- a/articles/error-guide.mdx +++ b/articles/error-guide.mdx @@ -1,6 +1,7 @@ --- title: "Error Guide" sidebarTitle: "Error Codes" +description: "Error Guide — CometChat integration guide." --- | Error Code | Error Description | diff --git a/articles/migration-guide.mdx b/articles/migration-guide.mdx index 786984a02..3f794af1a 100644 --- a/articles/migration-guide.mdx +++ b/articles/migration-guide.mdx @@ -1,5 +1,6 @@ --- title: "Migration Guide" +description: "Migration Guide — CometChat integration guide." --- This guide will help you upgrade your application(s) and platform(s) from CometChat v2 to v3. The upgrade process is simple, since there only a few code-level changes required. diff --git a/articles/properties-and-constraints.mdx b/articles/properties-and-constraints.mdx index c5d1a7aeb..326bc0e5e 100644 --- a/articles/properties-and-constraints.mdx +++ b/articles/properties-and-constraints.mdx @@ -1,5 +1,6 @@ --- title: "Properties and Constraints" +description: "Properties and Constraints — CometChat documentation." --- This page lists the properties and constraints applicable to various CometChat systems. diff --git a/articles/rate-limits.mdx b/articles/rate-limits.mdx index bb48f297f..1db40e2b1 100644 --- a/articles/rate-limits.mdx +++ b/articles/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- ### CometChat REST API Rate Limits diff --git a/calls/android/actions.mdx b/calls/android/actions.mdx index 04f10bd94..33bd49ce2 100644 --- a/calls/android/actions.mdx +++ b/calls/android/actions.mdx @@ -1,6 +1,7 @@ --- title: "Actions" sidebarTitle: "Actions" +description: "Actions — CometChat documentation." --- Use call actions to create your own custom controls or trigger call functionality dynamically based on your use case. All actions are called on the `CallSession` singleton instance during an active call session. diff --git a/calls/android/audio-controls.mdx b/calls/android/audio-controls.mdx index 0a548c07d..cb35d1572 100644 --- a/calls/android/audio-controls.mdx +++ b/calls/android/audio-controls.mdx @@ -1,6 +1,7 @@ --- title: "Audio Controls" sidebarTitle: "Audio Controls" +description: "Audio Controls — CometChat documentation." --- Control audio during an active call session. These methods allow you to mute/unmute the local microphone and change the audio output device. diff --git a/calls/android/audio-modes.mdx b/calls/android/audio-modes.mdx index 91f8dc117..18f45020d 100644 --- a/calls/android/audio-modes.mdx +++ b/calls/android/audio-modes.mdx @@ -1,6 +1,7 @@ --- title: "Audio Modes" sidebarTitle: "Audio Modes" +description: "Audio Modes — CometChat documentation." --- Control audio output routing during calls. Switch between speaker, earpiece, Bluetooth, and wired headphones based on user preference or device availability. diff --git a/calls/android/authentication.mdx b/calls/android/authentication.mdx index ff2739a42..996c1dafe 100644 --- a/calls/android/authentication.mdx +++ b/calls/android/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Authentication" +description: "Authentication — CometChat documentation." --- Before users can make or receive calls, they must be authenticated with the CometChat Calls SDK. This guide covers the login and logout methods. diff --git a/calls/android/background-handling.mdx b/calls/android/background-handling.mdx index c507d0bd4..6c5ccd8e1 100644 --- a/calls/android/background-handling.mdx +++ b/calls/android/background-handling.mdx @@ -1,6 +1,7 @@ --- title: "Background Handling" sidebarTitle: "Background Handling" +description: "Background Handling — CometChat documentation." --- Keep calls alive when users navigate away from your app. Background handling ensures the call continues running when users press the home button, switch to another app, or lock their device. diff --git a/calls/android/button-click-listener.mdx b/calls/android/button-click-listener.mdx index 6beadb973..b20274a92 100644 --- a/calls/android/button-click-listener.mdx +++ b/calls/android/button-click-listener.mdx @@ -1,6 +1,7 @@ --- title: "Button Click Listener" sidebarTitle: "Button Click Listener" +description: "Button Click Listener — CometChat documentation." --- Intercept UI button clicks with `ButtonClickListener`. This listener provides callbacks when users tap buttons in the call UI, allowing you to implement custom behavior or show confirmation dialogs. diff --git a/calls/android/call-layouts.mdx b/calls/android/call-layouts.mdx index 49d96683a..366c1b9d0 100644 --- a/calls/android/call-layouts.mdx +++ b/calls/android/call-layouts.mdx @@ -1,6 +1,7 @@ --- title: "Call Layouts" sidebarTitle: "Call Layouts" +description: "Call Layouts — CometChat documentation." --- Choose how participants are displayed during a call. The SDK provides multiple layout options to suit different use cases like team meetings, presentations, or one-on-one calls. diff --git a/calls/android/call-logs.mdx b/calls/android/call-logs.mdx index de1b14018..7e2576ed3 100644 --- a/calls/android/call-logs.mdx +++ b/calls/android/call-logs.mdx @@ -1,6 +1,7 @@ --- title: "Call Logs" sidebarTitle: "Call Logs" +description: "Call Logs — CometChat documentation." --- Retrieve call history for your application. Call logs provide detailed information about past calls including duration, participants, recordings, and status. diff --git a/calls/android/custom-control-panel.mdx b/calls/android/custom-control-panel.mdx index bdbc54ab9..a912e33e1 100644 --- a/calls/android/custom-control-panel.mdx +++ b/calls/android/custom-control-panel.mdx @@ -1,6 +1,7 @@ --- title: "Custom Control Panel" sidebarTitle: "Custom Control Panel" +description: "Custom Control Panel — CometChat documentation." --- Build a fully customized control panel for your call interface by hiding the default controls and implementing your own UI with call actions. This guide walks you through creating a custom control panel with essential call controls. diff --git a/calls/android/custom-participant-list.mdx b/calls/android/custom-participant-list.mdx index 6c793987e..2ed66ca32 100644 --- a/calls/android/custom-participant-list.mdx +++ b/calls/android/custom-participant-list.mdx @@ -1,6 +1,7 @@ --- title: "Custom Participant List" sidebarTitle: "Custom Participant List" +description: "Custom Participant List — CometChat documentation." --- Build a custom participant list UI that displays real-time participant information with full control over layout and interactions. This guide demonstrates how to hide the default participant list and create your own using participant events and actions. diff --git a/calls/android/events.mdx b/calls/android/events.mdx index d0566d502..706432e3c 100644 --- a/calls/android/events.mdx +++ b/calls/android/events.mdx @@ -1,6 +1,7 @@ --- title: "Events" sidebarTitle: "Events" +description: "Events — CometChat documentation." --- Handle call session events to build responsive UIs. The SDK provides five event listener interfaces to monitor session status, participant activities, media changes, button clicks, and layout changes. Each listener is lifecycle-aware and automatically cleaned up when the Activity or Fragment is destroyed. diff --git a/calls/android/idle-timeout.mdx b/calls/android/idle-timeout.mdx index 9efb4d9d8..84e202976 100644 --- a/calls/android/idle-timeout.mdx +++ b/calls/android/idle-timeout.mdx @@ -1,6 +1,7 @@ --- title: "Idle Timeout" sidebarTitle: "Idle Timeout" +description: "Idle Timeout — CometChat documentation." --- Configure automatic session termination when a user is alone in a call. Idle timeout helps manage resources by ending sessions that have no active participants. diff --git a/calls/android/in-call-chat.mdx b/calls/android/in-call-chat.mdx index 8274e55fb..7becc015f 100644 --- a/calls/android/in-call-chat.mdx +++ b/calls/android/in-call-chat.mdx @@ -1,6 +1,7 @@ --- title: "In-Call Chat" sidebarTitle: "In-Call Chat" +description: "In-Call Chat — CometChat documentation." --- Add real-time messaging to your call experience using CometChat UI Kit. This allows participants to send text messages, share files, and communicate via chat while on a call. diff --git a/calls/android/join-session.mdx b/calls/android/join-session.mdx index 199d84fa3..a0f12f96d 100644 --- a/calls/android/join-session.mdx +++ b/calls/android/join-session.mdx @@ -1,6 +1,7 @@ --- title: "Join Session" sidebarTitle: "Join Session" +description: "Join Session — CometChat documentation." --- Join a call session using one of two approaches: the quick start method with a session ID, or the advanced flow with manual token generation for more control. diff --git a/calls/android/layout-listener.mdx b/calls/android/layout-listener.mdx index b72324a69..770ea3d99 100644 --- a/calls/android/layout-listener.mdx +++ b/calls/android/layout-listener.mdx @@ -1,6 +1,7 @@ --- title: "Layout Listener" sidebarTitle: "Layout Listener" +description: "Layout Listener — CometChat documentation." --- Monitor layout changes with `LayoutListener`. This listener provides callbacks for call layout changes, participant list visibility, and Picture-in-Picture (PiP) mode state changes. diff --git a/calls/android/layout-ui.mdx b/calls/android/layout-ui.mdx index 838d98c38..a5ae2b2f6 100644 --- a/calls/android/layout-ui.mdx +++ b/calls/android/layout-ui.mdx @@ -1,6 +1,7 @@ --- title: "Layout & UI" sidebarTitle: "Layout & UI" +description: "Layout & UI — CometChat documentation." --- Control the call layout and UI elements during an active session. These methods allow you to change the call layout, enable Picture-in-Picture mode, and update UI badges. diff --git a/calls/android/link/changelog.mdx b/calls/android/link/changelog.mdx index 45c1d5e58..7bfbdf1de 100644 --- a/calls/android/link/changelog.mdx +++ b/calls/android/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/calls-sdk-android/releases" +description: "Navigate to Changelog documentation." --- diff --git a/calls/android/link/github.mdx b/calls/android/link/github.mdx index e8a858228..c9f8d2520 100644 --- a/calls/android/link/github.mdx +++ b/calls/android/link/github.mdx @@ -1,4 +1,5 @@ --- title: "GitHub" url: "https://github.com/cometchat/calls-sdk-android" +description: "Navigate to GitHub documentation." --- diff --git a/calls/android/link/sample-apps.mdx b/calls/android/link/sample-apps.mdx index 4827ad673..ce80912b6 100644 --- a/calls/android/link/sample-apps.mdx +++ b/calls/android/link/sample-apps.mdx @@ -1,4 +1,5 @@ --- title: "Sample Apps" url: "https://github.com/cometchat/calls-sdk-android/tree/v5/samples" +description: "Navigate to Sample Apps documentation." --- diff --git a/calls/android/media-events-listener.mdx b/calls/android/media-events-listener.mdx index f9de1e9d5..68a51d283 100644 --- a/calls/android/media-events-listener.mdx +++ b/calls/android/media-events-listener.mdx @@ -1,6 +1,7 @@ --- title: "Media Events Listener" sidebarTitle: "Media Events Listener" +description: "Media Events Listener — CometChat documentation." --- Monitor local media state changes with `MediaEventsListener`. This listener provides callbacks for your own audio/video state changes, recording events, screen sharing, audio mode changes, and camera facing changes. diff --git a/calls/android/overview.mdx b/calls/android/overview.mdx index 58e8bcb42..e8a9848d6 100644 --- a/calls/android/overview.mdx +++ b/calls/android/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/android/participant-actions.mdx b/calls/android/participant-actions.mdx index 10e6c3a9f..38d33cb7f 100644 --- a/calls/android/participant-actions.mdx +++ b/calls/android/participant-actions.mdx @@ -1,6 +1,7 @@ --- title: "Participant Actions" sidebarTitle: "Participant Actions" +description: "Participant Actions — CometChat documentation." --- Manage other participants during an active call session. These methods allow you to mute participants, pause their video, and pin/unpin them in the call layout. diff --git a/calls/android/participant-event-listener.mdx b/calls/android/participant-event-listener.mdx index ae8788728..a773e117e 100644 --- a/calls/android/participant-event-listener.mdx +++ b/calls/android/participant-event-listener.mdx @@ -1,6 +1,7 @@ --- title: "Participant Event Listener" sidebarTitle: "Participant Event Listener" +description: "Participant Event Listener — CometChat documentation." --- Monitor participant activities with `ParticipantEventListener`. This listener provides callbacks for participant join/leave events, audio/video state changes, hand raise actions, screen sharing, recording, and more. diff --git a/calls/android/participant-management.mdx b/calls/android/participant-management.mdx index a06256b1e..fe8f4ba8c 100644 --- a/calls/android/participant-management.mdx +++ b/calls/android/participant-management.mdx @@ -1,6 +1,7 @@ --- title: "Participant Management" sidebarTitle: "Participant Management" +description: "Participant Management — CometChat documentation." --- Manage participants during a call with actions like muting, pausing video, and pinning. These features help maintain order in group calls and highlight important speakers. diff --git a/calls/android/picture-in-picture.mdx b/calls/android/picture-in-picture.mdx index 492d41875..b1aab5d54 100644 --- a/calls/android/picture-in-picture.mdx +++ b/calls/android/picture-in-picture.mdx @@ -1,6 +1,7 @@ --- title: "Picture-in-Picture" sidebarTitle: "Picture-in-Picture" +description: "Picture-in-Picture — CometChat documentation." --- Enable Picture-in-Picture (PiP) mode to allow users to continue their call in a floating window while using other apps. PiP provides a seamless multitasking experience during calls. diff --git a/calls/android/raise-hand.mdx b/calls/android/raise-hand.mdx index c51bf5963..a4c906748 100644 --- a/calls/android/raise-hand.mdx +++ b/calls/android/raise-hand.mdx @@ -1,6 +1,7 @@ --- title: "Raise Hand" sidebarTitle: "Raise Hand" +description: "Raise Hand — CometChat documentation." --- Allow participants to raise their hand to get attention during calls. This feature is useful for large meetings, webinars, or any scenario where participants need to signal they want to speak. diff --git a/calls/android/recording.mdx b/calls/android/recording.mdx index 0f0dad667..cd8c686c8 100644 --- a/calls/android/recording.mdx +++ b/calls/android/recording.mdx @@ -1,6 +1,7 @@ --- title: "Recording" sidebarTitle: "Recording" +description: "Recording — CometChat documentation." --- Record call sessions for later playback. Recordings are stored server-side and can be accessed through call logs or the CometChat Dashboard. diff --git a/calls/android/ringing.mdx b/calls/android/ringing.mdx index 85e9b7651..5492c4c79 100644 --- a/calls/android/ringing.mdx +++ b/calls/android/ringing.mdx @@ -1,6 +1,7 @@ --- title: "Ringing" sidebarTitle: "Ringing" +description: "Ringing — CometChat documentation." --- Implement incoming and outgoing call notifications with accept/reject functionality. Ringing enables real-time call signaling between users, allowing them to initiate calls and respond to incoming call requests. diff --git a/calls/android/screen-sharing.mdx b/calls/android/screen-sharing.mdx index 9133f1611..860777212 100644 --- a/calls/android/screen-sharing.mdx +++ b/calls/android/screen-sharing.mdx @@ -1,6 +1,7 @@ --- title: "Screen Sharing" sidebarTitle: "Screen Sharing" +description: "Screen Sharing — CometChat documentation." --- View screen shares from other participants during a call. The Android SDK can receive and display screen shares initiated from web clients. diff --git a/calls/android/session-control.mdx b/calls/android/session-control.mdx index 38d91d9fb..68eac0c89 100644 --- a/calls/android/session-control.mdx +++ b/calls/android/session-control.mdx @@ -1,6 +1,7 @@ --- title: "Session Control" sidebarTitle: "Session Control" +description: "Session Control — CometChat documentation." --- Control the call session lifecycle and participant interactions. These methods allow you to leave the session, raise/lower your hand, and check session status. diff --git a/calls/android/session-settings.mdx b/calls/android/session-settings.mdx index 24272810c..eb0baff83 100644 --- a/calls/android/session-settings.mdx +++ b/calls/android/session-settings.mdx @@ -1,6 +1,7 @@ --- title: "SessionSettingsBuilder" sidebarTitle: "SessionSettingsBuilder" +description: "SessionSettingsBuilder — CometChat documentation." --- The `SessionSettingsBuilder` is a powerful configuration tool that allows you to customize every aspect of your call session before participants join. From controlling the initial audio/video state to customizing the UI layout and hiding specific controls, this builder gives you complete control over the call experience. diff --git a/calls/android/session-status-listener.mdx b/calls/android/session-status-listener.mdx index 710706730..581f6478b 100644 --- a/calls/android/session-status-listener.mdx +++ b/calls/android/session-status-listener.mdx @@ -1,6 +1,7 @@ --- title: "Session Status Listener" sidebarTitle: "Session Status Listener" +description: "Session Status Listener — CometChat documentation." --- Monitor the call session lifecycle with `SessionStatusListener`. This listener provides callbacks for session join/leave events, connection status changes, and session timeouts. diff --git a/calls/android/setup.mdx b/calls/android/setup.mdx index 9429aca11..be4d80e87 100644 --- a/calls/android/setup.mdx +++ b/calls/android/setup.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Setup" +description: "Setup — CometChat documentation." --- This guide walks you through installing the CometChat Calls SDK and initializing it in your Android application. diff --git a/calls/android/share-invite.mdx b/calls/android/share-invite.mdx index ec67277e4..6bcaac26f 100644 --- a/calls/android/share-invite.mdx +++ b/calls/android/share-invite.mdx @@ -1,6 +1,7 @@ --- title: "Share Invite" sidebarTitle: "Share Invite" +description: "Share Invite — CometChat documentation." --- Enable participants to invite others to join a call by sharing a meeting link. The share invite button opens the system share sheet, allowing users to send the invite via any messaging app, email, or social media. diff --git a/calls/android/video-controls.mdx b/calls/android/video-controls.mdx index d512afe35..b3c163962 100644 --- a/calls/android/video-controls.mdx +++ b/calls/android/video-controls.mdx @@ -1,6 +1,7 @@ --- title: "Video Controls" sidebarTitle: "Video Controls" +description: "Video Controls — CometChat documentation." --- Control video during an active call session. These methods allow you to pause/resume the local camera and switch between front and back cameras. diff --git a/calls/android/voip-calling.mdx b/calls/android/voip-calling.mdx index a43b83ef4..58831418c 100644 --- a/calls/android/voip-calling.mdx +++ b/calls/android/voip-calling.mdx @@ -1,6 +1,7 @@ --- title: "VoIP Calling" sidebarTitle: "VoIP Calling" +description: "VoIP Calling — CometChat documentation." --- Implement native VoIP calling that works when your app is in the background or killed. This guide shows how to integrate Android's Telecom framework with CometChat to display system call UI, handle calls from the lock screen, and provide a native calling experience. diff --git a/calls/flutter/actions.mdx b/calls/flutter/actions.mdx index 44a671ddf..722806074 100644 --- a/calls/flutter/actions.mdx +++ b/calls/flutter/actions.mdx @@ -1,6 +1,7 @@ --- title: "Actions" sidebarTitle: "Actions" +description: "Actions — CometChat documentation." --- Use call actions to create your own custom controls or trigger call functionality dynamically based on your use case. All actions are called on the `CallSession` singleton instance during an active call session. diff --git a/calls/flutter/audio-controls.mdx b/calls/flutter/audio-controls.mdx index 513c1972e..af81e6f31 100644 --- a/calls/flutter/audio-controls.mdx +++ b/calls/flutter/audio-controls.mdx @@ -1,6 +1,7 @@ --- title: "Audio Controls" sidebarTitle: "Audio Controls" +description: "Audio Controls — CometChat documentation." --- Control audio during an active call session. These methods allow you to mute/unmute the local microphone and change the audio output device. diff --git a/calls/flutter/audio-modes.mdx b/calls/flutter/audio-modes.mdx index ac1b49691..aed9073a8 100644 --- a/calls/flutter/audio-modes.mdx +++ b/calls/flutter/audio-modes.mdx @@ -1,6 +1,7 @@ --- title: "Audio Modes" sidebarTitle: "Audio Modes" +description: "Audio Modes — CometChat documentation." --- Control audio output routing during calls. Switch between speaker, earpiece, and Bluetooth based on user preference or device availability. diff --git a/calls/flutter/authentication.mdx b/calls/flutter/authentication.mdx index 662d32583..34af1dd1b 100644 --- a/calls/flutter/authentication.mdx +++ b/calls/flutter/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Authentication" +description: "Authentication — CometChat documentation." --- Before users can make or receive calls, they must be authenticated with the CometChat Calls SDK. This guide covers the login and logout methods. diff --git a/calls/flutter/background-handling.mdx b/calls/flutter/background-handling.mdx index d66749517..ba96e7176 100644 --- a/calls/flutter/background-handling.mdx +++ b/calls/flutter/background-handling.mdx @@ -1,6 +1,7 @@ --- title: "Background Handling" sidebarTitle: "Background Handling" +description: "Background Handling — CometChat documentation." --- Keep calls alive when users navigate away from your app. Background handling ensures the call continues running when users press the home button, switch to another app, or lock their device. diff --git a/calls/flutter/button-click-listener.mdx b/calls/flutter/button-click-listener.mdx index 581d2457b..78da4944b 100644 --- a/calls/flutter/button-click-listener.mdx +++ b/calls/flutter/button-click-listener.mdx @@ -1,6 +1,7 @@ --- title: "Button Click Listener" sidebarTitle: "Button Click Listener" +description: "Button Click Listener — CometChat documentation." --- Intercept UI button clicks with `ButtonClickListeners`. This listener provides callbacks when users tap buttons in the call UI, allowing you to implement custom behavior or show confirmation dialogs. diff --git a/calls/flutter/call-layouts.mdx b/calls/flutter/call-layouts.mdx index 4de76fe15..e315b15ef 100644 --- a/calls/flutter/call-layouts.mdx +++ b/calls/flutter/call-layouts.mdx @@ -1,6 +1,7 @@ --- title: "Call Layouts" sidebarTitle: "Call Layouts" +description: "Call Layouts — CometChat documentation." --- Choose how participants are displayed during a call. The SDK provides multiple layout options to suit different use cases like team meetings, presentations, or one-on-one calls. diff --git a/calls/flutter/call-logs.mdx b/calls/flutter/call-logs.mdx index 84cb3e5cf..ffe0e0a75 100644 --- a/calls/flutter/call-logs.mdx +++ b/calls/flutter/call-logs.mdx @@ -1,6 +1,7 @@ --- title: "Call Logs" sidebarTitle: "Call Logs" +description: "Call Logs — CometChat documentation." --- Retrieve call history for your application. Call logs provide detailed information about past calls including duration, participants, recordings, and status. diff --git a/calls/flutter/custom-control-panel.mdx b/calls/flutter/custom-control-panel.mdx index 47f1258d8..f5b3ce645 100644 --- a/calls/flutter/custom-control-panel.mdx +++ b/calls/flutter/custom-control-panel.mdx @@ -1,6 +1,7 @@ --- title: "Custom Control Panel" sidebarTitle: "Custom Control Panel" +description: "Custom Control Panel — CometChat documentation." --- Build a fully customized control panel for your call interface by hiding the default controls and implementing your own UI with call actions. This guide walks you through creating a custom control panel with essential call controls. diff --git a/calls/flutter/custom-participant-list.mdx b/calls/flutter/custom-participant-list.mdx index 772e9cebe..532885dca 100644 --- a/calls/flutter/custom-participant-list.mdx +++ b/calls/flutter/custom-participant-list.mdx @@ -1,6 +1,7 @@ --- title: "Custom Participant List" sidebarTitle: "Custom Participant List" +description: "Custom Participant List — CometChat documentation." --- Build a custom participant list UI that displays real-time participant information with full control over layout and interactions. This guide demonstrates how to hide the default participant list and create your own using participant events and actions. diff --git a/calls/flutter/events.mdx b/calls/flutter/events.mdx index 434f43735..d4e0d58c9 100644 --- a/calls/flutter/events.mdx +++ b/calls/flutter/events.mdx @@ -1,6 +1,7 @@ --- title: "Events" sidebarTitle: "Events" +description: "Events — CometChat documentation." --- Handle call session events to build responsive UIs. The SDK provides five event listener interfaces to monitor session status, participant activities, media changes, button clicks, and layout changes. Unlike Android, Flutter listeners are not lifecycle-aware and must be manually removed in `dispose()` to prevent memory leaks. diff --git a/calls/flutter/idle-timeout.mdx b/calls/flutter/idle-timeout.mdx index b5eff71da..ebce46182 100644 --- a/calls/flutter/idle-timeout.mdx +++ b/calls/flutter/idle-timeout.mdx @@ -1,6 +1,7 @@ --- title: "Idle Timeout" sidebarTitle: "Idle Timeout" +description: "Idle Timeout — CometChat documentation." --- Configure automatic session termination when a user is alone in a call. Idle timeout helps manage resources by ending sessions that have no active participants. diff --git a/calls/flutter/in-call-chat.mdx b/calls/flutter/in-call-chat.mdx index 6c7730a3a..67180b892 100644 --- a/calls/flutter/in-call-chat.mdx +++ b/calls/flutter/in-call-chat.mdx @@ -1,6 +1,7 @@ --- title: "In-Call Chat" sidebarTitle: "In-Call Chat" +description: "In-Call Chat — CometChat documentation." --- Add real-time messaging to your call experience using CometChat UI Kit. This allows participants to send text messages, share files, and communicate via chat while on a call. diff --git a/calls/flutter/join-session.mdx b/calls/flutter/join-session.mdx index af404f9cf..b2941ed0b 100644 --- a/calls/flutter/join-session.mdx +++ b/calls/flutter/join-session.mdx @@ -1,6 +1,7 @@ --- title: "Join Session" sidebarTitle: "Join Session" +description: "Join Session — CometChat documentation." --- Join a call session using one of two approaches: the quick start method with a session ID, or the advanced flow with manual token generation for more control. diff --git a/calls/flutter/layout-listener.mdx b/calls/flutter/layout-listener.mdx index 62754f6e7..55ddba906 100644 --- a/calls/flutter/layout-listener.mdx +++ b/calls/flutter/layout-listener.mdx @@ -1,6 +1,7 @@ --- title: "Layout Listener" sidebarTitle: "Layout Listener" +description: "Layout Listener — CometChat documentation." --- Monitor layout changes with `LayoutListeners`. This listener provides callbacks for call layout changes, participant list visibility, and Picture-in-Picture (PiP) mode state changes. diff --git a/calls/flutter/layout-ui.mdx b/calls/flutter/layout-ui.mdx index a5a7c404f..79e9463fc 100644 --- a/calls/flutter/layout-ui.mdx +++ b/calls/flutter/layout-ui.mdx @@ -1,6 +1,7 @@ --- title: "Layout & UI" sidebarTitle: "Layout & UI" +description: "Layout & UI — CometChat documentation." --- Control the call layout and UI elements during an active session. These methods allow you to change the call layout, enable Picture-in-Picture mode, and update UI badges. diff --git a/calls/flutter/link/changelog.mdx b/calls/flutter/link/changelog.mdx index fe0cc99b6..8dc498e25 100644 --- a/calls/flutter/link/changelog.mdx +++ b/calls/flutter/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/calls-sdk-flutter/releases" +description: "Navigate to Changelog documentation." --- diff --git a/calls/flutter/link/github.mdx b/calls/flutter/link/github.mdx index 8fe9fda0b..bccc1f2e9 100644 --- a/calls/flutter/link/github.mdx +++ b/calls/flutter/link/github.mdx @@ -1,4 +1,5 @@ --- title: "GitHub" url: "https://github.com/cometchat/calls-sdk-flutter" +description: "Navigate to GitHub documentation." --- diff --git a/calls/flutter/link/sample-apps.mdx b/calls/flutter/link/sample-apps.mdx index aad89a769..31899ff60 100644 --- a/calls/flutter/link/sample-apps.mdx +++ b/calls/flutter/link/sample-apps.mdx @@ -1,4 +1,5 @@ --- title: "Sample Apps" url: "https://github.com/cometchat/calls-sdk-flutter/tree/v5/sample-apps" +description: "Navigate to Sample Apps documentation." --- diff --git a/calls/flutter/media-events-listener.mdx b/calls/flutter/media-events-listener.mdx index b970bd8bb..b02d268df 100644 --- a/calls/flutter/media-events-listener.mdx +++ b/calls/flutter/media-events-listener.mdx @@ -1,6 +1,7 @@ --- title: "Media Events Listener" sidebarTitle: "Media Events Listener" +description: "Media Events Listener — CometChat documentation." --- Monitor local media state changes with `MediaEventListeners`. This listener provides callbacks for your own audio/video state changes, recording events, screen sharing, audio mode changes, and camera facing changes. diff --git a/calls/flutter/overview.mdx b/calls/flutter/overview.mdx index 48de70b08..b05aa128b 100644 --- a/calls/flutter/overview.mdx +++ b/calls/flutter/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/flutter/participant-actions.mdx b/calls/flutter/participant-actions.mdx index 0392c9f6b..9d7d61be3 100644 --- a/calls/flutter/participant-actions.mdx +++ b/calls/flutter/participant-actions.mdx @@ -1,6 +1,7 @@ --- title: "Participant Actions" sidebarTitle: "Participant Actions" +description: "Participant Actions — CometChat documentation." --- Manage other participants during an active call session. These methods allow you to mute participants, pause their video, and pin/unpin them in the call layout. diff --git a/calls/flutter/participant-event-listener.mdx b/calls/flutter/participant-event-listener.mdx index b6eb6f70a..6b014ae45 100644 --- a/calls/flutter/participant-event-listener.mdx +++ b/calls/flutter/participant-event-listener.mdx @@ -1,6 +1,7 @@ --- title: "Participant Event Listener" sidebarTitle: "Participant Event Listener" +description: "Participant Event Listener — CometChat documentation." --- Monitor participant activities with `ParticipantEventListeners`. This listener provides callbacks for participant join/leave events, audio/video state changes, hand raise actions, screen sharing, recording, and more. diff --git a/calls/flutter/participant-management.mdx b/calls/flutter/participant-management.mdx index 971f0e7d1..4e657d6e4 100644 --- a/calls/flutter/participant-management.mdx +++ b/calls/flutter/participant-management.mdx @@ -1,6 +1,7 @@ --- title: "Participant Management" sidebarTitle: "Participant Management" +description: "Participant Management — CometChat documentation." --- Manage participants during a call with actions like muting, pausing video, and pinning. These features help maintain order in group calls and highlight important speakers. diff --git a/calls/flutter/picture-in-picture.mdx b/calls/flutter/picture-in-picture.mdx index fb0914496..e2313974c 100644 --- a/calls/flutter/picture-in-picture.mdx +++ b/calls/flutter/picture-in-picture.mdx @@ -1,6 +1,7 @@ --- title: "Picture-in-Picture" sidebarTitle: "Picture-in-Picture" +description: "Picture-in-Picture — CometChat documentation." --- Enable Picture-in-Picture (PiP) mode to allow users to continue their call in a floating window while using other apps. PiP provides a seamless multitasking experience during calls. diff --git a/calls/flutter/raise-hand.mdx b/calls/flutter/raise-hand.mdx index 70b677977..05c504dd4 100644 --- a/calls/flutter/raise-hand.mdx +++ b/calls/flutter/raise-hand.mdx @@ -1,6 +1,7 @@ --- title: "Raise Hand" sidebarTitle: "Raise Hand" +description: "Raise Hand — CometChat documentation." --- Allow participants to raise their hand to get attention during calls. This feature is useful for large meetings, webinars, or any scenario where participants need to signal they want to speak. diff --git a/calls/flutter/recording.mdx b/calls/flutter/recording.mdx index 62f13ab87..a85c91a59 100644 --- a/calls/flutter/recording.mdx +++ b/calls/flutter/recording.mdx @@ -1,6 +1,7 @@ --- title: "Recording" sidebarTitle: "Recording" +description: "Recording — CometChat documentation." --- Record call sessions for later playback. Recordings are stored server-side and can be accessed through call logs or the CometChat Dashboard. diff --git a/calls/flutter/ringing.mdx b/calls/flutter/ringing.mdx index 11bb0bd39..729efebb5 100644 --- a/calls/flutter/ringing.mdx +++ b/calls/flutter/ringing.mdx @@ -1,6 +1,7 @@ --- title: "Ringing" sidebarTitle: "Ringing" +description: "Ringing — CometChat documentation." --- Implement incoming and outgoing call notifications with accept/reject functionality. Ringing enables real-time call signaling between users, allowing them to initiate calls and respond to incoming call requests. diff --git a/calls/flutter/screen-sharing.mdx b/calls/flutter/screen-sharing.mdx index c0a939376..32cb15897 100644 --- a/calls/flutter/screen-sharing.mdx +++ b/calls/flutter/screen-sharing.mdx @@ -1,6 +1,7 @@ --- title: "Screen Sharing" sidebarTitle: "Screen Sharing" +description: "Screen Sharing — CometChat documentation." --- View screen shares from other participants during a call. The Flutter SDK can receive and display screen shares initiated from web clients. diff --git a/calls/flutter/session-control.mdx b/calls/flutter/session-control.mdx index 45b8ad49f..07f44c09d 100644 --- a/calls/flutter/session-control.mdx +++ b/calls/flutter/session-control.mdx @@ -1,6 +1,7 @@ --- title: "Session Control" sidebarTitle: "Session Control" +description: "Session Control — CometChat documentation." --- Control the call session lifecycle and participant interactions. These methods allow you to leave the session, raise/lower your hand, and check session status. diff --git a/calls/flutter/session-settings.mdx b/calls/flutter/session-settings.mdx index 161a28ddc..2b5426971 100644 --- a/calls/flutter/session-settings.mdx +++ b/calls/flutter/session-settings.mdx @@ -1,6 +1,7 @@ --- title: "SessionSettingsBuilder" sidebarTitle: "SessionSettingsBuilder" +description: "SessionSettingsBuilder — CometChat documentation." --- The `SessionSettingsBuilder` is a powerful configuration tool that allows you to customize every aspect of your call session before participants join. From controlling the initial audio/video state to customizing the UI layout and hiding specific controls, this builder gives you complete control over the call experience. diff --git a/calls/flutter/session-status-listener.mdx b/calls/flutter/session-status-listener.mdx index d483d4e8b..d27f36984 100644 --- a/calls/flutter/session-status-listener.mdx +++ b/calls/flutter/session-status-listener.mdx @@ -1,6 +1,7 @@ --- title: "Session Status Listener" sidebarTitle: "Session Status Listener" +description: "Session Status Listener — CometChat documentation." --- Monitor the call session lifecycle with `SessionStatusListeners`. This listener provides callbacks for session join/leave events, connection status changes, and session timeouts. diff --git a/calls/flutter/setup.mdx b/calls/flutter/setup.mdx index 8ddbb7a34..ba80515e9 100644 --- a/calls/flutter/setup.mdx +++ b/calls/flutter/setup.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Setup" +description: "Setup — CometChat documentation." --- This guide walks you through installing the CometChat Calls SDK and initializing it in your Flutter application. diff --git a/calls/flutter/share-invite.mdx b/calls/flutter/share-invite.mdx index 4d9414eba..bbf2458d1 100644 --- a/calls/flutter/share-invite.mdx +++ b/calls/flutter/share-invite.mdx @@ -1,6 +1,7 @@ --- title: "Share Invite" sidebarTitle: "Share Invite" +description: "Share Invite — CometChat documentation." --- Enable participants to invite others to join a call by sharing a meeting link. The share invite button opens the platform's native share sheet, allowing users to send the invite via any messaging app, email, or social media. diff --git a/calls/flutter/video-controls.mdx b/calls/flutter/video-controls.mdx index 88f4cd666..448672bc2 100644 --- a/calls/flutter/video-controls.mdx +++ b/calls/flutter/video-controls.mdx @@ -1,6 +1,7 @@ --- title: "Video Controls" sidebarTitle: "Video Controls" +description: "Video Controls — CometChat documentation." --- Control video during an active call session. These methods allow you to pause/resume the local camera and switch between front and rear cameras. diff --git a/calls/flutter/voip-calling.mdx b/calls/flutter/voip-calling.mdx index 5f23f5b48..75b3812f9 100644 --- a/calls/flutter/voip-calling.mdx +++ b/calls/flutter/voip-calling.mdx @@ -1,6 +1,7 @@ --- title: "VoIP Calling" sidebarTitle: "VoIP Calling" +description: "VoIP Calling — CometChat documentation." --- Implement native VoIP calling that works when your app is in the background or killed. This guide shows how to integrate platform-specific push notification services with CometChat to display system call UI and provide a native calling experience. diff --git a/calls/ionic/overview.mdx b/calls/ionic/overview.mdx index 0761db868..e20d3cb71 100644 --- a/calls/ionic/overview.mdx +++ b/calls/ionic/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/ios/actions.mdx b/calls/ios/actions.mdx index 2b20e2f0d..2c62f7f26 100644 --- a/calls/ios/actions.mdx +++ b/calls/ios/actions.mdx @@ -1,6 +1,7 @@ --- title: "Actions" sidebarTitle: "Actions" +description: "Actions — CometChat documentation." --- Use call actions to create your own custom controls or trigger call functionality dynamically based on your use case. All actions are called on the `CallSession.shared` singleton instance during an active call session. diff --git a/calls/ios/audio-modes.mdx b/calls/ios/audio-modes.mdx index ab53af7ff..dd8465ce4 100644 --- a/calls/ios/audio-modes.mdx +++ b/calls/ios/audio-modes.mdx @@ -1,6 +1,7 @@ --- title: "Audio Modes" sidebarTitle: "Audio Modes" +description: "Audio Modes — CometChat documentation." --- Control audio output routing during calls. Switch between speaker, earpiece, Bluetooth, and wired headphones based on user preference or device availability. diff --git a/calls/ios/authentication.mdx b/calls/ios/authentication.mdx index 0e8001c4f..f21dbaf49 100644 --- a/calls/ios/authentication.mdx +++ b/calls/ios/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Authentication" +description: "Authentication — CometChat documentation." --- Before users can make or receive calls, they must be authenticated with the CometChat Calls SDK. This guide covers the login and logout methods. diff --git a/calls/ios/background-handling.mdx b/calls/ios/background-handling.mdx index 039d209e7..d68542af4 100644 --- a/calls/ios/background-handling.mdx +++ b/calls/ios/background-handling.mdx @@ -1,6 +1,7 @@ --- title: "Background Handling" sidebarTitle: "Background Handling" +description: "Background Handling — CometChat documentation." --- Keep calls alive when users navigate away from your app. Background handling ensures the call continues running when users press the home button, switch to another app, or lock their device. diff --git a/calls/ios/call-layouts.mdx b/calls/ios/call-layouts.mdx index d12409380..1432cff49 100644 --- a/calls/ios/call-layouts.mdx +++ b/calls/ios/call-layouts.mdx @@ -1,6 +1,7 @@ --- title: "Call Layouts" sidebarTitle: "Call Layouts" +description: "Call Layouts — CometChat documentation." --- Choose how participants are displayed during a call. The SDK provides multiple layout options to suit different use cases like team meetings, presentations, or one-on-one calls. diff --git a/calls/ios/call-logs.mdx b/calls/ios/call-logs.mdx index ca1165020..8038751c3 100644 --- a/calls/ios/call-logs.mdx +++ b/calls/ios/call-logs.mdx @@ -1,6 +1,7 @@ --- title: "Call Logs" sidebarTitle: "Call Logs" +description: "Call Logs — CometChat documentation." --- Retrieve call history for your application. Call logs provide detailed information about past calls including duration, participants, recordings, and status. diff --git a/calls/ios/custom-control-panel.mdx b/calls/ios/custom-control-panel.mdx index 856c9d838..357856adb 100644 --- a/calls/ios/custom-control-panel.mdx +++ b/calls/ios/custom-control-panel.mdx @@ -1,6 +1,7 @@ --- title: "Custom Control Panel" sidebarTitle: "Custom Control Panel" +description: "Custom Control Panel — CometChat documentation." --- Build a fully customized control panel for your call interface by hiding the default controls and implementing your own UI with call actions. This guide walks you through creating a custom control panel with essential call controls. diff --git a/calls/ios/custom-participant-list.mdx b/calls/ios/custom-participant-list.mdx index bad35682b..b5acacb0e 100644 --- a/calls/ios/custom-participant-list.mdx +++ b/calls/ios/custom-participant-list.mdx @@ -1,6 +1,7 @@ --- title: "Custom Participant List" sidebarTitle: "Custom Participant List" +description: "Custom Participant List — CometChat documentation." --- Build a custom participant list UI that displays real-time participant information with full control over layout and interactions. This guide demonstrates how to hide the default participant list and create your own using participant events and actions. diff --git a/calls/ios/events.mdx b/calls/ios/events.mdx index eadd2abbf..4f70556c6 100644 --- a/calls/ios/events.mdx +++ b/calls/ios/events.mdx @@ -1,6 +1,7 @@ --- title: "Events" sidebarTitle: "Events" +description: "Events — CometChat documentation." --- Handle call session events to build responsive UIs. The SDK provides five event listener protocols to monitor session status, participant activities, media changes, button clicks, and layout changes. diff --git a/calls/ios/idle-timeout.mdx b/calls/ios/idle-timeout.mdx index 8a4fdee4d..9bbbe8fdf 100644 --- a/calls/ios/idle-timeout.mdx +++ b/calls/ios/idle-timeout.mdx @@ -1,6 +1,7 @@ --- title: "Idle Timeout" sidebarTitle: "Idle Timeout" +description: "Idle Timeout — CometChat documentation." --- Configure automatic session termination when a user is alone in a call. Idle timeout helps manage resources by ending sessions that have no active participants. diff --git a/calls/ios/in-call-chat.mdx b/calls/ios/in-call-chat.mdx index d484552f2..7179be588 100644 --- a/calls/ios/in-call-chat.mdx +++ b/calls/ios/in-call-chat.mdx @@ -1,6 +1,7 @@ --- title: "In-Call Chat" sidebarTitle: "In-Call Chat" +description: "In-Call Chat — CometChat documentation." --- Add real-time messaging to your call experience using CometChat UI Kit. This allows participants to send text messages, share files, and communicate via chat while on a call. diff --git a/calls/ios/join-session.mdx b/calls/ios/join-session.mdx index c3c01e73c..3c74ec6ff 100644 --- a/calls/ios/join-session.mdx +++ b/calls/ios/join-session.mdx @@ -1,6 +1,7 @@ --- title: "Join Session" sidebarTitle: "Join Session" +description: "Join Session — CometChat documentation." --- Join a call session using one of two approaches: the quick start method with a session ID, or the advanced flow with manual token generation for more control. diff --git a/calls/ios/link/changelog.mdx b/calls/ios/link/changelog.mdx index 9c69dd793..df2e68f5e 100644 --- a/calls/ios/link/changelog.mdx +++ b/calls/ios/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/calls-sdk-ios/releases" +description: "Navigate to Changelog documentation." --- diff --git a/calls/ios/link/github.mdx b/calls/ios/link/github.mdx index 3b20ac517..7580e658b 100644 --- a/calls/ios/link/github.mdx +++ b/calls/ios/link/github.mdx @@ -1,4 +1,5 @@ --- title: "GitHub" url: "https://github.com/cometchat/calls-sdk-ios" +description: "Navigate to GitHub documentation." --- diff --git a/calls/ios/link/sample-apps.mdx b/calls/ios/link/sample-apps.mdx index c1e6c9aca..206ef9cdd 100644 --- a/calls/ios/link/sample-apps.mdx +++ b/calls/ios/link/sample-apps.mdx @@ -1,4 +1,5 @@ --- title: "Sample Apps" url: "https://github.com/cometchat/calls-sdk-ios/tree/v5/sample-apps" +description: "Navigate to Sample Apps documentation." --- diff --git a/calls/ios/overview.mdx b/calls/ios/overview.mdx index 4b685ea0d..3a7f5bdeb 100644 --- a/calls/ios/overview.mdx +++ b/calls/ios/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/ios/participant-management.mdx b/calls/ios/participant-management.mdx index 74c5e8bd2..c307cf652 100644 --- a/calls/ios/participant-management.mdx +++ b/calls/ios/participant-management.mdx @@ -1,6 +1,7 @@ --- title: "Participant Management" sidebarTitle: "Participant Management" +description: "Participant Management — CometChat documentation." --- Manage participants during a call with actions like muting, pausing video, and pinning. These features help maintain order in group calls and highlight important speakers. diff --git a/calls/ios/picture-in-picture.mdx b/calls/ios/picture-in-picture.mdx index abc683869..d1e7cf5ad 100644 --- a/calls/ios/picture-in-picture.mdx +++ b/calls/ios/picture-in-picture.mdx @@ -1,6 +1,7 @@ --- title: "Picture-in-Picture" sidebarTitle: "Picture-in-Picture" +description: "Picture-in-Picture — CometChat documentation." --- Enable Picture-in-Picture (PiP) mode to allow users to continue their call in a floating window while using other apps. PiP provides a seamless multitasking experience during calls. diff --git a/calls/ios/raise-hand.mdx b/calls/ios/raise-hand.mdx index b7c746880..3863aad68 100644 --- a/calls/ios/raise-hand.mdx +++ b/calls/ios/raise-hand.mdx @@ -1,6 +1,7 @@ --- title: "Raise Hand" sidebarTitle: "Raise Hand" +description: "Raise Hand — CometChat documentation." --- Allow participants to raise their hand to get attention during calls. This feature is useful for large meetings, webinars, or any scenario where participants need to signal they want to speak. diff --git a/calls/ios/recording.mdx b/calls/ios/recording.mdx index 70909fe13..280c48e18 100644 --- a/calls/ios/recording.mdx +++ b/calls/ios/recording.mdx @@ -1,6 +1,7 @@ --- title: "Recording" sidebarTitle: "Recording" +description: "Recording — CometChat documentation." --- Record call sessions for later playback. Recordings are stored server-side and can be accessed through call logs or the CometChat Dashboard. diff --git a/calls/ios/ringing.mdx b/calls/ios/ringing.mdx index beeba43c5..d745283ac 100644 --- a/calls/ios/ringing.mdx +++ b/calls/ios/ringing.mdx @@ -1,6 +1,7 @@ --- title: "Ringing" sidebarTitle: "Ringing" +description: "Ringing — CometChat documentation." --- Implement incoming and outgoing call notifications with accept/reject functionality. Ringing enables real-time call signaling between users, allowing them to initiate calls and respond to incoming call requests. diff --git a/calls/ios/screen-sharing.mdx b/calls/ios/screen-sharing.mdx index 9b777c0de..2a56296fe 100644 --- a/calls/ios/screen-sharing.mdx +++ b/calls/ios/screen-sharing.mdx @@ -1,6 +1,7 @@ --- title: "Screen Sharing" sidebarTitle: "Screen Sharing" +description: "Screen Sharing — CometChat documentation." --- View screen shares from other participants during a call. The iOS SDK can receive and display screen shares initiated from web clients. diff --git a/calls/ios/session-settings.mdx b/calls/ios/session-settings.mdx index a94d84541..8eb03f1be 100644 --- a/calls/ios/session-settings.mdx +++ b/calls/ios/session-settings.mdx @@ -1,6 +1,7 @@ --- title: "SessionSettingsBuilder" sidebarTitle: "SessionSettingsBuilder" +description: "SessionSettingsBuilder — CometChat documentation." --- The `SessionSettingsBuilder` is a powerful configuration tool that allows you to customize every aspect of your call session before participants join. From controlling the initial audio/video state to customizing the UI layout and hiding specific controls, this builder gives you complete control over the call experience. diff --git a/calls/ios/setup.mdx b/calls/ios/setup.mdx index 342229b64..06b97fedd 100644 --- a/calls/ios/setup.mdx +++ b/calls/ios/setup.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Setup" +description: "Setup — CometChat documentation." --- This guide walks you through installing the CometChat Calls SDK and initializing it in your iOS application. diff --git a/calls/ios/share-invite.mdx b/calls/ios/share-invite.mdx index b51228041..d8e0cbe95 100644 --- a/calls/ios/share-invite.mdx +++ b/calls/ios/share-invite.mdx @@ -1,6 +1,7 @@ --- title: "Share Invite" sidebarTitle: "Share Invite" +description: "Share Invite — CometChat documentation." --- Enable participants to invite others to join a call by sharing a meeting link. The share invite button opens the system share sheet, allowing users to send the invite via any messaging app, email, or social media. diff --git a/calls/ios/voip-calling.mdx b/calls/ios/voip-calling.mdx index 24d8eff4c..78dd69240 100644 --- a/calls/ios/voip-calling.mdx +++ b/calls/ios/voip-calling.mdx @@ -1,6 +1,7 @@ --- title: "VoIP Calling" sidebarTitle: "VoIP Calling" +description: "VoIP Calling — CometChat documentation." --- Implement native VoIP calling that works when your app is in the background or killed. This guide shows how to integrate Apple's CallKit framework with CometChat to display system call UI, handle calls from the lock screen, and provide a native calling experience. diff --git a/calls/javascript/actions.mdx b/calls/javascript/actions.mdx index 116f9523b..6d7b18e2f 100644 --- a/calls/javascript/actions.mdx +++ b/calls/javascript/actions.mdx @@ -1,6 +1,7 @@ --- title: "Actions" sidebarTitle: "Actions" +description: "Actions — CometChat documentation." --- Use call actions to create your own custom controls or trigger call functionality dynamically based on your use case. All actions are called on the `CometChatCalls` class during an active call session. diff --git a/calls/javascript/angular-integration.mdx b/calls/javascript/angular-integration.mdx index 28b834054..4686c03f4 100644 --- a/calls/javascript/angular-integration.mdx +++ b/calls/javascript/angular-integration.mdx @@ -1,6 +1,7 @@ --- title: "Angular Integration" sidebarTitle: "Angular" +description: "Angular Integration — CometChat documentation." --- This guide walks you through integrating the CometChat Calls SDK into an Angular application. By the end, you'll have a working video call implementation with proper service architecture and lifecycle management. diff --git a/calls/javascript/authentication.mdx b/calls/javascript/authentication.mdx index c6fe66582..660923287 100644 --- a/calls/javascript/authentication.mdx +++ b/calls/javascript/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Authentication" +description: "Authentication — CometChat documentation." --- Before users can make or receive calls, they must be authenticated with the CometChat Calls SDK. This guide covers the login and logout methods. diff --git a/calls/javascript/call-layouts.mdx b/calls/javascript/call-layouts.mdx index aa9b6c8a2..57fbf80db 100644 --- a/calls/javascript/call-layouts.mdx +++ b/calls/javascript/call-layouts.mdx @@ -1,6 +1,7 @@ --- title: "Call Layouts" sidebarTitle: "Call Layouts" +description: "Call Layouts — CometChat documentation." --- The CometChat Calls SDK provides three layout modes to display participants during a call. Each participant can independently choose their preferred layout without affecting others. diff --git a/calls/javascript/call-logs.mdx b/calls/javascript/call-logs.mdx index d656356d4..aa825dda2 100644 --- a/calls/javascript/call-logs.mdx +++ b/calls/javascript/call-logs.mdx @@ -1,6 +1,7 @@ --- title: "Call Logs" sidebarTitle: "Call Logs" +description: "Call Logs — CometChat documentation." --- Retrieve call history and details using the CometChat REST API. Call logs provide information about past calls including participants, duration, and recording URLs. diff --git a/calls/javascript/custom-control-panel.mdx b/calls/javascript/custom-control-panel.mdx index 0bdae429f..ac4c40924 100644 --- a/calls/javascript/custom-control-panel.mdx +++ b/calls/javascript/custom-control-panel.mdx @@ -1,6 +1,7 @@ --- title: "Custom Control Panel" sidebarTitle: "Custom Control Panel" +description: "Custom Control Panel — CometChat documentation." --- Build a custom control panel by hiding the default UI and using the SDK's action methods to control call functionality. diff --git a/calls/javascript/device-management.mdx b/calls/javascript/device-management.mdx index d6e3bd0b2..f5377b145 100644 --- a/calls/javascript/device-management.mdx +++ b/calls/javascript/device-management.mdx @@ -1,6 +1,7 @@ --- title: "Device Management" sidebarTitle: "Device Management" +description: "Device Management — CometChat documentation." --- Manage audio and video devices during calls, including selecting microphones, speakers, and cameras. diff --git a/calls/javascript/events.mdx b/calls/javascript/events.mdx index ab3c45afb..5a84e4b11 100644 --- a/calls/javascript/events.mdx +++ b/calls/javascript/events.mdx @@ -1,6 +1,7 @@ --- title: "Events" sidebarTitle: "Events" +description: "Events — CometChat documentation." --- Handle call session events to build responsive UIs. The SDK provides event listeners to monitor session status, participant activities, media changes, button clicks, and layout changes. diff --git a/calls/javascript/idle-timeout.mdx b/calls/javascript/idle-timeout.mdx index b62161429..6ed861281 100644 --- a/calls/javascript/idle-timeout.mdx +++ b/calls/javascript/idle-timeout.mdx @@ -1,6 +1,7 @@ --- title: "Idle Timeout" sidebarTitle: "Idle Timeout" +description: "Idle Timeout — CometChat documentation." --- The idle timeout feature automatically ends a call session when you're the only participant remaining. This prevents sessions from running indefinitely and consuming resources. diff --git a/calls/javascript/in-call-chat.mdx b/calls/javascript/in-call-chat.mdx index 62e06d184..db2a82235 100644 --- a/calls/javascript/in-call-chat.mdx +++ b/calls/javascript/in-call-chat.mdx @@ -1,6 +1,7 @@ --- title: "In-Call Chat" sidebarTitle: "In-Call Chat" +description: "In-Call Chat — CometChat documentation." --- Enable text messaging during calls by integrating the in-call chat feature. The SDK provides a chat button in the control panel and events to help you build a custom chat experience. diff --git a/calls/javascript/ionic-integration.mdx b/calls/javascript/ionic-integration.mdx index 77de909c0..f4a16c2bb 100644 --- a/calls/javascript/ionic-integration.mdx +++ b/calls/javascript/ionic-integration.mdx @@ -1,6 +1,7 @@ --- title: "Ionic Integration" sidebarTitle: "Ionic" +description: "Ionic Integration — CometChat documentation." --- This guide walks you through integrating the CometChat Calls SDK into an Ionic application. By the end, you'll have a working video call implementation with proper authentication and lifecycle handling. This guide covers Ionic with Angular, React, and Vue. diff --git a/calls/javascript/join-session.mdx b/calls/javascript/join-session.mdx index b4e88361d..28a4c336b 100644 --- a/calls/javascript/join-session.mdx +++ b/calls/javascript/join-session.mdx @@ -1,6 +1,7 @@ --- title: "Join Session" sidebarTitle: "Join Session" +description: "Join Session — CometChat documentation." --- Join a call session using one of two approaches: the quick start method with a session ID, or the advanced flow with manual token generation for more control. diff --git a/calls/javascript/link/changelog.mdx b/calls/javascript/link/changelog.mdx index 5709c38be..db81454a1 100644 --- a/calls/javascript/link/changelog.mdx +++ b/calls/javascript/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/calls-sdk-javascript/releases" +description: "Navigate to Changelog documentation." --- diff --git a/calls/javascript/link/github.mdx b/calls/javascript/link/github.mdx index 680232f4d..25ac7a8ae 100644 --- a/calls/javascript/link/github.mdx +++ b/calls/javascript/link/github.mdx @@ -1,4 +1,5 @@ --- title: "GitHub" url: "https://github.com/cometchat/calls-sdk-javascript" +description: "Navigate to GitHub documentation." --- diff --git a/calls/javascript/link/live-demo.mdx b/calls/javascript/link/live-demo.mdx index 4dffdcdd0..070012d7e 100644 --- a/calls/javascript/link/live-demo.mdx +++ b/calls/javascript/link/live-demo.mdx @@ -1,4 +1,5 @@ --- title: "Live Demo" url: "https://calls.cometchat.io/" +description: "Navigate to Live Demo documentation." --- diff --git a/calls/javascript/link/sample-apps.mdx b/calls/javascript/link/sample-apps.mdx index 1262b4f2f..c5983ae67 100644 --- a/calls/javascript/link/sample-apps.mdx +++ b/calls/javascript/link/sample-apps.mdx @@ -1,4 +1,5 @@ --- title: "Sample Apps" url: "https://github.com/cometchat/calls-sdk-javascript/tree/v5/sample-apps" +description: "Navigate to Sample Apps documentation." --- diff --git a/calls/javascript/nextjs-integration.mdx b/calls/javascript/nextjs-integration.mdx index d59b3721c..b696b298d 100644 --- a/calls/javascript/nextjs-integration.mdx +++ b/calls/javascript/nextjs-integration.mdx @@ -1,6 +1,7 @@ --- title: "Next.js Integration" sidebarTitle: "Next.js" +description: "Next.js Integration — CometChat documentation." --- This guide walks you through integrating the CometChat Calls SDK into a Next.js application. By the end, you'll have a working video call implementation with proper server-side rendering handling and authentication. diff --git a/calls/javascript/overview.mdx b/calls/javascript/overview.mdx index 3b16d0503..69e87eb8d 100644 --- a/calls/javascript/overview.mdx +++ b/calls/javascript/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/javascript/participant-management.mdx b/calls/javascript/participant-management.mdx index 105430f95..1c0987647 100644 --- a/calls/javascript/participant-management.mdx +++ b/calls/javascript/participant-management.mdx @@ -1,6 +1,7 @@ --- title: "Participant Management" sidebarTitle: "Participant Management" +description: "Participant Management — CometChat documentation." --- Manage call participants including muting, pinning, and monitoring their status during a call. diff --git a/calls/javascript/permissions-handling.mdx b/calls/javascript/permissions-handling.mdx index b7b43fb46..4e4bc5cb7 100644 --- a/calls/javascript/permissions-handling.mdx +++ b/calls/javascript/permissions-handling.mdx @@ -1,6 +1,7 @@ --- title: "Permissions Handling" sidebarTitle: "Permissions Handling" +description: "Permissions Handling — CometChat documentation." --- Handle camera and microphone permissions gracefully to provide a good user experience when joining calls. diff --git a/calls/javascript/picture-in-picture.mdx b/calls/javascript/picture-in-picture.mdx index 1648a701b..fe210fd09 100644 --- a/calls/javascript/picture-in-picture.mdx +++ b/calls/javascript/picture-in-picture.mdx @@ -1,6 +1,7 @@ --- title: "Picture-in-Picture" sidebarTitle: "Picture-in-Picture" +description: "Picture-in-Picture — CometChat documentation." --- Picture-in-Picture (PiP) allows the call video to continue playing in a floating window while users interact with other content on the page or other browser tabs. diff --git a/calls/javascript/raise-hand.mdx b/calls/javascript/raise-hand.mdx index b012761d4..a48a54a3b 100644 --- a/calls/javascript/raise-hand.mdx +++ b/calls/javascript/raise-hand.mdx @@ -1,6 +1,7 @@ --- title: "Raise Hand" sidebarTitle: "Raise Hand" +description: "Raise Hand — CometChat documentation." --- The raise hand feature allows participants to signal that they want to speak or get attention during a call without interrupting the current speaker. diff --git a/calls/javascript/react-integration.mdx b/calls/javascript/react-integration.mdx index 132a14355..47848710c 100644 --- a/calls/javascript/react-integration.mdx +++ b/calls/javascript/react-integration.mdx @@ -1,6 +1,7 @@ --- title: "React Integration" sidebarTitle: "React" +description: "React Integration — CometChat documentation." --- This guide walks you through integrating the CometChat Calls SDK into a React application. By the end, you'll have a working video call implementation with proper state management and lifecycle handling. diff --git a/calls/javascript/recording.mdx b/calls/javascript/recording.mdx index ada4a3d41..366cf9847 100644 --- a/calls/javascript/recording.mdx +++ b/calls/javascript/recording.mdx @@ -1,6 +1,7 @@ --- title: "Recording" sidebarTitle: "Recording" +description: "Recording — CometChat documentation." --- Record call sessions for later playback, compliance, or training purposes. Recordings are stored server-side and can be accessed through the CometChat dashboard. diff --git a/calls/javascript/ringing.mdx b/calls/javascript/ringing.mdx index 74fc9b3e7..fc9df1a9c 100644 --- a/calls/javascript/ringing.mdx +++ b/calls/javascript/ringing.mdx @@ -1,6 +1,7 @@ --- title: "Ringing" sidebarTitle: "Ringing" +description: "Ringing — CometChat documentation." --- Implement incoming and outgoing call notifications by integrating the Calls SDK with the CometChat Chat SDK for call signaling. diff --git a/calls/javascript/screen-sharing.mdx b/calls/javascript/screen-sharing.mdx index d3c70c387..227e183c8 100644 --- a/calls/javascript/screen-sharing.mdx +++ b/calls/javascript/screen-sharing.mdx @@ -1,6 +1,7 @@ --- title: "Screen Sharing" sidebarTitle: "Screen Sharing" +description: "Screen Sharing — CometChat documentation." --- Share your screen with other participants during a call. The browser will prompt users to select which screen, window, or browser tab to share. diff --git a/calls/javascript/session-settings.mdx b/calls/javascript/session-settings.mdx index d2948b674..4597b66f4 100644 --- a/calls/javascript/session-settings.mdx +++ b/calls/javascript/session-settings.mdx @@ -1,6 +1,7 @@ --- title: "Session Settings" sidebarTitle: "Session Settings" +description: "Session Settings — CometChat documentation." --- The session settings object allows you to customize every aspect of your call session before participants join. From controlling the initial audio/video state to customizing the UI layout and hiding specific controls, these settings give you complete control over the call experience. diff --git a/calls/javascript/setup.mdx b/calls/javascript/setup.mdx index 321382759..252c9dae7 100644 --- a/calls/javascript/setup.mdx +++ b/calls/javascript/setup.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Setup" +description: "Setup — CometChat documentation." --- This guide walks you through installing the CometChat Calls SDK and initializing it in your web application. diff --git a/calls/javascript/share-invite.mdx b/calls/javascript/share-invite.mdx index 7865d62a6..25e74761f 100644 --- a/calls/javascript/share-invite.mdx +++ b/calls/javascript/share-invite.mdx @@ -1,6 +1,7 @@ --- title: "Share Invite" sidebarTitle: "Share Invite" +description: "Share Invite — CometChat documentation." --- Allow participants to share call invitations with others using the share invite feature. diff --git a/calls/javascript/virtual-background.mdx b/calls/javascript/virtual-background.mdx index bae8b1da5..8c6a274d0 100644 --- a/calls/javascript/virtual-background.mdx +++ b/calls/javascript/virtual-background.mdx @@ -1,6 +1,7 @@ --- title: "Virtual Background" sidebarTitle: "Virtual Background" +description: "Virtual Background — CometChat documentation." --- Apply virtual backgrounds to your video feed during calls. You can blur your background or replace it with a custom image. diff --git a/calls/javascript/vue-integration.mdx b/calls/javascript/vue-integration.mdx index 2cd5a4256..b2de00324 100644 --- a/calls/javascript/vue-integration.mdx +++ b/calls/javascript/vue-integration.mdx @@ -1,6 +1,7 @@ --- title: "Vue Integration" sidebarTitle: "Vue" +description: "Vue Integration — CometChat documentation." --- This guide walks you through integrating the CometChat Calls SDK into a Vue.js application. By the end, you'll have a working video call implementation with proper state management and lifecycle handling. diff --git a/calls/react-native/actions.mdx b/calls/react-native/actions.mdx index dd0a24770..daa38200d 100644 --- a/calls/react-native/actions.mdx +++ b/calls/react-native/actions.mdx @@ -1,6 +1,7 @@ --- title: "Actions" sidebarTitle: "Actions" +description: "Actions — CometChat documentation." --- Control the active call session programmatically using the static methods on `CometChatCalls`. These methods allow you to manage audio, video, screen sharing, and other call features. diff --git a/calls/react-native/audio-modes.mdx b/calls/react-native/audio-modes.mdx index b385f35b7..95a3066e0 100644 --- a/calls/react-native/audio-modes.mdx +++ b/calls/react-native/audio-modes.mdx @@ -1,6 +1,7 @@ --- title: "Audio Modes" sidebarTitle: "Audio Modes" +description: "Audio Modes — CometChat documentation." --- The CometChat Calls SDK supports multiple audio output modes on mobile devices. Users can switch between speaker, earpiece, Bluetooth, and wired headphones. diff --git a/calls/react-native/authentication.mdx b/calls/react-native/authentication.mdx index c5f66cf09..aa6b9a334 100644 --- a/calls/react-native/authentication.mdx +++ b/calls/react-native/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Authentication" +description: "Authentication — CometChat documentation." --- This guide covers initializing the CometChat Calls SDK and authenticating users in your React Native application. diff --git a/calls/react-native/background-handling.mdx b/calls/react-native/background-handling.mdx index f0b84327b..ea478d0e8 100644 --- a/calls/react-native/background-handling.mdx +++ b/calls/react-native/background-handling.mdx @@ -1,6 +1,7 @@ --- title: "Background Handling" sidebarTitle: "Background Handling" +description: "Background Handling — CometChat documentation." --- Keep calls active when your app goes to the background. This requires platform-specific configuration to maintain audio/video streams and handle system interruptions. diff --git a/calls/react-native/call-layouts.mdx b/calls/react-native/call-layouts.mdx index 248f78f74..c6dd6acf9 100644 --- a/calls/react-native/call-layouts.mdx +++ b/calls/react-native/call-layouts.mdx @@ -1,6 +1,7 @@ --- title: "Call Layouts" sidebarTitle: "Call Layouts" +description: "Call Layouts — CometChat documentation." --- The CometChat Calls SDK provides three layout modes for displaying participants during a call. You can set the initial layout in call settings or change it programmatically during the call. diff --git a/calls/react-native/call-logs.mdx b/calls/react-native/call-logs.mdx index 3693f70e6..a72a8341a 100644 --- a/calls/react-native/call-logs.mdx +++ b/calls/react-native/call-logs.mdx @@ -1,6 +1,7 @@ --- title: "Call Logs" sidebarTitle: "Call Logs" +description: "Call Logs — CometChat documentation." --- Call logs provide a history of calls made through your application. You can retrieve call logs using the CometChat Chat SDK's call log APIs. diff --git a/calls/react-native/custom-control-panel.mdx b/calls/react-native/custom-control-panel.mdx index 578b0df84..5ed48cb2f 100644 --- a/calls/react-native/custom-control-panel.mdx +++ b/calls/react-native/custom-control-panel.mdx @@ -1,6 +1,7 @@ --- title: "Custom Control Panel" sidebarTitle: "Custom Control Panel" +description: "Custom Control Panel — CometChat documentation." --- Build a custom control panel to replace or extend the default call controls. Hide the default layout and implement your own UI using the SDK's action methods. diff --git a/calls/react-native/custom-participant-list.mdx b/calls/react-native/custom-participant-list.mdx index 28c46d27e..b78a20b4f 100644 --- a/calls/react-native/custom-participant-list.mdx +++ b/calls/react-native/custom-participant-list.mdx @@ -1,6 +1,7 @@ --- title: "Custom Participant List" sidebarTitle: "Custom Participant List" +description: "Custom Participant List — CometChat documentation." --- Build a custom participant list UI to display and manage call participants. Listen for participant events and use the SDK's management methods. diff --git a/calls/react-native/events.mdx b/calls/react-native/events.mdx index c219d4dbf..f994d80a3 100644 --- a/calls/react-native/events.mdx +++ b/calls/react-native/events.mdx @@ -1,6 +1,7 @@ --- title: "Events" sidebarTitle: "Events" +description: "Events — CometChat documentation." --- The CometChat Calls SDK provides two ways to listen for call events: the `OngoingCallListener` class for legacy-style callbacks, and the `addEventListener` method for modern event subscriptions. diff --git a/calls/react-native/idle-timeout.mdx b/calls/react-native/idle-timeout.mdx index b8b24f838..cc4f3b4a5 100644 --- a/calls/react-native/idle-timeout.mdx +++ b/calls/react-native/idle-timeout.mdx @@ -1,6 +1,7 @@ --- title: "Idle Timeout" sidebarTitle: "Idle Timeout" +description: "Idle Timeout — CometChat documentation." --- The idle timeout feature automatically ends a call session when a participant is alone for a specified period. This prevents abandoned calls from running indefinitely. diff --git a/calls/react-native/in-call-chat.mdx b/calls/react-native/in-call-chat.mdx index 472fb98d2..596fe3c0d 100644 --- a/calls/react-native/in-call-chat.mdx +++ b/calls/react-native/in-call-chat.mdx @@ -1,6 +1,7 @@ --- title: "In-Call Chat" sidebarTitle: "In-Call Chat" +description: "In-Call Chat — CometChat documentation." --- Enable messaging during calls by integrating the CometChat Chat SDK. Users can send and receive text messages while on a call. diff --git a/calls/react-native/join-session.mdx b/calls/react-native/join-session.mdx index c5afbaae0..d94f0f732 100644 --- a/calls/react-native/join-session.mdx +++ b/calls/react-native/join-session.mdx @@ -1,6 +1,7 @@ --- title: "Join Session" sidebarTitle: "Join Session" +description: "Join Session — CometChat documentation." --- This guide covers generating call tokens and joining call sessions using the CometChat Calls SDK. diff --git a/calls/react-native/link/changelog.mdx b/calls/react-native/link/changelog.mdx index 63d3a39a8..0af07bdc8 100644 --- a/calls/react-native/link/changelog.mdx +++ b/calls/react-native/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/calls-sdk-react-native/releases" +description: "Navigate to Changelog documentation." --- diff --git a/calls/react-native/link/github.mdx b/calls/react-native/link/github.mdx index 6c610b093..60233e5be 100644 --- a/calls/react-native/link/github.mdx +++ b/calls/react-native/link/github.mdx @@ -1,4 +1,5 @@ --- title: "GitHub" url: "https://github.com/cometchat/calls-sdk-react-native" +description: "Navigate to GitHub documentation." --- diff --git a/calls/react-native/link/sample-apps.mdx b/calls/react-native/link/sample-apps.mdx index af20be5d0..6561f4917 100644 --- a/calls/react-native/link/sample-apps.mdx +++ b/calls/react-native/link/sample-apps.mdx @@ -1,4 +1,5 @@ --- title: "Sample Apps" url: "https://github.com/cometchat/calls-sdk-react-native/tree/v5/sample-apps" +description: "Navigate to Sample Apps documentation." --- diff --git a/calls/react-native/overview.mdx b/calls/react-native/overview.mdx index 03755157e..e11367bfd 100644 --- a/calls/react-native/overview.mdx +++ b/calls/react-native/overview.mdx @@ -1,6 +1,7 @@ --- title: "Calls SDK" sidebarTitle: "Overview" +description: "Overview of Calls SDK in CometChat." --- diff --git a/calls/react-native/participant-management.mdx b/calls/react-native/participant-management.mdx index 439669338..71ddbb279 100644 --- a/calls/react-native/participant-management.mdx +++ b/calls/react-native/participant-management.mdx @@ -1,6 +1,7 @@ --- title: "Participant Management" sidebarTitle: "Participant Management" +description: "Participant Management — CometChat documentation." --- Manage call participants by muting, pinning, and monitoring their status during a call. diff --git a/calls/react-native/picture-in-picture.mdx b/calls/react-native/picture-in-picture.mdx index 82fdb9793..5e35a0979 100644 --- a/calls/react-native/picture-in-picture.mdx +++ b/calls/react-native/picture-in-picture.mdx @@ -1,6 +1,7 @@ --- title: "Picture-in-Picture" sidebarTitle: "Picture-in-Picture" +description: "Picture-in-Picture — CometChat documentation." --- Picture-in-Picture (PiP) mode allows users to continue their call in a floating window while using other apps. This feature requires platform-specific configuration. diff --git a/calls/react-native/raise-hand.mdx b/calls/react-native/raise-hand.mdx index 8aa46aa1c..a9a0f7b88 100644 --- a/calls/react-native/raise-hand.mdx +++ b/calls/react-native/raise-hand.mdx @@ -1,6 +1,7 @@ --- title: "Raise Hand" sidebarTitle: "Raise Hand" +description: "Raise Hand — CometChat documentation." --- The raise hand feature allows participants to signal that they want attention during a call, useful for Q&A sessions or large meetings. diff --git a/calls/react-native/recording.mdx b/calls/react-native/recording.mdx index 4dfab3e85..aa69cc939 100644 --- a/calls/react-native/recording.mdx +++ b/calls/react-native/recording.mdx @@ -1,6 +1,7 @@ --- title: "Recording" sidebarTitle: "Recording" +description: "Recording — CometChat documentation." --- The CometChat Calls SDK supports recording call sessions. Recordings can be started manually or automatically when the call begins. diff --git a/calls/react-native/ringing.mdx b/calls/react-native/ringing.mdx index ecd846cc7..0436ebe79 100644 --- a/calls/react-native/ringing.mdx +++ b/calls/react-native/ringing.mdx @@ -1,6 +1,7 @@ --- title: "Ringing" sidebarTitle: "Ringing" +description: "Ringing — CometChat documentation." --- Implement incoming and outgoing call notifications using the CometChat Chat SDK's calling features. The Calls SDK handles the actual call session, while the Chat SDK manages call signaling. diff --git a/calls/react-native/screen-sharing.mdx b/calls/react-native/screen-sharing.mdx index 2b48c17b3..e6863b438 100644 --- a/calls/react-native/screen-sharing.mdx +++ b/calls/react-native/screen-sharing.mdx @@ -1,6 +1,7 @@ --- title: "Screen Sharing" sidebarTitle: "Screen Sharing" +description: "Screen Sharing — CometChat documentation." --- The CometChat Calls SDK supports viewing screen shares from other participants. Screen sharing initiation on React Native requires platform-specific configuration. diff --git a/calls/react-native/session-settings.mdx b/calls/react-native/session-settings.mdx index 4102e94f8..677e07708 100644 --- a/calls/react-native/session-settings.mdx +++ b/calls/react-native/session-settings.mdx @@ -1,6 +1,7 @@ --- title: "Session Settings" sidebarTitle: "Session Settings" +description: "Session Settings — CometChat documentation." --- Configure call sessions using the `CallSettingsBuilder` class. This allows you to customize the call UI, behavior, and event handling. diff --git a/calls/react-native/setup.mdx b/calls/react-native/setup.mdx index 38ea2ece5..af83eee36 100644 --- a/calls/react-native/setup.mdx +++ b/calls/react-native/setup.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Setup" +description: "Setup — CometChat documentation." --- This guide walks you through installing the CometChat Calls SDK and configuring it in your React Native application. diff --git a/calls/react-native/share-invite.mdx b/calls/react-native/share-invite.mdx index c1f04d6c8..a56d66314 100644 --- a/calls/react-native/share-invite.mdx +++ b/calls/react-native/share-invite.mdx @@ -1,6 +1,7 @@ --- title: "Share Invite" sidebarTitle: "Share Invite" +description: "Share Invite — CometChat documentation." --- Allow users to share call invite links with others. When the share invite button is clicked, you can generate and share a link that others can use to join the call. diff --git a/calls/react-native/voip-calling.mdx b/calls/react-native/voip-calling.mdx index 3fe65c95d..1c66074f0 100644 --- a/calls/react-native/voip-calling.mdx +++ b/calls/react-native/voip-calling.mdx @@ -1,6 +1,7 @@ --- title: "VoIP Calling" sidebarTitle: "VoIP Calling" +description: "VoIP Calling — CometChat documentation." --- Implement VoIP push notifications to receive incoming calls even when your app is in the background or terminated. This requires platform-specific configuration for iOS CallKit and Android ConnectionService. diff --git a/chat-builder/nextjs/integration.mdx b/chat-builder/nextjs/integration.mdx index e48ca17b4..5c5690fea 100644 --- a/chat-builder/nextjs/integration.mdx +++ b/chat-builder/nextjs/integration.mdx @@ -549,7 +549,7 @@ Pass the `user` or `group` prop to specify which conversation opens by default. Start your development server: -``` +```bash npm run dev ``` diff --git a/chat-builder/react-router/integration.mdx b/chat-builder/react-router/integration.mdx index ab15891b5..c79372269 100644 --- a/chat-builder/react-router/integration.mdx +++ b/chat-builder/react-router/integration.mdx @@ -487,13 +487,13 @@ Start your application with the appropriate command based on your setup: -``` +```bash npm run dev ``` -``` +```bash npm start ``` diff --git a/chat-builder/react/integration.mdx b/chat-builder/react/integration.mdx index 802d8c61d..9d1732ad7 100644 --- a/chat-builder/react/integration.mdx +++ b/chat-builder/react/integration.mdx @@ -487,13 +487,13 @@ Start your application with the appropriate command based on your setup: -``` +```bash npm run dev ``` -``` +```bash npm start ``` diff --git a/fundamentals/ai-user-copilot/conversation-starter.mdx b/fundamentals/ai-user-copilot/conversation-starter.mdx index 28f493ce8..a16ecd8a9 100644 --- a/fundamentals/ai-user-copilot/conversation-starter.mdx +++ b/fundamentals/ai-user-copilot/conversation-starter.mdx @@ -1,5 +1,6 @@ --- title: "Conversation Starter" +description: "Conversation Starter — CometChat documentation." --- **Conversation Starter** enables you to retrieve an initial message in a new conversation, often used to set the context for the conversation that is about to begin. This can be particularly useful for guiding users on how to interact within the chat or for delivering automated messages that engage users when they initiate a chat. diff --git a/fundamentals/ai-user-copilot/conversation-summary.mdx b/fundamentals/ai-user-copilot/conversation-summary.mdx index 3edde4882..b094fad17 100644 --- a/fundamentals/ai-user-copilot/conversation-summary.mdx +++ b/fundamentals/ai-user-copilot/conversation-summary.mdx @@ -1,5 +1,6 @@ --- title: "Conversation Summary" +description: "Conversation Summary — CometChat documentation." --- **Conversation Summary** enables the summarization of conversations using AI. diff --git a/fundamentals/ai-user-copilot/overview.mdx b/fundamentals/ai-user-copilot/overview.mdx index f8bd53889..c9ebb9d08 100644 --- a/fundamentals/ai-user-copilot/overview.mdx +++ b/fundamentals/ai-user-copilot/overview.mdx @@ -1,6 +1,7 @@ --- title: "AI User Copilot" sidebarTitle: "Overview" +description: "Overview of AI User Copilot in CometChat." --- ## AI-Enabled Messaging Experience diff --git a/fundamentals/ai-user-copilot/smart-replies.mdx b/fundamentals/ai-user-copilot/smart-replies.mdx index 789614bff..90730ab13 100644 --- a/fundamentals/ai-user-copilot/smart-replies.mdx +++ b/fundamentals/ai-user-copilot/smart-replies.mdx @@ -1,5 +1,6 @@ --- title: "Smart Replies" +description: "Smart Replies — CometChat documentation." --- **Smart Replies** enable the retrieval of an AI-generated response message within a conversation. diff --git a/fundamentals/avatars.mdx b/fundamentals/avatars.mdx index f4e1beb98..590a77bd4 100644 --- a/fundamentals/avatars.mdx +++ b/fundamentals/avatars.mdx @@ -1,5 +1,6 @@ --- title: "Avatars (Deprecated)" +description: "Avatars (Deprecated) — CometChat documentation." --- diff --git a/fundamentals/bitly.mdx b/fundamentals/bitly.mdx index 6f206b2b0..c25f5a4a8 100644 --- a/fundamentals/bitly.mdx +++ b/fundamentals/bitly.mdx @@ -1,5 +1,6 @@ --- title: "Bitly" +description: "Bitly — CometChat documentation." --- *Learn how to minify the long website links in your text messages using Bitly.* diff --git a/fundamentals/chatwoot.mdx b/fundamentals/chatwoot.mdx index c86831fc1..b9e913c0f 100644 --- a/fundamentals/chatwoot.mdx +++ b/fundamentals/chatwoot.mdx @@ -1,5 +1,6 @@ --- title: "Chatwoot" +description: "Chatwoot — CometChat documentation." --- The Chatwoot extension makes customer support seamless for your users. Instead of having two interfaces- one for chat between users and one for chat with your support team, you can use CometChat as a front-end for your customer support use case as well! diff --git a/fundamentals/collaborative-document.mdx b/fundamentals/collaborative-document.mdx index 6ea7bcf52..4775439f3 100644 --- a/fundamentals/collaborative-document.mdx +++ b/fundamentals/collaborative-document.mdx @@ -1,5 +1,6 @@ --- title: "Collaborative Document" +description: "Collaborative Document — CometChat documentation." --- Learn how to collaborate using a document. diff --git a/fundamentals/collaborative-whiteboard.mdx b/fundamentals/collaborative-whiteboard.mdx index d0b415dd7..ef1383f73 100644 --- a/fundamentals/collaborative-whiteboard.mdx +++ b/fundamentals/collaborative-whiteboard.mdx @@ -1,5 +1,6 @@ --- title: "Collaborative Whiteboard" +description: "Collaborative Whiteboard — CometChat documentation." --- Connect with other users of the app and collaborate using a Whiteboard. diff --git a/fundamentals/data-import-and-migration.mdx b/fundamentals/data-import-and-migration.mdx index 89693090c..a52dc3c08 100644 --- a/fundamentals/data-import-and-migration.mdx +++ b/fundamentals/data-import-and-migration.mdx @@ -1,6 +1,7 @@ --- title: "Data Import and Migration" sidebarTitle: "Data Import and Migration" +description: "Data Import and Migration — CometChat documentation." --- Data import and migration enables you to transfer existing chat data from your own servers or another chat provider to CometChat. This ensures continuity of service and preserves your users' conversation history during the transition. diff --git a/fundamentals/disappearing-messages.mdx b/fundamentals/disappearing-messages.mdx index 73d8ec55a..b7cd4c987 100644 --- a/fundamentals/disappearing-messages.mdx +++ b/fundamentals/disappearing-messages.mdx @@ -1,5 +1,6 @@ --- title: "Disappearing Messages" +description: "Disappearing Messages — CometChat documentation." --- The Disappearing Messages extension allows end-users to send messages that disappear after a certain interval of time. This extension works for both private (one-on-one) and group messages. diff --git a/fundamentals/email-replies.mdx b/fundamentals/email-replies.mdx index 31c5612b4..d33df6c61 100644 --- a/fundamentals/email-replies.mdx +++ b/fundamentals/email-replies.mdx @@ -1,5 +1,6 @@ --- title: "Email Replies (Legacy)" +description: "Email Replies (Legacy) — CometChat documentation." --- diff --git a/fundamentals/emojis.mdx b/fundamentals/emojis.mdx index 4b654a790..e890b4b2c 100644 --- a/fundamentals/emojis.mdx +++ b/fundamentals/emojis.mdx @@ -1,5 +1,6 @@ --- title: "Emojis (Deprecated)" +description: "Emojis (Deprecated) — CometChat documentation." --- diff --git a/fundamentals/end-to-end-encryption.mdx b/fundamentals/end-to-end-encryption.mdx index 1fd501de3..71b00500d 100644 --- a/fundamentals/end-to-end-encryption.mdx +++ b/fundamentals/end-to-end-encryption.mdx @@ -1,5 +1,6 @@ --- title: "End To End Encryption (Deprecated)" +description: "End To End Encryption (Deprecated) — CometChat documentation." --- diff --git a/fundamentals/extensions-overview.mdx b/fundamentals/extensions-overview.mdx index b05699a8c..a0d9e4393 100644 --- a/fundamentals/extensions-overview.mdx +++ b/fundamentals/extensions-overview.mdx @@ -1,6 +1,7 @@ --- title: "Extensions" sidebarTitle: "Overview" +description: "Overview of Extensions in CometChat." --- We believe that building a great chat product does not consist of just voice, video and text chat. It's much more than that. And Extensions are our answer to this. diff --git a/fundamentals/features-core.mdx b/fundamentals/features-core.mdx index 5f2c7a2b5..bf17586c3 100644 --- a/fundamentals/features-core.mdx +++ b/fundamentals/features-core.mdx @@ -1,6 +1,7 @@ --- title: "Core In App Messaging Features" sidebarTitle: "Core" +description: "Core In App Messaging Features — CometChat documentation." --- CometChat provides a powerful suite of messaging features. A subset of these features called 'Messaging Core' provide features which are bare minimum to build a good chat user experience. diff --git a/fundamentals/gfycat.mdx b/fundamentals/gfycat.mdx index 0bc837504..6027da83b 100644 --- a/fundamentals/gfycat.mdx +++ b/fundamentals/gfycat.mdx @@ -1,5 +1,6 @@ --- title: "Gfycat (Deprecated)" +description: "Gfycat (Deprecated) — CometChat documentation." --- diff --git a/fundamentals/giphy.mdx b/fundamentals/giphy.mdx index a80ed343a..43eda9aa2 100644 --- a/fundamentals/giphy.mdx +++ b/fundamentals/giphy.mdx @@ -1,5 +1,6 @@ --- title: "Giphy" +description: "Giphy — CometChat documentation." --- GIFs are a great way to change the tone or convey emotions in your conversations. Here's a guide which helps to implement Gifphy in an easy and quick way. Let's get started! diff --git a/fundamentals/implementation-checklist.mdx b/fundamentals/implementation-checklist.mdx index a18d05fc8..db8de021b 100644 --- a/fundamentals/implementation-checklist.mdx +++ b/fundamentals/implementation-checklist.mdx @@ -1,5 +1,6 @@ --- title: "Implementation Checklist" +description: "Implementation Checklist — CometChat documentation." --- ### 1. Complete the Signup Process diff --git a/fundamentals/intercom.mdx b/fundamentals/intercom.mdx index 3695949a0..6f1b8a54b 100644 --- a/fundamentals/intercom.mdx +++ b/fundamentals/intercom.mdx @@ -1,5 +1,6 @@ --- title: "Intercom" +description: "Intercom — CometChat documentation." --- The Intercom extension makes customer support seamless for your users. Instead of having two interfaces- one for chat between users and one for chat with your support team, you can use CometChat as a front-end for your customer support use case as well! diff --git a/fundamentals/key-concepts.mdx b/fundamentals/key-concepts.mdx index 8e58b7a29..cb289b907 100644 --- a/fundamentals/key-concepts.mdx +++ b/fundamentals/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ## Dashboard diff --git a/fundamentals/link-preview.mdx b/fundamentals/link-preview.mdx index 0cbd7861b..ab683e0ea 100644 --- a/fundamentals/link-preview.mdx +++ b/fundamentals/link-preview.mdx @@ -1,5 +1,6 @@ --- title: "Link Preview" +description: "Link Preview — CometChat documentation." --- The Link Preview extension will help you show a preview of the web page for every link in your message. diff --git a/fundamentals/mentions.mdx b/fundamentals/mentions.mdx index c75def2c1..bf7bffb59 100644 --- a/fundamentals/mentions.mdx +++ b/fundamentals/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions (Legacy)" +description: "Mentions (Legacy) — CometChat documentation." --- diff --git a/fundamentals/message-shortcuts.mdx b/fundamentals/message-shortcuts.mdx index e025cb540..7a5a51340 100644 --- a/fundamentals/message-shortcuts.mdx +++ b/fundamentals/message-shortcuts.mdx @@ -1,5 +1,6 @@ --- title: "Message Shortcuts" +description: "Message Shortcuts — CometChat documentation." --- The Message Shortcuts extension enables your users to send each other predefined messages. diff --git a/fundamentals/message-translation.mdx b/fundamentals/message-translation.mdx index 64932b088..80cdb38ca 100644 --- a/fundamentals/message-translation.mdx +++ b/fundamentals/message-translation.mdx @@ -1,5 +1,6 @@ --- title: "Message Translation" +description: "Message Translation — CometChat documentation." --- The Message Translation extension helps you translate messages into multiple languages. diff --git a/fundamentals/moderation-extensions.mdx b/fundamentals/moderation-extensions.mdx index 4314fc670..07a1ee186 100644 --- a/fundamentals/moderation-extensions.mdx +++ b/fundamentals/moderation-extensions.mdx @@ -1,5 +1,6 @@ --- title: "Moderation" +description: "Moderation — CometChat documentation." --- CometChat Moderation features come in two variants: diff --git a/fundamentals/multi-tenancy.mdx b/fundamentals/multi-tenancy.mdx index 6cb0dd4b0..193ce6e73 100644 --- a/fundamentals/multi-tenancy.mdx +++ b/fundamentals/multi-tenancy.mdx @@ -1,6 +1,7 @@ --- title: "Multi-Tenancy" sidebarTitle: "Multi-Tenancy" +description: "Multi-Tenancy — CometChat documentation." --- Multi-tenancy in CometChat enables you to manage multiple isolated chat environments under a single billing plan, providing economies of scale and streamlined management for applications serving multiple organizations or customer segments. diff --git a/fundamentals/notification-extensions.mdx b/fundamentals/notification-extensions.mdx index 73224c71c..531c99b62 100644 --- a/fundamentals/notification-extensions.mdx +++ b/fundamentals/notification-extensions.mdx @@ -1,5 +1,6 @@ --- title: "Notifications" +description: "Notifications — CometChat documentation." --- CometChat Notifications come in two variants: diff --git a/fundamentals/overview.mdx b/fundamentals/overview.mdx index 59774cad1..4e4be0416 100644 --- a/fundamentals/overview.mdx +++ b/fundamentals/overview.mdx @@ -1,6 +1,7 @@ --- title: "What Is CometChat?" sidebarTitle: "Overview" +description: "Overview of What Is CometChat? in CometChat." --- CometChat is a comprehensive communications platform that empowers businesses to seamlessly integrate real-time chat, voice and video calling functionalities. These integrations can be done picking up the implementation methods that align best with your goals. diff --git a/fundamentals/pin-message.mdx b/fundamentals/pin-message.mdx index 39512de01..468b7cd25 100644 --- a/fundamentals/pin-message.mdx +++ b/fundamentals/pin-message.mdx @@ -1,5 +1,6 @@ --- title: "Pin Message" +description: "Pin Message — CometChat documentation." --- ## Extension settings diff --git a/fundamentals/polls.mdx b/fundamentals/polls.mdx index ef678a3a3..54eb98e51 100644 --- a/fundamentals/polls.mdx +++ b/fundamentals/polls.mdx @@ -1,5 +1,6 @@ --- title: "Polls" +description: "Polls — CometChat documentation." --- Polls let you quickly record the opinions directly in the Conversations and also view the results. diff --git a/fundamentals/reactions.mdx b/fundamentals/reactions.mdx index da464d7c9..2af474536 100644 --- a/fundamentals/reactions.mdx +++ b/fundamentals/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions (Legacy)" +description: "Reactions (Legacy) — CometChat documentation." --- diff --git a/fundamentals/reminders.mdx b/fundamentals/reminders.mdx index 83d90b2b1..6a76d465d 100644 --- a/fundamentals/reminders.mdx +++ b/fundamentals/reminders.mdx @@ -1,5 +1,6 @@ --- title: "Reminders" +description: "Reminders — CometChat documentation." --- Create reminders for messages or anything else. diff --git a/fundamentals/rich-media-preview.mdx b/fundamentals/rich-media-preview.mdx index 637d353a0..290979f8b 100644 --- a/fundamentals/rich-media-preview.mdx +++ b/fundamentals/rich-media-preview.mdx @@ -1,5 +1,6 @@ --- title: "Rich Media Preview" +description: "Rich Media Preview — CometChat documentation." --- The Rich Media Preview Extension allows the developer to generate rich preview panels for all the popular sites. This extension fetches the first URL from the message for the generation of a preview. diff --git a/fundamentals/save-message.mdx b/fundamentals/save-message.mdx index 57ea4eebc..fb6fbc682 100644 --- a/fundamentals/save-message.mdx +++ b/fundamentals/save-message.mdx @@ -1,5 +1,6 @@ --- title: "Save Message" +description: "Save Message — CometChat documentation." --- ## Extension settings diff --git a/fundamentals/smart-replies.mdx b/fundamentals/smart-replies.mdx index a785c055d..2ce8c1dd3 100644 --- a/fundamentals/smart-replies.mdx +++ b/fundamentals/smart-replies.mdx @@ -1,5 +1,6 @@ --- title: "Smart Replies (Legacy)" +description: "Smart Replies (Legacy) — CometChat documentation." --- diff --git a/fundamentals/stickers-stipop.mdx b/fundamentals/stickers-stipop.mdx index b7affea8f..3dec113f8 100644 --- a/fundamentals/stickers-stipop.mdx +++ b/fundamentals/stickers-stipop.mdx @@ -1,5 +1,6 @@ --- title: "Stipop" +description: "Stipop — CometChat documentation." --- *Learn how to integrate stickers by Stipop in your app.* diff --git a/fundamentals/stickers.mdx b/fundamentals/stickers.mdx index a4d2bd43f..bfbeb8682 100644 --- a/fundamentals/stickers.mdx +++ b/fundamentals/stickers.mdx @@ -1,5 +1,6 @@ --- title: "Stickers" +description: "Stickers — CometChat documentation." --- The Stickers Extension is more like an image manager which allows you to quickly add/remove stickers directly from the dashboard. diff --git a/fundamentals/tenor.mdx b/fundamentals/tenor.mdx index f8c49f5af..bedad15ad 100644 --- a/fundamentals/tenor.mdx +++ b/fundamentals/tenor.mdx @@ -1,5 +1,6 @@ --- title: "Tenor" +description: "Tenor — CometChat documentation." --- GIFs are a great way to change the tone or convey emotions in your conversations. Here's a guide which helps to implement Tenor in an easy and quick way. Let's get started! diff --git a/fundamentals/thumbnail-generation.mdx b/fundamentals/thumbnail-generation.mdx index 023f132ad..25983dfd3 100644 --- a/fundamentals/thumbnail-generation.mdx +++ b/fundamentals/thumbnail-generation.mdx @@ -1,5 +1,6 @@ --- title: "Thumbnail Generation" +description: "Thumbnail Generation — CometChat documentation." --- The Thumbnail Generation extension will help you generate a thumbnail preview of an image or a video message. diff --git a/fundamentals/tinyurl.mdx b/fundamentals/tinyurl.mdx index 8c9a33559..e75152ac9 100644 --- a/fundamentals/tinyurl.mdx +++ b/fundamentals/tinyurl.mdx @@ -1,5 +1,6 @@ --- title: "TinyURL" +description: "TinyURL — CometChat documentation." --- *Learn how to minify the long website links in your text messages using TinyURL.* diff --git a/fundamentals/user-roles-and-permissions.mdx b/fundamentals/user-roles-and-permissions.mdx index 59fca7262..6b503362a 100644 --- a/fundamentals/user-roles-and-permissions.mdx +++ b/fundamentals/user-roles-and-permissions.mdx @@ -1,6 +1,7 @@ --- title: "User Roles And Permissions In CometChat" sidebarTitle: "User Roles And Permissions" +description: "User Roles And Permissions In CometChat — CometChat documentation." --- CometChat provides a comprehensive roles and permissions system to ensure that team members have the appropriate level of access to platform features and settings. Properly assigning these roles helps maintain security, streamline workflows, and delegate responsibilities effectively. diff --git a/fundamentals/video-broadcasting.mdx b/fundamentals/video-broadcasting.mdx index 4826f61fe..240317512 100644 --- a/fundamentals/video-broadcasting.mdx +++ b/fundamentals/video-broadcasting.mdx @@ -1,5 +1,6 @@ --- title: "Live Streaming By API Video (Deprecated)" +description: "Live Streaming By API Video (Deprecated) — CometChat documentation." --- diff --git a/fundamentals/voice-transcription.mdx b/fundamentals/voice-transcription.mdx index f68309a47..01bff9b7a 100644 --- a/fundamentals/voice-transcription.mdx +++ b/fundamentals/voice-transcription.mdx @@ -1,5 +1,6 @@ --- title: "Voice Transcription" +description: "Voice Transcription — CometChat documentation." --- Voice transcription extension allows you to convert an audio message into text. diff --git a/fundamentals/webhooks-legacy.mdx b/fundamentals/webhooks-legacy.mdx index b5556a02a..ed7e5e073 100644 --- a/fundamentals/webhooks-legacy.mdx +++ b/fundamentals/webhooks-legacy.mdx @@ -1,6 +1,7 @@ --- title: "Webhooks (Legacy)" sidebarTitle: "Webhooks (Legacy)" +description: "Webhooks (Legacy) — CometChat documentation." --- diff --git a/fundamentals/webhooks.mdx b/fundamentals/webhooks.mdx index ea378b7cc..fee7fc4a7 100644 --- a/fundamentals/webhooks.mdx +++ b/fundamentals/webhooks.mdx @@ -1,6 +1,7 @@ --- title: "Webhooks" sidebarTitle: "Webhooks" +description: "Webhooks — CometChat documentation." --- CometChat Webhooks enable real-time, event-driven communication with your server by sending HTTP POST requests whenever specific events occur in your chat application. diff --git a/moderation/blocked-messages.mdx b/moderation/blocked-messages.mdx index bf0ab2983..81f390711 100644 --- a/moderation/blocked-messages.mdx +++ b/moderation/blocked-messages.mdx @@ -1,5 +1,6 @@ --- title: "Blocked Messages" +description: "Blocked Messages — CometChat documentation." --- Blocked Messages provides a centralized view of all messages that have been automatically blocked by your moderation rules. Review blocked content to identify false positives, refine your rules, and optionally approve messages that were incorrectly blocked. diff --git a/moderation/constraints-and-limits.mdx b/moderation/constraints-and-limits.mdx index 7b0e46f84..74324c046 100644 --- a/moderation/constraints-and-limits.mdx +++ b/moderation/constraints-and-limits.mdx @@ -1,5 +1,6 @@ --- title: "Constraints and Limits" +description: "Constraints and Limits — CometChat documentation." --- This page outlines the system constraints and limitations for CometChat's Moderation Service. Understanding these limits helps you design your moderation strategy effectively. diff --git a/moderation/custom/custom-api-overview.mdx b/moderation/custom/custom-api-overview.mdx index e622b3678..4eaac1cf1 100644 --- a/moderation/custom/custom-api-overview.mdx +++ b/moderation/custom/custom-api-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat allows you to integrate your own moderation logic using a **Custom API**. This "bring your own moderation" approach lets you use any third-party service (OpenAI Moderation, Perspective API, etc.) or your own AI model while CometChat handles message interception and action enforcement. diff --git a/moderation/custom/custom-api.mdx b/moderation/custom/custom-api.mdx index 72e8b889f..b7236a712 100644 --- a/moderation/custom/custom-api.mdx +++ b/moderation/custom/custom-api.mdx @@ -1,5 +1,6 @@ --- title: "Custom API Moderation" +description: "Custom API Moderation — CometChat documentation." --- CometChat allows you to integrate your own moderation logic using a **Custom API**. With this feature, you can define a webhook URL where CometChat will send messages for moderation along with relevant context from the conversation. This enables you to use your own moderation service, third-party AI moderation APIs, or custom business logic to moderate content. diff --git a/moderation/flagged-messages.mdx b/moderation/flagged-messages.mdx index b531007e9..a12e414ca 100644 --- a/moderation/flagged-messages.mdx +++ b/moderation/flagged-messages.mdx @@ -1,5 +1,6 @@ --- title: "Flagged Messages" +description: "Flagged Messages — CometChat documentation." --- Flagged Messages allows moderators to review messages that have been flagged for potentially violating moderation rules. Messages can be flagged automatically by the rule engine or manually by end users who find content inappropriate. diff --git a/moderation/getting-started.mdx b/moderation/getting-started.mdx index dba5881d0..2379a957f 100644 --- a/moderation/getting-started.mdx +++ b/moderation/getting-started.mdx @@ -1,6 +1,7 @@ --- title: "Getting Started" route: "/getting-started" +description: "Getting Started — CometChat documentation." --- # Moderation Integration diff --git a/moderation/legacy-extensions.mdx b/moderation/legacy-extensions.mdx index 3f80fb2b2..c81ca36e4 100644 --- a/moderation/legacy-extensions.mdx +++ b/moderation/legacy-extensions.mdx @@ -1,6 +1,7 @@ --- title: "Legacy Moderation Extensions" sidebarTitle: "Moderation (Legacy)" +description: "Legacy Moderation Extensions — CometChat documentation." --- diff --git a/moderation/lists-management.mdx b/moderation/lists-management.mdx index 3e22cbe25..baba04722 100644 --- a/moderation/lists-management.mdx +++ b/moderation/lists-management.mdx @@ -1,5 +1,6 @@ --- title: "Lists Management" +description: "Lists Management — CometChat documentation." --- Lists Management provides tools for creating and managing lists of keywords, regex patterns, or sentences that power your moderation rules. When detected in user-generated content, these lists trigger moderation actions like blocking or flagging messages. diff --git a/moderation/open-ai/openai-custom.mdx b/moderation/open-ai/openai-custom.mdx index 611f887e3..2dd5a3d17 100644 --- a/moderation/open-ai/openai-custom.mdx +++ b/moderation/open-ai/openai-custom.mdx @@ -1,6 +1,7 @@ --- title: "OpenAI Moderation" sidebarTitle: "OpenAI Custom Moderation" +description: "OpenAI Moderation — CometChat documentation." --- CometChat allows you to integrate OpenAI for real-time message moderation, enabling automated detection of harmful, offensive, or inappropriate content. diff --git a/moderation/open-ai/openai-overview.mdx b/moderation/open-ai/openai-overview.mdx index 492290b92..cd9ae7e79 100644 --- a/moderation/open-ai/openai-overview.mdx +++ b/moderation/open-ai/openai-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat offers AI-powered message moderation to help maintain a safe and respectful chat environment. You can choose between two moderation options: diff --git a/moderation/overview.mdx b/moderation/overview.mdx index 4d8df7380..bbd3486cd 100644 --- a/moderation/overview.mdx +++ b/moderation/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The Moderation feature provides a comprehensive suite of capabilities designed to manage and enforce message moderation rules across various types of messages, ensuring your platform remains safe and compliant for all users. diff --git a/moderation/reviewed-messages.mdx b/moderation/reviewed-messages.mdx index a42c03998..dfed1a927 100644 --- a/moderation/reviewed-messages.mdx +++ b/moderation/reviewed-messages.mdx @@ -1,5 +1,6 @@ --- title: "Reviewed Messages" +description: "Reviewed Messages — CometChat documentation." --- Reviewed Messages is your audit trail for all moderation decisions. When a moderator takes action on a flagged or blocked message (approve, block, or mark as reviewed), it automatically moves here for record-keeping. diff --git a/moderation/rules-management.mdx b/moderation/rules-management.mdx index 6106cdd84..3277f59b1 100644 --- a/moderation/rules-management.mdx +++ b/moderation/rules-management.mdx @@ -1,5 +1,6 @@ --- title: "Rules Management" +description: "Rules Management — CometChat documentation." --- ## Overview diff --git a/notifications/badge-count.mdx b/notifications/badge-count.mdx index 4fd461532..ec12ecb47 100644 --- a/notifications/badge-count.mdx +++ b/notifications/badge-count.mdx @@ -1,5 +1,6 @@ --- title: "Badge Count" +description: "Badge Count — CometChat documentation." --- Use this guide to understand the **unread message badge count** feature in push notifications. diff --git a/notifications/constraints-and-limits.mdx b/notifications/constraints-and-limits.mdx index aeb0eefbc..52c0a90fa 100644 --- a/notifications/constraints-and-limits.mdx +++ b/notifications/constraints-and-limits.mdx @@ -1,5 +1,6 @@ --- title: "Constraints And Limits" +description: "Constraints And Limits — CometChat documentation." --- Use this page to confirm supported SDK/UI Kit versions, platform/browser coverage, hard limits, and known notification caveats before you ship. diff --git a/notifications/custom-providers.mdx b/notifications/custom-providers.mdx index 64862020c..dcd46bd0c 100644 --- a/notifications/custom-providers.mdx +++ b/notifications/custom-providers.mdx @@ -1,5 +1,6 @@ --- title: "Custom Providers" +description: "Custom Providers — CometChat documentation." --- Custom providers let you route push payloads to your own webhook instead of FCM/APNs. Use this page to set up credentials, understand payload shapes, and wire a simple receiver. diff --git a/notifications/email-custom-providers.mdx b/notifications/email-custom-providers.mdx index e5f2706c4..a893c34f3 100644 --- a/notifications/email-custom-providers.mdx +++ b/notifications/email-custom-providers.mdx @@ -1,5 +1,6 @@ --- title: "Custom Providers" +description: "Custom Providers — CometChat documentation." --- Use a custom provider to send CometChat email notifications through any gateway via webhook. SendGrid is built-in; choose custom when you want another service or your own SMTP bridge. diff --git a/notifications/email-integration.mdx b/notifications/email-integration.mdx index f5c841d01..20ef66b43 100644 --- a/notifications/email-integration.mdx +++ b/notifications/email-integration.mdx @@ -1,5 +1,6 @@ --- title: "Integration" +description: "Integration — CometChat documentation." --- Connect CometChat email notifications to SendGrid or your own provider, wire the required webhooks, and keep timezones in sync for scheduling. diff --git a/notifications/email-notifications-extension-legacy.mdx b/notifications/email-notifications-extension-legacy.mdx index b26ceb670..24a2fd5d1 100644 --- a/notifications/email-notifications-extension-legacy.mdx +++ b/notifications/email-notifications-extension-legacy.mdx @@ -1,5 +1,6 @@ --- title: "Email Notifications (Legacy)" +description: "Email Notifications (Legacy) — CometChat documentation." --- diff --git a/notifications/email-preferences.mdx b/notifications/email-preferences.mdx index fdb39c9d9..b03b5d113 100644 --- a/notifications/email-preferences.mdx +++ b/notifications/email-preferences.mdx @@ -1,5 +1,6 @@ --- title: "Email Preferences" +description: "Email Preferences — CometChat documentation." --- Control when CometChat sends unread-message emails and what data is included in each payload. diff --git a/notifications/email-templates.mdx b/notifications/email-templates.mdx index 664d38bd4..fb4dc1e32 100644 --- a/notifications/email-templates.mdx +++ b/notifications/email-templates.mdx @@ -1,5 +1,6 @@ --- title: "Email Templates" +description: "Email Templates — CometChat documentation." --- Design the subject/body your users see in unread-message emails. No sounds apply to email. Providers like SendGrid can consume these fields—map them into Dynamic Template variables or assemble the subject/body in your service before sending. diff --git a/notifications/legacy-push-notifications.mdx b/notifications/legacy-push-notifications.mdx index a4355a719..6f30fddb5 100644 --- a/notifications/legacy-push-notifications.mdx +++ b/notifications/legacy-push-notifications.mdx @@ -1,5 +1,6 @@ --- title: "Integration Guide for Legacy Push Notifications" +description: "Integration Guide for Legacy Push Notifications — CometChat documentation." --- diff --git a/notifications/overview.mdx b/notifications/overview.mdx index 4066f1e9a..78459597f 100644 --- a/notifications/overview.mdx +++ b/notifications/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- Notifications play a crucial role in alerting users to activity within conversations, such as new messages, replies, reactions, and more. CometChat facilitates user engagement through various notification methods, including: diff --git a/notifications/preferences.mdx b/notifications/preferences.mdx index 2f7c0dec1..bbf48ef1e 100644 --- a/notifications/preferences.mdx +++ b/notifications/preferences.mdx @@ -1,5 +1,6 @@ --- title: "Preferences" +description: "Preferences — CometChat documentation." --- Preferences define how CometChat notifies users and which parts they can change. diff --git a/notifications/sms-custom-providers.mdx b/notifications/sms-custom-providers.mdx index 618477c69..4df3f907b 100644 --- a/notifications/sms-custom-providers.mdx +++ b/notifications/sms-custom-providers.mdx @@ -1,5 +1,6 @@ --- title: "Custom Providers" +description: "Custom Providers — CometChat documentation." --- Use a custom provider to send CometChat SMS notifications through any gateway via webhook. Twilio is built-in; choose custom when you want another SMS service or your own bridge. diff --git a/notifications/sms-integration.mdx b/notifications/sms-integration.mdx index ee3b3fd2f..a110db039 100644 --- a/notifications/sms-integration.mdx +++ b/notifications/sms-integration.mdx @@ -1,5 +1,6 @@ --- title: "Integration" +description: "Integration — CometChat documentation." --- Connect CometChat SMS notifications to Twilio or your own provider. Twilio is built-in; use a custom provider if you prefer another SMS gateway. diff --git a/notifications/sms-notifications-extension-legacy.mdx b/notifications/sms-notifications-extension-legacy.mdx index 4ab7bc432..144bea610 100644 --- a/notifications/sms-notifications-extension-legacy.mdx +++ b/notifications/sms-notifications-extension-legacy.mdx @@ -1,5 +1,6 @@ --- title: "SMS Notifications (Legacy)" +description: "SMS Notifications (Legacy) — CometChat documentation." --- diff --git a/notifications/sms-preferences.mdx b/notifications/sms-preferences.mdx index be2b1b23c..651d39ace 100644 --- a/notifications/sms-preferences.mdx +++ b/notifications/sms-preferences.mdx @@ -1,5 +1,6 @@ --- title: "SMS Preferences" +description: "SMS Preferences — CometChat documentation." --- Control when CometChat sends unread-message SMS and what data is included in each payload. diff --git a/notifications/sms-templates.mdx b/notifications/sms-templates.mdx index 3db530d73..e5eb94f21 100644 --- a/notifications/sms-templates.mdx +++ b/notifications/sms-templates.mdx @@ -1,5 +1,6 @@ --- title: "SMS Templates" +description: "SMS Templates — CometChat documentation." --- Design the SMS body users receive for unread-message alerts. Sounds do not apply to SMS. Map these payload fields into your provider template or assemble the text in your service before sending. diff --git a/notifications/templates-and-sounds.mdx b/notifications/templates-and-sounds.mdx index d280e6730..64ec23381 100644 --- a/notifications/templates-and-sounds.mdx +++ b/notifications/templates-and-sounds.mdx @@ -1,5 +1,6 @@ --- title: "Templates & Sounds" +description: "Templates & Sounds — CometChat documentation." --- Use this guide to configure **push** notification templates, understand placeholders, and set sounds. diff --git a/on-premise-deployment/docker/air-gapped-deployment.mdx b/on-premise-deployment/docker/air-gapped-deployment.mdx index 82ab82700..50ccf6429 100644 --- a/on-premise-deployment/docker/air-gapped-deployment.mdx +++ b/on-premise-deployment/docker/air-gapped-deployment.mdx @@ -1,6 +1,7 @@ --- title: "Air-Gapped Deployment" sidebarTitle: "Air-Gapped" +description: "Air-Gapped Deployment — CometChat documentation." --- Guidelines for deploying the platform in offline or isolated (air-gapped) environments. diff --git a/on-premise-deployment/docker/configuration-reference.mdx b/on-premise-deployment/docker/configuration-reference.mdx index cab40f279..da3983e33 100644 --- a/on-premise-deployment/docker/configuration-reference.mdx +++ b/on-premise-deployment/docker/configuration-reference.mdx @@ -1,6 +1,7 @@ --- title: "Configuration Reference" sidebarTitle: "Configuration" +description: "Configuration Reference — CometChat documentation." --- Use this reference when updating domains, migrating environments, troubleshooting misconfiguration, or performing production deployments. Values are sourced from `docker-compose.yml`, service-level `.env` files, and the domain update guide. diff --git a/on-premise-deployment/docker/monitoring.mdx b/on-premise-deployment/docker/monitoring.mdx index 26736c1d6..49b547f4b 100644 --- a/on-premise-deployment/docker/monitoring.mdx +++ b/on-premise-deployment/docker/monitoring.mdx @@ -1,6 +1,7 @@ --- title: "Monitoring" sidebarTitle: "Monitoring" +description: "Monitoring — CometChat documentation." --- Monitoring ensures system health, operational visibility, and SLA compliance for CometChat on-premise deployments. diff --git a/on-premise-deployment/docker/overview.mdx b/on-premise-deployment/docker/overview.mdx index 4fc3f6f15..50fcb24d4 100644 --- a/on-premise-deployment/docker/overview.mdx +++ b/on-premise-deployment/docker/overview.mdx @@ -1,6 +1,7 @@ --- title: "On-Premise Deployment Overview" sidebarTitle: "Overview" +description: "Overview of On-Premise Deployment Overview in CometChat." --- CometChat on-premise delivers an enterprise-grade, self-hosted real-time messaging platform engineered for mission-critical applications requiring complete data sovereignty, regulatory compliance, and predictable performance at scale. Built on battle-tested open-source technologies and cloud-native principles, this deployment architecture supports workloads from 10,000 to 250,000+ monthly active users with linear scalability and sub-100ms message latency. diff --git a/on-premise-deployment/docker/persistence-and-backup.mdx b/on-premise-deployment/docker/persistence-and-backup.mdx index a2be4fae0..a0a4a3700 100644 --- a/on-premise-deployment/docker/persistence-and-backup.mdx +++ b/on-premise-deployment/docker/persistence-and-backup.mdx @@ -1,6 +1,7 @@ --- title: "Persistence & Backup" sidebarTitle: "Persistence & Backup" +description: "Persistence & Backup — CometChat documentation." --- Defines how persistent data is stored, backed up, and restored in production environments. Proper backup and disaster recovery procedures are essential for business continuity and data protection. diff --git a/on-premise-deployment/docker/prerequisites.mdx b/on-premise-deployment/docker/prerequisites.mdx index fc173d746..f0e67e57a 100644 --- a/on-premise-deployment/docker/prerequisites.mdx +++ b/on-premise-deployment/docker/prerequisites.mdx @@ -1,6 +1,7 @@ --- title: "Prerequisites" sidebarTitle: "Prerequisites" +description: "Prerequisites — CometChat documentation." --- This guide outlines the infrastructure, software, and network requirements for deploying CometChat on-premise. Proper capacity planning ensures optimal performance, cost efficiency, and scalability as your user base grows. diff --git a/on-premise-deployment/docker/production-deployment.mdx b/on-premise-deployment/docker/production-deployment.mdx index 929cfd7bc..abb5a9a6c 100644 --- a/on-premise-deployment/docker/production-deployment.mdx +++ b/on-premise-deployment/docker/production-deployment.mdx @@ -1,6 +1,7 @@ --- title: "Production Deployment" sidebarTitle: "Production Deployment" +description: "Production Deployment — CometChat documentation." --- This guide walks through deploying CometChat on-premise to a Docker Swarm cluster. The deployment process uses automated scripts to ensure consistent, repeatable deployments with proper service orchestration and zero-downtime updates. diff --git a/on-premise-deployment/docker/scaling.mdx b/on-premise-deployment/docker/scaling.mdx index 8b6f81db7..130e928cf 100644 --- a/on-premise-deployment/docker/scaling.mdx +++ b/on-premise-deployment/docker/scaling.mdx @@ -1,6 +1,7 @@ --- title: "Scaling" sidebarTitle: "Scaling" +description: "Scaling — CometChat documentation." --- Guidelines for scaling platform components based on load and resource requirements. Proper scaling ensures optimal performance, cost efficiency, and user experience as your deployment grows. diff --git a/on-premise-deployment/docker/security.mdx b/on-premise-deployment/docker/security.mdx index 8993fe2dd..bb4e48ebe 100644 --- a/on-premise-deployment/docker/security.mdx +++ b/on-premise-deployment/docker/security.mdx @@ -1,6 +1,7 @@ --- title: "Security" sidebarTitle: "Security" +description: "Security — CometChat documentation." --- Security controls focus on authentication, secrets management, network isolation, TLS posture, and protective controls against abuse. diff --git a/on-premise-deployment/docker/troubleshooting.mdx b/on-premise-deployment/docker/troubleshooting.mdx index a271d63b4..fdf4b493b 100644 --- a/on-premise-deployment/docker/troubleshooting.mdx +++ b/on-premise-deployment/docker/troubleshooting.mdx @@ -1,6 +1,7 @@ --- title: "Troubleshooting" sidebarTitle: "Troubleshooting" +description: "Troubleshooting — CometChat documentation." --- Common operational issues and debugging guidance. diff --git a/on-premise-deployment/docker/upgrades.mdx b/on-premise-deployment/docker/upgrades.mdx index 1e8c8112d..1eb0f869d 100644 --- a/on-premise-deployment/docker/upgrades.mdx +++ b/on-premise-deployment/docker/upgrades.mdx @@ -1,6 +1,7 @@ --- title: "Upgrades" sidebarTitle: "Upgrades" +description: "Upgrades — CometChat documentation." --- This document outlines the recommended upgrade strategy to ensure zero downtime and safe production rollouts. diff --git a/on-premise-deployment/kubernetes/overview.mdx b/on-premise-deployment/kubernetes/overview.mdx index 1776ef869..30fd6ef65 100644 --- a/on-premise-deployment/kubernetes/overview.mdx +++ b/on-premise-deployment/kubernetes/overview.mdx @@ -1,6 +1,7 @@ --- title: "Kubernetes Deployment" sidebarTitle: "Overview" +description: "Overview of Kubernetes Deployment in CometChat." --- CometChat on-premise on Kubernetes provides enterprise-grade orchestration for large-scale deployments requiring advanced features like multi-region active-active architectures, dynamic autoscaling, and service mesh integration. diff --git a/sdk/android/2.0/add-members-to-a-group.mdx b/sdk/android/2.0/add-members-to-a-group.mdx index db0753072..adc2788aa 100644 --- a/sdk/android/2.0/add-members-to-a-group.mdx +++ b/sdk/android/2.0/add-members-to-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/additional-message-filtering.mdx b/sdk/android/2.0/additional-message-filtering.mdx index ec6bd28a3..ddcdd3160 100644 --- a/sdk/android/2.0/additional-message-filtering.mdx +++ b/sdk/android/2.0/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/android/2.0/advanced.mdx b/sdk/android/2.0/advanced.mdx index 18501a4d5..47e812784 100644 --- a/sdk/android/2.0/advanced.mdx +++ b/sdk/android/2.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/android/2.0/authentication.mdx b/sdk/android/2.0/authentication.mdx index dd592e644..4da2e0ec5 100644 --- a/sdk/android/2.0/authentication.mdx +++ b/sdk/android/2.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/android/2.0/block-users.mdx b/sdk/android/2.0/block-users.mdx index e5c61f90e..4489fa8a8 100644 --- a/sdk/android/2.0/block-users.mdx +++ b/sdk/android/2.0/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/android/2.0/bots.mdx b/sdk/android/2.0/bots.mdx index 124af6f40..e551f1999 100644 --- a/sdk/android/2.0/bots.mdx +++ b/sdk/android/2.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/android/2.0/calling.mdx b/sdk/android/2.0/calling.mdx index 1e44711e8..1ed1460d6 100644 --- a/sdk/android/2.0/calling.mdx +++ b/sdk/android/2.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/android/2.0/change-member-scope.mdx b/sdk/android/2.0/change-member-scope.mdx index 868cc4a8f..bb60c2640 100644 --- a/sdk/android/2.0/change-member-scope.mdx +++ b/sdk/android/2.0/change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/android/2.0/connection-status.mdx b/sdk/android/2.0/connection-status.mdx index 6985970bd..1795b1645 100644 --- a/sdk/android/2.0/connection-status.mdx +++ b/sdk/android/2.0/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/android/2.0/create-a-group.mdx b/sdk/android/2.0/create-a-group.mdx index 2e4693ffc..812d4758a 100644 --- a/sdk/android/2.0/create-a-group.mdx +++ b/sdk/android/2.0/create-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/default-calling.mdx b/sdk/android/2.0/default-calling.mdx index 0fed5051c..8d7c15485 100644 --- a/sdk/android/2.0/default-calling.mdx +++ b/sdk/android/2.0/default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/android/2.0/delete-a-group.mdx b/sdk/android/2.0/delete-a-group.mdx index 366f3409c..52fa67f68 100644 --- a/sdk/android/2.0/delete-a-group.mdx +++ b/sdk/android/2.0/delete-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/delete-conversation.mdx b/sdk/android/2.0/delete-conversation.mdx index b63f7f1e1..f63cd5cf5 100644 --- a/sdk/android/2.0/delete-conversation.mdx +++ b/sdk/android/2.0/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/android/2.0/delete-message.mdx b/sdk/android/2.0/delete-message.mdx index 41ff0b805..86b493ca2 100644 --- a/sdk/android/2.0/delete-message.mdx +++ b/sdk/android/2.0/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/android/2.0/delivery-read-receipts.mdx b/sdk/android/2.0/delivery-read-receipts.mdx index 75be6dd89..cbb9905bf 100644 --- a/sdk/android/2.0/delivery-read-receipts.mdx +++ b/sdk/android/2.0/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/android/2.0/direct-calling.mdx b/sdk/android/2.0/direct-calling.mdx index a4d6b4fde..31ebbf48f 100644 --- a/sdk/android/2.0/direct-calling.mdx +++ b/sdk/android/2.0/direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/android/2.0/edit-message.mdx b/sdk/android/2.0/edit-message.mdx index ad68d501b..4f4fee4e8 100644 --- a/sdk/android/2.0/edit-message.mdx +++ b/sdk/android/2.0/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/android/2.0/extensions.mdx b/sdk/android/2.0/extensions.mdx index d2578c21f..af51972d0 100644 --- a/sdk/android/2.0/extensions.mdx +++ b/sdk/android/2.0/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- diff --git a/sdk/android/2.0/groups.mdx b/sdk/android/2.0/groups.mdx index 99e877026..be06c2c42 100644 --- a/sdk/android/2.0/groups.mdx +++ b/sdk/android/2.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/android/2.0/join-a-group.mdx b/sdk/android/2.0/join-a-group.mdx index 097f6aadc..f4440094b 100644 --- a/sdk/android/2.0/join-a-group.mdx +++ b/sdk/android/2.0/join-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/key-concepts.mdx b/sdk/android/2.0/key-concepts.mdx index f3cfdd2d7..9c520fcde 100644 --- a/sdk/android/2.0/key-concepts.mdx +++ b/sdk/android/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/android/2.0/kick-member-from-a-group.mdx b/sdk/android/2.0/kick-member-from-a-group.mdx index 263738999..1e005add1 100644 --- a/sdk/android/2.0/kick-member-from-a-group.mdx +++ b/sdk/android/2.0/kick-member-from-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/leave-a-group.mdx b/sdk/android/2.0/leave-a-group.mdx index e6a6f89d4..90f9d4620 100644 --- a/sdk/android/2.0/leave-a-group.mdx +++ b/sdk/android/2.0/leave-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/login-listeners.mdx b/sdk/android/2.0/login-listeners.mdx index d2f248743..5366c0a38 100644 --- a/sdk/android/2.0/login-listeners.mdx +++ b/sdk/android/2.0/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/android/2.0/message-structure-and-hierarchy.mdx b/sdk/android/2.0/message-structure-and-hierarchy.mdx index 27c0134ec..39e7c0ef6 100644 --- a/sdk/android/2.0/message-structure-and-hierarchy.mdx +++ b/sdk/android/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/android/2.0/messaging.mdx b/sdk/android/2.0/messaging.mdx index 02bce8274..ecba3c435 100644 --- a/sdk/android/2.0/messaging.mdx +++ b/sdk/android/2.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/android/2.0/overview.mdx b/sdk/android/2.0/overview.mdx index 8afd6822a..955963ed1 100644 --- a/sdk/android/2.0/overview.mdx +++ b/sdk/android/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/android/2.0/publishing-app-on-playstore.mdx b/sdk/android/2.0/publishing-app-on-playstore.mdx index 9444175b2..53fc0b6c2 100644 --- a/sdk/android/2.0/publishing-app-on-playstore.mdx +++ b/sdk/android/2.0/publishing-app-on-playstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On PlayStore" +description: "Publishing App On PlayStore — CometChat documentation." --- diff --git a/sdk/android/2.0/rate-limits.mdx b/sdk/android/2.0/rate-limits.mdx index b6eb431a4..7e6b337a4 100644 --- a/sdk/android/2.0/rate-limits.mdx +++ b/sdk/android/2.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/android/2.0/receive-messages.mdx b/sdk/android/2.0/receive-messages.mdx index 227be9afa..b0591ca3e 100644 --- a/sdk/android/2.0/receive-messages.mdx +++ b/sdk/android/2.0/receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/android/2.0/resources-all-real-time-listeners.mdx b/sdk/android/2.0/resources-all-real-time-listeners.mdx index 211b4864d..b3c2917c5 100644 --- a/sdk/android/2.0/resources-all-real-time-listeners.mdx +++ b/sdk/android/2.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/android/2.0/resources-upgrading-from-v1.mdx b/sdk/android/2.0/resources-upgrading-from-v1.mdx index 51890561c..421a92b60 100644 --- a/sdk/android/2.0/resources-upgrading-from-v1.mdx +++ b/sdk/android/2.0/resources-upgrading-from-v1.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V1" +description: "Upgrading From V1 — CometChat documentation." --- diff --git a/sdk/android/2.0/resources.mdx b/sdk/android/2.0/resources.mdx index 6d18ce4c2..77bd8917d 100644 --- a/sdk/android/2.0/resources.mdx +++ b/sdk/android/2.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/android/2.0/retrieve-conversations.mdx b/sdk/android/2.0/retrieve-conversations.mdx index 8aeffbe81..75aa7d087 100644 --- a/sdk/android/2.0/retrieve-conversations.mdx +++ b/sdk/android/2.0/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/android/2.0/retrieve-group-members.mdx b/sdk/android/2.0/retrieve-group-members.mdx index 19951c518..0ebd0339e 100644 --- a/sdk/android/2.0/retrieve-group-members.mdx +++ b/sdk/android/2.0/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/android/2.0/retrieve-groups.mdx b/sdk/android/2.0/retrieve-groups.mdx index a633dd7d7..edafecb4c 100644 --- a/sdk/android/2.0/retrieve-groups.mdx +++ b/sdk/android/2.0/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/android/2.0/retrieve-users.mdx b/sdk/android/2.0/retrieve-users.mdx index 8a58f7247..45b8c08b1 100644 --- a/sdk/android/2.0/retrieve-users.mdx +++ b/sdk/android/2.0/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/android/2.0/send-message.mdx b/sdk/android/2.0/send-message.mdx index 278859311..769df3ec8 100644 --- a/sdk/android/2.0/send-message.mdx +++ b/sdk/android/2.0/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/android/2.0/setup.mdx b/sdk/android/2.0/setup.mdx index f9855c4bb..40cc5ac33 100644 --- a/sdk/android/2.0/setup.mdx +++ b/sdk/android/2.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/android/2.0/threaded-messages.mdx b/sdk/android/2.0/threaded-messages.mdx index 6d3d3e883..713a96550 100644 --- a/sdk/android/2.0/threaded-messages.mdx +++ b/sdk/android/2.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/android/2.0/transfer-group-ownership.mdx b/sdk/android/2.0/transfer-group-ownership.mdx index eb70bb1be..a16476711 100644 --- a/sdk/android/2.0/transfer-group-ownership.mdx +++ b/sdk/android/2.0/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/android/2.0/typing-indicators.mdx b/sdk/android/2.0/typing-indicators.mdx index ea21d9db9..74d08677d 100644 --- a/sdk/android/2.0/typing-indicators.mdx +++ b/sdk/android/2.0/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/android/2.0/update-a-group.mdx b/sdk/android/2.0/update-a-group.mdx index 155264a7e..a7d7d705f 100644 --- a/sdk/android/2.0/update-a-group.mdx +++ b/sdk/android/2.0/update-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/android/2.0/user-management.mdx b/sdk/android/2.0/user-management.mdx index edb6318e0..07e30f940 100644 --- a/sdk/android/2.0/user-management.mdx +++ b/sdk/android/2.0/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/android/2.0/user-presence.mdx b/sdk/android/2.0/user-presence.mdx index 4021a816e..6ef340553 100644 --- a/sdk/android/2.0/user-presence.mdx +++ b/sdk/android/2.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/android/2.0/users.mdx b/sdk/android/2.0/users.mdx index 343230800..db166fecc 100644 --- a/sdk/android/2.0/users.mdx +++ b/sdk/android/2.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/android/2.0/webhooks.mdx b/sdk/android/2.0/webhooks.mdx index 0401c5cd9..4fa48b395 100644 --- a/sdk/android/2.0/webhooks.mdx +++ b/sdk/android/2.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/android/3.0/advanced-connection-status.mdx b/sdk/android/3.0/advanced-connection-status.mdx index f66ed2050..0e02d89c7 100644 --- a/sdk/android/3.0/advanced-connection-status.mdx +++ b/sdk/android/3.0/advanced-connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/android/3.0/advanced-managing-web-socket-connections-manually.mdx b/sdk/android/3.0/advanced-managing-web-socket-connections-manually.mdx index 8aee74ae3..b48333ea6 100644 --- a/sdk/android/3.0/advanced-managing-web-socket-connections-manually.mdx +++ b/sdk/android/3.0/advanced-managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/android/3.0/advanced-publishing-app-on-playstore.mdx b/sdk/android/3.0/advanced-publishing-app-on-playstore.mdx index 2978bd993..0cb553cbc 100644 --- a/sdk/android/3.0/advanced-publishing-app-on-playstore.mdx +++ b/sdk/android/3.0/advanced-publishing-app-on-playstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On PlayStore" +description: "Publishing App On PlayStore — CometChat documentation." --- diff --git a/sdk/android/3.0/android-3-0-overview.mdx b/sdk/android/3.0/android-3-0-overview.mdx index 3d5f34e59..d6f3ae32f 100644 --- a/sdk/android/3.0/android-3-0-overview.mdx +++ b/sdk/android/3.0/android-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "Java UI Kit" url: "/ui-kit/android/v3/overview" +description: "Navigate to Java UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/android/3.0/android-advanced.mdx b/sdk/android/3.0/android-advanced.mdx index 18501a4d5..47e812784 100644 --- a/sdk/android/3.0/android-advanced.mdx +++ b/sdk/android/3.0/android-advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/android/3.0/android-resources.mdx b/sdk/android/3.0/android-resources.mdx index 359c09231..31fc0e3f6 100644 --- a/sdk/android/3.0/android-resources.mdx +++ b/sdk/android/3.0/android-resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/android/3.0/authentication-login-listeners.mdx b/sdk/android/3.0/authentication-login-listeners.mdx index 299696763..b36363776 100644 --- a/sdk/android/3.0/authentication-login-listeners.mdx +++ b/sdk/android/3.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/android/3.0/authentication.mdx b/sdk/android/3.0/authentication.mdx index 41a612b67..2fb678508 100644 --- a/sdk/android/3.0/authentication.mdx +++ b/sdk/android/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/android/3.0/bots.mdx b/sdk/android/3.0/bots.mdx index 7a3076ed2..a9854088b 100644 --- a/sdk/android/3.0/bots.mdx +++ b/sdk/android/3.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/android/3.0/calling-default-calling.mdx b/sdk/android/3.0/calling-default-calling.mdx index 84f79efa4..73a997859 100644 --- a/sdk/android/3.0/calling-default-calling.mdx +++ b/sdk/android/3.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/android/3.0/calling-direct-calling.mdx b/sdk/android/3.0/calling-direct-calling.mdx index 51f206040..cb3ef8bf4 100644 --- a/sdk/android/3.0/calling-direct-calling.mdx +++ b/sdk/android/3.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/android/3.0/calling-recording-v3.mdx b/sdk/android/3.0/calling-recording-v3.mdx index 4743290a0..9636a8980 100644 --- a/sdk/android/3.0/calling-recording-v3.mdx +++ b/sdk/android/3.0/calling-recording-v3.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/android/3.0/calling-recording.mdx b/sdk/android/3.0/calling-recording.mdx index b3cd357d1..0110380a3 100644 --- a/sdk/android/3.0/calling-recording.mdx +++ b/sdk/android/3.0/calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/android/3.0/calling-v3.mdx b/sdk/android/3.0/calling-v3.mdx index 002ba87ef..f52ae153d 100644 --- a/sdk/android/3.0/calling-v3.mdx +++ b/sdk/android/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Calling V3" +description: "Calling V3 — CometChat documentation." --- diff --git a/sdk/android/3.0/calling.mdx b/sdk/android/3.0/calling.mdx index ede5898c2..cfa44177a 100644 --- a/sdk/android/3.0/calling.mdx +++ b/sdk/android/3.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/android/3.0/default-calling-v3.mdx b/sdk/android/3.0/default-calling-v3.mdx index 40b346e45..fa25378dd 100644 --- a/sdk/android/3.0/default-calling-v3.mdx +++ b/sdk/android/3.0/default-calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/android/3.0/direct-calling-v3.mdx b/sdk/android/3.0/direct-calling-v3.mdx index 612307134..8da356122 100644 --- a/sdk/android/3.0/direct-calling-v3.mdx +++ b/sdk/android/3.0/direct-calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/android/3.0/extensions-overview.mdx b/sdk/android/3.0/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/android/3.0/extensions-overview.mdx +++ b/sdk/android/3.0/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/android/3.0/groups-add-members-to-group.mdx b/sdk/android/3.0/groups-add-members-to-group.mdx index 2c4b3c058..967e027ee 100644 --- a/sdk/android/3.0/groups-add-members-to-group.mdx +++ b/sdk/android/3.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-change-member-scope.mdx b/sdk/android/3.0/groups-change-member-scope.mdx index 4ac4e10f7..9a76015ae 100644 --- a/sdk/android/3.0/groups-change-member-scope.mdx +++ b/sdk/android/3.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-create-group.mdx b/sdk/android/3.0/groups-create-group.mdx index f1aafac2f..e597dae9d 100644 --- a/sdk/android/3.0/groups-create-group.mdx +++ b/sdk/android/3.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-delete-group.mdx b/sdk/android/3.0/groups-delete-group.mdx index df7d31566..3c524b892 100644 --- a/sdk/android/3.0/groups-delete-group.mdx +++ b/sdk/android/3.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-join-group.mdx b/sdk/android/3.0/groups-join-group.mdx index 8b9d48750..8e2f33af6 100644 --- a/sdk/android/3.0/groups-join-group.mdx +++ b/sdk/android/3.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-kick-ban-members.mdx b/sdk/android/3.0/groups-kick-ban-members.mdx index 149950c5e..7eae85945 100644 --- a/sdk/android/3.0/groups-kick-ban-members.mdx +++ b/sdk/android/3.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-leave-group.mdx b/sdk/android/3.0/groups-leave-group.mdx index 844a4d87e..b5ec62f74 100644 --- a/sdk/android/3.0/groups-leave-group.mdx +++ b/sdk/android/3.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-retrieve-group-members.mdx b/sdk/android/3.0/groups-retrieve-group-members.mdx index 19e6d13e1..219d5f7b2 100644 --- a/sdk/android/3.0/groups-retrieve-group-members.mdx +++ b/sdk/android/3.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-retrieve-groups.mdx b/sdk/android/3.0/groups-retrieve-groups.mdx index c9f4825a7..023b06146 100644 --- a/sdk/android/3.0/groups-retrieve-groups.mdx +++ b/sdk/android/3.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-transfer-group-ownership.mdx b/sdk/android/3.0/groups-transfer-group-ownership.mdx index 4a3cac4cd..3199a472f 100644 --- a/sdk/android/3.0/groups-transfer-group-ownership.mdx +++ b/sdk/android/3.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/android/3.0/groups-update-group.mdx b/sdk/android/3.0/groups-update-group.mdx index 85fd5409e..24982d16f 100644 --- a/sdk/android/3.0/groups-update-group.mdx +++ b/sdk/android/3.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/android/3.0/groups.mdx b/sdk/android/3.0/groups.mdx index 99e877026..be06c2c42 100644 --- a/sdk/android/3.0/groups.mdx +++ b/sdk/android/3.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/android/3.0/key-concepts.mdx b/sdk/android/3.0/key-concepts.mdx index 53689462a..5fe7f780d 100644 --- a/sdk/android/3.0/key-concepts.mdx +++ b/sdk/android/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/android/3.0/kotlin-overview.mdx b/sdk/android/3.0/kotlin-overview.mdx index 78e9bfe07..1daa48965 100644 --- a/sdk/android/3.0/kotlin-overview.mdx +++ b/sdk/android/3.0/kotlin-overview.mdx @@ -1,4 +1,5 @@ --- title: "Android Kotlin UI Kit" url: /docs/ui-kit/kotlin/overview" +description: "Overview of Android Kotlin UI Kit in CometChat." --- \ No newline at end of file diff --git a/sdk/android/3.0/message-structure-and-hierarchy.mdx b/sdk/android/3.0/message-structure-and-hierarchy.mdx index ca07d83d2..72120f116 100644 --- a/sdk/android/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/android/3.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-additional-message-filtering.mdx b/sdk/android/3.0/messaging-additional-message-filtering.mdx index ed9bd8b2d..0daf9242d 100644 --- a/sdk/android/3.0/messaging-additional-message-filtering.mdx +++ b/sdk/android/3.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-delete-conversation.mdx b/sdk/android/3.0/messaging-delete-conversation.mdx index 012d10cb2..6276e77b3 100644 --- a/sdk/android/3.0/messaging-delete-conversation.mdx +++ b/sdk/android/3.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-delete-message.mdx b/sdk/android/3.0/messaging-delete-message.mdx index ae91c8438..c6b7469cf 100644 --- a/sdk/android/3.0/messaging-delete-message.mdx +++ b/sdk/android/3.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-edit-message.mdx b/sdk/android/3.0/messaging-edit-message.mdx index 9d3a97b96..241667b12 100644 --- a/sdk/android/3.0/messaging-edit-message.mdx +++ b/sdk/android/3.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-receipts.mdx b/sdk/android/3.0/messaging-receipts.mdx index 72bbd6a1d..7ce76a489 100644 --- a/sdk/android/3.0/messaging-receipts.mdx +++ b/sdk/android/3.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-receive-messages.mdx b/sdk/android/3.0/messaging-receive-messages.mdx index d206352ab..9cbfa2563 100644 --- a/sdk/android/3.0/messaging-receive-messages.mdx +++ b/sdk/android/3.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-retrieve-conversations.mdx b/sdk/android/3.0/messaging-retrieve-conversations.mdx index 0b372fc6f..bfcf12537 100644 --- a/sdk/android/3.0/messaging-retrieve-conversations.mdx +++ b/sdk/android/3.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-send-message.mdx b/sdk/android/3.0/messaging-send-message.mdx index 11f02d9e6..a89276f85 100644 --- a/sdk/android/3.0/messaging-send-message.mdx +++ b/sdk/android/3.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-transient-messages.mdx b/sdk/android/3.0/messaging-transient-messages.mdx index b3289e90b..c9b8f9a6a 100644 --- a/sdk/android/3.0/messaging-transient-messages.mdx +++ b/sdk/android/3.0/messaging-transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging-typing-indicators.mdx b/sdk/android/3.0/messaging-typing-indicators.mdx index 88164a056..b29b8e422 100644 --- a/sdk/android/3.0/messaging-typing-indicators.mdx +++ b/sdk/android/3.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/android/3.0/messaging.mdx b/sdk/android/3.0/messaging.mdx index 146a2faf6..356a14079 100644 --- a/sdk/android/3.0/messaging.mdx +++ b/sdk/android/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/android/3.0/overview.mdx b/sdk/android/3.0/overview.mdx index b045545b5..e15458693 100644 --- a/sdk/android/3.0/overview.mdx +++ b/sdk/android/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/android/3.0/presenter-mode.mdx b/sdk/android/3.0/presenter-mode.mdx index 5552f0a59..d30c71e20 100644 --- a/sdk/android/3.0/presenter-mode.mdx +++ b/sdk/android/3.0/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/android/3.0/rate-limits.mdx b/sdk/android/3.0/rate-limits.mdx index dcd959b99..79eca5ef8 100644 --- a/sdk/android/3.0/rate-limits.mdx +++ b/sdk/android/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/android/3.0/resources-all-real-time-listeners.mdx b/sdk/android/3.0/resources-all-real-time-listeners.mdx index 6aec93906..5a431c722 100644 --- a/sdk/android/3.0/resources-all-real-time-listeners.mdx +++ b/sdk/android/3.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/android/3.0/resources-upgrading-from-v2.mdx b/sdk/android/3.0/resources-upgrading-from-v2.mdx index cdb38e739..be6b08732 100644 --- a/sdk/android/3.0/resources-upgrading-from-v2.mdx +++ b/sdk/android/3.0/resources-upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/android/3.0/setup-v3.mdx b/sdk/android/3.0/setup-v3.mdx index e7c56c644..7adf54acd 100644 --- a/sdk/android/3.0/setup-v3.mdx +++ b/sdk/android/3.0/setup-v3.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/android/3.0/setup.mdx b/sdk/android/3.0/setup.mdx index e785e9660..a6100b55c 100644 --- a/sdk/android/3.0/setup.mdx +++ b/sdk/android/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/android/3.0/threaded-messages.mdx b/sdk/android/3.0/threaded-messages.mdx index e22e06e30..0d9c92ce5 100644 --- a/sdk/android/3.0/threaded-messages.mdx +++ b/sdk/android/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/android/3.0/user-presence.mdx b/sdk/android/3.0/user-presence.mdx index 05a9a588b..f1227c8db 100644 --- a/sdk/android/3.0/user-presence.mdx +++ b/sdk/android/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/android/3.0/users-block-users.mdx b/sdk/android/3.0/users-block-users.mdx index 1f6e946f6..40a5e79c8 100644 --- a/sdk/android/3.0/users-block-users.mdx +++ b/sdk/android/3.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/android/3.0/users-retrieve-users.mdx b/sdk/android/3.0/users-retrieve-users.mdx index 054932e11..26344e0e1 100644 --- a/sdk/android/3.0/users-retrieve-users.mdx +++ b/sdk/android/3.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/android/3.0/users-user-management.mdx b/sdk/android/3.0/users-user-management.mdx index fe7c198a6..e5dcf27bc 100644 --- a/sdk/android/3.0/users-user-management.mdx +++ b/sdk/android/3.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/android/3.0/users.mdx b/sdk/android/3.0/users.mdx index 402575e3a..3160d29ea 100644 --- a/sdk/android/3.0/users.mdx +++ b/sdk/android/3.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/android/3.0/video-view-customisation-v3.mdx b/sdk/android/3.0/video-view-customisation-v3.mdx index 71079372a..2141252b1 100644 --- a/sdk/android/3.0/video-view-customisation-v3.mdx +++ b/sdk/android/3.0/video-view-customisation-v3.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/android/3.0/video-view-customisation.mdx b/sdk/android/3.0/video-view-customisation.mdx index a399b1551..aad05efa6 100644 --- a/sdk/android/3.0/video-view-customisation.mdx +++ b/sdk/android/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/android/3.0/webhooks.mdx b/sdk/android/3.0/webhooks.mdx index 8b1cc1919..4e365a28f 100644 --- a/sdk/android/3.0/webhooks.mdx +++ b/sdk/android/3.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/android/additional-message-filtering.mdx b/sdk/android/additional-message-filtering.mdx index a215f75c7..cc063d3ae 100644 --- a/sdk/android/additional-message-filtering.mdx +++ b/sdk/android/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/android/advanced-overview.mdx b/sdk/android/advanced-overview.mdx index 18501a4d5..95d19abbe 100644 --- a/sdk/android/advanced-overview.mdx +++ b/sdk/android/advanced-overview.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Overview of Advanced in CometChat." --- diff --git a/sdk/android/ai-agents.mdx b/sdk/android/ai-agents.mdx index 853da43a7..c33e3700a 100644 --- a/sdk/android/ai-agents.mdx +++ b/sdk/android/ai-agents.mdx @@ -1,5 +1,6 @@ --- title: "AI Agents" +description: "AI Agents — CometChat documentation." --- # AI Agents Overview diff --git a/sdk/android/ai-chatbots-overview.mdx b/sdk/android/ai-chatbots-overview.mdx index 453c5e30f..3b5eb9e83 100644 --- a/sdk/android/ai-chatbots-overview.mdx +++ b/sdk/android/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/ai-chatbots/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/android/ai-moderation.mdx b/sdk/android/ai-moderation.mdx index 3c3a0214c..ef87b3471 100644 --- a/sdk/android/ai-moderation.mdx +++ b/sdk/android/ai-moderation.mdx @@ -1,5 +1,6 @@ --- title: "AI Moderation" +description: "AI Moderation — CometChat documentation." --- ## Overview diff --git a/sdk/android/ai-user-copilot-overview.mdx b/sdk/android/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/android/ai-user-copilot-overview.mdx +++ b/sdk/android/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/android/android-overview.mdx b/sdk/android/android-overview.mdx index c85f2beb4..9f646af47 100644 --- a/sdk/android/android-overview.mdx +++ b/sdk/android/android-overview.mdx @@ -1,4 +1,5 @@ --- title: "Java UI Kit" url: "/ui-kit/android/overview" +description: "Navigate to Java UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/android/authentication-overview.mdx b/sdk/android/authentication-overview.mdx index 3d03baa36..8d34b6860 100644 --- a/sdk/android/authentication-overview.mdx +++ b/sdk/android/authentication-overview.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Overview of Authentication in CometChat." --- diff --git a/sdk/android/block-users.mdx b/sdk/android/block-users.mdx index d48752d66..b44a24262 100644 --- a/sdk/android/block-users.mdx +++ b/sdk/android/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/android/call-logs.mdx b/sdk/android/call-logs.mdx index ef02868d2..8e66a7f72 100644 --- a/sdk/android/call-logs.mdx +++ b/sdk/android/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/sdk/android/calling-overview.mdx b/sdk/android/calling-overview.mdx index 19ef1c0f2..67feec0e2 100644 --- a/sdk/android/calling-overview.mdx +++ b/sdk/android/calling-overview.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Overview of Calling in CometChat." --- ## Overview diff --git a/sdk/android/calling-setup.mdx b/sdk/android/calling-setup.mdx index d7fbb4469..35fa4cb5b 100644 --- a/sdk/android/calling-setup.mdx +++ b/sdk/android/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/android/changelog.mdx b/sdk/android/changelog.mdx index 2512bedbb..1fc1d61d7 100644 --- a/sdk/android/changelog.mdx +++ b/sdk/android/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-android/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/sdk/android/connection-behaviour.mdx b/sdk/android/connection-behaviour.mdx index 02a960181..cd87aa878 100644 --- a/sdk/android/connection-behaviour.mdx +++ b/sdk/android/connection-behaviour.mdx @@ -1,5 +1,6 @@ --- title: "Connection Behaviour" +description: "Connection Behaviour — CometChat documentation." --- diff --git a/sdk/android/connection-status.mdx b/sdk/android/connection-status.mdx index c56576884..3c28e7f00 100644 --- a/sdk/android/connection-status.mdx +++ b/sdk/android/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/android/create-group.mdx b/sdk/android/create-group.mdx index eecf3e26f..0b98e31b9 100644 --- a/sdk/android/create-group.mdx +++ b/sdk/android/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/android/default-calling.mdx b/sdk/android/default-calling.mdx index 654dc8448..d8afcf33c 100644 --- a/sdk/android/default-calling.mdx +++ b/sdk/android/default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Ringing" +description: "Ringing — CometChat documentation." --- ## Overview diff --git a/sdk/android/delete-conversation.mdx b/sdk/android/delete-conversation.mdx index 012d10cb2..6276e77b3 100644 --- a/sdk/android/delete-conversation.mdx +++ b/sdk/android/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/android/delete-group.mdx b/sdk/android/delete-group.mdx index 36d3eb938..008c34dee 100644 --- a/sdk/android/delete-group.mdx +++ b/sdk/android/delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/android/delete-message.mdx b/sdk/android/delete-message.mdx index 082a8ba12..83df21521 100644 --- a/sdk/android/delete-message.mdx +++ b/sdk/android/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/android/delivery-read-receipts.mdx b/sdk/android/delivery-read-receipts.mdx index 93f59de93..40194a521 100644 --- a/sdk/android/delivery-read-receipts.mdx +++ b/sdk/android/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/android/direct-calling.mdx b/sdk/android/direct-calling.mdx index 1c5523339..36082cbf3 100644 --- a/sdk/android/direct-calling.mdx +++ b/sdk/android/direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Call Session" +description: "Call Session — CometChat documentation." --- ## Overview diff --git a/sdk/android/edit-message.mdx b/sdk/android/edit-message.mdx index 9385d0b71..b4477537c 100644 --- a/sdk/android/edit-message.mdx +++ b/sdk/android/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/android/extensions-overview.mdx b/sdk/android/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/android/extensions-overview.mdx +++ b/sdk/android/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/android/flag-message.mdx b/sdk/android/flag-message.mdx index 0843d2902..81f29e23b 100644 --- a/sdk/android/flag-message.mdx +++ b/sdk/android/flag-message.mdx @@ -1,5 +1,6 @@ --- title: "Flag Message" +description: "Flag Message — CometChat documentation." --- ## Overview diff --git a/sdk/android/group-add-members.mdx b/sdk/android/group-add-members.mdx index a135b4615..fc3e90bad 100644 --- a/sdk/android/group-add-members.mdx +++ b/sdk/android/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/android/group-change-member-scope.mdx b/sdk/android/group-change-member-scope.mdx index 13303f53b..75449a850 100644 --- a/sdk/android/group-change-member-scope.mdx +++ b/sdk/android/group-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/android/group-kick-member.mdx b/sdk/android/group-kick-member.mdx index fbbd7cb5c..7b6fd2aae 100644 --- a/sdk/android/group-kick-member.mdx +++ b/sdk/android/group-kick-member.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/android/groups-overview.mdx b/sdk/android/groups-overview.mdx index 99e877026..00b7d6b44 100644 --- a/sdk/android/groups-overview.mdx +++ b/sdk/android/groups-overview.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of Groups in CometChat." --- diff --git a/sdk/android/interactive-messages.mdx b/sdk/android/interactive-messages.mdx index d6f468c0e..d9fc97354 100644 --- a/sdk/android/interactive-messages.mdx +++ b/sdk/android/interactive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Interactive Messages" +description: "Interactive Messages — CometChat documentation." --- diff --git a/sdk/android/join-group.mdx b/sdk/android/join-group.mdx index 514297a66..5ed7b36f0 100644 --- a/sdk/android/join-group.mdx +++ b/sdk/android/join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/android/key-concepts.mdx b/sdk/android/key-concepts.mdx index 71f0f4bf3..7e766228b 100644 --- a/sdk/android/key-concepts.mdx +++ b/sdk/android/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/android/leave-group.mdx b/sdk/android/leave-group.mdx index baa6f2fce..e82711d18 100644 --- a/sdk/android/leave-group.mdx +++ b/sdk/android/leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/android/login-listeners.mdx b/sdk/android/login-listeners.mdx index 9acb5ea90..c58ae6ed6 100644 --- a/sdk/android/login-listeners.mdx +++ b/sdk/android/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/android/mentions.mdx b/sdk/android/mentions.mdx index ce0320209..fbc05a984 100644 --- a/sdk/android/mentions.mdx +++ b/sdk/android/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions" +description: "Mentions — CometChat documentation." --- diff --git a/sdk/android/message-structure-and-hierarchy.mdx b/sdk/android/message-structure-and-hierarchy.mdx index 4ed4ed248..7fbfc58e9 100644 --- a/sdk/android/message-structure-and-hierarchy.mdx +++ b/sdk/android/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/android/messaging-overview.mdx b/sdk/android/messaging-overview.mdx index 36e57feff..e9abdafe7 100644 --- a/sdk/android/messaging-overview.mdx +++ b/sdk/android/messaging-overview.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of Messaging in CometChat." --- diff --git a/sdk/android/overview.mdx b/sdk/android/overview.mdx index a55d7d6ce..829674b9e 100644 --- a/sdk/android/overview.mdx +++ b/sdk/android/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/android/presenter-mode.mdx b/sdk/android/presenter-mode.mdx index e68bfd29d..9e787a48d 100644 --- a/sdk/android/presenter-mode.mdx +++ b/sdk/android/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/android/publishing-app-on-playstore.mdx b/sdk/android/publishing-app-on-playstore.mdx index 7e2815d76..6cbcfed15 100644 --- a/sdk/android/publishing-app-on-playstore.mdx +++ b/sdk/android/publishing-app-on-playstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On PlayStore" +description: "Publishing App On PlayStore — CometChat documentation." --- diff --git a/sdk/android/rate-limits.mdx b/sdk/android/rate-limits.mdx index 17581b144..796b22b12 100644 --- a/sdk/android/rate-limits.mdx +++ b/sdk/android/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/android/reactions.mdx b/sdk/android/reactions.mdx index b7a903654..eeada4ca7 100644 --- a/sdk/android/reactions.mdx +++ b/sdk/android/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- diff --git a/sdk/android/real-time-listeners.mdx b/sdk/android/real-time-listeners.mdx index 04e653071..5840e8382 100644 --- a/sdk/android/real-time-listeners.mdx +++ b/sdk/android/real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/android/receive-messages.mdx b/sdk/android/receive-messages.mdx index 6cd321878..dcd580d23 100644 --- a/sdk/android/receive-messages.mdx +++ b/sdk/android/receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/android/recording.mdx b/sdk/android/recording.mdx index 8f497bb70..517510597 100644 --- a/sdk/android/recording.mdx +++ b/sdk/android/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/android/resources-overview.mdx b/sdk/android/resources-overview.mdx index 59e91dad5..d1891559e 100644 --- a/sdk/android/resources-overview.mdx +++ b/sdk/android/resources-overview.mdx @@ -1,5 +1,6 @@ --- title: "Resources" +description: "Overview of Resources in CometChat." --- diff --git a/sdk/android/retrieve-conversations.mdx b/sdk/android/retrieve-conversations.mdx index 62aa4de7a..1bd963851 100644 --- a/sdk/android/retrieve-conversations.mdx +++ b/sdk/android/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/android/retrieve-group-members.mdx b/sdk/android/retrieve-group-members.mdx index 46001c72a..1551e3167 100644 --- a/sdk/android/retrieve-group-members.mdx +++ b/sdk/android/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/android/retrieve-groups.mdx b/sdk/android/retrieve-groups.mdx index 7b1878481..0c6a3f0b2 100644 --- a/sdk/android/retrieve-groups.mdx +++ b/sdk/android/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/android/retrieve-users.mdx b/sdk/android/retrieve-users.mdx index ecbf5de36..1599cafc8 100644 --- a/sdk/android/retrieve-users.mdx +++ b/sdk/android/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/android/send-message.mdx b/sdk/android/send-message.mdx index 254f6254b..134aeecf7 100644 --- a/sdk/android/send-message.mdx +++ b/sdk/android/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/android/session-timeout.mdx b/sdk/android/session-timeout.mdx index 23470881f..99bf3ecb0 100644 --- a/sdk/android/session-timeout.mdx +++ b/sdk/android/session-timeout.mdx @@ -1,5 +1,6 @@ --- title: "Session Timeout Flow" +description: "Session Timeout Flow — CometChat documentation." --- diff --git a/sdk/android/setup.mdx b/sdk/android/setup.mdx index 55cef555d..3309b620f 100644 --- a/sdk/android/setup.mdx +++ b/sdk/android/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/android/standalone-calling.mdx b/sdk/android/standalone-calling.mdx index 77b4e628c..f19c59827 100644 --- a/sdk/android/standalone-calling.mdx +++ b/sdk/android/standalone-calling.mdx @@ -1,5 +1,6 @@ --- title: "Standalone Calling" +description: "Standalone Calling — CometChat documentation." --- ## Overview diff --git a/sdk/android/threaded-messages.mdx b/sdk/android/threaded-messages.mdx index 8a8787c3a..986057788 100644 --- a/sdk/android/threaded-messages.mdx +++ b/sdk/android/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/android/transfer-group-ownership.mdx b/sdk/android/transfer-group-ownership.mdx index 6663488bf..389f943ad 100644 --- a/sdk/android/transfer-group-ownership.mdx +++ b/sdk/android/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/android/transient-messages.mdx b/sdk/android/transient-messages.mdx index efeceec14..01c7f9ce8 100644 --- a/sdk/android/transient-messages.mdx +++ b/sdk/android/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/android/typing-indicators.mdx b/sdk/android/typing-indicators.mdx index 452fd1f4a..9bf0f54f2 100644 --- a/sdk/android/typing-indicators.mdx +++ b/sdk/android/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/android/update-group.mdx b/sdk/android/update-group.mdx index 4fbbba0e3..375c9c167 100644 --- a/sdk/android/update-group.mdx +++ b/sdk/android/update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/android/upgrading-from-v3-guide.mdx b/sdk/android/upgrading-from-v3-guide.mdx index 14bccd7a3..2f4d9ce35 100644 --- a/sdk/android/upgrading-from-v3-guide.mdx +++ b/sdk/android/upgrading-from-v3-guide.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V3" +description: "Upgrading From V3 — CometChat integration guide." --- diff --git a/sdk/android/user-management.mdx b/sdk/android/user-management.mdx index 44e7ee1b9..1dea4e538 100644 --- a/sdk/android/user-management.mdx +++ b/sdk/android/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/android/user-presence.mdx b/sdk/android/user-presence.mdx index 58c0f69f4..8923a031e 100644 --- a/sdk/android/user-presence.mdx +++ b/sdk/android/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/android/users-overview.mdx b/sdk/android/users-overview.mdx index ea9156b7a..604e3b25f 100644 --- a/sdk/android/users-overview.mdx +++ b/sdk/android/users-overview.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of Users in CometChat." --- diff --git a/sdk/android/video-view-customisation.mdx b/sdk/android/video-view-customisation.mdx index 75040b362..c47768a1a 100644 --- a/sdk/android/video-view-customisation.mdx +++ b/sdk/android/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/android/webhooks-overview.mdx b/sdk/android/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/android/webhooks-overview.mdx +++ b/sdk/android/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/sdk/flutter/3.0/advanced-connection-status.mdx b/sdk/flutter/3.0/advanced-connection-status.mdx index 2f8c2ba65..ea728762a 100644 --- a/sdk/flutter/3.0/advanced-connection-status.mdx +++ b/sdk/flutter/3.0/advanced-connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually.mdx b/sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually.mdx index f6f40f8f6..02445efc2 100644 --- a/sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually.mdx +++ b/sdk/flutter/3.0/advanced-managing-web-sockets-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Sockets Connections Manually" +description: "Managing Web Sockets Connections Manually — CometChat documentation." --- diff --git a/sdk/flutter/3.0/advanced.mdx b/sdk/flutter/3.0/advanced.mdx index 7a8e791f6..931f86642 100644 --- a/sdk/flutter/3.0/advanced.mdx +++ b/sdk/flutter/3.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/flutter/3.0/authentication-login-listeners.mdx b/sdk/flutter/3.0/authentication-login-listeners.mdx index 88bbbef8b..9392a6ff0 100644 --- a/sdk/flutter/3.0/authentication-login-listeners.mdx +++ b/sdk/flutter/3.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/flutter/3.0/authentication.mdx b/sdk/flutter/3.0/authentication.mdx index c1512dfc9..b3ec10257 100644 --- a/sdk/flutter/3.0/authentication.mdx +++ b/sdk/flutter/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/flutter/3.0/calling-setup.mdx b/sdk/flutter/3.0/calling-setup.mdx index c7b37cd4a..0f5034ee7 100644 --- a/sdk/flutter/3.0/calling-setup.mdx +++ b/sdk/flutter/3.0/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/flutter/3.0/calling-v3.mdx b/sdk/flutter/3.0/calling-v3.mdx index 99a6e6a23..3891ce8bd 100644 --- a/sdk/flutter/3.0/calling-v3.mdx +++ b/sdk/flutter/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Calling V3" +description: "Calling V3 — CometChat documentation." --- diff --git a/sdk/flutter/3.0/default-calling.mdx b/sdk/flutter/3.0/default-calling.mdx index d78daea98..4509f5929 100644 --- a/sdk/flutter/3.0/default-calling.mdx +++ b/sdk/flutter/3.0/default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/flutter/3.0/direct-calling.mdx b/sdk/flutter/3.0/direct-calling.mdx index 3b7d8e7fd..275ecd73b 100644 --- a/sdk/flutter/3.0/direct-calling.mdx +++ b/sdk/flutter/3.0/direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/flutter/3.0/flutter-resources.mdx b/sdk/flutter/3.0/flutter-resources.mdx index 321bd2695..8e4f38891 100644 --- a/sdk/flutter/3.0/flutter-resources.mdx +++ b/sdk/flutter/3.0/flutter-resources.mdx @@ -1,5 +1,6 @@ --- title: "Resources" +description: "Resources — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-add-members-to-group.mdx b/sdk/flutter/3.0/groups-add-members-to-group.mdx index c7e8c9502..ab05d4170 100644 --- a/sdk/flutter/3.0/groups-add-members-to-group.mdx +++ b/sdk/flutter/3.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-change-member-scope.mdx b/sdk/flutter/3.0/groups-change-member-scope.mdx index 6bdebc2f1..383a4d601 100644 --- a/sdk/flutter/3.0/groups-change-member-scope.mdx +++ b/sdk/flutter/3.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-create-group.mdx b/sdk/flutter/3.0/groups-create-group.mdx index 21385f191..f118c80c8 100644 --- a/sdk/flutter/3.0/groups-create-group.mdx +++ b/sdk/flutter/3.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-delete-group.mdx b/sdk/flutter/3.0/groups-delete-group.mdx index aec7eaa30..8e3bb2ecc 100644 --- a/sdk/flutter/3.0/groups-delete-group.mdx +++ b/sdk/flutter/3.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-join-group.mdx b/sdk/flutter/3.0/groups-join-group.mdx index db8d9d3d2..6b333f678 100644 --- a/sdk/flutter/3.0/groups-join-group.mdx +++ b/sdk/flutter/3.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-kick-ban-members.mdx b/sdk/flutter/3.0/groups-kick-ban-members.mdx index e4f84fcfe..e567a5b2d 100644 --- a/sdk/flutter/3.0/groups-kick-ban-members.mdx +++ b/sdk/flutter/3.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-leave-group.mdx b/sdk/flutter/3.0/groups-leave-group.mdx index c42a60a6b..0840c4713 100644 --- a/sdk/flutter/3.0/groups-leave-group.mdx +++ b/sdk/flutter/3.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-retrieve-group-members.mdx b/sdk/flutter/3.0/groups-retrieve-group-members.mdx index 13e637b05..59f8498f1 100644 --- a/sdk/flutter/3.0/groups-retrieve-group-members.mdx +++ b/sdk/flutter/3.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-retrieve-groups.mdx b/sdk/flutter/3.0/groups-retrieve-groups.mdx index 6def7eff8..b9f2b5f1e 100644 --- a/sdk/flutter/3.0/groups-retrieve-groups.mdx +++ b/sdk/flutter/3.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-transfer-group-ownership.mdx b/sdk/flutter/3.0/groups-transfer-group-ownership.mdx index f5cbd03fe..09bf7623f 100644 --- a/sdk/flutter/3.0/groups-transfer-group-ownership.mdx +++ b/sdk/flutter/3.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups-update-group.mdx b/sdk/flutter/3.0/groups-update-group.mdx index 5ee68e89a..f7915ed40 100644 --- a/sdk/flutter/3.0/groups-update-group.mdx +++ b/sdk/flutter/3.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/flutter/3.0/groups.mdx b/sdk/flutter/3.0/groups.mdx index 4f3d1c363..2df1802aa 100644 --- a/sdk/flutter/3.0/groups.mdx +++ b/sdk/flutter/3.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/flutter/3.0/key-concepts.mdx b/sdk/flutter/3.0/key-concepts.mdx index 64d8a4d1e..026ef419a 100644 --- a/sdk/flutter/3.0/key-concepts.mdx +++ b/sdk/flutter/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/flutter/3.0/message-structure-and-hierarchy.mdx b/sdk/flutter/3.0/message-structure-and-hierarchy.mdx index 1e2ffd31b..655ee190e 100644 --- a/sdk/flutter/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/flutter/3.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-additional-message-filtering.mdx b/sdk/flutter/3.0/messaging-additional-message-filtering.mdx index 1fb867693..0299a36ae 100644 --- a/sdk/flutter/3.0/messaging-additional-message-filtering.mdx +++ b/sdk/flutter/3.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-delete-conversation.mdx b/sdk/flutter/3.0/messaging-delete-conversation.mdx index 014256cd5..eb84f5659 100644 --- a/sdk/flutter/3.0/messaging-delete-conversation.mdx +++ b/sdk/flutter/3.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-delete-message.mdx b/sdk/flutter/3.0/messaging-delete-message.mdx index 304c3a95a..180b57448 100644 --- a/sdk/flutter/3.0/messaging-delete-message.mdx +++ b/sdk/flutter/3.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-edit-message.mdx b/sdk/flutter/3.0/messaging-edit-message.mdx index 982bb6b48..ef7c560d8 100644 --- a/sdk/flutter/3.0/messaging-edit-message.mdx +++ b/sdk/flutter/3.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-receipts.mdx b/sdk/flutter/3.0/messaging-receipts.mdx index f95a25218..05d4d1911 100644 --- a/sdk/flutter/3.0/messaging-receipts.mdx +++ b/sdk/flutter/3.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-receive-messages.mdx b/sdk/flutter/3.0/messaging-receive-messages.mdx index 59bf5d373..fb2f99029 100644 --- a/sdk/flutter/3.0/messaging-receive-messages.mdx +++ b/sdk/flutter/3.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-retrieve-conversations.mdx b/sdk/flutter/3.0/messaging-retrieve-conversations.mdx index a45683f29..56dae72a7 100644 --- a/sdk/flutter/3.0/messaging-retrieve-conversations.mdx +++ b/sdk/flutter/3.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-send-message.mdx b/sdk/flutter/3.0/messaging-send-message.mdx index 06eee49af..44e614f56 100644 --- a/sdk/flutter/3.0/messaging-send-message.mdx +++ b/sdk/flutter/3.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-transient-messages.mdx b/sdk/flutter/3.0/messaging-transient-messages.mdx index d36ee1291..671c56b45 100644 --- a/sdk/flutter/3.0/messaging-transient-messages.mdx +++ b/sdk/flutter/3.0/messaging-transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging-typing-indicators.mdx b/sdk/flutter/3.0/messaging-typing-indicators.mdx index a7634ac39..d55e1045d 100644 --- a/sdk/flutter/3.0/messaging-typing-indicators.mdx +++ b/sdk/flutter/3.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/flutter/3.0/messaging.mdx b/sdk/flutter/3.0/messaging.mdx index cf17535e6..75550b972 100644 --- a/sdk/flutter/3.0/messaging.mdx +++ b/sdk/flutter/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/flutter/3.0/overview.mdx b/sdk/flutter/3.0/overview.mdx index 629fbcb92..dff2cb788 100644 --- a/sdk/flutter/3.0/overview.mdx +++ b/sdk/flutter/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- This guide demonstrates how to add chat to a Flutter application. Before you begin, we strongly recommend you read the [Key Concepts](/sdk/flutter/3.0/key-concepts) guide. diff --git a/sdk/flutter/3.0/presenter.mdx b/sdk/flutter/3.0/presenter.mdx index a25886d45..2c125055b 100644 --- a/sdk/flutter/3.0/presenter.mdx +++ b/sdk/flutter/3.0/presenter.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/flutter/3.0/rate-limits.mdx b/sdk/flutter/3.0/rate-limits.mdx index 2b0549eba..903d0679d 100644 --- a/sdk/flutter/3.0/rate-limits.mdx +++ b/sdk/flutter/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/flutter/3.0/recording.mdx b/sdk/flutter/3.0/recording.mdx index 4b8ab7f92..db0d87649 100644 --- a/sdk/flutter/3.0/recording.mdx +++ b/sdk/flutter/3.0/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/flutter/3.0/resources-all-real-time-listeners.mdx b/sdk/flutter/3.0/resources-all-real-time-listeners.mdx index 98829a427..239eaf271 100644 --- a/sdk/flutter/3.0/resources-all-real-time-listeners.mdx +++ b/sdk/flutter/3.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/flutter/3.0/setup.mdx b/sdk/flutter/3.0/setup.mdx index b30003c1c..c1f2b464f 100644 --- a/sdk/flutter/3.0/setup.mdx +++ b/sdk/flutter/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/flutter/3.0/threaded-messages.mdx b/sdk/flutter/3.0/threaded-messages.mdx index 785b2f446..6519065d8 100644 --- a/sdk/flutter/3.0/threaded-messages.mdx +++ b/sdk/flutter/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/flutter/3.0/user-presence.mdx b/sdk/flutter/3.0/user-presence.mdx index 56afa9048..d99305cff 100644 --- a/sdk/flutter/3.0/user-presence.mdx +++ b/sdk/flutter/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/flutter/3.0/users-block-users.mdx b/sdk/flutter/3.0/users-block-users.mdx index 70c2f36d4..acd822560 100644 --- a/sdk/flutter/3.0/users-block-users.mdx +++ b/sdk/flutter/3.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/flutter/3.0/users-retrieve-users.mdx b/sdk/flutter/3.0/users-retrieve-users.mdx index 103760ded..4ffd5f854 100644 --- a/sdk/flutter/3.0/users-retrieve-users.mdx +++ b/sdk/flutter/3.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/flutter/3.0/users-user-management.mdx b/sdk/flutter/3.0/users-user-management.mdx index 96fbaed9a..f4148d394 100644 --- a/sdk/flutter/3.0/users-user-management.mdx +++ b/sdk/flutter/3.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/flutter/3.0/users.mdx b/sdk/flutter/3.0/users.mdx index b99024c2a..f8bbff777 100644 --- a/sdk/flutter/3.0/users.mdx +++ b/sdk/flutter/3.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/flutter/3.0/video-view-customisation.mdx b/sdk/flutter/3.0/video-view-customisation.mdx index cbcf5830d..f9d3b0913 100644 --- a/sdk/flutter/3.0/video-view-customisation.mdx +++ b/sdk/flutter/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/flutter/additional-message-filtering.mdx b/sdk/flutter/additional-message-filtering.mdx index 01dcd182d..cf46d3737 100644 --- a/sdk/flutter/additional-message-filtering.mdx +++ b/sdk/flutter/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/flutter/advanced-overview.mdx b/sdk/flutter/advanced-overview.mdx index 7a8e791f6..91201470d 100644 --- a/sdk/flutter/advanced-overview.mdx +++ b/sdk/flutter/advanced-overview.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Overview of Advanced in CometChat." --- diff --git a/sdk/flutter/ai-agents.mdx b/sdk/flutter/ai-agents.mdx index 1ee853823..2658fcd2a 100644 --- a/sdk/flutter/ai-agents.mdx +++ b/sdk/flutter/ai-agents.mdx @@ -1,5 +1,6 @@ --- title: "AI Agents" +description: "AI Agents — CometChat documentation." --- # AI Agents Overview diff --git a/sdk/flutter/ai-chatbots-overview.mdx b/sdk/flutter/ai-chatbots-overview.mdx index 7a460169b..9ce5d090d 100644 --- a/sdk/flutter/ai-chatbots-overview.mdx +++ b/sdk/flutter/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "Bots" url: "/ai-chatbots/overview" +description: "Navigate to Bots documentation." --- diff --git a/sdk/flutter/ai-moderation.mdx b/sdk/flutter/ai-moderation.mdx index e0414eb82..0de140cde 100644 --- a/sdk/flutter/ai-moderation.mdx +++ b/sdk/flutter/ai-moderation.mdx @@ -1,5 +1,6 @@ --- title: "AI Moderation" +description: "AI Moderation — CometChat documentation." --- ## Overview diff --git a/sdk/flutter/ai-user-copilot-overview.mdx b/sdk/flutter/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/flutter/ai-user-copilot-overview.mdx +++ b/sdk/flutter/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/flutter/authentication-overview.mdx b/sdk/flutter/authentication-overview.mdx index 058c8cc22..188becb82 100644 --- a/sdk/flutter/authentication-overview.mdx +++ b/sdk/flutter/authentication-overview.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Overview of Authentication in CometChat." --- diff --git a/sdk/flutter/block-users.mdx b/sdk/flutter/block-users.mdx index 8613e6df1..3e5d8a67c 100644 --- a/sdk/flutter/block-users.mdx +++ b/sdk/flutter/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/flutter/call-logs.mdx b/sdk/flutter/call-logs.mdx index 7965eaa21..dfccd310b 100644 --- a/sdk/flutter/call-logs.mdx +++ b/sdk/flutter/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/sdk/flutter/calling-overview.mdx b/sdk/flutter/calling-overview.mdx index 61fbffcfe..008ad9e56 100644 --- a/sdk/flutter/calling-overview.mdx +++ b/sdk/flutter/calling-overview.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Overview of Calling in CometChat." --- ## Overview diff --git a/sdk/flutter/calling-setup.mdx b/sdk/flutter/calling-setup.mdx index eb0dc43ea..b9fada42e 100644 --- a/sdk/flutter/calling-setup.mdx +++ b/sdk/flutter/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/flutter/changelog.mdx b/sdk/flutter/changelog.mdx index eb92a1622..08d037855 100644 --- a/sdk/flutter/changelog.mdx +++ b/sdk/flutter/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-flutter/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/sdk/flutter/connection-behaviour.mdx b/sdk/flutter/connection-behaviour.mdx index ba5b683a9..e6620b0b7 100644 --- a/sdk/flutter/connection-behaviour.mdx +++ b/sdk/flutter/connection-behaviour.mdx @@ -1,5 +1,6 @@ --- title: "Connection Behaviour" +description: "Connection Behaviour — CometChat documentation." --- diff --git a/sdk/flutter/connection-status.mdx b/sdk/flutter/connection-status.mdx index a0877d610..66b2e1c1c 100644 --- a/sdk/flutter/connection-status.mdx +++ b/sdk/flutter/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/flutter/create-group.mdx b/sdk/flutter/create-group.mdx index c5eba5686..ae216a8d1 100644 --- a/sdk/flutter/create-group.mdx +++ b/sdk/flutter/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/flutter/default-call.mdx b/sdk/flutter/default-call.mdx index e28cd7787..618c4fcd0 100644 --- a/sdk/flutter/default-call.mdx +++ b/sdk/flutter/default-call.mdx @@ -1,5 +1,6 @@ --- title: "Ringing" +description: "Ringing — CometChat documentation." --- ## Overview diff --git a/sdk/flutter/delete-conversation.mdx b/sdk/flutter/delete-conversation.mdx index 5905706c1..7da733587 100644 --- a/sdk/flutter/delete-conversation.mdx +++ b/sdk/flutter/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/flutter/delete-group.mdx b/sdk/flutter/delete-group.mdx index 2bc36f2e0..d294ff361 100644 --- a/sdk/flutter/delete-group.mdx +++ b/sdk/flutter/delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/flutter/delete-message.mdx b/sdk/flutter/delete-message.mdx index ebf63f117..bd7401bb8 100644 --- a/sdk/flutter/delete-message.mdx +++ b/sdk/flutter/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/flutter/delivery-read-receipts.mdx b/sdk/flutter/delivery-read-receipts.mdx index 1d1716d1e..65de5fcf1 100644 --- a/sdk/flutter/delivery-read-receipts.mdx +++ b/sdk/flutter/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/flutter/direct-call.mdx b/sdk/flutter/direct-call.mdx index 5b55bf4e9..74e447633 100644 --- a/sdk/flutter/direct-call.mdx +++ b/sdk/flutter/direct-call.mdx @@ -1,5 +1,6 @@ --- title: "Call Session" +description: "Call Session — CometChat documentation." --- ## Overview diff --git a/sdk/flutter/edit-message.mdx b/sdk/flutter/edit-message.mdx index 76ae225c6..2d8f33728 100644 --- a/sdk/flutter/edit-message.mdx +++ b/sdk/flutter/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/flutter/extensions-overview.mdx b/sdk/flutter/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/flutter/extensions-overview.mdx +++ b/sdk/flutter/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/flutter/flag-message.mdx b/sdk/flutter/flag-message.mdx index 02b71550c..76ff01d61 100644 --- a/sdk/flutter/flag-message.mdx +++ b/sdk/flutter/flag-message.mdx @@ -1,5 +1,6 @@ --- title: "Flag Message" +description: "Flag Message — CometChat documentation." --- ## Overview diff --git a/sdk/flutter/flutter-overview.mdx b/sdk/flutter/flutter-overview.mdx index acc4dc70c..954755d05 100644 --- a/sdk/flutter/flutter-overview.mdx +++ b/sdk/flutter/flutter-overview.mdx @@ -1,4 +1,5 @@ --- title: "Flutter Chat UI Kit" url: "/ui-kit/flutter/overview" +description: "Navigate to Flutter Chat UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/flutter/group-add-members.mdx b/sdk/flutter/group-add-members.mdx index e125be98b..ee93d0e0e 100644 --- a/sdk/flutter/group-add-members.mdx +++ b/sdk/flutter/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/flutter/group-change-member-scope.mdx b/sdk/flutter/group-change-member-scope.mdx index 412b54b93..19e34596b 100644 --- a/sdk/flutter/group-change-member-scope.mdx +++ b/sdk/flutter/group-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/flutter/group-kick-member.mdx b/sdk/flutter/group-kick-member.mdx index adaa4c841..4b6478aa3 100644 --- a/sdk/flutter/group-kick-member.mdx +++ b/sdk/flutter/group-kick-member.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/flutter/groups-overview.mdx b/sdk/flutter/groups-overview.mdx index 99e877026..00b7d6b44 100644 --- a/sdk/flutter/groups-overview.mdx +++ b/sdk/flutter/groups-overview.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of Groups in CometChat." --- diff --git a/sdk/flutter/interactive-messages.mdx b/sdk/flutter/interactive-messages.mdx index ce85974c3..4dbcd40bf 100644 --- a/sdk/flutter/interactive-messages.mdx +++ b/sdk/flutter/interactive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Interactive Messages" +description: "Interactive Messages — CometChat documentation." --- diff --git a/sdk/flutter/join-group.mdx b/sdk/flutter/join-group.mdx index 41e6b00da..12ef9770a 100644 --- a/sdk/flutter/join-group.mdx +++ b/sdk/flutter/join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/flutter/key-concepts.mdx b/sdk/flutter/key-concepts.mdx index c0c79ebbb..5759aa49a 100644 --- a/sdk/flutter/key-concepts.mdx +++ b/sdk/flutter/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/flutter/leave-group.mdx b/sdk/flutter/leave-group.mdx index f73638b8d..455c7d5f4 100644 --- a/sdk/flutter/leave-group.mdx +++ b/sdk/flutter/leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/flutter/login-listeners.mdx b/sdk/flutter/login-listeners.mdx index 7d720a796..1bed3168c 100644 --- a/sdk/flutter/login-listeners.mdx +++ b/sdk/flutter/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/flutter/mentions.mdx b/sdk/flutter/mentions.mdx index 2a0ad288e..9bbc30ce0 100644 --- a/sdk/flutter/mentions.mdx +++ b/sdk/flutter/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions" +description: "Mentions — CometChat documentation." --- diff --git a/sdk/flutter/message-structure-and-hierarchy.mdx b/sdk/flutter/message-structure-and-hierarchy.mdx index 97385b653..df53b7ad2 100644 --- a/sdk/flutter/message-structure-and-hierarchy.mdx +++ b/sdk/flutter/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/flutter/messaging-overview.mdx b/sdk/flutter/messaging-overview.mdx index 49e55d1d6..25e394c1d 100644 --- a/sdk/flutter/messaging-overview.mdx +++ b/sdk/flutter/messaging-overview.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of Messaging in CometChat." --- diff --git a/sdk/flutter/overview.mdx b/sdk/flutter/overview.mdx index 7d60a459a..ae086250c 100644 --- a/sdk/flutter/overview.mdx +++ b/sdk/flutter/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/flutter/presenter-mode.mdx b/sdk/flutter/presenter-mode.mdx index 88887cb43..5b3a92c7b 100644 --- a/sdk/flutter/presenter-mode.mdx +++ b/sdk/flutter/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/flutter/rate-limits.mdx b/sdk/flutter/rate-limits.mdx index 17581b144..796b22b12 100644 --- a/sdk/flutter/rate-limits.mdx +++ b/sdk/flutter/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/flutter/reactions.mdx b/sdk/flutter/reactions.mdx index 86824cf6c..e6d5ca246 100644 --- a/sdk/flutter/reactions.mdx +++ b/sdk/flutter/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- diff --git a/sdk/flutter/real-time-listeners.mdx b/sdk/flutter/real-time-listeners.mdx index e1685bb8e..36c7af613 100644 --- a/sdk/flutter/real-time-listeners.mdx +++ b/sdk/flutter/real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/flutter/receive-messages.mdx b/sdk/flutter/receive-messages.mdx index 92246df7f..af72c310e 100644 --- a/sdk/flutter/receive-messages.mdx +++ b/sdk/flutter/receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/flutter/recording.mdx b/sdk/flutter/recording.mdx index 54935f250..dae5e5964 100644 --- a/sdk/flutter/recording.mdx +++ b/sdk/flutter/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/flutter/resources-overview.mdx b/sdk/flutter/resources-overview.mdx index ef8fe0d02..8d53fba6f 100644 --- a/sdk/flutter/resources-overview.mdx +++ b/sdk/flutter/resources-overview.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Overview of Resources in CometChat." --- diff --git a/sdk/flutter/retrieve-conversations.mdx b/sdk/flutter/retrieve-conversations.mdx index 7008851cc..0da5d647d 100644 --- a/sdk/flutter/retrieve-conversations.mdx +++ b/sdk/flutter/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/flutter/retrieve-group-members.mdx b/sdk/flutter/retrieve-group-members.mdx index 518ba2801..e73787f99 100644 --- a/sdk/flutter/retrieve-group-members.mdx +++ b/sdk/flutter/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/flutter/retrieve-groups.mdx b/sdk/flutter/retrieve-groups.mdx index 23417e0b0..b387769ff 100644 --- a/sdk/flutter/retrieve-groups.mdx +++ b/sdk/flutter/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/flutter/retrieve-users.mdx b/sdk/flutter/retrieve-users.mdx index 4483e77bb..0ae60d24f 100644 --- a/sdk/flutter/retrieve-users.mdx +++ b/sdk/flutter/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/flutter/send-message.mdx b/sdk/flutter/send-message.mdx index fc2b812b6..4c7de0287 100644 --- a/sdk/flutter/send-message.mdx +++ b/sdk/flutter/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/flutter/session-timeout.mdx b/sdk/flutter/session-timeout.mdx index 23470881f..99bf3ecb0 100644 --- a/sdk/flutter/session-timeout.mdx +++ b/sdk/flutter/session-timeout.mdx @@ -1,5 +1,6 @@ --- title: "Session Timeout Flow" +description: "Session Timeout Flow — CometChat documentation." --- diff --git a/sdk/flutter/setup.mdx b/sdk/flutter/setup.mdx index 77e8f1402..e81fe008d 100644 --- a/sdk/flutter/setup.mdx +++ b/sdk/flutter/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/flutter/standalone-calling.mdx b/sdk/flutter/standalone-calling.mdx index cd1352adc..f0564098a 100644 --- a/sdk/flutter/standalone-calling.mdx +++ b/sdk/flutter/standalone-calling.mdx @@ -1,5 +1,6 @@ --- title: "Standalone Calling" +description: "Standalone Calling — CometChat documentation." --- ## Overview diff --git a/sdk/flutter/threaded-messages.mdx b/sdk/flutter/threaded-messages.mdx index 330506158..f635ce90b 100644 --- a/sdk/flutter/threaded-messages.mdx +++ b/sdk/flutter/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/flutter/transfer-group-ownership.mdx b/sdk/flutter/transfer-group-ownership.mdx index 5c2b8b668..a73858b88 100644 --- a/sdk/flutter/transfer-group-ownership.mdx +++ b/sdk/flutter/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/flutter/transient-messages.mdx b/sdk/flutter/transient-messages.mdx index e39b5e46f..d0bf379e2 100644 --- a/sdk/flutter/transient-messages.mdx +++ b/sdk/flutter/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/flutter/typing-indicators.mdx b/sdk/flutter/typing-indicators.mdx index 9f04279c7..7cad62c20 100644 --- a/sdk/flutter/typing-indicators.mdx +++ b/sdk/flutter/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/flutter/update-group.mdx b/sdk/flutter/update-group.mdx index c9353f983..75134a0c8 100644 --- a/sdk/flutter/update-group.mdx +++ b/sdk/flutter/update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/flutter/upgrading-from-v3-guide.mdx b/sdk/flutter/upgrading-from-v3-guide.mdx index fad427ece..09e1f47b6 100644 --- a/sdk/flutter/upgrading-from-v3-guide.mdx +++ b/sdk/flutter/upgrading-from-v3-guide.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V3" +description: "Upgrading From V3 — CometChat integration guide." --- diff --git a/sdk/flutter/user-management.mdx b/sdk/flutter/user-management.mdx index 3619b9959..80ff022e3 100644 --- a/sdk/flutter/user-management.mdx +++ b/sdk/flutter/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/flutter/user-presence.mdx b/sdk/flutter/user-presence.mdx index a9721a3d9..7d9a9aff7 100644 --- a/sdk/flutter/user-presence.mdx +++ b/sdk/flutter/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/flutter/users-overview.mdx b/sdk/flutter/users-overview.mdx index 3a340e5e3..a2267246a 100644 --- a/sdk/flutter/users-overview.mdx +++ b/sdk/flutter/users-overview.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of Users in CometChat." --- diff --git a/sdk/flutter/video-view-customisation.mdx b/sdk/flutter/video-view-customisation.mdx index d48d8ccdf..bd2da9395 100644 --- a/sdk/flutter/video-view-customisation.mdx +++ b/sdk/flutter/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/flutter/webhooks-overview.mdx b/sdk/flutter/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/flutter/webhooks-overview.mdx +++ b/sdk/flutter/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/sdk/ionic-legacy/2.0/advanced-connection-listener.mdx b/sdk/ionic-legacy/2.0/advanced-connection-listener.mdx index 1fcc666b2..d672732de 100644 --- a/sdk/ionic-legacy/2.0/advanced-connection-listener.mdx +++ b/sdk/ionic-legacy/2.0/advanced-connection-listener.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/advanced.mdx b/sdk/ionic-legacy/2.0/advanced.mdx index 07e7ab601..955565099 100644 --- a/sdk/ionic-legacy/2.0/advanced.mdx +++ b/sdk/ionic-legacy/2.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/authentication-login-listeners.mdx b/sdk/ionic-legacy/2.0/authentication-login-listeners.mdx index 379d4f65a..ef1a30256 100644 --- a/sdk/ionic-legacy/2.0/authentication-login-listeners.mdx +++ b/sdk/ionic-legacy/2.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- @@ -23,7 +24,7 @@ To add the `LoginListener`, you need to use the `addLoginListener()` method prov -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.addLoginListener( listenerID, @@ -52,7 +53,7 @@ In order to stop receiving events related to login and logout you need to use th -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeLoginListener(listenerID); ``` diff --git a/sdk/ionic-legacy/2.0/authentication.mdx b/sdk/ionic-legacy/2.0/authentication.mdx index e4e2f2f3d..664c3b2e5 100644 --- a/sdk/ionic-legacy/2.0/authentication.mdx +++ b/sdk/ionic-legacy/2.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/bots.mdx b/sdk/ionic-legacy/2.0/bots.mdx index e224024de..52222f927 100644 --- a/sdk/ionic-legacy/2.0/bots.mdx +++ b/sdk/ionic-legacy/2.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/calling-default-calling.mdx b/sdk/ionic-legacy/2.0/calling-default-calling.mdx index 60bad1fce..5e3a987ac 100644 --- a/sdk/ionic-legacy/2.0/calling-default-calling.mdx +++ b/sdk/ionic-legacy/2.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- @@ -29,7 +30,7 @@ The `initiateCall()` method sends a call request to a user or a group. -``` +```javascript var receiverID = "UID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.USER; @@ -50,7 +51,7 @@ CometChat.initiateCall(call).then( -``` +```javascript var receiverID = "GUID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.GROUP; diff --git a/sdk/ionic-legacy/2.0/calling-direct-calling.mdx b/sdk/ionic-legacy/2.0/calling-direct-calling.mdx index c4468c1bd..03527a01b 100644 --- a/sdk/ionic-legacy/2.0/calling-direct-calling.mdx +++ b/sdk/ionic-legacy/2.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/calling.mdx b/sdk/ionic-legacy/2.0/calling.mdx index eb795df46..ef9671edc 100644 --- a/sdk/ionic-legacy/2.0/calling.mdx +++ b/sdk/ionic-legacy/2.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/groups-add-members-to-group.mdx b/sdk/ionic-legacy/2.0/groups-add-members-to-group.mdx index f5aab4a85..0d203ee7a 100644 --- a/sdk/ionic-legacy/2.0/groups-add-members-to-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- @@ -18,7 +19,7 @@ You can add members to the group using the `addMembersToGroup()` method. This me -``` +```javascript let GUID = "GUID"; let UID = "UID"; let membersList = [ @@ -57,7 +58,7 @@ To receive real-time events whenever a new member is added to a group, you need -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.addGroupListener( diff --git a/sdk/ionic-legacy/2.0/groups-change-member-scope.mdx b/sdk/ionic-legacy/2.0/groups-change-member-scope.mdx index 9e2cd541e..e11b85956 100644 --- a/sdk/ionic-legacy/2.0/groups-change-member-scope.mdx +++ b/sdk/ionic-legacy/2.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- @@ -51,7 +52,7 @@ In order to receive real-time events for the change member scope event, you will -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addGroupListener( diff --git a/sdk/ionic-legacy/2.0/groups-create-group.mdx b/sdk/ionic-legacy/2.0/groups-create-group.mdx index b1f38bd33..e7847394a 100644 --- a/sdk/ionic-legacy/2.0/groups-create-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- @@ -29,7 +30,7 @@ The `groupType` needs to be either of the below 3 values: -``` +```javascript var GUID = "GUID"; var groupName = "Hello Group!"; var groupType = CometChat.GROUP_TYPE.PUBLIC; diff --git a/sdk/ionic-legacy/2.0/groups-delete-group.mdx b/sdk/ionic-legacy/2.0/groups-delete-group.mdx index aa08b2155..2d6283ddf 100644 --- a/sdk/ionic-legacy/2.0/groups-delete-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/groups-join-group.mdx b/sdk/ionic-legacy/2.0/groups-join-group.mdx index b09b7c7a0..08c5843e5 100644 --- a/sdk/ionic-legacy/2.0/groups-join-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- @@ -14,7 +15,7 @@ In order to start participating in group conversations, you will have to join a -``` +```javascript var GUID = "GUID"; var password = ""; var groupType = CometChat.GROUP_TYPE.PUBLIC; diff --git a/sdk/ionic-legacy/2.0/groups-kick-ban-members.mdx b/sdk/ionic-legacy/2.0/groups-kick-ban-members.mdx index 0ac48174b..f2c380a8e 100644 --- a/sdk/ionic-legacy/2.0/groups-kick-ban-members.mdx +++ b/sdk/ionic-legacy/2.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- @@ -23,7 +24,7 @@ The Admin or Moderator of a group can kick a member out of the group using the ` -``` +```javascript var GUID = "GUID"; var UID = "UID"; @@ -56,7 +57,7 @@ The Admin or Moderator of the group can ban a member from the group using the `b -``` +```javascript var GUID = "GUID"; var UID = "UID"; @@ -89,7 +90,7 @@ Only Admin or Moderators of the group can unban a previously banned member from -``` +```javascript var GUID = "GUID"; var UID = "UID"; @@ -168,7 +169,7 @@ Once you have the object of the `BannedGroupMembersRequest` class, you need to c -``` +```javascript let GUID = "GUID"; let limit = 30; let bannedMembersRequest = new CometChat.BannedMembersRequestBuilder(GUID) @@ -207,7 +208,7 @@ In order to get real-time events for the kick/ban/unban group members you need t -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addGroupListener( diff --git a/sdk/ionic-legacy/2.0/groups-leave-group.mdx b/sdk/ionic-legacy/2.0/groups-leave-group.mdx index 2f3bddd70..b03944a92 100644 --- a/sdk/ionic-legacy/2.0/groups-leave-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/groups-retrieve-group-members.mdx b/sdk/ionic-legacy/2.0/groups-retrieve-group-members.mdx index c17f5810c..bb5ce3c83 100644 --- a/sdk/ionic-legacy/2.0/groups-retrieve-group-members.mdx +++ b/sdk/ionic-legacy/2.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- @@ -22,7 +23,7 @@ This method sets the limit i.e. the number of members that should be fetched in -``` +```javascript let GUID = "GUID"; let limit = 30; let groupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID) @@ -40,7 +41,7 @@ This method allows you to set the search string based on which the group members -``` +```javascript let GUID = "GUID"; let limit = 30; let searchKeyword = "super"; @@ -60,7 +61,7 @@ This method allows you to fetch group members based on multiple scopes. -``` +```javascript let GUID = "GUID"; let limit = 30; let scopes = ["admin", "moderator"]; @@ -80,7 +81,7 @@ Once you have the object of the `GroupMembersRequest` class, you need to call th -``` +```javascript let GUID = "GUID"; let limit = 30; lett groupMemberRequest = new CometChat.GroupMembersRequestBuilder(GUID) diff --git a/sdk/ionic-legacy/2.0/groups-retrieve-groups.mdx b/sdk/ionic-legacy/2.0/groups-retrieve-groups.mdx index 2c2003572..fb918f3a6 100644 --- a/sdk/ionic-legacy/2.0/groups-retrieve-groups.mdx +++ b/sdk/ionic-legacy/2.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- @@ -95,7 +96,7 @@ This property when set to true will fetch tags data along with the list of group -``` +```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() .setLimit(limit) @@ -115,7 +116,7 @@ The list of groups fetched will only have the public and password type groups. T -``` +```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() .setLimit(limit) diff --git a/sdk/ionic-legacy/2.0/groups-transfer-group-ownership.mdx b/sdk/ionic-legacy/2.0/groups-transfer-group-ownership.mdx index 08f89aa6f..2b55668f4 100644 --- a/sdk/ionic-legacy/2.0/groups-transfer-group-ownership.mdx +++ b/sdk/ionic-legacy/2.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/groups-update-group.mdx b/sdk/ionic-legacy/2.0/groups-update-group.mdx index d4a198bbe..b09a8616f 100644 --- a/sdk/ionic-legacy/2.0/groups-update-group.mdx +++ b/sdk/ionic-legacy/2.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- @@ -16,7 +17,7 @@ You can update the existing details of the group using the `updateGroup()` metho -``` +```javascript var GUID = "GUID"; var groupName = "Hello Group"; var groupType = CometChat.GROUP_TYPE.PUBLIC; diff --git a/sdk/ionic-legacy/2.0/groups.mdx b/sdk/ionic-legacy/2.0/groups.mdx index 8a5496978..b89fc06aa 100644 --- a/sdk/ionic-legacy/2.0/groups.mdx +++ b/sdk/ionic-legacy/2.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/key-concepts.mdx b/sdk/ionic-legacy/2.0/key-concepts.mdx index b5b8b87a3..7b29e656e 100644 --- a/sdk/ionic-legacy/2.0/key-concepts.mdx +++ b/sdk/ionic-legacy/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/message-structure-and-hierarchy.mdx b/sdk/ionic-legacy/2.0/message-structure-and-hierarchy.mdx index 6c0a7034d..a0ea24447 100644 --- a/sdk/ionic-legacy/2.0/message-structure-and-hierarchy.mdx +++ b/sdk/ionic-legacy/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/messaging-additional-message-filtering.mdx b/sdk/ionic-legacy/2.0/messaging-additional-message-filtering.mdx index 58712ee47..9e36e563f 100644 --- a/sdk/ionic-legacy/2.0/messaging-additional-message-filtering.mdx +++ b/sdk/ionic-legacy/2.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- @@ -37,7 +38,7 @@ To achieve this, you can use the `setLimit()` method. This method takes an integ -``` +```javascript let UID = "UID"; let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) @@ -48,7 +49,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() -``` +```javascript let GUID = "GUID"; let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) @@ -68,7 +69,7 @@ This can be achieved using the `setUID()` method. This method takes the UID of t -``` +```javascript let UID = "UID"; let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) @@ -88,7 +89,7 @@ You can achieve this using the `setGUID()` method. This method takes the GUID of -``` +```javascript let GUID = "GUID"; let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) diff --git a/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx b/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx index 44334516b..0d0b1f26c 100644 --- a/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx +++ b/sdk/ionic-legacy/2.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- @@ -14,7 +15,7 @@ This method takes two parameters. The unique id (UID/GUID) of the conversation t -``` +```javascript let UID = "UID"; let type = "user"; CometChat.deleteConversation(UID, type).then( @@ -30,7 +31,7 @@ CometChat.deleteConversation(UID, type).then( -``` +```javascript let GUID = "GUID"; let type = "group"; CometChat.deleteConversation(GUID, type).then( diff --git a/sdk/ionic-legacy/2.0/messaging-delete-message.mdx b/sdk/ionic-legacy/2.0/messaging-delete-message.mdx index 612051070..cb52671e6 100644 --- a/sdk/ionic-legacy/2.0/messaging-delete-message.mdx +++ b/sdk/ionic-legacy/2.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/messaging-edit-message.mdx b/sdk/ionic-legacy/2.0/messaging-edit-message.mdx index c5eb32232..77c668361 100644 --- a/sdk/ionic-legacy/2.0/messaging-edit-message.mdx +++ b/sdk/ionic-legacy/2.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- @@ -21,7 +22,7 @@ In order to edit a message, you can use the `editMessage()` method. This method -``` +```javascript let receiverID = "RECEIVER_UID"; let messageText = "Hello world!"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -67,7 +68,7 @@ In order to receive real-time events for message being edited, you need to overr -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.addMessageListener( diff --git a/sdk/ionic-legacy/2.0/messaging-receipts.mdx b/sdk/ionic-legacy/2.0/messaging-receipts.mdx index 4b55d422b..2856f2e99 100644 --- a/sdk/ionic-legacy/2.0/messaging-receipts.mdx +++ b/sdk/ionic-legacy/2.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- @@ -35,7 +36,7 @@ Ideally, you would like to mark all the messages as read for any conversation wh -``` +```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_SENDER_UID"; var receiverType = "user"; @@ -45,7 +46,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType); -``` +```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_RECEIVER_GUID"; var receiverType = "group"; @@ -68,7 +69,7 @@ Real-time events for messages of a conversation being read or delivered can be o -``` +```javascript let listenerId = "UNIQUE_LISTENER_ID"; CometChat.addMessageListener( diff --git a/sdk/ionic-legacy/2.0/messaging-receive-messages.mdx b/sdk/ionic-legacy/2.0/messaging-receive-messages.mdx index 26eabcb46..83a102b0e 100644 --- a/sdk/ionic-legacy/2.0/messaging-receive-messages.mdx +++ b/sdk/ionic-legacy/2.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- @@ -52,7 +53,7 @@ We recommend you remove the listener once you don't want to receive a message fo -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeMessageListener(listenerID); @@ -84,7 +85,7 @@ Calling the `fetchNext()` method on the same object repeatedly allows you to fet -``` +```javascript let UID = "UID"; let limit = 30; let latestId = await CometChat.getLastDeliveredMessageId(); @@ -113,7 +114,7 @@ messagesRequest.fetchNext().then( -``` +```javascript let GUID = "GUID"; let limit = 30; let latestId = await CometChat.getLastDeliveredMessageId(); @@ -148,7 +149,7 @@ Using the `MessagesRequest` class described above, you can fetch the unread mess -``` +```javascript let UID = "UID"; let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -175,7 +176,7 @@ messagesRequest.fetchPrevious().then( -``` +```javascript let GUID = "GUID"; let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -214,7 +215,7 @@ Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilde -``` +```javascript let UID = "UID"; let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -244,7 +245,7 @@ Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilde -``` +```javascript let GUID = "GUID"; let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -276,7 +277,7 @@ Along with the other parameters mentioned above, you can use the `setSearchKeywo -``` +```javascript let UID = "UID"; let limit = 30; let searchKeyword = "Hello"; @@ -365,7 +366,7 @@ CometChat.getUnreadMessageCountForUser(UID, hideMessagesFromBlockedUsers); -``` +```javascript let UID = "UID"; CometChat.getUnreadMessageCountForUser(UID).then( @@ -416,7 +417,7 @@ CometChat.getUnreadMessageCountForGroup(GUID, hideMessagesFromBlockedUsers); -``` +```javascript let GUID = "GUID"; CometChat.getUnreadMessageCountForGroup(GUID).then( diff --git a/sdk/ionic-legacy/2.0/messaging-retrieve-conversations.mdx b/sdk/ionic-legacy/2.0/messaging-retrieve-conversations.mdx index 1abc9226d..8fc93ec83 100644 --- a/sdk/ionic-legacy/2.0/messaging-retrieve-conversations.mdx +++ b/sdk/ionic-legacy/2.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/messaging-send-message.mdx b/sdk/ionic-legacy/2.0/messaging-send-message.mdx index 0b323eb2f..7547a5713 100644 --- a/sdk/ionic-legacy/2.0/messaging-send-message.mdx +++ b/sdk/ionic-legacy/2.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- @@ -24,7 +25,7 @@ To send a text message to a single user or group, you need to use the `sendMessa -``` +```javascript let receiverID = "UID"; let messageText = "Hello world!"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -47,7 +48,7 @@ CometChat.sendMessage(textMessage).then( -``` +```javascript let receiverID = "GUID"; let messageText = "Hello world!"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -87,7 +88,7 @@ To send custom data along with a text message, you can use the `setMetadata` met -``` +```javascript let receiverID = "UID"; let messageText = "Hello World!"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -117,7 +118,7 @@ CometChat.sendMessage(textMessage).then( -``` +```javascript let receiverID = "GUID"; let messageText = "Hello World!"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -194,7 +195,7 @@ if (response.didCancel) { -``` +```javascript let receiverID = "UID"; let messageType = CometChat.MESSAGE_TYPE.FILE; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -218,7 +219,7 @@ CometChat.sendMediaMessage(mediaMessage).then( -``` +```javascript let receiverID = "GUID"; let messageType = CometChat.MESSAGE_TYPE.FILE; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -260,7 +261,7 @@ To send custom data along with a media message, you can use the `setMetadata` me -``` +```javascript var metadata = { latitude: "50.6192171633316", longitude: "-72.68182268750002", @@ -279,7 +280,7 @@ To send a caption with a media message, you can use `setCaption` method and pass -``` +```javascript var caption = "Random Caption"; mediaMessage.setCaption(caption); @@ -301,7 +302,7 @@ The `sendCustomMessage()` methods takes an object of the `CustomMessage` which c -``` +```javascript var customMessage = new CometChat.CustomMessage( receiverID, receiverType, diff --git a/sdk/ionic-legacy/2.0/messaging-typing-indicators.mdx b/sdk/ionic-legacy/2.0/messaging-typing-indicators.mdx index 86d243c0d..1d542daeb 100644 --- a/sdk/ionic-legacy/2.0/messaging-typing-indicators.mdx +++ b/sdk/ionic-legacy/2.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- @@ -18,7 +19,7 @@ You can use the `startTyping()` method to inform the receiver that the logged in -``` +```javascript let receiverId = "UID"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -32,7 +33,7 @@ CometChat.startTyping(typingNotification); -``` +```javascript let receiverId = "GUID"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -53,7 +54,7 @@ You can use the `endTyping()` method to inform the receiver that the logged in u -``` +```javascript let receiverId = "UID"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -67,7 +68,7 @@ CometChat.endTyping(typingNotification); -``` +```javascript let receiverId = "GUID"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -96,7 +97,7 @@ You will receive the typing indicators in the `onTypingStarted()` and the `onTyp -``` +```javascript let listenerId = "UNIQUE_LITENER_ID"; CometChat.addMessageListener( diff --git a/sdk/ionic-legacy/2.0/messaging.mdx b/sdk/ionic-legacy/2.0/messaging.mdx index 47c602d06..547e2d3f6 100644 --- a/sdk/ionic-legacy/2.0/messaging.mdx +++ b/sdk/ionic-legacy/2.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/overview.mdx b/sdk/ionic-legacy/2.0/overview.mdx index 5201b347b..459012ef9 100644 --- a/sdk/ionic-legacy/2.0/overview.mdx +++ b/sdk/ionic-legacy/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/ionic-legacy/2.0/rate-limits.mdx b/sdk/ionic-legacy/2.0/rate-limits.mdx index 66e804f6a..a2c1e244b 100644 --- a/sdk/ionic-legacy/2.0/rate-limits.mdx +++ b/sdk/ionic-legacy/2.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/resources-all-real-time-listeners.mdx b/sdk/ionic-legacy/2.0/resources-all-real-time-listeners.mdx index ca5cde833..dd1f4df48 100644 --- a/sdk/ionic-legacy/2.0/resources-all-real-time-listeners.mdx +++ b/sdk/ionic-legacy/2.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/resources-upgrading-from-v1.mdx b/sdk/ionic-legacy/2.0/resources-upgrading-from-v1.mdx index ab44e35ca..7014b272a 100644 --- a/sdk/ionic-legacy/2.0/resources-upgrading-from-v1.mdx +++ b/sdk/ionic-legacy/2.0/resources-upgrading-from-v1.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V1" +description: "Upgrading From V1 — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/resources.mdx b/sdk/ionic-legacy/2.0/resources.mdx index 144faf6af..d1505f72b 100644 --- a/sdk/ionic-legacy/2.0/resources.mdx +++ b/sdk/ionic-legacy/2.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/setup.mdx b/sdk/ionic-legacy/2.0/setup.mdx index b4b925b09..dfec57c06 100644 --- a/sdk/ionic-legacy/2.0/setup.mdx +++ b/sdk/ionic-legacy/2.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/threaded-messages.mdx b/sdk/ionic-legacy/2.0/threaded-messages.mdx index a04a6f3b4..60fbd075d 100644 --- a/sdk/ionic-legacy/2.0/threaded-messages.mdx +++ b/sdk/ionic-legacy/2.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- @@ -26,7 +27,7 @@ This can be achieved using the `setParentMessageId()` method provided by the obj -``` +```javascript let textMessage = new CometChat.TextMessage( UID, "Hello", @@ -60,7 +61,7 @@ To add a MessageListener, you can use the `addMessageListener()` method of the S -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; var activeThreadId = 100; @@ -98,7 +99,7 @@ Once you have the object of the `MessagesRequest` class, you need to call the `f -``` +```javascript let limit = 30; let parentMessageId = 1; let messagesRequest = new CometChat.MessagesRequestBuilder() diff --git a/sdk/ionic-legacy/2.0/user-presence.mdx b/sdk/ionic-legacy/2.0/user-presence.mdx index 732aef8ee..e74640f0f 100644 --- a/sdk/ionic-legacy/2.0/user-presence.mdx +++ b/sdk/ionic-legacy/2.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- @@ -30,7 +31,7 @@ You need to register the `UserListener` using the `addUserListener()` method whe -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addUserListener( @@ -60,7 +61,7 @@ We recommend you remove the listener once the activity or view is not in use. We -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeUserListener(listenerID); ``` diff --git a/sdk/ionic-legacy/2.0/users-block-users.mdx b/sdk/ionic-legacy/2.0/users-block-users.mdx index 7a1028c45..469f87914 100644 --- a/sdk/ionic-legacy/2.0/users-block-users.mdx +++ b/sdk/ionic-legacy/2.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- @@ -16,7 +17,7 @@ You can block users using the `blockUsers()` method. Once any user is blocked, a -``` +```javascript var usersList = ["UID1", "UID2", "UID3"]; CometChat.blockUsers(usersList).then( (list) => { @@ -42,7 +43,7 @@ You can unblock the already blocked users using the `unblockUsers()` method. You -``` +```javascript var usersList = ["UID1", "UID2", "UID3"]; CometChat.unblockUsers(usersList).then( diff --git a/sdk/ionic-legacy/2.0/users-retrieve-users.mdx b/sdk/ionic-legacy/2.0/users-retrieve-users.mdx index 81a2f2e12..8de1b56df 100644 --- a/sdk/ionic-legacy/2.0/users-retrieve-users.mdx +++ b/sdk/ionic-legacy/2.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- @@ -14,7 +15,7 @@ You can get the details of the logged-in user using the `getLoggedInUser()` meth -``` +```javascript var user = CometChat.getLoggedinUser().then( (user) => { console.log("user details:", { user }); @@ -43,7 +44,7 @@ This method sets the limit i.e. the number of users that should be fetched in a -``` +```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder().setLimit(limit).build(); ``` @@ -58,7 +59,7 @@ This method allows you to set the search string based on which the users are to -``` +```javascript let limit = 30; let searchKeyword = "super"; let usersRequest = new CometChat.UsersRequestBuilder() @@ -82,7 +83,7 @@ If this parameter is not set, will return all the available users. -``` +```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() .setLimit(limit) @@ -100,7 +101,7 @@ This method is used to determine if the blocked users should be returned as a pa -``` +```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() .setLimit(limit) @@ -118,7 +119,7 @@ This method allows you to fetch the users based on multiple roles. -``` +```javascript let limit = 30; let roles = ["default", "dev"]; let usersRequest = new CometChat.UsersRequestBuilder() @@ -137,7 +138,7 @@ This property when set to true will return only the friends of the logged-in use -``` +```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() .setLimit(limit) @@ -155,7 +156,7 @@ This method accepts a list of tags based on which the list of users is to be fet -``` +```javascript let limit = 30; let tags = ["tag1", "tag2"]; let usersRequest = new CometChat.UsersRequestBuilder() @@ -174,7 +175,7 @@ This property when set to true will fetch tags data along with the list of users -``` +```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() .setLimit(limit) @@ -192,7 +193,7 @@ This method accepts a list of UIDs based on which the list of users is fetched. -``` +```javascript let limit = 30; let UIDs = ["cometchat-uid-1", "cometchat-uid-2"]; let usersRequest = new CometChat.UsersRequestBuilder() @@ -211,7 +212,7 @@ Once you have the object of the UsersRequest class, you need to call the fetchNe -``` +```javascript var limit = 30; var usersRequest = new CometChat.UsersRequestBuilder().setLimit(limit).build(); @@ -235,7 +236,7 @@ To get the information of a user, you can use the `getUser()` method. -``` +```javascript let UID = "UID"; CometChat.getUser(UID).then( (user) => { diff --git a/sdk/ionic-legacy/2.0/users-user-management.mdx b/sdk/ionic-legacy/2.0/users-user-management.mdx index 2c96d413c..bccad3aa3 100644 --- a/sdk/ionic-legacy/2.0/users-user-management.mdx +++ b/sdk/ionic-legacy/2.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/users.mdx b/sdk/ionic-legacy/2.0/users.mdx index 29ba5517c..5e48869f7 100644 --- a/sdk/ionic-legacy/2.0/users.mdx +++ b/sdk/ionic-legacy/2.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/2.0/webhooks.mdx b/sdk/ionic-legacy/2.0/webhooks.mdx index 474750e38..2f9b36959 100644 --- a/sdk/ionic-legacy/2.0/webhooks.mdx +++ b/sdk/ionic-legacy/2.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/advanced-connection-listener.mdx b/sdk/ionic-legacy/3.0/advanced-connection-listener.mdx index ccd8cb3af..b600bd9bf 100644 --- a/sdk/ionic-legacy/3.0/advanced-connection-listener.mdx +++ b/sdk/ionic-legacy/3.0/advanced-connection-listener.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually.mdx b/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually.mdx index f70efa86f..b56f316b6 100644 --- a/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually.mdx +++ b/sdk/ionic-legacy/3.0/advanced-managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/advanced.mdx b/sdk/ionic-legacy/3.0/advanced.mdx index 07e7ab601..955565099 100644 --- a/sdk/ionic-legacy/3.0/advanced.mdx +++ b/sdk/ionic-legacy/3.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/authentication-login-listeners.mdx b/sdk/ionic-legacy/3.0/authentication-login-listeners.mdx index 71f9aa8da..7d404e56a 100644 --- a/sdk/ionic-legacy/3.0/authentication-login-listeners.mdx +++ b/sdk/ionic-legacy/3.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/authentication.mdx b/sdk/ionic-legacy/3.0/authentication.mdx index 253d0790c..9b38e359c 100644 --- a/sdk/ionic-legacy/3.0/authentication.mdx +++ b/sdk/ionic-legacy/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/bots.mdx b/sdk/ionic-legacy/3.0/bots.mdx index 34017b16c..5963e1d43 100644 --- a/sdk/ionic-legacy/3.0/bots.mdx +++ b/sdk/ionic-legacy/3.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/calling-default-calling.mdx b/sdk/ionic-legacy/3.0/calling-default-calling.mdx index 62526a8bf..ea8e4a843 100644 --- a/sdk/ionic-legacy/3.0/calling-default-calling.mdx +++ b/sdk/ionic-legacy/3.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- @@ -29,7 +30,7 @@ The `initiateCall()` method sends a call request to a user or a group. -``` +```javascript var receiverID = "UID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.USER; @@ -50,7 +51,7 @@ CometChat.initiateCall(call).then( -``` +```javascript var receiverID = "GUID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -71,7 +72,7 @@ CometChat.initiateCall(call).then( -``` +```javascript var receiverID: string = "UID"; var callType: string = CometChat.CALL_TYPE.VIDEO; var receiverType: string = CometChat.RECEIVER_TYPE.USER; @@ -90,7 +91,7 @@ CometChat.initiateCall(call).then( -``` +```javascript var receiverID: string = "GUID"; var callType: string = CometChat.CALL_TYPE.VIDEO; var receiverType: string = CometChat.RECEIVER_TYPE.GROUP; diff --git a/sdk/ionic-legacy/3.0/calling-direct-calling.mdx b/sdk/ionic-legacy/3.0/calling-direct-calling.mdx index b0b4358e0..e298ad594 100644 --- a/sdk/ionic-legacy/3.0/calling-direct-calling.mdx +++ b/sdk/ionic-legacy/3.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/calling-recording.mdx b/sdk/ionic-legacy/3.0/calling-recording.mdx index 224ef92d3..7fcd62279 100644 --- a/sdk/ionic-legacy/3.0/calling-recording.mdx +++ b/sdk/ionic-legacy/3.0/calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/calling-v3.mdx b/sdk/ionic-legacy/3.0/calling-v3.mdx index a87d0f3b3..1cbf77697 100644 --- a/sdk/ionic-legacy/3.0/calling-v3.mdx +++ b/sdk/ionic-legacy/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/calling.mdx b/sdk/ionic-legacy/3.0/calling.mdx index 796294c57..a8018f48b 100644 --- a/sdk/ionic-legacy/3.0/calling.mdx +++ b/sdk/ionic-legacy/3.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-add-members-to-group.mdx b/sdk/ionic-legacy/3.0/groups-add-members-to-group.mdx index 3fabab835..9674bfa53 100644 --- a/sdk/ionic-legacy/3.0/groups-add-members-to-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-change-member-scope.mdx b/sdk/ionic-legacy/3.0/groups-change-member-scope.mdx index 22d2d0e49..73f8dae19 100644 --- a/sdk/ionic-legacy/3.0/groups-change-member-scope.mdx +++ b/sdk/ionic-legacy/3.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-create-group.mdx b/sdk/ionic-legacy/3.0/groups-create-group.mdx index 164f80719..80b4a4beb 100644 --- a/sdk/ionic-legacy/3.0/groups-create-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-delete-group.mdx b/sdk/ionic-legacy/3.0/groups-delete-group.mdx index 32a907bed..457bfedd1 100644 --- a/sdk/ionic-legacy/3.0/groups-delete-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-join-group.mdx b/sdk/ionic-legacy/3.0/groups-join-group.mdx index fdd6efff1..3fb585434 100644 --- a/sdk/ionic-legacy/3.0/groups-join-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-kick-ban-members.mdx b/sdk/ionic-legacy/3.0/groups-kick-ban-members.mdx index 80c07ddc9..7ddc400ba 100644 --- a/sdk/ionic-legacy/3.0/groups-kick-ban-members.mdx +++ b/sdk/ionic-legacy/3.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-leave-group.mdx b/sdk/ionic-legacy/3.0/groups-leave-group.mdx index eb5c975eb..b37688a5a 100644 --- a/sdk/ionic-legacy/3.0/groups-leave-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-retrieve-group-members.mdx b/sdk/ionic-legacy/3.0/groups-retrieve-group-members.mdx index c737fa21b..b62965fbe 100644 --- a/sdk/ionic-legacy/3.0/groups-retrieve-group-members.mdx +++ b/sdk/ionic-legacy/3.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-retrieve-groups.mdx b/sdk/ionic-legacy/3.0/groups-retrieve-groups.mdx index 7475c3cd3..884c33e17 100644 --- a/sdk/ionic-legacy/3.0/groups-retrieve-groups.mdx +++ b/sdk/ionic-legacy/3.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-transfer-group-ownership.mdx b/sdk/ionic-legacy/3.0/groups-transfer-group-ownership.mdx index 5cc8c9def..fbcaab32c 100644 --- a/sdk/ionic-legacy/3.0/groups-transfer-group-ownership.mdx +++ b/sdk/ionic-legacy/3.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups-update-group.mdx b/sdk/ionic-legacy/3.0/groups-update-group.mdx index 9e09aca27..99d539693 100644 --- a/sdk/ionic-legacy/3.0/groups-update-group.mdx +++ b/sdk/ionic-legacy/3.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/groups.mdx b/sdk/ionic-legacy/3.0/groups.mdx index 8a5496978..b89fc06aa 100644 --- a/sdk/ionic-legacy/3.0/groups.mdx +++ b/sdk/ionic-legacy/3.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/key-concepts.mdx b/sdk/ionic-legacy/3.0/key-concepts.mdx index f4d5cbde3..3e8cfe232 100644 --- a/sdk/ionic-legacy/3.0/key-concepts.mdx +++ b/sdk/ionic-legacy/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/message-structure-and-hierarchy.mdx b/sdk/ionic-legacy/3.0/message-structure-and-hierarchy.mdx index 6c0a7034d..a0ea24447 100644 --- a/sdk/ionic-legacy/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/ionic-legacy/3.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-additional-message-filtering.mdx b/sdk/ionic-legacy/3.0/messaging-additional-message-filtering.mdx index c5193de8c..1a43b79f2 100644 --- a/sdk/ionic-legacy/3.0/messaging-additional-message-filtering.mdx +++ b/sdk/ionic-legacy/3.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx b/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx index 58c5fc269..f3ad5406f 100644 --- a/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx +++ b/sdk/ionic-legacy/3.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-delete-message.mdx b/sdk/ionic-legacy/3.0/messaging-delete-message.mdx index e915a8883..c2e5d0a0a 100644 --- a/sdk/ionic-legacy/3.0/messaging-delete-message.mdx +++ b/sdk/ionic-legacy/3.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-edit-message.mdx b/sdk/ionic-legacy/3.0/messaging-edit-message.mdx index 907a59a79..5a5ef9fb8 100644 --- a/sdk/ionic-legacy/3.0/messaging-edit-message.mdx +++ b/sdk/ionic-legacy/3.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- @@ -25,7 +26,7 @@ While editing a message, you can update the tags associated with the Message. Yo -``` +```javascript let tags = ["pinnedMessage"]; textMessage.setTags(tags); @@ -34,7 +35,7 @@ textMessage.setTags(tags); -``` +```javascript let tags = ["pinnedMessage"]; customMessage.setTags(tags); @@ -43,7 +44,7 @@ customMessage.setTags(tags); -``` +```javascript let tags: Array = ["pinnedMessage"]; textMessage.setTags(tags); @@ -52,7 +53,7 @@ textMessage.setTags(tags); -``` +```javascript let tags: Array = ["pinnedMessage"]; customMessage.setTags(tags); diff --git a/sdk/ionic-legacy/3.0/messaging-receipts.mdx b/sdk/ionic-legacy/3.0/messaging-receipts.mdx index 600125290..630d39653 100644 --- a/sdk/ionic-legacy/3.0/messaging-receipts.mdx +++ b/sdk/ionic-legacy/3.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-receive-messages.mdx b/sdk/ionic-legacy/3.0/messaging-receive-messages.mdx index ace720134..8ea413f3c 100644 --- a/sdk/ionic-legacy/3.0/messaging-receive-messages.mdx +++ b/sdk/ionic-legacy/3.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-retrieve-conversations.mdx b/sdk/ionic-legacy/3.0/messaging-retrieve-conversations.mdx index d28a9dee9..adf73315a 100644 --- a/sdk/ionic-legacy/3.0/messaging-retrieve-conversations.mdx +++ b/sdk/ionic-legacy/3.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-send-message.mdx b/sdk/ionic-legacy/3.0/messaging-send-message.mdx index 6b248c669..cbe494eb0 100644 --- a/sdk/ionic-legacy/3.0/messaging-send-message.mdx +++ b/sdk/ionic-legacy/3.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging-typing-indicators.mdx b/sdk/ionic-legacy/3.0/messaging-typing-indicators.mdx index 16480114e..24a96aa37 100644 --- a/sdk/ionic-legacy/3.0/messaging-typing-indicators.mdx +++ b/sdk/ionic-legacy/3.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/messaging.mdx b/sdk/ionic-legacy/3.0/messaging.mdx index 93d23f05f..20c4ad127 100644 --- a/sdk/ionic-legacy/3.0/messaging.mdx +++ b/sdk/ionic-legacy/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/overview.mdx b/sdk/ionic-legacy/3.0/overview.mdx index f203d4838..2b1566f93 100644 --- a/sdk/ionic-legacy/3.0/overview.mdx +++ b/sdk/ionic-legacy/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- @@ -129,7 +130,7 @@ Please update the minimum target version in the Podfile. Goto **./ios/App** fold -``` +```javascript // For @cometchat-pro/ionic-calls version below 2.3.0 platform :ios, '11.0' diff --git a/sdk/ionic-legacy/3.0/rate-limits.mdx b/sdk/ionic-legacy/3.0/rate-limits.mdx index 2b8a91edb..1e7b626a1 100644 --- a/sdk/ionic-legacy/3.0/rate-limits.mdx +++ b/sdk/ionic-legacy/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/resources-all-real-time-listeners.mdx b/sdk/ionic-legacy/3.0/resources-all-real-time-listeners.mdx index a49b6cb24..a4af390aa 100644 --- a/sdk/ionic-legacy/3.0/resources-all-real-time-listeners.mdx +++ b/sdk/ionic-legacy/3.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/resources-upgrading-from-v2.mdx b/sdk/ionic-legacy/3.0/resources-upgrading-from-v2.mdx index b8d1dc5eb..1c0f05544 100644 --- a/sdk/ionic-legacy/3.0/resources-upgrading-from-v2.mdx +++ b/sdk/ionic-legacy/3.0/resources-upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/resources.mdx b/sdk/ionic-legacy/3.0/resources.mdx index 9e266702a..cdb39d28a 100644 --- a/sdk/ionic-legacy/3.0/resources.mdx +++ b/sdk/ionic-legacy/3.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/setup.mdx b/sdk/ionic-legacy/3.0/setup.mdx index 749785a73..196f2bec3 100644 --- a/sdk/ionic-legacy/3.0/setup.mdx +++ b/sdk/ionic-legacy/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- @@ -28,7 +29,7 @@ Install the package as NPM module: -``` +```bash npm install @cometchat-pro/cordova-ionic-chat@3.0.12 ``` @@ -127,7 +128,7 @@ Please update the minimum target version in the Podfile. Goto **./ios/App** fold -``` +```javascript // For @cometchat-pro/ionic-calls version below 2.3.0 platform :ios, '11.0' diff --git a/sdk/ionic-legacy/3.0/threaded-messages.mdx b/sdk/ionic-legacy/3.0/threaded-messages.mdx index 003e595d4..f0f7b9557 100644 --- a/sdk/ionic-legacy/3.0/threaded-messages.mdx +++ b/sdk/ionic-legacy/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/transient-messages.mdx b/sdk/ionic-legacy/3.0/transient-messages.mdx index 0957aa42e..e89e2d49b 100644 --- a/sdk/ionic-legacy/3.0/transient-messages.mdx +++ b/sdk/ionic-legacy/3.0/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/user-presence.mdx b/sdk/ionic-legacy/3.0/user-presence.mdx index 63f41e224..f6ac0863f 100644 --- a/sdk/ionic-legacy/3.0/user-presence.mdx +++ b/sdk/ionic-legacy/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/users-block-users.mdx b/sdk/ionic-legacy/3.0/users-block-users.mdx index 928783103..ea400af7a 100644 --- a/sdk/ionic-legacy/3.0/users-block-users.mdx +++ b/sdk/ionic-legacy/3.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/users-retrieve-users.mdx b/sdk/ionic-legacy/3.0/users-retrieve-users.mdx index fee905d82..4c796ad12 100644 --- a/sdk/ionic-legacy/3.0/users-retrieve-users.mdx +++ b/sdk/ionic-legacy/3.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/users-user-management.mdx b/sdk/ionic-legacy/3.0/users-user-management.mdx index 7456b2531..476ecbd3b 100644 --- a/sdk/ionic-legacy/3.0/users-user-management.mdx +++ b/sdk/ionic-legacy/3.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/users.mdx b/sdk/ionic-legacy/3.0/users.mdx index eca83955b..d51304a18 100644 --- a/sdk/ionic-legacy/3.0/users.mdx +++ b/sdk/ionic-legacy/3.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/v3-calling-recording.mdx b/sdk/ionic-legacy/3.0/v3-calling-recording.mdx index 224ef92d3..7fcd62279 100644 --- a/sdk/ionic-legacy/3.0/v3-calling-recording.mdx +++ b/sdk/ionic-legacy/3.0/v3-calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/v3-setup.mdx b/sdk/ionic-legacy/3.0/v3-setup.mdx index 7c00d62f7..9fafc9001 100644 --- a/sdk/ionic-legacy/3.0/v3-setup.mdx +++ b/sdk/ionic-legacy/3.0/v3-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- @@ -21,7 +22,7 @@ Install the package as NPM module: -``` +```bash npm install @cometchat-pro/ionic-calls@latest --save ``` diff --git a/sdk/ionic-legacy/3.0/v3-start-call-session.mdx b/sdk/ionic-legacy/3.0/v3-start-call-session.mdx index e81d52542..7a3d2337b 100644 --- a/sdk/ionic-legacy/3.0/v3-start-call-session.mdx +++ b/sdk/ionic-legacy/3.0/v3-start-call-session.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/v3-video-view-customisation.mdx b/sdk/ionic-legacy/3.0/v3-video-view-customisation.mdx index 76880e195..871d773ec 100644 --- a/sdk/ionic-legacy/3.0/v3-video-view-customisation.mdx +++ b/sdk/ionic-legacy/3.0/v3-video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/video-view-customisation.mdx b/sdk/ionic-legacy/3.0/video-view-customisation.mdx index 414e4b4dc..1f7ff507a 100644 --- a/sdk/ionic-legacy/3.0/video-view-customisation.mdx +++ b/sdk/ionic-legacy/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ionic-legacy/3.0/webhooks.mdx b/sdk/ionic-legacy/3.0/webhooks.mdx index 5903df759..08f804157 100644 --- a/sdk/ionic-legacy/3.0/webhooks.mdx +++ b/sdk/ionic-legacy/3.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/ionic-legacy/additional-message-filtering.mdx b/sdk/ionic-legacy/additional-message-filtering.mdx index 343228c3b..f5701c062 100644 --- a/sdk/ionic-legacy/additional-message-filtering.mdx +++ b/sdk/ionic-legacy/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/ionic-legacy/advanced.mdx b/sdk/ionic-legacy/advanced.mdx index 9b295951e..c38f715ff 100644 --- a/sdk/ionic-legacy/advanced.mdx +++ b/sdk/ionic-legacy/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ionic-legacy/ai-chatbots-overview.mdx b/sdk/ionic-legacy/ai-chatbots-overview.mdx index a5e168a8e..1280e5391 100644 --- a/sdk/ionic-legacy/ai-chatbots-overview.mdx +++ b/sdk/ionic-legacy/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "Bots" url: "/ai-chatbots/overview" +description: "Navigate to Bots documentation." --- \ No newline at end of file diff --git a/sdk/ionic-legacy/ai-user-copilot-overview.mdx b/sdk/ionic-legacy/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/ionic-legacy/ai-user-copilot-overview.mdx +++ b/sdk/ionic-legacy/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/ionic-legacy/authentication.mdx b/sdk/ionic-legacy/authentication.mdx index 285e8be2f..78ccecd3b 100644 --- a/sdk/ionic-legacy/authentication.mdx +++ b/sdk/ionic-legacy/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/ionic-legacy/block-users.mdx b/sdk/ionic-legacy/block-users.mdx index 20434218b..d2fa1a117 100644 --- a/sdk/ionic-legacy/block-users.mdx +++ b/sdk/ionic-legacy/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/calling-overview.mdx b/sdk/ionic-legacy/calling-overview.mdx index e8a6060c6..988f0c5ff 100644 --- a/sdk/ionic-legacy/calling-overview.mdx +++ b/sdk/ionic-legacy/calling-overview.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Overview of Calling in CometChat." --- diff --git a/sdk/ionic-legacy/calling-setup.mdx b/sdk/ionic-legacy/calling-setup.mdx index b6a9d1b76..4b91ac6b4 100644 --- a/sdk/ionic-legacy/calling-setup.mdx +++ b/sdk/ionic-legacy/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ionic-legacy/changelog.mdx b/sdk/ionic-legacy/changelog.mdx index b83ae03ae..632bb1604 100644 --- a/sdk/ionic-legacy/changelog.mdx +++ b/sdk/ionic-legacy/changelog.mdx @@ -1,6 +1,7 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-ionic/releases" +description: "Navigate to Changelog documentation." --- diff --git a/sdk/ionic-legacy/connection-behaviour.mdx b/sdk/ionic-legacy/connection-behaviour.mdx index dabb5c56b..c38284770 100644 --- a/sdk/ionic-legacy/connection-behaviour.mdx +++ b/sdk/ionic-legacy/connection-behaviour.mdx @@ -1,5 +1,6 @@ --- title: "Connection Behaviour" +description: "Connection Behaviour — CometChat documentation." --- diff --git a/sdk/ionic-legacy/connection-status.mdx b/sdk/ionic-legacy/connection-status.mdx index e71fc42bf..3c80b8cf8 100644 --- a/sdk/ionic-legacy/connection-status.mdx +++ b/sdk/ionic-legacy/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ionic-legacy/create-group.mdx b/sdk/ionic-legacy/create-group.mdx index f26eed9f9..02ddbe9fc 100644 --- a/sdk/ionic-legacy/create-group.mdx +++ b/sdk/ionic-legacy/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/default-call.mdx b/sdk/ionic-legacy/default-call.mdx index 7878d8333..13476783d 100644 --- a/sdk/ionic-legacy/default-call.mdx +++ b/sdk/ionic-legacy/default-call.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/delete-conversation.mdx b/sdk/ionic-legacy/delete-conversation.mdx index 7eda13273..926cc8807 100644 --- a/sdk/ionic-legacy/delete-conversation.mdx +++ b/sdk/ionic-legacy/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/ionic-legacy/delete-group.mdx b/sdk/ionic-legacy/delete-group.mdx index 454555dcc..fbddda52b 100644 --- a/sdk/ionic-legacy/delete-group.mdx +++ b/sdk/ionic-legacy/delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/delete-message.mdx b/sdk/ionic-legacy/delete-message.mdx index 243d92bc1..8692a7a9a 100644 --- a/sdk/ionic-legacy/delete-message.mdx +++ b/sdk/ionic-legacy/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/delivery-read-receipts.mdx b/sdk/ionic-legacy/delivery-read-receipts.mdx index 86f903951..4e1c7fd1e 100644 --- a/sdk/ionic-legacy/delivery-read-receipts.mdx +++ b/sdk/ionic-legacy/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/ionic-legacy/direct-call.mdx b/sdk/ionic-legacy/direct-call.mdx index 89413df55..e5bf7a987 100644 --- a/sdk/ionic-legacy/direct-call.mdx +++ b/sdk/ionic-legacy/direct-call.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ionic-legacy/edit-message.mdx b/sdk/ionic-legacy/edit-message.mdx index 79f1b3ad2..00b62a92c 100644 --- a/sdk/ionic-legacy/edit-message.mdx +++ b/sdk/ionic-legacy/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/extensions-overview.mdx b/sdk/ionic-legacy/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/ionic-legacy/extensions-overview.mdx +++ b/sdk/ionic-legacy/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/ionic-legacy/group-add-members.mdx b/sdk/ionic-legacy/group-add-members.mdx index d0599433b..892ef285c 100644 --- a/sdk/ionic-legacy/group-add-members.mdx +++ b/sdk/ionic-legacy/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/group-change-member-scope.mdx b/sdk/ionic-legacy/group-change-member-scope.mdx index c20ac1bb5..e5c48cde3 100644 --- a/sdk/ionic-legacy/group-change-member-scope.mdx +++ b/sdk/ionic-legacy/group-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/ionic-legacy/group-kick-member.mdx b/sdk/ionic-legacy/group-kick-member.mdx index 8cf0675f0..8a881d7d1 100644 --- a/sdk/ionic-legacy/group-kick-member.mdx +++ b/sdk/ionic-legacy/group-kick-member.mdx @@ -1,5 +1,6 @@ --- title: "Kick Member From A Group" +description: "Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/groups-overview.mdx b/sdk/ionic-legacy/groups-overview.mdx index 0140fd729..541481e2f 100644 --- a/sdk/ionic-legacy/groups-overview.mdx +++ b/sdk/ionic-legacy/groups-overview.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of Groups in CometChat." --- diff --git a/sdk/ionic-legacy/interactive-messages.mdx b/sdk/ionic-legacy/interactive-messages.mdx index f749f4ad8..777db415d 100644 --- a/sdk/ionic-legacy/interactive-messages.mdx +++ b/sdk/ionic-legacy/interactive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Interactive Messages" +description: "Interactive Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/join-group.mdx b/sdk/ionic-legacy/join-group.mdx index 1b7419999..b3e25606e 100644 --- a/sdk/ionic-legacy/join-group.mdx +++ b/sdk/ionic-legacy/join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/key-concepts.mdx b/sdk/ionic-legacy/key-concepts.mdx index e145ca826..a06dc269f 100644 --- a/sdk/ionic-legacy/key-concepts.mdx +++ b/sdk/ionic-legacy/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ionic-legacy/leave-group.mdx b/sdk/ionic-legacy/leave-group.mdx index 4c88a09ed..7fd648818 100644 --- a/sdk/ionic-legacy/leave-group.mdx +++ b/sdk/ionic-legacy/leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/login-listeners.mdx b/sdk/ionic-legacy/login-listeners.mdx index 256c10979..335fba187 100644 --- a/sdk/ionic-legacy/login-listeners.mdx +++ b/sdk/ionic-legacy/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/ionic-legacy/managing-connections-manually.mdx b/sdk/ionic-legacy/managing-connections-manually.mdx index 7b28c12bb..56ebca8d3 100644 --- a/sdk/ionic-legacy/managing-connections-manually.mdx +++ b/sdk/ionic-legacy/managing-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Connections Manually" +description: "Managing Connections Manually — CometChat documentation." --- diff --git a/sdk/ionic-legacy/mentions.mdx b/sdk/ionic-legacy/mentions.mdx index 2679397c7..25545e495 100644 --- a/sdk/ionic-legacy/mentions.mdx +++ b/sdk/ionic-legacy/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions" +description: "Mentions — CometChat documentation." --- diff --git a/sdk/ionic-legacy/message-structure-and-hierarchy.mdx b/sdk/ionic-legacy/message-structure-and-hierarchy.mdx index 84d9be4b1..1b4c17252 100644 --- a/sdk/ionic-legacy/message-structure-and-hierarchy.mdx +++ b/sdk/ionic-legacy/message-structure-and-hierarchy.mdx @@ -1,6 +1,7 @@ --- title: "Message" sidebarTitle: "Message Structure And Hierarchy" +description: "Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/messaging-overview.mdx b/sdk/ionic-legacy/messaging-overview.mdx index 89632fcac..b2b39fdcd 100644 --- a/sdk/ionic-legacy/messaging-overview.mdx +++ b/sdk/ionic-legacy/messaging-overview.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of Messaging in CometChat." --- diff --git a/sdk/ionic-legacy/overview.mdx b/sdk/ionic-legacy/overview.mdx index 47d53a484..293946635 100644 --- a/sdk/ionic-legacy/overview.mdx +++ b/sdk/ionic-legacy/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/ionic-legacy/presenter-mode.mdx b/sdk/ionic-legacy/presenter-mode.mdx index 614ac366e..bf2fa6830 100644 --- a/sdk/ionic-legacy/presenter-mode.mdx +++ b/sdk/ionic-legacy/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/ionic-legacy/rate-limits.mdx b/sdk/ionic-legacy/rate-limits.mdx index 2db6d57c0..378974643 100644 --- a/sdk/ionic-legacy/rate-limits.mdx +++ b/sdk/ionic-legacy/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ionic-legacy/reactions.mdx b/sdk/ionic-legacy/reactions.mdx index 68d05616f..0d12bf935 100644 --- a/sdk/ionic-legacy/reactions.mdx +++ b/sdk/ionic-legacy/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- diff --git a/sdk/ionic-legacy/real-time-listeners.mdx b/sdk/ionic-legacy/real-time-listeners.mdx index e53ced7e7..fcf22a6e0 100644 --- a/sdk/ionic-legacy/real-time-listeners.mdx +++ b/sdk/ionic-legacy/real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/ionic-legacy/receive-messages.mdx b/sdk/ionic-legacy/receive-messages.mdx index 2e655e99c..29cb969ea 100644 --- a/sdk/ionic-legacy/receive-messages.mdx +++ b/sdk/ionic-legacy/receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/recording.mdx b/sdk/ionic-legacy/recording.mdx index 6d40e9a9a..74c3944da 100644 --- a/sdk/ionic-legacy/recording.mdx +++ b/sdk/ionic-legacy/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording(Beta)" +description: "Recording(Beta) — CometChat documentation." --- diff --git a/sdk/ionic-legacy/resources-overview.mdx b/sdk/ionic-legacy/resources-overview.mdx index fd54f25b9..bed5ad6e8 100644 --- a/sdk/ionic-legacy/resources-overview.mdx +++ b/sdk/ionic-legacy/resources-overview.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Overview of Resources in CometChat." --- diff --git a/sdk/ionic-legacy/retrieve-conversations.mdx b/sdk/ionic-legacy/retrieve-conversations.mdx index 069cb1063..745ef515d 100644 --- a/sdk/ionic-legacy/retrieve-conversations.mdx +++ b/sdk/ionic-legacy/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ionic-legacy/retrieve-group-members.mdx b/sdk/ionic-legacy/retrieve-group-members.mdx index 2124a941f..164dff618 100644 --- a/sdk/ionic-legacy/retrieve-group-members.mdx +++ b/sdk/ionic-legacy/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/ionic-legacy/retrieve-groups.mdx b/sdk/ionic-legacy/retrieve-groups.mdx index 51e183f5a..c4cdc7239 100644 --- a/sdk/ionic-legacy/retrieve-groups.mdx +++ b/sdk/ionic-legacy/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/ionic-legacy/retrieve-users.mdx b/sdk/ionic-legacy/retrieve-users.mdx index bae70e0ca..d16c719fc 100644 --- a/sdk/ionic-legacy/retrieve-users.mdx +++ b/sdk/ionic-legacy/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/ionic-legacy/send-message.mdx b/sdk/ionic-legacy/send-message.mdx index b11cd0582..b1a660781 100644 --- a/sdk/ionic-legacy/send-message.mdx +++ b/sdk/ionic-legacy/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/ionic-legacy/setup.mdx b/sdk/ionic-legacy/setup.mdx index 754b88623..e7cda5d3b 100644 --- a/sdk/ionic-legacy/setup.mdx +++ b/sdk/ionic-legacy/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ionic-legacy/threaded-messages.mdx b/sdk/ionic-legacy/threaded-messages.mdx index db986c623..b72b0aca6 100644 --- a/sdk/ionic-legacy/threaded-messages.mdx +++ b/sdk/ionic-legacy/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/transfer-group-ownership.mdx b/sdk/ionic-legacy/transfer-group-ownership.mdx index e1211e3e2..adfd1773b 100644 --- a/sdk/ionic-legacy/transfer-group-ownership.mdx +++ b/sdk/ionic-legacy/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ionic-legacy/transient-messages.mdx b/sdk/ionic-legacy/transient-messages.mdx index 1fb922060..5d17c9705 100644 --- a/sdk/ionic-legacy/transient-messages.mdx +++ b/sdk/ionic-legacy/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/ionic-legacy/typing-indicators.mdx b/sdk/ionic-legacy/typing-indicators.mdx index 0fc63e6a9..97bc0d49d 100644 --- a/sdk/ionic-legacy/typing-indicators.mdx +++ b/sdk/ionic-legacy/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/ionic-legacy/update-group.mdx b/sdk/ionic-legacy/update-group.mdx index fdeabb595..0b430159f 100644 --- a/sdk/ionic-legacy/update-group.mdx +++ b/sdk/ionic-legacy/update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/ionic-legacy/upgrading-from-v3-guide.mdx b/sdk/ionic-legacy/upgrading-from-v3-guide.mdx index 2fcea9300..57cae06d2 100644 --- a/sdk/ionic-legacy/upgrading-from-v3-guide.mdx +++ b/sdk/ionic-legacy/upgrading-from-v3-guide.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V3" +description: "Upgrading From V3 — CometChat integration guide." --- diff --git a/sdk/ionic-legacy/user-management.mdx b/sdk/ionic-legacy/user-management.mdx index 7c6d1d390..173fc3a12 100644 --- a/sdk/ionic-legacy/user-management.mdx +++ b/sdk/ionic-legacy/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ionic-legacy/user-presence.mdx b/sdk/ionic-legacy/user-presence.mdx index 399779170..6b8fc53c6 100644 --- a/sdk/ionic-legacy/user-presence.mdx +++ b/sdk/ionic-legacy/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- @@ -28,7 +29,7 @@ You need to register the `UserListener` using the `addUserListener()` method whe -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addUserListener( @@ -77,7 +78,7 @@ We recommend you remove the listener once the activity or view is not in use. We -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeUserListener(listenerID); ``` diff --git a/sdk/ionic-legacy/users-overview.mdx b/sdk/ionic-legacy/users-overview.mdx index 46e0d1027..5a1c9591a 100644 --- a/sdk/ionic-legacy/users-overview.mdx +++ b/sdk/ionic-legacy/users-overview.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of Users in CometChat." --- diff --git a/sdk/ionic-legacy/video-view-customisation.mdx b/sdk/ionic-legacy/video-view-customisation.mdx index b10103853..38793d348 100644 --- a/sdk/ionic-legacy/video-view-customisation.mdx +++ b/sdk/ionic-legacy/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ionic-legacy/webhooks-overview.mdx b/sdk/ionic-legacy/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/ionic-legacy/webhooks-overview.mdx +++ b/sdk/ionic-legacy/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/sdk/ios/2.0/add-members-to-a-group.mdx b/sdk/ios/2.0/add-members-to-a-group.mdx index b361d0503..e094a38af 100644 --- a/sdk/ios/2.0/add-members-to-a-group.mdx +++ b/sdk/ios/2.0/add-members-to-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/additional-message-filtering.mdx b/sdk/ios/2.0/additional-message-filtering.mdx index e0cf2d421..078def3be 100644 --- a/sdk/ios/2.0/additional-message-filtering.mdx +++ b/sdk/ios/2.0/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/ios/2.0/advanced.mdx b/sdk/ios/2.0/advanced.mdx index dcaf1d9fd..9fd37d4ab 100644 --- a/sdk/ios/2.0/advanced.mdx +++ b/sdk/ios/2.0/advanced.mdx @@ -1,5 +1,6 @@ --- title: "Advanced" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ios/2.0/all-real-time-delegates-listeners.mdx b/sdk/ios/2.0/all-real-time-delegates-listeners.mdx index f64e762f5..c6fee6260 100644 --- a/sdk/ios/2.0/all-real-time-delegates-listeners.mdx +++ b/sdk/ios/2.0/all-real-time-delegates-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Delegates (Listeners)" +description: "All Real Time Delegates (Listeners) — CometChat documentation." --- diff --git a/sdk/ios/2.0/authentication.mdx b/sdk/ios/2.0/authentication.mdx index 60bd91b53..1589bb388 100644 --- a/sdk/ios/2.0/authentication.mdx +++ b/sdk/ios/2.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/ios/2.0/block-users.mdx b/sdk/ios/2.0/block-users.mdx index 51af0f556..ca38f36b1 100644 --- a/sdk/ios/2.0/block-users.mdx +++ b/sdk/ios/2.0/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/ios/2.0/bots.mdx b/sdk/ios/2.0/bots.mdx index ecb8b128e..7469d8cc7 100644 --- a/sdk/ios/2.0/bots.mdx +++ b/sdk/ios/2.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/ios/2.0/calling.mdx b/sdk/ios/2.0/calling.mdx index 278e2f46f..d560d7144 100644 --- a/sdk/ios/2.0/calling.mdx +++ b/sdk/ios/2.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/ios/2.0/change-member-scope.mdx b/sdk/ios/2.0/change-member-scope.mdx index 29103c53e..c8f2920c8 100644 --- a/sdk/ios/2.0/change-member-scope.mdx +++ b/sdk/ios/2.0/change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/ios/2.0/connection-status.mdx b/sdk/ios/2.0/connection-status.mdx index a3a0b5895..bb18d3f3e 100644 --- a/sdk/ios/2.0/connection-status.mdx +++ b/sdk/ios/2.0/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ios/2.0/create-a-group.mdx b/sdk/ios/2.0/create-a-group.mdx index 5eeb464ad..cf0f44b36 100644 --- a/sdk/ios/2.0/create-a-group.mdx +++ b/sdk/ios/2.0/create-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/default-calling1.mdx b/sdk/ios/2.0/default-calling1.mdx index 9984555f2..addd17abc 100644 --- a/sdk/ios/2.0/default-calling1.mdx +++ b/sdk/ios/2.0/default-calling1.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/ios/2.0/delete-a-conversation.mdx b/sdk/ios/2.0/delete-a-conversation.mdx index 8ff28e001..1f49d4f23 100644 --- a/sdk/ios/2.0/delete-a-conversation.mdx +++ b/sdk/ios/2.0/delete-a-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/ios/2.0/delete-a-group.mdx b/sdk/ios/2.0/delete-a-group.mdx index 90a898c5b..e5af6788e 100644 --- a/sdk/ios/2.0/delete-a-group.mdx +++ b/sdk/ios/2.0/delete-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/delete-a-message.mdx b/sdk/ios/2.0/delete-a-message.mdx index 94be39c9c..89decfb12 100644 --- a/sdk/ios/2.0/delete-a-message.mdx +++ b/sdk/ios/2.0/delete-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ios/2.0/delivery-read-receipts.mdx b/sdk/ios/2.0/delivery-read-receipts.mdx index 0ffce7e18..b1fd24230 100644 --- a/sdk/ios/2.0/delivery-read-receipts.mdx +++ b/sdk/ios/2.0/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/ios/2.0/direct-calling1.mdx b/sdk/ios/2.0/direct-calling1.mdx index 895fd2304..2ac726d2c 100644 --- a/sdk/ios/2.0/direct-calling1.mdx +++ b/sdk/ios/2.0/direct-calling1.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ios/2.0/edit-a-message.mdx b/sdk/ios/2.0/edit-a-message.mdx index 57e0b2829..9331d754b 100644 --- a/sdk/ios/2.0/edit-a-message.mdx +++ b/sdk/ios/2.0/edit-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/ios/2.0/extensions.mdx b/sdk/ios/2.0/extensions.mdx index 075e1ea73..67abda32a 100644 --- a/sdk/ios/2.0/extensions.mdx +++ b/sdk/ios/2.0/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- diff --git a/sdk/ios/2.0/groups.mdx b/sdk/ios/2.0/groups.mdx index 99e877026..be06c2c42 100644 --- a/sdk/ios/2.0/groups.mdx +++ b/sdk/ios/2.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/ios/2.0/increment-app-icon-badge-count.mdx b/sdk/ios/2.0/increment-app-icon-badge-count.mdx index b0f074392..7808e5b52 100644 --- a/sdk/ios/2.0/increment-app-icon-badge-count.mdx +++ b/sdk/ios/2.0/increment-app-icon-badge-count.mdx @@ -1,5 +1,6 @@ --- title: "Increment App Icon Badge Count" +description: "Increment App Icon Badge Count — CometChat documentation." --- diff --git a/sdk/ios/2.0/join-a-group.mdx b/sdk/ios/2.0/join-a-group.mdx index 967198bb2..a28f1138e 100644 --- a/sdk/ios/2.0/join-a-group.mdx +++ b/sdk/ios/2.0/join-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/key-concepts.mdx b/sdk/ios/2.0/key-concepts.mdx index 88962a9ef..e4c76fdb5 100644 --- a/sdk/ios/2.0/key-concepts.mdx +++ b/sdk/ios/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ios/2.0/kick-member-from-a-group.mdx b/sdk/ios/2.0/kick-member-from-a-group.mdx index e40fcf244..a54ecaa5d 100644 --- a/sdk/ios/2.0/kick-member-from-a-group.mdx +++ b/sdk/ios/2.0/kick-member-from-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Members From A Group" +description: "Ban/Kick Members From A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification.mdx b/sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification.mdx index 6f1b9cc76..651428d3a 100644 --- a/sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification.mdx +++ b/sdk/ios/2.0/launch-call-screen-on-tap-of-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Call Screen On Tap Of Push Notification" +description: "Launch Call Screen On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/2.0/launch-chat-window-push-notification.mdx b/sdk/ios/2.0/launch-chat-window-push-notification.mdx index 5c6402fbf..56d77e524 100644 --- a/sdk/ios/2.0/launch-chat-window-push-notification.mdx +++ b/sdk/ios/2.0/launch-chat-window-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Chat Window On Tap Of Push Notification" +description: "Launch Chat Window On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/2.0/leave-a-group.mdx b/sdk/ios/2.0/leave-a-group.mdx index 758e27194..f09460217 100644 --- a/sdk/ios/2.0/leave-a-group.mdx +++ b/sdk/ios/2.0/leave-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/login-listeners.mdx b/sdk/ios/2.0/login-listeners.mdx index 2041e436e..8884286c3 100644 --- a/sdk/ios/2.0/login-listeners.mdx +++ b/sdk/ios/2.0/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/ios/2.0/message-structure-and-hierarchy.mdx b/sdk/ios/2.0/message-structure-and-hierarchy.mdx index 988fda05d..4dd282660 100644 --- a/sdk/ios/2.0/message-structure-and-hierarchy.mdx +++ b/sdk/ios/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/ios/2.0/messaging.mdx b/sdk/ios/2.0/messaging.mdx index 56d6e57cb..b56cb1fcd 100644 --- a/sdk/ios/2.0/messaging.mdx +++ b/sdk/ios/2.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/ios/2.0/overview.mdx b/sdk/ios/2.0/overview.mdx index 83368fa17..3f97ef16f 100644 --- a/sdk/ios/2.0/overview.mdx +++ b/sdk/ios/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/ios/2.0/publishing-app-on-appstore.mdx b/sdk/ios/2.0/publishing-app-on-appstore.mdx index c34a3c03a..e0fe71acd 100644 --- a/sdk/ios/2.0/publishing-app-on-appstore.mdx +++ b/sdk/ios/2.0/publishing-app-on-appstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On App Store" +description: "Publishing App On App Store — CometChat documentation." --- diff --git a/sdk/ios/2.0/rate-limits.mdx b/sdk/ios/2.0/rate-limits.mdx index 013cabbc4..53f131091 100644 --- a/sdk/ios/2.0/rate-limits.mdx +++ b/sdk/ios/2.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ios/2.0/receive-a-message.mdx b/sdk/ios/2.0/receive-a-message.mdx index 1fe8344dc..165dba2e3 100644 --- a/sdk/ios/2.0/receive-a-message.mdx +++ b/sdk/ios/2.0/receive-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/ios/2.0/remove-delivered-notifications.mdx b/sdk/ios/2.0/remove-delivered-notifications.mdx index 975bcdae2..2de3c897b 100644 --- a/sdk/ios/2.0/remove-delivered-notifications.mdx +++ b/sdk/ios/2.0/remove-delivered-notifications.mdx @@ -1,5 +1,6 @@ --- title: "Remove Delivered Notifications" +description: "Remove Delivered Notifications — CometChat documentation." --- diff --git a/sdk/ios/2.0/resources.mdx b/sdk/ios/2.0/resources.mdx index 54ec46e0a..b25f8a14a 100644 --- a/sdk/ios/2.0/resources.mdx +++ b/sdk/ios/2.0/resources.mdx @@ -1,5 +1,6 @@ --- title: "Resources" +description: "Resources — CometChat documentation." --- diff --git a/sdk/ios/2.0/retrieve-conversations.mdx b/sdk/ios/2.0/retrieve-conversations.mdx index 758b4a4ac..bb1c135b8 100644 --- a/sdk/ios/2.0/retrieve-conversations.mdx +++ b/sdk/ios/2.0/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ios/2.0/retrieve-group-members.mdx b/sdk/ios/2.0/retrieve-group-members.mdx index 18ecdf3ff..eda78711d 100644 --- a/sdk/ios/2.0/retrieve-group-members.mdx +++ b/sdk/ios/2.0/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/ios/2.0/retrieve-groups.mdx b/sdk/ios/2.0/retrieve-groups.mdx index 57fbd50ae..17e7189f6 100644 --- a/sdk/ios/2.0/retrieve-groups.mdx +++ b/sdk/ios/2.0/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/ios/2.0/retrieve-users.mdx b/sdk/ios/2.0/retrieve-users.mdx index 4d7712306..0d32f6b33 100644 --- a/sdk/ios/2.0/retrieve-users.mdx +++ b/sdk/ios/2.0/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/ios/2.0/send-a-message.mdx b/sdk/ios/2.0/send-a-message.mdx index 18ca2cd8d..d7b6a30ec 100644 --- a/sdk/ios/2.0/send-a-message.mdx +++ b/sdk/ios/2.0/send-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/ios/2.0/setup.mdx b/sdk/ios/2.0/setup.mdx index 1716314f6..0db40ac41 100644 --- a/sdk/ios/2.0/setup.mdx +++ b/sdk/ios/2.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ios/2.0/threaded-messages.mdx b/sdk/ios/2.0/threaded-messages.mdx index ee10cf4b3..54f477be4 100644 --- a/sdk/ios/2.0/threaded-messages.mdx +++ b/sdk/ios/2.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/ios/2.0/transfer-group-ownership.mdx b/sdk/ios/2.0/transfer-group-ownership.mdx index 6d818fffa..92e6001c7 100644 --- a/sdk/ios/2.0/transfer-group-ownership.mdx +++ b/sdk/ios/2.0/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ios/2.0/typing-indicators.mdx b/sdk/ios/2.0/typing-indicators.mdx index 08fdd6514..fef3db282 100644 --- a/sdk/ios/2.0/typing-indicators.mdx +++ b/sdk/ios/2.0/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/ios/2.0/update-a-group.mdx b/sdk/ios/2.0/update-a-group.mdx index 8ce76ec55..2311f990a 100644 --- a/sdk/ios/2.0/update-a-group.mdx +++ b/sdk/ios/2.0/update-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/ios/2.0/upgrading-from-v1.mdx b/sdk/ios/2.0/upgrading-from-v1.mdx index 9de855fd9..f24b62505 100644 --- a/sdk/ios/2.0/upgrading-from-v1.mdx +++ b/sdk/ios/2.0/upgrading-from-v1.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V1" +description: "Upgrading From V1 — CometChat documentation." --- diff --git a/sdk/ios/2.0/user-management.mdx b/sdk/ios/2.0/user-management.mdx index f3e8e15f6..910b0e0bc 100644 --- a/sdk/ios/2.0/user-management.mdx +++ b/sdk/ios/2.0/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ios/2.0/user-presence.mdx b/sdk/ios/2.0/user-presence.mdx index bd991f28c..85b943916 100644 --- a/sdk/ios/2.0/user-presence.mdx +++ b/sdk/ios/2.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/ios/2.0/users.mdx b/sdk/ios/2.0/users.mdx index bed5d1d17..cd7355314 100644 --- a/sdk/ios/2.0/users.mdx +++ b/sdk/ios/2.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/ios/2.0/webhooks.mdx b/sdk/ios/2.0/webhooks.mdx index 2cdd05da7..f3dd1b70a 100644 --- a/sdk/ios/2.0/webhooks.mdx +++ b/sdk/ios/2.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/ios/3.0/add-members-to-a-group.mdx b/sdk/ios/3.0/add-members-to-a-group.mdx index 98caa489a..1ccd8439e 100644 --- a/sdk/ios/3.0/add-members-to-a-group.mdx +++ b/sdk/ios/3.0/add-members-to-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/additional-message-filtering.mdx b/sdk/ios/3.0/additional-message-filtering.mdx index 010341ed0..adbb2e56d 100644 --- a/sdk/ios/3.0/additional-message-filtering.mdx +++ b/sdk/ios/3.0/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/ios/3.0/advanced.mdx b/sdk/ios/3.0/advanced.mdx index dcaf1d9fd..9fd37d4ab 100644 --- a/sdk/ios/3.0/advanced.mdx +++ b/sdk/ios/3.0/advanced.mdx @@ -1,5 +1,6 @@ --- title: "Advanced" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ios/3.0/all-real-time-delegates-listeners.mdx b/sdk/ios/3.0/all-real-time-delegates-listeners.mdx index 8292f2bbf..1c66b3db6 100644 --- a/sdk/ios/3.0/all-real-time-delegates-listeners.mdx +++ b/sdk/ios/3.0/all-real-time-delegates-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Delegates (Listeners)" +description: "All Real Time Delegates (Listeners) — CometChat documentation." --- diff --git a/sdk/ios/3.0/authentication.mdx b/sdk/ios/3.0/authentication.mdx index 60bd91b53..1589bb388 100644 --- a/sdk/ios/3.0/authentication.mdx +++ b/sdk/ios/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/ios/3.0/block-users.mdx b/sdk/ios/3.0/block-users.mdx index b00e115ae..ba8fdcf06 100644 --- a/sdk/ios/3.0/block-users.mdx +++ b/sdk/ios/3.0/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/ios/3.0/bots.mdx b/sdk/ios/3.0/bots.mdx index ecb8b128e..7469d8cc7 100644 --- a/sdk/ios/3.0/bots.mdx +++ b/sdk/ios/3.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/ios/3.0/calling-v3.mdx b/sdk/ios/3.0/calling-v3.mdx index a26030213..e1b7c81f0 100644 --- a/sdk/ios/3.0/calling-v3.mdx +++ b/sdk/ios/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Calling V3" +description: "Calling V3 — CometChat documentation." --- diff --git a/sdk/ios/3.0/calling.mdx b/sdk/ios/3.0/calling.mdx index 0924a11de..a2a064fe0 100644 --- a/sdk/ios/3.0/calling.mdx +++ b/sdk/ios/3.0/calling.mdx @@ -1,5 +1,6 @@ --- title: "Calling" +description: "Calling — CometChat documentation." --- diff --git a/sdk/ios/3.0/change-member-scope.mdx b/sdk/ios/3.0/change-member-scope.mdx index c8d458f58..ab1bfb806 100644 --- a/sdk/ios/3.0/change-member-scope.mdx +++ b/sdk/ios/3.0/change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/ios/3.0/connection-status.mdx b/sdk/ios/3.0/connection-status.mdx index 5c68b3cf3..4dac3cc85 100644 --- a/sdk/ios/3.0/connection-status.mdx +++ b/sdk/ios/3.0/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ios/3.0/create-a-group.mdx b/sdk/ios/3.0/create-a-group.mdx index f0ce8922b..c5cb09ed0 100644 --- a/sdk/ios/3.0/create-a-group.mdx +++ b/sdk/ios/3.0/create-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/default-calling.mdx b/sdk/ios/3.0/default-calling.mdx index d68923391..009ac8510 100644 --- a/sdk/ios/3.0/default-calling.mdx +++ b/sdk/ios/3.0/default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/ios/3.0/default-calling1.mdx b/sdk/ios/3.0/default-calling1.mdx index 3d6f83249..24f9a00c7 100644 --- a/sdk/ios/3.0/default-calling1.mdx +++ b/sdk/ios/3.0/default-calling1.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/ios/3.0/delete-a-conversation.mdx b/sdk/ios/3.0/delete-a-conversation.mdx index 8f83a6b8f..8cd815478 100644 --- a/sdk/ios/3.0/delete-a-conversation.mdx +++ b/sdk/ios/3.0/delete-a-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/ios/3.0/delete-a-group.mdx b/sdk/ios/3.0/delete-a-group.mdx index 90a898c5b..e5af6788e 100644 --- a/sdk/ios/3.0/delete-a-group.mdx +++ b/sdk/ios/3.0/delete-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/delete-a-message.mdx b/sdk/ios/3.0/delete-a-message.mdx index 53dedd810..f7c900e18 100644 --- a/sdk/ios/3.0/delete-a-message.mdx +++ b/sdk/ios/3.0/delete-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ios/3.0/delivery-read-receipts.mdx b/sdk/ios/3.0/delivery-read-receipts.mdx index 63e1c8ca2..7d95f58c2 100644 --- a/sdk/ios/3.0/delivery-read-receipts.mdx +++ b/sdk/ios/3.0/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/ios/3.0/direct-calling.mdx b/sdk/ios/3.0/direct-calling.mdx index e4b0f361e..237060ced 100644 --- a/sdk/ios/3.0/direct-calling.mdx +++ b/sdk/ios/3.0/direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ios/3.0/direct-calling1.mdx b/sdk/ios/3.0/direct-calling1.mdx index cf3340edf..61e84a96f 100644 --- a/sdk/ios/3.0/direct-calling1.mdx +++ b/sdk/ios/3.0/direct-calling1.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/ios/3.0/edit-a-message.mdx b/sdk/ios/3.0/edit-a-message.mdx index 31229b697..94c42c630 100644 --- a/sdk/ios/3.0/edit-a-message.mdx +++ b/sdk/ios/3.0/edit-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/ios/3.0/extensions-overview.mdx b/sdk/ios/3.0/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/ios/3.0/extensions-overview.mdx +++ b/sdk/ios/3.0/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/ios/3.0/groups.mdx b/sdk/ios/3.0/groups.mdx index 300e4361a..f37c5245e 100644 --- a/sdk/ios/3.0/groups.mdx +++ b/sdk/ios/3.0/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- diff --git a/sdk/ios/3.0/increment-app-icon-badge-count.mdx b/sdk/ios/3.0/increment-app-icon-badge-count.mdx index e1c91f4ea..8a1bed225 100644 --- a/sdk/ios/3.0/increment-app-icon-badge-count.mdx +++ b/sdk/ios/3.0/increment-app-icon-badge-count.mdx @@ -1,5 +1,6 @@ --- title: "Increment App Icon Badge Count" +description: "Increment App Icon Badge Count — CometChat documentation." --- diff --git a/sdk/ios/3.0/integration.mdx b/sdk/ios/3.0/integration.mdx index 9bd75abf8..36f715ff6 100644 --- a/sdk/ios/3.0/integration.mdx +++ b/sdk/ios/3.0/integration.mdx @@ -1,5 +1,6 @@ --- title: "Integration" +description: "Integration — CometChat documentation." --- diff --git a/sdk/ios/3.0/join-a-group.mdx b/sdk/ios/3.0/join-a-group.mdx index 3f615d4d6..200479ccf 100644 --- a/sdk/ios/3.0/join-a-group.mdx +++ b/sdk/ios/3.0/join-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/key-concepts.mdx b/sdk/ios/3.0/key-concepts.mdx index a62934b71..f0b07182a 100644 --- a/sdk/ios/3.0/key-concepts.mdx +++ b/sdk/ios/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ios/3.0/kick-member-from-a-group.mdx b/sdk/ios/3.0/kick-member-from-a-group.mdx index 375ec1282..a6a3b5ac4 100644 --- a/sdk/ios/3.0/kick-member-from-a-group.mdx +++ b/sdk/ios/3.0/kick-member-from-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Kick Member From A Group" +description: "Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification.mdx b/sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification.mdx index 6f1b9cc76..651428d3a 100644 --- a/sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification.mdx +++ b/sdk/ios/3.0/launch-call-screen-on-tap-of-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Call Screen On Tap Of Push Notification" +description: "Launch Call Screen On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/3.0/launch-chat-window-push-notification.mdx b/sdk/ios/3.0/launch-chat-window-push-notification.mdx index 5c6402fbf..56d77e524 100644 --- a/sdk/ios/3.0/launch-chat-window-push-notification.mdx +++ b/sdk/ios/3.0/launch-chat-window-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Chat Window On Tap Of Push Notification" +description: "Launch Chat Window On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/3.0/leave-a-group.mdx b/sdk/ios/3.0/leave-a-group.mdx index 36d1269f1..f429798b8 100644 --- a/sdk/ios/3.0/leave-a-group.mdx +++ b/sdk/ios/3.0/leave-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/login-listeners.mdx b/sdk/ios/3.0/login-listeners.mdx index 2041e436e..8884286c3 100644 --- a/sdk/ios/3.0/login-listeners.mdx +++ b/sdk/ios/3.0/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/ios/3.0/managing-web-socket-connections-manually.mdx b/sdk/ios/3.0/managing-web-socket-connections-manually.mdx index 9fdfba9d8..93e7e5e69 100644 --- a/sdk/ios/3.0/managing-web-socket-connections-manually.mdx +++ b/sdk/ios/3.0/managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/ios/3.0/message-structure-and-hierarchy.mdx b/sdk/ios/3.0/message-structure-and-hierarchy.mdx index 61d03d5b4..1045c6f9c 100644 --- a/sdk/ios/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/ios/3.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/ios/3.0/messaging.mdx b/sdk/ios/3.0/messaging.mdx index d7c0c8c39..6ce4ef399 100644 --- a/sdk/ios/3.0/messaging.mdx +++ b/sdk/ios/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/ios/3.0/overview.mdx b/sdk/ios/3.0/overview.mdx index 25b463636..108bbee83 100644 --- a/sdk/ios/3.0/overview.mdx +++ b/sdk/ios/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/ios/3.0/prepare-your-app-for-background-updates.mdx b/sdk/ios/3.0/prepare-your-app-for-background-updates.mdx index 677249b7e..d4c5b6451 100644 --- a/sdk/ios/3.0/prepare-your-app-for-background-updates.mdx +++ b/sdk/ios/3.0/prepare-your-app-for-background-updates.mdx @@ -1,5 +1,6 @@ --- title: "Prepare Your App For Background Updates" +description: "Prepare Your App For Background Updates — CometChat documentation." --- diff --git a/sdk/ios/3.0/presenter-mode.mdx b/sdk/ios/3.0/presenter-mode.mdx index 6b04e53c8..01a563903 100644 --- a/sdk/ios/3.0/presenter-mode.mdx +++ b/sdk/ios/3.0/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/ios/3.0/publishing-app-on-appstore.mdx b/sdk/ios/3.0/publishing-app-on-appstore.mdx index 8c2febcfb..3fc1387f3 100644 --- a/sdk/ios/3.0/publishing-app-on-appstore.mdx +++ b/sdk/ios/3.0/publishing-app-on-appstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On App Store" +description: "Publishing App On App Store — CometChat documentation." --- diff --git a/sdk/ios/3.0/rate-limits.mdx b/sdk/ios/3.0/rate-limits.mdx index e0e20054c..4e5014131 100644 --- a/sdk/ios/3.0/rate-limits.mdx +++ b/sdk/ios/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ios/3.0/receive-a-message.mdx b/sdk/ios/3.0/receive-a-message.mdx index 1801c5216..d58d7b132 100644 --- a/sdk/ios/3.0/receive-a-message.mdx +++ b/sdk/ios/3.0/receive-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/ios/3.0/recording.mdx b/sdk/ios/3.0/recording.mdx index 1968f42e9..1c546730f 100644 --- a/sdk/ios/3.0/recording.mdx +++ b/sdk/ios/3.0/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/ios/3.0/recording1.mdx b/sdk/ios/3.0/recording1.mdx index 26a20ff20..6f872effe 100644 --- a/sdk/ios/3.0/recording1.mdx +++ b/sdk/ios/3.0/recording1.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/ios/3.0/remove-delivered-notifications.mdx b/sdk/ios/3.0/remove-delivered-notifications.mdx index 975bcdae2..2de3c897b 100644 --- a/sdk/ios/3.0/remove-delivered-notifications.mdx +++ b/sdk/ios/3.0/remove-delivered-notifications.mdx @@ -1,5 +1,6 @@ --- title: "Remove Delivered Notifications" +description: "Remove Delivered Notifications — CometChat documentation." --- diff --git a/sdk/ios/3.0/resources.mdx b/sdk/ios/3.0/resources.mdx index e5406976b..889d5858d 100644 --- a/sdk/ios/3.0/resources.mdx +++ b/sdk/ios/3.0/resources.mdx @@ -1,5 +1,6 @@ --- title: "Resources" +description: "Resources — CometChat documentation." --- diff --git a/sdk/ios/3.0/retrieve-conversations.mdx b/sdk/ios/3.0/retrieve-conversations.mdx index c92813811..032b52827 100644 --- a/sdk/ios/3.0/retrieve-conversations.mdx +++ b/sdk/ios/3.0/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ios/3.0/retrieve-group-members.mdx b/sdk/ios/3.0/retrieve-group-members.mdx index 7866987b6..e002ec3ba 100644 --- a/sdk/ios/3.0/retrieve-group-members.mdx +++ b/sdk/ios/3.0/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/ios/3.0/retrieve-groups.mdx b/sdk/ios/3.0/retrieve-groups.mdx index 44a55457d..c495a5940 100644 --- a/sdk/ios/3.0/retrieve-groups.mdx +++ b/sdk/ios/3.0/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/ios/3.0/retrieve-users.mdx b/sdk/ios/3.0/retrieve-users.mdx index 79e86d09f..60506dc49 100644 --- a/sdk/ios/3.0/retrieve-users.mdx +++ b/sdk/ios/3.0/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/ios/3.0/send-a-message.mdx b/sdk/ios/3.0/send-a-message.mdx index 8a77ce54a..24c51a5bc 100644 --- a/sdk/ios/3.0/send-a-message.mdx +++ b/sdk/ios/3.0/send-a-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/ios/3.0/setup.mdx b/sdk/ios/3.0/setup.mdx index 10cc9f1b7..6398ac970 100644 --- a/sdk/ios/3.0/setup.mdx +++ b/sdk/ios/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ios/3.0/threaded-messages.mdx b/sdk/ios/3.0/threaded-messages.mdx index 9e75b7457..da6c9528b 100644 --- a/sdk/ios/3.0/threaded-messages.mdx +++ b/sdk/ios/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/ios/3.0/transfer-group-ownership.mdx b/sdk/ios/3.0/transfer-group-ownership.mdx index 6d818fffa..92e6001c7 100644 --- a/sdk/ios/3.0/transfer-group-ownership.mdx +++ b/sdk/ios/3.0/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ios/3.0/transient-messages.mdx b/sdk/ios/3.0/transient-messages.mdx index 6f1da0964..75eb65b25 100644 --- a/sdk/ios/3.0/transient-messages.mdx +++ b/sdk/ios/3.0/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/ios/3.0/typing-indicators.mdx b/sdk/ios/3.0/typing-indicators.mdx index 08fdd6514..fef3db282 100644 --- a/sdk/ios/3.0/typing-indicators.mdx +++ b/sdk/ios/3.0/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/ios/3.0/update-a-group.mdx b/sdk/ios/3.0/update-a-group.mdx index 8ce76ec55..2311f990a 100644 --- a/sdk/ios/3.0/update-a-group.mdx +++ b/sdk/ios/3.0/update-a-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/ios/3.0/upgrading-from-v2.mdx b/sdk/ios/3.0/upgrading-from-v2.mdx index 575a2ada8..7318981f1 100644 --- a/sdk/ios/3.0/upgrading-from-v2.mdx +++ b/sdk/ios/3.0/upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/ios/3.0/user-management.mdx b/sdk/ios/3.0/user-management.mdx index 5986a0a40..56d4c301c 100644 --- a/sdk/ios/3.0/user-management.mdx +++ b/sdk/ios/3.0/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ios/3.0/user-presence.mdx b/sdk/ios/3.0/user-presence.mdx index cb61844b9..90d3caedc 100644 --- a/sdk/ios/3.0/user-presence.mdx +++ b/sdk/ios/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/ios/3.0/users.mdx b/sdk/ios/3.0/users.mdx index c52391ee6..9adc7c32c 100644 --- a/sdk/ios/3.0/users.mdx +++ b/sdk/ios/3.0/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- diff --git a/sdk/ios/3.0/video-view-customisation.mdx b/sdk/ios/3.0/video-view-customisation.mdx index 664813661..77498876b 100644 --- a/sdk/ios/3.0/video-view-customisation.mdx +++ b/sdk/ios/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ios/3.0/video-view-customisation1.mdx b/sdk/ios/3.0/video-view-customisation1.mdx index 664813661..77498876b 100644 --- a/sdk/ios/3.0/video-view-customisation1.mdx +++ b/sdk/ios/3.0/video-view-customisation1.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ios/3.0/webhooks.mdx b/sdk/ios/3.0/webhooks.mdx index 2cdd05da7..f3dd1b70a 100644 --- a/sdk/ios/3.0/webhooks.mdx +++ b/sdk/ios/3.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/ios/additional-message-filtering.mdx b/sdk/ios/additional-message-filtering.mdx index 03075fa48..3981b9c9c 100644 --- a/sdk/ios/additional-message-filtering.mdx +++ b/sdk/ios/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/ios/advanced.mdx b/sdk/ios/advanced.mdx index 7355c1ab6..f0b1d1654 100644 --- a/sdk/ios/advanced.mdx +++ b/sdk/ios/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/ios/ai-agents.mdx b/sdk/ios/ai-agents.mdx index 2a920c71f..290eae6d2 100644 --- a/sdk/ios/ai-agents.mdx +++ b/sdk/ios/ai-agents.mdx @@ -1,5 +1,6 @@ --- title: "AI Agents" +description: "AI Agents — CometChat documentation." --- # AI Agents Overview diff --git a/sdk/ios/ai-chatbots-overview.mdx b/sdk/ios/ai-chatbots-overview.mdx index a5e168a8e..1280e5391 100644 --- a/sdk/ios/ai-chatbots-overview.mdx +++ b/sdk/ios/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "Bots" url: "/ai-chatbots/overview" +description: "Navigate to Bots documentation." --- \ No newline at end of file diff --git a/sdk/ios/ai-moderation.mdx b/sdk/ios/ai-moderation.mdx index eda461d9a..1b4ac45ab 100644 --- a/sdk/ios/ai-moderation.mdx +++ b/sdk/ios/ai-moderation.mdx @@ -1,5 +1,6 @@ --- title: "AI Moderation" +description: "AI Moderation — CometChat documentation." --- ## Overview diff --git a/sdk/ios/ai-user-copilot-overview.mdx b/sdk/ios/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/ios/ai-user-copilot-overview.mdx +++ b/sdk/ios/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/ios/all-real-time-delegates-listeners.mdx b/sdk/ios/all-real-time-delegates-listeners.mdx index ba8a2d67b..e25aafe89 100644 --- a/sdk/ios/all-real-time-delegates-listeners.mdx +++ b/sdk/ios/all-real-time-delegates-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Delegates (Listeners)" +description: "All Real Time Delegates (Listeners) — CometChat documentation." --- diff --git a/sdk/ios/authentication-overview.mdx b/sdk/ios/authentication-overview.mdx index be2205df0..82f6c5a6a 100644 --- a/sdk/ios/authentication-overview.mdx +++ b/sdk/ios/authentication-overview.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Overview of Authentication in CometChat." --- diff --git a/sdk/ios/block-users.mdx b/sdk/ios/block-users.mdx index 13f62c70a..0a711042f 100644 --- a/sdk/ios/block-users.mdx +++ b/sdk/ios/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/ios/call-logs.mdx b/sdk/ios/call-logs.mdx index 91bf66538..9bcd03ad5 100644 --- a/sdk/ios/call-logs.mdx +++ b/sdk/ios/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/sdk/ios/calling-overview.mdx b/sdk/ios/calling-overview.mdx index 4883e77b1..6710a17be 100644 --- a/sdk/ios/calling-overview.mdx +++ b/sdk/ios/calling-overview.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Overview of Calling in CometChat." --- ## Overview diff --git a/sdk/ios/calling-setup.mdx b/sdk/ios/calling-setup.mdx index 1c689f31b..27ed8fe44 100644 --- a/sdk/ios/calling-setup.mdx +++ b/sdk/ios/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ios/changelog.mdx b/sdk/ios/changelog.mdx index 067c5dd4c..6e8895b7e 100644 --- a/sdk/ios/changelog.mdx +++ b/sdk/ios/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-ios/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/sdk/ios/connection-status.mdx b/sdk/ios/connection-status.mdx index 5d296174f..2abc0f4b5 100644 --- a/sdk/ios/connection-status.mdx +++ b/sdk/ios/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/ios/create-group.mdx b/sdk/ios/create-group.mdx index 1310a124a..66283a6a1 100644 --- a/sdk/ios/create-group.mdx +++ b/sdk/ios/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/ios/default-calling.mdx b/sdk/ios/default-calling.mdx index c0f5e5ebb..b637c8c72 100644 --- a/sdk/ios/default-calling.mdx +++ b/sdk/ios/default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Ringing" +description: "Ringing — CometChat documentation." --- ## Overview diff --git a/sdk/ios/delete-conversation.mdx b/sdk/ios/delete-conversation.mdx index 8f83a6b8f..8cd815478 100644 --- a/sdk/ios/delete-conversation.mdx +++ b/sdk/ios/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/ios/delete-group.mdx b/sdk/ios/delete-group.mdx index c305f4093..5c7a73a57 100644 --- a/sdk/ios/delete-group.mdx +++ b/sdk/ios/delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/ios/delete-message.mdx b/sdk/ios/delete-message.mdx index 9d2192d20..f0212957d 100644 --- a/sdk/ios/delete-message.mdx +++ b/sdk/ios/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/ios/delivery-read-receipts.mdx b/sdk/ios/delivery-read-receipts.mdx index 954a85e65..e408c09e6 100644 --- a/sdk/ios/delivery-read-receipts.mdx +++ b/sdk/ios/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/ios/direct-calling.mdx b/sdk/ios/direct-calling.mdx index b525aa90c..7e37eaa68 100644 --- a/sdk/ios/direct-calling.mdx +++ b/sdk/ios/direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Call Session" +description: "Call Session — CometChat documentation." --- ## Overview diff --git a/sdk/ios/edit-message.mdx b/sdk/ios/edit-message.mdx index e3024ab3b..66861ece7 100644 --- a/sdk/ios/edit-message.mdx +++ b/sdk/ios/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/ios/extensions-overview.mdx b/sdk/ios/extensions-overview.mdx index f47909ba9..006ca7239 100644 --- a/sdk/ios/extensions-overview.mdx +++ b/sdk/ios/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url : "/fundamentals/extensions-overview" +description: "Overview of Extensions in CometChat." --- \ No newline at end of file diff --git a/sdk/ios/flag-message.mdx b/sdk/ios/flag-message.mdx index 37a2be33a..1d84c5233 100644 --- a/sdk/ios/flag-message.mdx +++ b/sdk/ios/flag-message.mdx @@ -1,5 +1,6 @@ --- title: "Flag Message" +description: "Flag Message — CometChat documentation." --- ## Overview diff --git a/sdk/ios/group-add-members.mdx b/sdk/ios/group-add-members.mdx index afd5ede5c..12cb04bb1 100644 --- a/sdk/ios/group-add-members.mdx +++ b/sdk/ios/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/ios/group-change-member-scope.mdx b/sdk/ios/group-change-member-scope.mdx index 1d06892d7..0e15266d0 100644 --- a/sdk/ios/group-change-member-scope.mdx +++ b/sdk/ios/group-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/ios/group-kick-member.mdx b/sdk/ios/group-kick-member.mdx index 0def9ac5a..8fc840768 100644 --- a/sdk/ios/group-kick-member.mdx +++ b/sdk/ios/group-kick-member.mdx @@ -1,5 +1,6 @@ --- title: "Kick Member From A Group" +description: "Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/ios/groups-overview.mdx b/sdk/ios/groups-overview.mdx index 99e877026..00b7d6b44 100644 --- a/sdk/ios/groups-overview.mdx +++ b/sdk/ios/groups-overview.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of Groups in CometChat." --- diff --git a/sdk/ios/increment-app-icon-badge-count.mdx b/sdk/ios/increment-app-icon-badge-count.mdx index fd5bd8392..d0c200800 100644 --- a/sdk/ios/increment-app-icon-badge-count.mdx +++ b/sdk/ios/increment-app-icon-badge-count.mdx @@ -1,5 +1,6 @@ --- title: "Increment App Icon Badge Count" +description: "Increment App Icon Badge Count — CometChat documentation." --- diff --git a/sdk/ios/interactive-messages.mdx b/sdk/ios/interactive-messages.mdx index 8ac2fcbd9..47e0cf0d3 100644 --- a/sdk/ios/interactive-messages.mdx +++ b/sdk/ios/interactive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Interactive Messages" +description: "Interactive Messages — CometChat documentation." --- diff --git a/sdk/ios/ios-overview.mdx b/sdk/ios/ios-overview.mdx index b892f3b64..910ad1476 100644 --- a/sdk/ios/ios-overview.mdx +++ b/sdk/ios/ios-overview.mdx @@ -1,4 +1,5 @@ --- title: "iOS UI Kit" url: "/ui-kit/ios/overview" +description: "Navigate to iOS UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/ios/join-group.mdx b/sdk/ios/join-group.mdx index 88d05b124..b7082d446 100644 --- a/sdk/ios/join-group.mdx +++ b/sdk/ios/join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/ios/key-concepts.mdx b/sdk/ios/key-concepts.mdx index 2e809f549..fed8ab223 100644 --- a/sdk/ios/key-concepts.mdx +++ b/sdk/ios/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/ios/launch-call-screen-on-tap-of-push-notification.mdx b/sdk/ios/launch-call-screen-on-tap-of-push-notification.mdx index 79fa30b74..ac0b662c9 100644 --- a/sdk/ios/launch-call-screen-on-tap-of-push-notification.mdx +++ b/sdk/ios/launch-call-screen-on-tap-of-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Call Screen On Tap Of Push Notification" +description: "Launch Call Screen On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/launch-chat-window-on-tap-of-push-notification.mdx b/sdk/ios/launch-chat-window-on-tap-of-push-notification.mdx index 95bb11ea8..ea6a02d0a 100644 --- a/sdk/ios/launch-chat-window-on-tap-of-push-notification.mdx +++ b/sdk/ios/launch-chat-window-on-tap-of-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Launch Chat Window On Tap Of Push Notification" +description: "Launch Chat Window On Tap Of Push Notification — CometChat documentation." --- diff --git a/sdk/ios/leave-group.mdx b/sdk/ios/leave-group.mdx index c45e30113..144ce50f7 100644 --- a/sdk/ios/leave-group.mdx +++ b/sdk/ios/leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/ios/login-listeners.mdx b/sdk/ios/login-listeners.mdx index 2041e436e..8884286c3 100644 --- a/sdk/ios/login-listeners.mdx +++ b/sdk/ios/login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/ios/managing-web-socket-connections-manually.mdx b/sdk/ios/managing-web-socket-connections-manually.mdx index 9fdfba9d8..93e7e5e69 100644 --- a/sdk/ios/managing-web-socket-connections-manually.mdx +++ b/sdk/ios/managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/ios/marking-delivered-with-push-notification.mdx b/sdk/ios/marking-delivered-with-push-notification.mdx index 8afbcb793..33b2d9a31 100644 --- a/sdk/ios/marking-delivered-with-push-notification.mdx +++ b/sdk/ios/marking-delivered-with-push-notification.mdx @@ -1,5 +1,6 @@ --- title: "Marking Delivered From Push Notification" +description: "Marking Delivered From Push Notification — CometChat documentation." --- diff --git a/sdk/ios/mentions.mdx b/sdk/ios/mentions.mdx index b2ea5ce05..328f32b58 100644 --- a/sdk/ios/mentions.mdx +++ b/sdk/ios/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions" +description: "Mentions — CometChat documentation." --- diff --git a/sdk/ios/message-structure-and-hierarchy.mdx b/sdk/ios/message-structure-and-hierarchy.mdx index fef4ec36c..af82a1d45 100644 --- a/sdk/ios/message-structure-and-hierarchy.mdx +++ b/sdk/ios/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/ios/messaging-overview.mdx b/sdk/ios/messaging-overview.mdx index 087e5f556..111d4ab2d 100644 --- a/sdk/ios/messaging-overview.mdx +++ b/sdk/ios/messaging-overview.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of Messaging in CometChat." --- diff --git a/sdk/ios/overview.mdx b/sdk/ios/overview.mdx index bf72c3a2e..3dbdffd77 100644 --- a/sdk/ios/overview.mdx +++ b/sdk/ios/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/ios/prepare-your-app-for-background-updates.mdx b/sdk/ios/prepare-your-app-for-background-updates.mdx index 9301db484..285af103e 100644 --- a/sdk/ios/prepare-your-app-for-background-updates.mdx +++ b/sdk/ios/prepare-your-app-for-background-updates.mdx @@ -1,5 +1,6 @@ --- title: "Prepare Your App For Background Updates" +description: "Prepare Your App For Background Updates — CometChat documentation." --- diff --git a/sdk/ios/presenter-mode.mdx b/sdk/ios/presenter-mode.mdx index f12090ba6..c271b04b8 100644 --- a/sdk/ios/presenter-mode.mdx +++ b/sdk/ios/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/ios/publishing-app-on-appstore.mdx b/sdk/ios/publishing-app-on-appstore.mdx index ad28821b1..ca27f6989 100644 --- a/sdk/ios/publishing-app-on-appstore.mdx +++ b/sdk/ios/publishing-app-on-appstore.mdx @@ -1,5 +1,6 @@ --- title: "Publishing App On App Store" +description: "Publishing App On App Store — CometChat documentation." --- diff --git a/sdk/ios/rate-limits.mdx b/sdk/ios/rate-limits.mdx index 17581b144..796b22b12 100644 --- a/sdk/ios/rate-limits.mdx +++ b/sdk/ios/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/ios/reactions.mdx b/sdk/ios/reactions.mdx index 052fc3f21..325f6eddc 100644 --- a/sdk/ios/reactions.mdx +++ b/sdk/ios/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- diff --git a/sdk/ios/receive-message.mdx b/sdk/ios/receive-message.mdx index 837b2f29a..1450c86ee 100644 --- a/sdk/ios/receive-message.mdx +++ b/sdk/ios/receive-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/ios/recording.mdx b/sdk/ios/recording.mdx index f1a5ab6e4..9e38d80fb 100644 --- a/sdk/ios/recording.mdx +++ b/sdk/ios/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording" +description: "Recording — CometChat documentation." --- diff --git a/sdk/ios/remove-delivered-notifications.mdx b/sdk/ios/remove-delivered-notifications.mdx index d3d291ee8..d69f68bdc 100644 --- a/sdk/ios/remove-delivered-notifications.mdx +++ b/sdk/ios/remove-delivered-notifications.mdx @@ -1,5 +1,6 @@ --- title: "Remove Delivered Notifications" +description: "Remove Delivered Notifications — CometChat documentation." --- diff --git a/sdk/ios/resources-overview.mdx b/sdk/ios/resources-overview.mdx index 2ad1c8400..3d8043d32 100644 --- a/sdk/ios/resources-overview.mdx +++ b/sdk/ios/resources-overview.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Overview of Resources in CometChat." --- diff --git a/sdk/ios/retrieve-conversations.mdx b/sdk/ios/retrieve-conversations.mdx index 8d873f7f5..aec7be5e0 100644 --- a/sdk/ios/retrieve-conversations.mdx +++ b/sdk/ios/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/ios/retrieve-group-members.mdx b/sdk/ios/retrieve-group-members.mdx index e96f3d0b0..25c5e128c 100644 --- a/sdk/ios/retrieve-group-members.mdx +++ b/sdk/ios/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/ios/retrieve-groups.mdx b/sdk/ios/retrieve-groups.mdx index 44a55457d..c495a5940 100644 --- a/sdk/ios/retrieve-groups.mdx +++ b/sdk/ios/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/ios/retrieve-users.mdx b/sdk/ios/retrieve-users.mdx index 2f3579a12..18f49fcad 100644 --- a/sdk/ios/retrieve-users.mdx +++ b/sdk/ios/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/ios/send-message.mdx b/sdk/ios/send-message.mdx index 8b8b6fa19..8a92a795b 100644 --- a/sdk/ios/send-message.mdx +++ b/sdk/ios/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/ios/session-timeout.mdx b/sdk/ios/session-timeout.mdx index d6b297d8c..f5d3aeab9 100644 --- a/sdk/ios/session-timeout.mdx +++ b/sdk/ios/session-timeout.mdx @@ -1,5 +1,6 @@ --- title: "Session Timeout Flow" +description: "Session Timeout Flow — CometChat documentation." --- diff --git a/sdk/ios/setup.mdx b/sdk/ios/setup.mdx index 29c70bb2b..f61536316 100644 --- a/sdk/ios/setup.mdx +++ b/sdk/ios/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/ios/standalone-calling.mdx b/sdk/ios/standalone-calling.mdx index 022ee552f..97626fdeb 100644 --- a/sdk/ios/standalone-calling.mdx +++ b/sdk/ios/standalone-calling.mdx @@ -1,5 +1,6 @@ --- title: "Standalone Calling" +description: "Standalone Calling — CometChat documentation." --- ## Overview diff --git a/sdk/ios/threaded-messages.mdx b/sdk/ios/threaded-messages.mdx index c75a4733c..8be4d247d 100644 --- a/sdk/ios/threaded-messages.mdx +++ b/sdk/ios/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/ios/transfer-group-ownership.mdx b/sdk/ios/transfer-group-ownership.mdx index 6d818fffa..92e6001c7 100644 --- a/sdk/ios/transfer-group-ownership.mdx +++ b/sdk/ios/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/ios/transient-messages.mdx b/sdk/ios/transient-messages.mdx index 6f1da0964..75eb65b25 100644 --- a/sdk/ios/transient-messages.mdx +++ b/sdk/ios/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/ios/typing-indicators.mdx b/sdk/ios/typing-indicators.mdx index 08fdd6514..fef3db282 100644 --- a/sdk/ios/typing-indicators.mdx +++ b/sdk/ios/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/ios/update-group.mdx b/sdk/ios/update-group.mdx index 8b69733f5..53bc60d16 100644 --- a/sdk/ios/update-group.mdx +++ b/sdk/ios/update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/ios/upgrading-from-v2.mdx b/sdk/ios/upgrading-from-v2.mdx index 3cdb9b36d..438463c83 100644 --- a/sdk/ios/upgrading-from-v2.mdx +++ b/sdk/ios/upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/ios/upgrading-from-v3-to-v4.mdx b/sdk/ios/upgrading-from-v3-to-v4.mdx index 05d06336e..0464a5189 100644 --- a/sdk/ios/upgrading-from-v3-to-v4.mdx +++ b/sdk/ios/upgrading-from-v3-to-v4.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V3" +description: "Upgrading From V3 — CometChat documentation." --- diff --git a/sdk/ios/user-management.mdx b/sdk/ios/user-management.mdx index 5ab4e8208..aace0cd20 100644 --- a/sdk/ios/user-management.mdx +++ b/sdk/ios/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/ios/user-presence.mdx b/sdk/ios/user-presence.mdx index 3fd1c1ae5..513d5bea8 100644 --- a/sdk/ios/user-presence.mdx +++ b/sdk/ios/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/ios/users-overview.mdx b/sdk/ios/users-overview.mdx index fe7c61592..2c0c4da99 100644 --- a/sdk/ios/users-overview.mdx +++ b/sdk/ios/users-overview.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of Users in CometChat." --- diff --git a/sdk/ios/video-view-customisation.mdx b/sdk/ios/video-view-customisation.mdx index 59b394618..9b971e822 100644 --- a/sdk/ios/video-view-customisation.mdx +++ b/sdk/ios/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/ios/web-socket-connection-behaviour.mdx b/sdk/ios/web-socket-connection-behaviour.mdx index f8b050621..814666e10 100644 --- a/sdk/ios/web-socket-connection-behaviour.mdx +++ b/sdk/ios/web-socket-connection-behaviour.mdx @@ -1,5 +1,6 @@ --- title: "Connection Behaviour" +description: "Connection Behaviour — CometChat documentation." --- diff --git a/sdk/ios/webhooks-overview.mdx b/sdk/ios/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/ios/webhooks-overview.mdx +++ b/sdk/ios/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/sdk/javascript/2.0/advanced-connection-listeners.mdx b/sdk/javascript/2.0/advanced-connection-listeners.mdx index 11b6c89d7..6db31a3d5 100644 --- a/sdk/javascript/2.0/advanced-connection-listeners.mdx +++ b/sdk/javascript/2.0/advanced-connection-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- @@ -52,7 +53,7 @@ You can also get the current connection status by using `getConnectionStatus` pr -``` +```javascript var connectionStatus = CometChat.getConnectionStatus(); ``` diff --git a/sdk/javascript/2.0/advanced.mdx b/sdk/javascript/2.0/advanced.mdx index 7a8e791f6..931f86642 100644 --- a/sdk/javascript/2.0/advanced.mdx +++ b/sdk/javascript/2.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/javascript/2.0/authentication-login-listeners.mdx b/sdk/javascript/2.0/authentication-login-listeners.mdx index 71748ab3f..76673bb8c 100644 --- a/sdk/javascript/2.0/authentication-login-listeners.mdx +++ b/sdk/javascript/2.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listener" +description: "Login Listener — CometChat documentation." --- diff --git a/sdk/javascript/2.0/authentication.mdx b/sdk/javascript/2.0/authentication.mdx index 6e30b3d83..647ae4042 100644 --- a/sdk/javascript/2.0/authentication.mdx +++ b/sdk/javascript/2.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/javascript/2.0/bots.mdx b/sdk/javascript/2.0/bots.mdx index 124af6f40..e551f1999 100644 --- a/sdk/javascript/2.0/bots.mdx +++ b/sdk/javascript/2.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/javascript/2.0/calling-custom-css.mdx b/sdk/javascript/2.0/calling-custom-css.mdx index 44ef22036..21191e179 100644 --- a/sdk/javascript/2.0/calling-custom-css.mdx +++ b/sdk/javascript/2.0/calling-custom-css.mdx @@ -1,5 +1,6 @@ --- title: "Custom CSS" +description: "Custom CSS — CometChat documentation." --- diff --git a/sdk/javascript/2.0/calling-default-calling.mdx b/sdk/javascript/2.0/calling-default-calling.mdx index 0d1cd539b..d67b1356a 100644 --- a/sdk/javascript/2.0/calling-default-calling.mdx +++ b/sdk/javascript/2.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/javascript/2.0/calling-direct-calling.mdx b/sdk/javascript/2.0/calling-direct-calling.mdx index 354fdb48c..6ace621fc 100644 --- a/sdk/javascript/2.0/calling-direct-calling.mdx +++ b/sdk/javascript/2.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/javascript/2.0/calling-recording.mdx b/sdk/javascript/2.0/calling-recording.mdx index 71937258c..bcf22d693 100644 --- a/sdk/javascript/2.0/calling-recording.mdx +++ b/sdk/javascript/2.0/calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/javascript/2.0/calling.mdx b/sdk/javascript/2.0/calling.mdx index 9603e8a6e..4b6d93f1e 100644 --- a/sdk/javascript/2.0/calling.mdx +++ b/sdk/javascript/2.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-add-members-to-group.mdx b/sdk/javascript/2.0/groups-add-members-to-group.mdx index 878543d08..b04dc9fba 100644 --- a/sdk/javascript/2.0/groups-add-members-to-group.mdx +++ b/sdk/javascript/2.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-change-member-scope.mdx b/sdk/javascript/2.0/groups-change-member-scope.mdx index 3fe4513ad..dbc4c44d7 100644 --- a/sdk/javascript/2.0/groups-change-member-scope.mdx +++ b/sdk/javascript/2.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-create-group.mdx b/sdk/javascript/2.0/groups-create-group.mdx index edbc7cdcd..3a38c4bbc 100644 --- a/sdk/javascript/2.0/groups-create-group.mdx +++ b/sdk/javascript/2.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-delete-group.mdx b/sdk/javascript/2.0/groups-delete-group.mdx index 528025963..de62d14bf 100644 --- a/sdk/javascript/2.0/groups-delete-group.mdx +++ b/sdk/javascript/2.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-join-group.mdx b/sdk/javascript/2.0/groups-join-group.mdx index 9c180cbbe..650678bb2 100644 --- a/sdk/javascript/2.0/groups-join-group.mdx +++ b/sdk/javascript/2.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-kick-ban-members.mdx b/sdk/javascript/2.0/groups-kick-ban-members.mdx index 423e4f63a..7db6e4762 100644 --- a/sdk/javascript/2.0/groups-kick-ban-members.mdx +++ b/sdk/javascript/2.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-leave-group.mdx b/sdk/javascript/2.0/groups-leave-group.mdx index f601d5bf5..def90a3b1 100644 --- a/sdk/javascript/2.0/groups-leave-group.mdx +++ b/sdk/javascript/2.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-retrieve-group-members.mdx b/sdk/javascript/2.0/groups-retrieve-group-members.mdx index a860d440f..6910bd3af 100644 --- a/sdk/javascript/2.0/groups-retrieve-group-members.mdx +++ b/sdk/javascript/2.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-retrieve-groups.mdx b/sdk/javascript/2.0/groups-retrieve-groups.mdx index de6e08fa7..66f7c0396 100644 --- a/sdk/javascript/2.0/groups-retrieve-groups.mdx +++ b/sdk/javascript/2.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-transfer-group-ownership.mdx b/sdk/javascript/2.0/groups-transfer-group-ownership.mdx index 4dbc7e816..7ac90f5a8 100644 --- a/sdk/javascript/2.0/groups-transfer-group-ownership.mdx +++ b/sdk/javascript/2.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups-update-group.mdx b/sdk/javascript/2.0/groups-update-group.mdx index a81deaa66..8b35358bc 100644 --- a/sdk/javascript/2.0/groups-update-group.mdx +++ b/sdk/javascript/2.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/javascript/2.0/groups.mdx b/sdk/javascript/2.0/groups.mdx index 99e877026..be06c2c42 100644 --- a/sdk/javascript/2.0/groups.mdx +++ b/sdk/javascript/2.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/javascript/2.0/key-concepts.mdx b/sdk/javascript/2.0/key-concepts.mdx index 21a00a097..ad7eb8869 100644 --- a/sdk/javascript/2.0/key-concepts.mdx +++ b/sdk/javascript/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/javascript/2.0/message-structure-and-hierarchy.mdx b/sdk/javascript/2.0/message-structure-and-hierarchy.mdx index c678ce33e..79a6c7b50 100644 --- a/sdk/javascript/2.0/message-structure-and-hierarchy.mdx +++ b/sdk/javascript/2.0/message-structure-and-hierarchy.mdx @@ -1,6 +1,7 @@ --- title: "Message" sidebarTitle: "Message Structure And Hierarchy" +description: "Message — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-additional-message-filtering.mdx b/sdk/javascript/2.0/messaging-additional-message-filtering.mdx index 2ad9748b9..72ef4a134 100644 --- a/sdk/javascript/2.0/messaging-additional-message-filtering.mdx +++ b/sdk/javascript/2.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-delete-conversation.mdx b/sdk/javascript/2.0/messaging-delete-conversation.mdx index 488c09db4..b22ed34fc 100644 --- a/sdk/javascript/2.0/messaging-delete-conversation.mdx +++ b/sdk/javascript/2.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-delete-message.mdx b/sdk/javascript/2.0/messaging-delete-message.mdx index 246467689..22456fa96 100644 --- a/sdk/javascript/2.0/messaging-delete-message.mdx +++ b/sdk/javascript/2.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-edit-message.mdx b/sdk/javascript/2.0/messaging-edit-message.mdx index fbe4ea606..80d9a53dc 100644 --- a/sdk/javascript/2.0/messaging-edit-message.mdx +++ b/sdk/javascript/2.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-receipts.mdx b/sdk/javascript/2.0/messaging-receipts.mdx index 4db795d3f..f6613735f 100644 --- a/sdk/javascript/2.0/messaging-receipts.mdx +++ b/sdk/javascript/2.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-receive-message.mdx b/sdk/javascript/2.0/messaging-receive-message.mdx index e0b604d7c..55eaef458 100644 --- a/sdk/javascript/2.0/messaging-receive-message.mdx +++ b/sdk/javascript/2.0/messaging-receive-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-retrieve-conversations.mdx b/sdk/javascript/2.0/messaging-retrieve-conversations.mdx index 865e2c29b..41985b5b6 100644 --- a/sdk/javascript/2.0/messaging-retrieve-conversations.mdx +++ b/sdk/javascript/2.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-send-message.mdx b/sdk/javascript/2.0/messaging-send-message.mdx index c49b54ff8..0575fbaa9 100644 --- a/sdk/javascript/2.0/messaging-send-message.mdx +++ b/sdk/javascript/2.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging-typing-indicators.mdx b/sdk/javascript/2.0/messaging-typing-indicators.mdx index 4e85fd234..d755ee21f 100644 --- a/sdk/javascript/2.0/messaging-typing-indicators.mdx +++ b/sdk/javascript/2.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/javascript/2.0/messaging.mdx b/sdk/javascript/2.0/messaging.mdx index e80c22ebc..4af3f1afb 100644 --- a/sdk/javascript/2.0/messaging.mdx +++ b/sdk/javascript/2.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/javascript/2.0/overview.mdx b/sdk/javascript/2.0/overview.mdx index fabd64a8d..231d366a5 100644 --- a/sdk/javascript/2.0/overview.mdx +++ b/sdk/javascript/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/javascript/2.0/rate-limits.mdx b/sdk/javascript/2.0/rate-limits.mdx index eef6db229..2fd4f02bf 100644 --- a/sdk/javascript/2.0/rate-limits.mdx +++ b/sdk/javascript/2.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/javascript/2.0/resources-all-real-time-listeners.mdx b/sdk/javascript/2.0/resources-all-real-time-listeners.mdx index 2f709cf78..00b421fd3 100644 --- a/sdk/javascript/2.0/resources-all-real-time-listeners.mdx +++ b/sdk/javascript/2.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/javascript/2.0/resources-upgrading-from-v1.mdx b/sdk/javascript/2.0/resources-upgrading-from-v1.mdx index a0d163bc6..1eef191d8 100644 --- a/sdk/javascript/2.0/resources-upgrading-from-v1.mdx +++ b/sdk/javascript/2.0/resources-upgrading-from-v1.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V1" +description: "Upgrading From V1 — CometChat documentation." --- diff --git a/sdk/javascript/2.0/resources.mdx b/sdk/javascript/2.0/resources.mdx index 2286c045c..df5bc8af6 100644 --- a/sdk/javascript/2.0/resources.mdx +++ b/sdk/javascript/2.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/javascript/2.0/setup.mdx b/sdk/javascript/2.0/setup.mdx index 0961058e4..4ff9c00e2 100644 --- a/sdk/javascript/2.0/setup.mdx +++ b/sdk/javascript/2.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/javascript/2.0/threaded-messages.mdx b/sdk/javascript/2.0/threaded-messages.mdx index 8315d5fe8..bcc13b87b 100644 --- a/sdk/javascript/2.0/threaded-messages.mdx +++ b/sdk/javascript/2.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/javascript/2.0/user-presence.mdx b/sdk/javascript/2.0/user-presence.mdx index a3ad964e0..584b3de63 100644 --- a/sdk/javascript/2.0/user-presence.mdx +++ b/sdk/javascript/2.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- @@ -26,7 +27,7 @@ You need to register the `UserListener` using the `addUserListener()` method whe -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addUserListener( @@ -58,7 +59,7 @@ We suggest adding this method when not in use. -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeUserListener(listenerID); ``` diff --git a/sdk/javascript/2.0/users-block-users.mdx b/sdk/javascript/2.0/users-block-users.mdx index a2a369ed6..e1adf239a 100644 --- a/sdk/javascript/2.0/users-block-users.mdx +++ b/sdk/javascript/2.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/javascript/2.0/users-retrieve-users.mdx b/sdk/javascript/2.0/users-retrieve-users.mdx index 42b67946a..a6826eeb8 100644 --- a/sdk/javascript/2.0/users-retrieve-users.mdx +++ b/sdk/javascript/2.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/javascript/2.0/users-user-management.mdx b/sdk/javascript/2.0/users-user-management.mdx index adc64cd87..9d47d89e3 100644 --- a/sdk/javascript/2.0/users-user-management.mdx +++ b/sdk/javascript/2.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/javascript/2.0/users.mdx b/sdk/javascript/2.0/users.mdx index f2275296b..68c300c3d 100644 --- a/sdk/javascript/2.0/users.mdx +++ b/sdk/javascript/2.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/javascript/2.0/webhooks.mdx b/sdk/javascript/2.0/webhooks.mdx index 9f68d05ee..ae3b4a614 100644 --- a/sdk/javascript/2.0/webhooks.mdx +++ b/sdk/javascript/2.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/javascript/3.0/advanced-connection-listeners.mdx b/sdk/javascript/3.0/advanced-connection-listeners.mdx index ccd97233f..89b58a6a1 100644 --- a/sdk/javascript/3.0/advanced-connection-listeners.mdx +++ b/sdk/javascript/3.0/advanced-connection-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/javascript/3.0/advanced-managing-web-socket-connections-manually.mdx b/sdk/javascript/3.0/advanced-managing-web-socket-connections-manually.mdx index 96acb8544..69045aa22 100644 --- a/sdk/javascript/3.0/advanced-managing-web-socket-connections-manually.mdx +++ b/sdk/javascript/3.0/advanced-managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/javascript/3.0/advanced.mdx b/sdk/javascript/3.0/advanced.mdx index 7a8e791f6..931f86642 100644 --- a/sdk/javascript/3.0/advanced.mdx +++ b/sdk/javascript/3.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/javascript/3.0/angular-3-0-overview.mdx b/sdk/javascript/3.0/angular-3-0-overview.mdx index 59d7e5f7c..79acf68b2 100644 --- a/sdk/javascript/3.0/angular-3-0-overview.mdx +++ b/sdk/javascript/3.0/angular-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "Angular UI Kit" url: "/ui-kit/angular/3.0/overview" +description: "Navigate to Angular UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/javascript/3.0/authentication-login-listeners.mdx b/sdk/javascript/3.0/authentication-login-listeners.mdx index 906f2438d..48818b678 100644 --- a/sdk/javascript/3.0/authentication-login-listeners.mdx +++ b/sdk/javascript/3.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listener" +description: "Login Listener — CometChat documentation." --- diff --git a/sdk/javascript/3.0/authentication.mdx b/sdk/javascript/3.0/authentication.mdx index 5b996e867..09445afea 100644 --- a/sdk/javascript/3.0/authentication.mdx +++ b/sdk/javascript/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/javascript/3.0/bots.mdx b/sdk/javascript/3.0/bots.mdx index 124af6f40..e551f1999 100644 --- a/sdk/javascript/3.0/bots.mdx +++ b/sdk/javascript/3.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/javascript/3.0/calling-custom-css.mdx b/sdk/javascript/3.0/calling-custom-css.mdx index 47cf19e39..f77b8a0dc 100644 --- a/sdk/javascript/3.0/calling-custom-css.mdx +++ b/sdk/javascript/3.0/calling-custom-css.mdx @@ -1,5 +1,6 @@ --- title: "Custom CSS" +description: "Custom CSS — CometChat documentation." --- diff --git a/sdk/javascript/3.0/calling-default-calling.mdx b/sdk/javascript/3.0/calling-default-calling.mdx index be3269d75..5e5631e10 100644 --- a/sdk/javascript/3.0/calling-default-calling.mdx +++ b/sdk/javascript/3.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- @@ -25,7 +26,7 @@ The `initiateCall()` method sends a call request to a user or a group. -``` +```javascript var receiverID = "UID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.USER; @@ -44,7 +45,7 @@ outGoingCall => { -``` +```javascript var receiverID = "GUID"; var callType = CometChat.CALL_TYPE.VIDEO; var receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -63,7 +64,7 @@ outGoingCall => { -``` +```javascript var receiverID: string = "UID"; var callType: string = CometChat.CALL_TYPE.VIDEO; var receiverType: string = CometChat.RECEIVER_TYPE.USER; @@ -82,7 +83,7 @@ CometChat.initiateCall(call).then( -``` +```javascript var receiverID: string = "GUID"; var callType: string = CometChat.CALL_TYPE.VIDEO; var receiverType: string = CometChat.RECEIVER_TYPE.GROUP; @@ -118,7 +119,7 @@ Wherever you wish to receive the call events in, you need to register the `CallL -``` +```javascript var listnerID = "UNIQUE_LISTENER_ID"; CometChat.addCallListener( listnerID, @@ -175,7 +176,7 @@ We recommend you remove the listener once the activity or fragment is not in use -``` +```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeCallListener(listenerID); @@ -208,7 +209,7 @@ Once you have received an incoming call from a user or in any group, to accept t -``` +```javascript var sessionID = "SESSION_ID"; CometChat.acceptCall(sessionID).then( @@ -249,7 +250,7 @@ To reject the incoming call once it is received using the `rejectCall()` method. -``` +```javascript var sessionID = "SESSION_ID"; var status = CometChat.CALL_STATUS.REJECTED; @@ -478,7 +479,7 @@ You can call the `muteAudio(mute: boolean)` method to mute/unmute your audio str -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.muteAudio(true); ``` @@ -503,7 +504,7 @@ You can call the `pauseVideo(pause: boolean)` method to pause/unpause video stre -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.pauseVideo(true); ``` @@ -528,7 +529,7 @@ You can call `startScreenShare()` to start the screen share. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.startScreenShare(); ``` @@ -551,7 +552,7 @@ You can call `stopScreenShare()` to stop the screen share. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.stopScreenShare(); ``` @@ -574,7 +575,7 @@ You can use the `setMode(mode: string)` method to set the mode. -``` +```javascript let mode = CometChat.CALL_MODE.SPOTLIGHT; let callController = CometChat.CallController.getInstance(); callController.setMode(mode); @@ -599,7 +600,7 @@ You can use the `getAudioInputDevices()` method to get all the available audio i -``` +```javascript let callController = CometChat.CallController.getInstance(); let audioInputDevices = callController.getAudioInputDevices(); ``` @@ -622,7 +623,7 @@ You can use the `getAudioOutputDevices()` method to get all the available audio -``` +```javascript let callController = CometChat.CallController.getInstance(); let audioOutputDevices = callController.getAudioOutputDevices(); ``` @@ -645,7 +646,7 @@ You can use the `getVideoInputDevices()` method to get all the available video i -``` +```javascript let callController = CometChat.CallController.getInstance(); let videoInputDevices = callController.getVideoInputDevices(); ``` @@ -668,7 +669,7 @@ You can use the `setAudioInputDevice(deviceId)` method to set the active audio i -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setAudioInputDevice(deviceId); ``` @@ -691,7 +692,7 @@ You can use the `setAudioOutputDevice(deviceId)` method to set the active audio -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setAudioOutputDevice(deviceId); ``` @@ -714,7 +715,7 @@ You can use the `setVideoInputDevice(deviceId)` method to set the active video i -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setVideoInputDevice(deviceId); ``` @@ -794,7 +795,7 @@ CometChat provides a method to get the details of the call that is currently act -``` +```javascript let activeCall = CometChat.getActiveCall(); ``` @@ -821,7 +822,7 @@ In order to get the number of participants in any call, you can use the `getCall -``` +```javascript let sessionId = "CALL_SESSION_ID"; let callType = "DEFAULT"; diff --git a/sdk/javascript/3.0/calling-direct-calling.mdx b/sdk/javascript/3.0/calling-direct-calling.mdx index 2cf5702c7..c21b4b158 100644 --- a/sdk/javascript/3.0/calling-direct-calling.mdx +++ b/sdk/javascript/3.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- @@ -180,7 +181,7 @@ You can call the `muteAudio(mute: boolean)` method to mute/unmute your audio str -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.muteAudio(true); ``` @@ -205,7 +206,7 @@ You can call the `pauseVideo(pause: boolean)` method to pause/unpause video stre -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.pauseVideo(true); ``` @@ -230,7 +231,7 @@ You can call `startScreenShare()` to start the screen share. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.startScreenShare(); ``` @@ -253,7 +254,7 @@ You can call `stopScreenShare()` to stop the screen share. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.stopScreenShare(); ``` @@ -276,7 +277,7 @@ You can use the `setMode(mode: string)` method to set the mode. -``` +```javascript let mode = CometChat.CALL_MODE.SPOTLIGHT; let callController = CometChat.CallController.getInstance(); callController.setMode(mode); @@ -301,7 +302,7 @@ You can use the `getAudioInputDevices()` method to get all the available audio i -``` +```javascript let callController = CometChat.CallController.getInstance(); let audioInputDevices = callController.getAudioInputDevices(); ``` @@ -324,7 +325,7 @@ You can use the `getAudioOutputDevices()` method to get all the available audio -``` +```javascript let callController = CometChat.CallController.getInstance(); let audioOutputDevices = callController.getAudioOutputDevices(); ``` @@ -347,7 +348,7 @@ You can use the `getVideoInputDevices()` method to get all the available video i -``` +```javascript let callController = CometChat.CallController.getInstance(); let videoInputDevices = callController.getVideoInputDevices(); ``` @@ -370,7 +371,7 @@ You can use the `setAudioInputDevice(deviceId)` method to set the active audio i -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setAudioInputDevice(deviceId); ``` @@ -393,7 +394,7 @@ You can use the `setAudioOutputDevice(deviceId)` method to set the active audio -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setAudioOutputDevice(deviceId); ``` @@ -416,7 +417,7 @@ You can use the `setVideoInputDevice(deviceId)` method to set the active video i -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.setVideoInputDevice(deviceId); ``` @@ -502,7 +503,7 @@ In order to get the number of participants in any call, you can use the `getCall -``` +```javascript let sessionId = "CALL_SESSION_ID"; let callType = "DIRECT"; diff --git a/sdk/javascript/3.0/calling-recording-v3.mdx b/sdk/javascript/3.0/calling-recording-v3.mdx index c015871b9..d1accff04 100644 --- a/sdk/javascript/3.0/calling-recording-v3.mdx +++ b/sdk/javascript/3.0/calling-recording-v3.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/javascript/3.0/calling-recording.mdx b/sdk/javascript/3.0/calling-recording.mdx index dadc4c0d8..86159f3b4 100644 --- a/sdk/javascript/3.0/calling-recording.mdx +++ b/sdk/javascript/3.0/calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- @@ -16,7 +17,7 @@ A basic example of how to make changes to implement recording for a direct call/ -``` +```javascript // Add listeners onRecordingStarted and onRecordingStopped to the startCall method let sessionId = "SESSION_ID"; let audioOnly = false; @@ -49,7 +50,7 @@ CometChat.startCall( -``` +```javascript // Add listeners onRecordingStarted and onRecordingStopped to the startCall method let sessionId = "SESSION_ID"; let audioOnly = false; @@ -82,7 +83,7 @@ CometChat.startCall( -``` +```javascript // Add listeners onRecordingStarted and onRecordingStopped to the startCall method. let sessionId = "SESSION_ID"; let audioOnly = false; @@ -115,7 +116,7 @@ CometChat.startCall( -``` +```javascript // Add listeners onRecordingStarted and onRecordingStopped to the startCall method let sessionId = "SESSION_ID"; let audioOnly = false; @@ -172,7 +173,7 @@ You can use the startRecording() method to start call recording. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.startRecording(); ``` @@ -195,7 +196,7 @@ You can use the stopRecording() method to stop call recording. -``` +```javascript let callController = CometChat.CallController.getInstance(); callController.stopRecording(); ``` diff --git a/sdk/javascript/3.0/calling-v3.mdx b/sdk/javascript/3.0/calling-v3.mdx index 8c243eec0..a20e123d6 100644 --- a/sdk/javascript/3.0/calling-v3.mdx +++ b/sdk/javascript/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Calling V3" +description: "Calling V3 — CometChat documentation." --- diff --git a/sdk/javascript/3.0/calling.mdx b/sdk/javascript/3.0/calling.mdx index 7f5598c58..1bc1b623d 100644 --- a/sdk/javascript/3.0/calling.mdx +++ b/sdk/javascript/3.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/javascript/3.0/extensions-overview.mdx b/sdk/javascript/3.0/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/javascript/3.0/extensions-overview.mdx +++ b/sdk/javascript/3.0/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/javascript/3.0/groups-add-members-to-group.mdx b/sdk/javascript/3.0/groups-add-members-to-group.mdx index c4706b0e2..0813993f2 100644 --- a/sdk/javascript/3.0/groups-add-members-to-group.mdx +++ b/sdk/javascript/3.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-change-member-scope.mdx b/sdk/javascript/3.0/groups-change-member-scope.mdx index 213e92890..a5dbce3f7 100644 --- a/sdk/javascript/3.0/groups-change-member-scope.mdx +++ b/sdk/javascript/3.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-create-group.mdx b/sdk/javascript/3.0/groups-create-group.mdx index 025dd887e..27562a39e 100644 --- a/sdk/javascript/3.0/groups-create-group.mdx +++ b/sdk/javascript/3.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-delete-group.mdx b/sdk/javascript/3.0/groups-delete-group.mdx index 54bcf4137..4ffa95881 100644 --- a/sdk/javascript/3.0/groups-delete-group.mdx +++ b/sdk/javascript/3.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-join-group.mdx b/sdk/javascript/3.0/groups-join-group.mdx index d0a4fa701..cf21bb51b 100644 --- a/sdk/javascript/3.0/groups-join-group.mdx +++ b/sdk/javascript/3.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-kick-ban-members.mdx b/sdk/javascript/3.0/groups-kick-ban-members.mdx index 72c6a6ef8..7d66e7f1d 100644 --- a/sdk/javascript/3.0/groups-kick-ban-members.mdx +++ b/sdk/javascript/3.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-leave-group.mdx b/sdk/javascript/3.0/groups-leave-group.mdx index a9534b8aa..3955aa361 100644 --- a/sdk/javascript/3.0/groups-leave-group.mdx +++ b/sdk/javascript/3.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-retrieve-group-members.mdx b/sdk/javascript/3.0/groups-retrieve-group-members.mdx index f9aac9ada..d5fbef1d2 100644 --- a/sdk/javascript/3.0/groups-retrieve-group-members.mdx +++ b/sdk/javascript/3.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-retrieve-groups.mdx b/sdk/javascript/3.0/groups-retrieve-groups.mdx index 7bd499a6e..128b23924 100644 --- a/sdk/javascript/3.0/groups-retrieve-groups.mdx +++ b/sdk/javascript/3.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-transfer-group-ownership.mdx b/sdk/javascript/3.0/groups-transfer-group-ownership.mdx index 1de52a892..9cec3fa85 100644 --- a/sdk/javascript/3.0/groups-transfer-group-ownership.mdx +++ b/sdk/javascript/3.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups-update-group.mdx b/sdk/javascript/3.0/groups-update-group.mdx index 289c8598f..317ab2867 100644 --- a/sdk/javascript/3.0/groups-update-group.mdx +++ b/sdk/javascript/3.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/javascript/3.0/groups.mdx b/sdk/javascript/3.0/groups.mdx index 99e877026..be06c2c42 100644 --- a/sdk/javascript/3.0/groups.mdx +++ b/sdk/javascript/3.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/javascript/3.0/key-concepts.mdx b/sdk/javascript/3.0/key-concepts.mdx index e0136703e..24ef65f82 100644 --- a/sdk/javascript/3.0/key-concepts.mdx +++ b/sdk/javascript/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/javascript/3.0/message-structure-and-hierarchy.mdx b/sdk/javascript/3.0/message-structure-and-hierarchy.mdx index c678ce33e..79a6c7b50 100644 --- a/sdk/javascript/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/javascript/3.0/message-structure-and-hierarchy.mdx @@ -1,6 +1,7 @@ --- title: "Message" sidebarTitle: "Message Structure And Hierarchy" +description: "Message — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-additional-message-filtering.mdx b/sdk/javascript/3.0/messaging-additional-message-filtering.mdx index 4b66c4d96..31ecfa4ef 100644 --- a/sdk/javascript/3.0/messaging-additional-message-filtering.mdx +++ b/sdk/javascript/3.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-delete-conversation.mdx b/sdk/javascript/3.0/messaging-delete-conversation.mdx index 559da9ede..c2f3c53bb 100644 --- a/sdk/javascript/3.0/messaging-delete-conversation.mdx +++ b/sdk/javascript/3.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-delete-message.mdx b/sdk/javascript/3.0/messaging-delete-message.mdx index cdcd20b14..08bd65da1 100644 --- a/sdk/javascript/3.0/messaging-delete-message.mdx +++ b/sdk/javascript/3.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-edit-message.mdx b/sdk/javascript/3.0/messaging-edit-message.mdx index 57fe2321e..a5fd2a9eb 100644 --- a/sdk/javascript/3.0/messaging-edit-message.mdx +++ b/sdk/javascript/3.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-receipts.mdx b/sdk/javascript/3.0/messaging-receipts.mdx index 279d1ae9a..230a576a1 100644 --- a/sdk/javascript/3.0/messaging-receipts.mdx +++ b/sdk/javascript/3.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-receive-message.mdx b/sdk/javascript/3.0/messaging-receive-message.mdx index d9baf6d72..bc3527fb3 100644 --- a/sdk/javascript/3.0/messaging-receive-message.mdx +++ b/sdk/javascript/3.0/messaging-receive-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-retrieve-conversations.mdx b/sdk/javascript/3.0/messaging-retrieve-conversations.mdx index 55288ecc2..775aad452 100644 --- a/sdk/javascript/3.0/messaging-retrieve-conversations.mdx +++ b/sdk/javascript/3.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-send-message.mdx b/sdk/javascript/3.0/messaging-send-message.mdx index 37e835d72..56fa371b7 100644 --- a/sdk/javascript/3.0/messaging-send-message.mdx +++ b/sdk/javascript/3.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-transient-messages.mdx b/sdk/javascript/3.0/messaging-transient-messages.mdx index d78d3a1fd..43a3b2e1d 100644 --- a/sdk/javascript/3.0/messaging-transient-messages.mdx +++ b/sdk/javascript/3.0/messaging-transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging-typing-indicators.mdx b/sdk/javascript/3.0/messaging-typing-indicators.mdx index 75a16c091..22ea1c61e 100644 --- a/sdk/javascript/3.0/messaging-typing-indicators.mdx +++ b/sdk/javascript/3.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/javascript/3.0/messaging.mdx b/sdk/javascript/3.0/messaging.mdx index 365257af6..f521eed96 100644 --- a/sdk/javascript/3.0/messaging.mdx +++ b/sdk/javascript/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/javascript/3.0/overview.mdx b/sdk/javascript/3.0/overview.mdx index 010d8a3e8..4ac12ab35 100644 --- a/sdk/javascript/3.0/overview.mdx +++ b/sdk/javascript/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/javascript/3.0/presenter-mode.mdx b/sdk/javascript/3.0/presenter-mode.mdx index 7cd40d7d1..be97f8287 100644 --- a/sdk/javascript/3.0/presenter-mode.mdx +++ b/sdk/javascript/3.0/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/javascript/3.0/rate-limits.mdx b/sdk/javascript/3.0/rate-limits.mdx index 29710e2cd..116605797 100644 --- a/sdk/javascript/3.0/rate-limits.mdx +++ b/sdk/javascript/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/javascript/3.0/react-v3-overview.mdx b/sdk/javascript/3.0/react-v3-overview.mdx index 3c37b0075..c30471a4f 100644 --- a/sdk/javascript/3.0/react-v3-overview.mdx +++ b/sdk/javascript/3.0/react-v3-overview.mdx @@ -1,4 +1,5 @@ --- title: "React UI Kit" url: "/ui-kit/react/v3/overview" +description: "Navigate to React UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/javascript/3.0/resources-all-real-time-listeners.mdx b/sdk/javascript/3.0/resources-all-real-time-listeners.mdx index 6b7aec301..e6a60b227 100644 --- a/sdk/javascript/3.0/resources-all-real-time-listeners.mdx +++ b/sdk/javascript/3.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/javascript/3.0/resources-upgrading-from-v2.mdx b/sdk/javascript/3.0/resources-upgrading-from-v2.mdx index fc218197b..778988c9f 100644 --- a/sdk/javascript/3.0/resources-upgrading-from-v2.mdx +++ b/sdk/javascript/3.0/resources-upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/javascript/3.0/resources.mdx b/sdk/javascript/3.0/resources.mdx index 40d8fc035..21e25b466 100644 --- a/sdk/javascript/3.0/resources.mdx +++ b/sdk/javascript/3.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/javascript/3.0/setup.mdx b/sdk/javascript/3.0/setup.mdx index cee48f13c..c84e52c18 100644 --- a/sdk/javascript/3.0/setup.mdx +++ b/sdk/javascript/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/javascript/3.0/threaded-messages.mdx b/sdk/javascript/3.0/threaded-messages.mdx index e04c46384..72fbc4422 100644 --- a/sdk/javascript/3.0/threaded-messages.mdx +++ b/sdk/javascript/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/javascript/3.0/user-presence.mdx b/sdk/javascript/3.0/user-presence.mdx index 8a72316c8..34fb52ad9 100644 --- a/sdk/javascript/3.0/user-presence.mdx +++ b/sdk/javascript/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/javascript/3.0/users-block-users.mdx b/sdk/javascript/3.0/users-block-users.mdx index 196127689..d3b3d675f 100644 --- a/sdk/javascript/3.0/users-block-users.mdx +++ b/sdk/javascript/3.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/javascript/3.0/users-retrieve-users.mdx b/sdk/javascript/3.0/users-retrieve-users.mdx index 5d6d74d6b..1ac45c46f 100644 --- a/sdk/javascript/3.0/users-retrieve-users.mdx +++ b/sdk/javascript/3.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/javascript/3.0/users-user-management.mdx b/sdk/javascript/3.0/users-user-management.mdx index 59d6b4c65..cb7fcdf84 100644 --- a/sdk/javascript/3.0/users-user-management.mdx +++ b/sdk/javascript/3.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/javascript/3.0/users.mdx b/sdk/javascript/3.0/users.mdx index 2682ae1a5..c830384fe 100644 --- a/sdk/javascript/3.0/users.mdx +++ b/sdk/javascript/3.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/javascript/3.0/v3-default-call.mdx b/sdk/javascript/3.0/v3-default-call.mdx index 2486c1b10..45181698c 100644 --- a/sdk/javascript/3.0/v3-default-call.mdx +++ b/sdk/javascript/3.0/v3-default-call.mdx @@ -1,5 +1,6 @@ --- title: "Default Call" +description: "Default Call — CometChat documentation." --- diff --git a/sdk/javascript/3.0/v3-direct-calling.mdx b/sdk/javascript/3.0/v3-direct-calling.mdx index a8ce467d4..e96ea6731 100644 --- a/sdk/javascript/3.0/v3-direct-calling.mdx +++ b/sdk/javascript/3.0/v3-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/javascript/3.0/v3-setup.mdx b/sdk/javascript/3.0/v3-setup.mdx index 454dffdca..7885be1bd 100644 --- a/sdk/javascript/3.0/v3-setup.mdx +++ b/sdk/javascript/3.0/v3-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/javascript/3.0/video-view-customisation-v3.mdx b/sdk/javascript/3.0/video-view-customisation-v3.mdx index f75e3a1cb..8fdfa14e1 100644 --- a/sdk/javascript/3.0/video-view-customisation-v3.mdx +++ b/sdk/javascript/3.0/video-view-customisation-v3.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/javascript/3.0/video-view-customisation.mdx b/sdk/javascript/3.0/video-view-customisation.mdx index b54465294..0522c1ab4 100644 --- a/sdk/javascript/3.0/video-view-customisation.mdx +++ b/sdk/javascript/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/javascript/3.0/virtual-background-v3.mdx b/sdk/javascript/3.0/virtual-background-v3.mdx index e1b162460..8179e1da6 100644 --- a/sdk/javascript/3.0/virtual-background-v3.mdx +++ b/sdk/javascript/3.0/virtual-background-v3.mdx @@ -1,5 +1,6 @@ --- title: "Virtual Background" +description: "Virtual Background — CometChat documentation." --- diff --git a/sdk/javascript/3.0/virtual-background.mdx b/sdk/javascript/3.0/virtual-background.mdx index 175298821..e3f027a28 100644 --- a/sdk/javascript/3.0/virtual-background.mdx +++ b/sdk/javascript/3.0/virtual-background.mdx @@ -1,5 +1,6 @@ --- title: "Virtual Background" +description: "Virtual Background — CometChat documentation." --- diff --git a/sdk/javascript/3.0/vue-3-0-overview.mdx b/sdk/javascript/3.0/vue-3-0-overview.mdx index ec9842fe0..f5d21f844 100644 --- a/sdk/javascript/3.0/vue-3-0-overview.mdx +++ b/sdk/javascript/3.0/vue-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "Vue UI Kit" url: "/ui-kit/vue/3.0/overview" +description: "Navigate to Vue UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/javascript/3.0/webhooks.mdx b/sdk/javascript/3.0/webhooks.mdx index 9f68d05ee..ae3b4a614 100644 --- a/sdk/javascript/3.0/webhooks.mdx +++ b/sdk/javascript/3.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/javascript/additional-message-filtering.mdx b/sdk/javascript/additional-message-filtering.mdx index 6648ba35e..94d304dd9 100644 --- a/sdk/javascript/additional-message-filtering.mdx +++ b/sdk/javascript/additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/javascript/advanced-overview.mdx b/sdk/javascript/advanced-overview.mdx index 7a8e791f6..91201470d 100644 --- a/sdk/javascript/advanced-overview.mdx +++ b/sdk/javascript/advanced-overview.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Overview of Advanced in CometChat." --- diff --git a/sdk/javascript/ai-agents.mdx b/sdk/javascript/ai-agents.mdx index f4b88d96a..9085976f9 100644 --- a/sdk/javascript/ai-agents.mdx +++ b/sdk/javascript/ai-agents.mdx @@ -1,5 +1,6 @@ --- title: "AI Agents" +description: "AI Agents — CometChat documentation." --- # AI Agents Overview diff --git a/sdk/javascript/ai-chatbots-overview.mdx b/sdk/javascript/ai-chatbots-overview.mdx index a5e168a8e..1280e5391 100644 --- a/sdk/javascript/ai-chatbots-overview.mdx +++ b/sdk/javascript/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "Bots" url: "/ai-chatbots/overview" +description: "Navigate to Bots documentation." --- \ No newline at end of file diff --git a/sdk/javascript/ai-moderation.mdx b/sdk/javascript/ai-moderation.mdx index 768de5403..ba2fc84af 100644 --- a/sdk/javascript/ai-moderation.mdx +++ b/sdk/javascript/ai-moderation.mdx @@ -1,5 +1,6 @@ --- title: "AI Moderation" +description: "AI Moderation — CometChat documentation." --- ## Overview diff --git a/sdk/javascript/ai-user-copilot-overview.mdx b/sdk/javascript/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/javascript/ai-user-copilot-overview.mdx +++ b/sdk/javascript/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/javascript/all-real-time-listeners.mdx b/sdk/javascript/all-real-time-listeners.mdx index a70adfb54..e555c3c2e 100644 --- a/sdk/javascript/all-real-time-listeners.mdx +++ b/sdk/javascript/all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/javascript/angular-overview.mdx b/sdk/javascript/angular-overview.mdx index 8fc3391f7..005a07724 100644 --- a/sdk/javascript/angular-overview.mdx +++ b/sdk/javascript/angular-overview.mdx @@ -1,4 +1,5 @@ --- title: "Angular Overview" url: "/ui-kit/angular/overview" +description: "Navigate to Angular Overview documentation." --- \ No newline at end of file diff --git a/sdk/javascript/authentication-overview.mdx b/sdk/javascript/authentication-overview.mdx index 1fc7839e8..a38cbfef9 100644 --- a/sdk/javascript/authentication-overview.mdx +++ b/sdk/javascript/authentication-overview.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Overview of Authentication in CometChat." --- diff --git a/sdk/javascript/block-users.mdx b/sdk/javascript/block-users.mdx index 738e07ab1..318e0918b 100644 --- a/sdk/javascript/block-users.mdx +++ b/sdk/javascript/block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/javascript/call-logs.mdx b/sdk/javascript/call-logs.mdx index 74f2b87af..5415d2fbb 100644 --- a/sdk/javascript/call-logs.mdx +++ b/sdk/javascript/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/sdk/javascript/calling-overview.mdx b/sdk/javascript/calling-overview.mdx index 18bc0ea62..c7398619c 100644 --- a/sdk/javascript/calling-overview.mdx +++ b/sdk/javascript/calling-overview.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Overview of Calling in CometChat." --- ## Overview diff --git a/sdk/javascript/calling-setup.mdx b/sdk/javascript/calling-setup.mdx index 7cd07247e..11eb72ecf 100644 --- a/sdk/javascript/calling-setup.mdx +++ b/sdk/javascript/calling-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/javascript/changelog.mdx b/sdk/javascript/changelog.mdx index 421f16350..9ab57a411 100644 --- a/sdk/javascript/changelog.mdx +++ b/sdk/javascript/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-javascript/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/sdk/javascript/connection-status.mdx b/sdk/javascript/connection-status.mdx index 7c67128bb..c54279825 100644 --- a/sdk/javascript/connection-status.mdx +++ b/sdk/javascript/connection-status.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/javascript/create-group.mdx b/sdk/javascript/create-group.mdx index 29eed3de5..0d91cf600 100644 --- a/sdk/javascript/create-group.mdx +++ b/sdk/javascript/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/javascript/custom-css.mdx b/sdk/javascript/custom-css.mdx index 56698ccf3..dc5cfd078 100644 --- a/sdk/javascript/custom-css.mdx +++ b/sdk/javascript/custom-css.mdx @@ -1,5 +1,6 @@ --- title: "Custom CSS" +description: "Custom CSS — CometChat documentation." --- diff --git a/sdk/javascript/default-call.mdx b/sdk/javascript/default-call.mdx index e6c274931..cbcd3f46c 100644 --- a/sdk/javascript/default-call.mdx +++ b/sdk/javascript/default-call.mdx @@ -1,5 +1,6 @@ --- title: "Ringing" +description: "Ringing — CometChat documentation." --- ## Overview diff --git a/sdk/javascript/delete-conversation.mdx b/sdk/javascript/delete-conversation.mdx index 5fe1295f8..f7470da83 100644 --- a/sdk/javascript/delete-conversation.mdx +++ b/sdk/javascript/delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/javascript/delete-group.mdx b/sdk/javascript/delete-group.mdx index 54bcf4137..4ffa95881 100644 --- a/sdk/javascript/delete-group.mdx +++ b/sdk/javascript/delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/javascript/delete-message.mdx b/sdk/javascript/delete-message.mdx index d84b07614..fc5c264eb 100644 --- a/sdk/javascript/delete-message.mdx +++ b/sdk/javascript/delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/javascript/delivery-read-receipts.mdx b/sdk/javascript/delivery-read-receipts.mdx index 464e319fd..46cbc5210 100644 --- a/sdk/javascript/delivery-read-receipts.mdx +++ b/sdk/javascript/delivery-read-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/javascript/direct-call.mdx b/sdk/javascript/direct-call.mdx index 0bedb0234..8733bd68d 100644 --- a/sdk/javascript/direct-call.mdx +++ b/sdk/javascript/direct-call.mdx @@ -1,5 +1,6 @@ --- title: "Call Session" +description: "Call Session — CometChat documentation." --- ## Overview diff --git a/sdk/javascript/edit-message.mdx b/sdk/javascript/edit-message.mdx index 8b91b4aea..d7ed21d31 100644 --- a/sdk/javascript/edit-message.mdx +++ b/sdk/javascript/edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/javascript/extensions-overview.mdx b/sdk/javascript/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/javascript/extensions-overview.mdx +++ b/sdk/javascript/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/javascript/flag-message.mdx b/sdk/javascript/flag-message.mdx index 350149f5d..e39a9612b 100644 --- a/sdk/javascript/flag-message.mdx +++ b/sdk/javascript/flag-message.mdx @@ -1,5 +1,6 @@ --- title: "Flag Message" +description: "Flag Message — CometChat documentation." --- ## Overview diff --git a/sdk/javascript/group-add-members.mdx b/sdk/javascript/group-add-members.mdx index 98170bf0b..b7f737869 100644 --- a/sdk/javascript/group-add-members.mdx +++ b/sdk/javascript/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/javascript/group-change-member-scope.mdx b/sdk/javascript/group-change-member-scope.mdx index 422ae34b8..01487813a 100644 --- a/sdk/javascript/group-change-member-scope.mdx +++ b/sdk/javascript/group-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/javascript/group-kick-ban-members.mdx b/sdk/javascript/group-kick-ban-members.mdx index 7433686cd..5505536ee 100644 --- a/sdk/javascript/group-kick-ban-members.mdx +++ b/sdk/javascript/group-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban Or Kick Member From A Group" +description: "Ban Or Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/javascript/groups-overview.mdx b/sdk/javascript/groups-overview.mdx index 4f3d1c363..e89864c6f 100644 --- a/sdk/javascript/groups-overview.mdx +++ b/sdk/javascript/groups-overview.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of Groups in CometChat." --- diff --git a/sdk/javascript/interactive-messages.mdx b/sdk/javascript/interactive-messages.mdx index 2f083f734..1217c5c6d 100644 --- a/sdk/javascript/interactive-messages.mdx +++ b/sdk/javascript/interactive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Interactive Messages" +description: "Interactive Messages — CometChat documentation." --- diff --git a/sdk/javascript/join-group.mdx b/sdk/javascript/join-group.mdx index 744f9e723..c6ed23f1a 100644 --- a/sdk/javascript/join-group.mdx +++ b/sdk/javascript/join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/javascript/key-concepts.mdx b/sdk/javascript/key-concepts.mdx index 37e5885f1..27f5efff2 100644 --- a/sdk/javascript/key-concepts.mdx +++ b/sdk/javascript/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/javascript/leave-group.mdx b/sdk/javascript/leave-group.mdx index a9534b8aa..3955aa361 100644 --- a/sdk/javascript/leave-group.mdx +++ b/sdk/javascript/leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/javascript/login-listener.mdx b/sdk/javascript/login-listener.mdx index 4c98ff4c4..d7a7f2a27 100644 --- a/sdk/javascript/login-listener.mdx +++ b/sdk/javascript/login-listener.mdx @@ -1,5 +1,6 @@ --- title: "Login Listener" +description: "Login Listener — CometChat documentation." --- diff --git a/sdk/javascript/managing-web-sockets-connections-manually.mdx b/sdk/javascript/managing-web-sockets-connections-manually.mdx index 90cf107b5..fadebc229 100644 --- a/sdk/javascript/managing-web-sockets-connections-manually.mdx +++ b/sdk/javascript/managing-web-sockets-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Sockets Connections Manually" +description: "Managing Web Sockets Connections Manually — CometChat documentation." --- diff --git a/sdk/javascript/mentions.mdx b/sdk/javascript/mentions.mdx index c3ce4742a..495ac67f8 100644 --- a/sdk/javascript/mentions.mdx +++ b/sdk/javascript/mentions.mdx @@ -1,5 +1,6 @@ --- title: "Mentions" +description: "Mentions — CometChat documentation." --- diff --git a/sdk/javascript/message-structure-and-hierarchy.mdx b/sdk/javascript/message-structure-and-hierarchy.mdx index 797cb91df..35310e63c 100644 --- a/sdk/javascript/message-structure-and-hierarchy.mdx +++ b/sdk/javascript/message-structure-and-hierarchy.mdx @@ -1,6 +1,7 @@ --- title: "Message" sidebarTitle: "Message Structure And Hierarchy" +description: "Message — CometChat documentation." --- diff --git a/sdk/javascript/messaging-overview.mdx b/sdk/javascript/messaging-overview.mdx index 5a8902b43..a7f7bc793 100644 --- a/sdk/javascript/messaging-overview.mdx +++ b/sdk/javascript/messaging-overview.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of Messaging in CometChat." --- diff --git a/sdk/javascript/overview.mdx b/sdk/javascript/overview.mdx index 05fa4c3d2..c004155ee 100644 --- a/sdk/javascript/overview.mdx +++ b/sdk/javascript/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/javascript/presenter-mode.mdx b/sdk/javascript/presenter-mode.mdx index 42b2bdc2a..005d80eef 100644 --- a/sdk/javascript/presenter-mode.mdx +++ b/sdk/javascript/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/javascript/rate-limits.mdx b/sdk/javascript/rate-limits.mdx index 17581b144..796b22b12 100644 --- a/sdk/javascript/rate-limits.mdx +++ b/sdk/javascript/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/javascript/react-overview.mdx b/sdk/javascript/react-overview.mdx index 20216cea4..1dd39853c 100644 --- a/sdk/javascript/react-overview.mdx +++ b/sdk/javascript/react-overview.mdx @@ -1,4 +1,5 @@ --- title: "React Overview" url: "/ui-kit/react/overview" +description: "Navigate to React Overview documentation." --- \ No newline at end of file diff --git a/sdk/javascript/reactions.mdx b/sdk/javascript/reactions.mdx index 8ac8f43fd..f1e8805a3 100644 --- a/sdk/javascript/reactions.mdx +++ b/sdk/javascript/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- diff --git a/sdk/javascript/receive-message.mdx b/sdk/javascript/receive-message.mdx index a6f9a8925..1db76f534 100644 --- a/sdk/javascript/receive-message.mdx +++ b/sdk/javascript/receive-message.mdx @@ -1,5 +1,6 @@ --- title: "Receive A Message" +description: "Receive A Message — CometChat documentation." --- diff --git a/sdk/javascript/recording.mdx b/sdk/javascript/recording.mdx index 214d56bcd..d309bbc8f 100644 --- a/sdk/javascript/recording.mdx +++ b/sdk/javascript/recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/javascript/resources-overview.mdx b/sdk/javascript/resources-overview.mdx index ea0d211bf..153ad9149 100644 --- a/sdk/javascript/resources-overview.mdx +++ b/sdk/javascript/resources-overview.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Overview of Resources in CometChat." --- diff --git a/sdk/javascript/retrieve-conversations.mdx b/sdk/javascript/retrieve-conversations.mdx index a58ef59d1..2805ade97 100644 --- a/sdk/javascript/retrieve-conversations.mdx +++ b/sdk/javascript/retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/javascript/retrieve-group-members.mdx b/sdk/javascript/retrieve-group-members.mdx index 3e21b909d..5aaca6590 100644 --- a/sdk/javascript/retrieve-group-members.mdx +++ b/sdk/javascript/retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/javascript/retrieve-groups.mdx b/sdk/javascript/retrieve-groups.mdx index 92a074c0d..97bf4b0a5 100644 --- a/sdk/javascript/retrieve-groups.mdx +++ b/sdk/javascript/retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/javascript/retrieve-users.mdx b/sdk/javascript/retrieve-users.mdx index 943df6404..cc2c7b9bb 100644 --- a/sdk/javascript/retrieve-users.mdx +++ b/sdk/javascript/retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/javascript/send-message.mdx b/sdk/javascript/send-message.mdx index ae9f8e125..793a04712 100644 --- a/sdk/javascript/send-message.mdx +++ b/sdk/javascript/send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/javascript/session-timeout.mdx b/sdk/javascript/session-timeout.mdx index 23470881f..99bf3ecb0 100644 --- a/sdk/javascript/session-timeout.mdx +++ b/sdk/javascript/session-timeout.mdx @@ -1,5 +1,6 @@ --- title: "Session Timeout Flow" +description: "Session Timeout Flow — CometChat documentation." --- diff --git a/sdk/javascript/setup-sdk.mdx b/sdk/javascript/setup-sdk.mdx index e9bdce872..6463bfc10 100644 --- a/sdk/javascript/setup-sdk.mdx +++ b/sdk/javascript/setup-sdk.mdx @@ -1,6 +1,7 @@ --- title: "Setup" sidebarTitle: "Overview" +description: "Setup — CometChat documentation." --- diff --git a/sdk/javascript/standalone-calling.mdx b/sdk/javascript/standalone-calling.mdx index 09df82d0e..aa3c73438 100644 --- a/sdk/javascript/standalone-calling.mdx +++ b/sdk/javascript/standalone-calling.mdx @@ -1,5 +1,6 @@ --- title: "Standalone Calling" +description: "Standalone Calling — CometChat documentation." --- ## Overview diff --git a/sdk/javascript/threaded-messages.mdx b/sdk/javascript/threaded-messages.mdx index e2d29a55a..75336f359 100644 --- a/sdk/javascript/threaded-messages.mdx +++ b/sdk/javascript/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/javascript/transfer-group-ownership.mdx b/sdk/javascript/transfer-group-ownership.mdx index 1de52a892..9cec3fa85 100644 --- a/sdk/javascript/transfer-group-ownership.mdx +++ b/sdk/javascript/transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/javascript/transient-messages.mdx b/sdk/javascript/transient-messages.mdx index 9f44b2267..53d837e44 100644 --- a/sdk/javascript/transient-messages.mdx +++ b/sdk/javascript/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/javascript/typing-indicators.mdx b/sdk/javascript/typing-indicators.mdx index 0174f5727..8ab8f097a 100644 --- a/sdk/javascript/typing-indicators.mdx +++ b/sdk/javascript/typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/javascript/update-group.mdx b/sdk/javascript/update-group.mdx index 113b79f8b..b3240dc97 100644 --- a/sdk/javascript/update-group.mdx +++ b/sdk/javascript/update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/javascript/upgrading-from-v3.mdx b/sdk/javascript/upgrading-from-v3.mdx index 00cf6868a..ba31dd1a9 100644 --- a/sdk/javascript/upgrading-from-v3.mdx +++ b/sdk/javascript/upgrading-from-v3.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V3" +description: "Upgrading From V3 — CometChat documentation." --- diff --git a/sdk/javascript/user-management.mdx b/sdk/javascript/user-management.mdx index b8ffb2c10..79458ee23 100644 --- a/sdk/javascript/user-management.mdx +++ b/sdk/javascript/user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/javascript/user-presence.mdx b/sdk/javascript/user-presence.mdx index 503bc0d6f..2dcf30d46 100644 --- a/sdk/javascript/user-presence.mdx +++ b/sdk/javascript/user-presence.mdx @@ -1,6 +1,7 @@ --- title: "User Presence" sidebarTitle: "Overview" +description: "User Presence — CometChat documentation." --- @@ -27,7 +28,7 @@ You need to register the `UserListener` using the `addUserListener()` method whe -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.addUserListener( @@ -78,7 +79,7 @@ We suggest adding this method when not in use. -``` +```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeUserListener(listenerID); ``` diff --git a/sdk/javascript/users-overview.mdx b/sdk/javascript/users-overview.mdx index 2193624f4..e73c7e929 100644 --- a/sdk/javascript/users-overview.mdx +++ b/sdk/javascript/users-overview.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of Users in CometChat." --- diff --git a/sdk/javascript/vue-overview.mdx b/sdk/javascript/vue-overview.mdx index ab5084a8c..9762d32a2 100644 --- a/sdk/javascript/vue-overview.mdx +++ b/sdk/javascript/vue-overview.mdx @@ -1,4 +1,5 @@ --- title: "Vue Overview" url: "/ui-kit/vue/overview" +description: "Navigate to Vue Overview documentation." --- \ No newline at end of file diff --git a/sdk/javascript/webhooks-overview.mdx b/sdk/javascript/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/javascript/webhooks-overview.mdx +++ b/sdk/javascript/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/sdk/react-native/2.0/advanced-connection-listener.mdx b/sdk/react-native/2.0/advanced-connection-listener.mdx index bd1c28297..3e9923ba1 100644 --- a/sdk/react-native/2.0/advanced-connection-listener.mdx +++ b/sdk/react-native/2.0/advanced-connection-listener.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/react-native/2.0/advanced.mdx b/sdk/react-native/2.0/advanced.mdx index 7a8e791f6..931f86642 100644 --- a/sdk/react-native/2.0/advanced.mdx +++ b/sdk/react-native/2.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/react-native/2.0/authentication-login-listeners.mdx b/sdk/react-native/2.0/authentication-login-listeners.mdx index dab87155f..af21dd4c9 100644 --- a/sdk/react-native/2.0/authentication-login-listeners.mdx +++ b/sdk/react-native/2.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/react-native/2.0/authentication.mdx b/sdk/react-native/2.0/authentication.mdx index cc70839cd..4fbfd8c04 100644 --- a/sdk/react-native/2.0/authentication.mdx +++ b/sdk/react-native/2.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/react-native/2.0/bots.mdx b/sdk/react-native/2.0/bots.mdx index 124af6f40..e551f1999 100644 --- a/sdk/react-native/2.0/bots.mdx +++ b/sdk/react-native/2.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/react-native/2.0/calling-default-calling.mdx b/sdk/react-native/2.0/calling-default-calling.mdx index c3015f596..0c27f0477 100644 --- a/sdk/react-native/2.0/calling-default-calling.mdx +++ b/sdk/react-native/2.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/react-native/2.0/calling-direct-calling.mdx b/sdk/react-native/2.0/calling-direct-calling.mdx index 30135c96e..1bcc9152d 100644 --- a/sdk/react-native/2.0/calling-direct-calling.mdx +++ b/sdk/react-native/2.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/react-native/2.0/calling.mdx b/sdk/react-native/2.0/calling.mdx index fc511cb83..7834f7f81 100644 --- a/sdk/react-native/2.0/calling.mdx +++ b/sdk/react-native/2.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-add-members-to-group.mdx b/sdk/react-native/2.0/groups-add-members-to-group.mdx index 733931a8d..39d43ef6e 100644 --- a/sdk/react-native/2.0/groups-add-members-to-group.mdx +++ b/sdk/react-native/2.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-change-member-scope.mdx b/sdk/react-native/2.0/groups-change-member-scope.mdx index 05676e042..cc599c7e3 100644 --- a/sdk/react-native/2.0/groups-change-member-scope.mdx +++ b/sdk/react-native/2.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-create-group.mdx b/sdk/react-native/2.0/groups-create-group.mdx index 56578d091..7f116f0d3 100644 --- a/sdk/react-native/2.0/groups-create-group.mdx +++ b/sdk/react-native/2.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-delete-group.mdx b/sdk/react-native/2.0/groups-delete-group.mdx index 7877e6bd2..91d87668c 100644 --- a/sdk/react-native/2.0/groups-delete-group.mdx +++ b/sdk/react-native/2.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-join-group.mdx b/sdk/react-native/2.0/groups-join-group.mdx index 08104cc2b..0d0da1fe2 100644 --- a/sdk/react-native/2.0/groups-join-group.mdx +++ b/sdk/react-native/2.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-kick-ban-members.mdx b/sdk/react-native/2.0/groups-kick-ban-members.mdx index 85ec86bf8..82fc085d7 100644 --- a/sdk/react-native/2.0/groups-kick-ban-members.mdx +++ b/sdk/react-native/2.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-leave-group.mdx b/sdk/react-native/2.0/groups-leave-group.mdx index 302802fea..260b30968 100644 --- a/sdk/react-native/2.0/groups-leave-group.mdx +++ b/sdk/react-native/2.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-retrieve-group-members.mdx b/sdk/react-native/2.0/groups-retrieve-group-members.mdx index 857fece7c..5f461bb81 100644 --- a/sdk/react-native/2.0/groups-retrieve-group-members.mdx +++ b/sdk/react-native/2.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-retrieve-groups.mdx b/sdk/react-native/2.0/groups-retrieve-groups.mdx index f47bc333c..99fc761a6 100644 --- a/sdk/react-native/2.0/groups-retrieve-groups.mdx +++ b/sdk/react-native/2.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-transfer-group-ownership.mdx b/sdk/react-native/2.0/groups-transfer-group-ownership.mdx index 0a5f73b7b..023b3b1d9 100644 --- a/sdk/react-native/2.0/groups-transfer-group-ownership.mdx +++ b/sdk/react-native/2.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups-update-group.mdx b/sdk/react-native/2.0/groups-update-group.mdx index e817732a4..8d4530352 100644 --- a/sdk/react-native/2.0/groups-update-group.mdx +++ b/sdk/react-native/2.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/react-native/2.0/groups.mdx b/sdk/react-native/2.0/groups.mdx index 4f3d1c363..2df1802aa 100644 --- a/sdk/react-native/2.0/groups.mdx +++ b/sdk/react-native/2.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/react-native/2.0/key-concepts.mdx b/sdk/react-native/2.0/key-concepts.mdx index 21a00a097..ad7eb8869 100644 --- a/sdk/react-native/2.0/key-concepts.mdx +++ b/sdk/react-native/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/react-native/2.0/message-structure-and-hierarchy.mdx b/sdk/react-native/2.0/message-structure-and-hierarchy.mdx index 408da6e5b..384f66b8e 100644 --- a/sdk/react-native/2.0/message-structure-and-hierarchy.mdx +++ b/sdk/react-native/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-additional-message-filtering.mdx b/sdk/react-native/2.0/messaging-additional-message-filtering.mdx index e5773872c..84437cbff 100644 --- a/sdk/react-native/2.0/messaging-additional-message-filtering.mdx +++ b/sdk/react-native/2.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-delete-conversation.mdx b/sdk/react-native/2.0/messaging-delete-conversation.mdx index b3dd49755..1bacf0588 100644 --- a/sdk/react-native/2.0/messaging-delete-conversation.mdx +++ b/sdk/react-native/2.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-delete-message.mdx b/sdk/react-native/2.0/messaging-delete-message.mdx index 8c0f35e0b..240309c34 100644 --- a/sdk/react-native/2.0/messaging-delete-message.mdx +++ b/sdk/react-native/2.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-edit-message.mdx b/sdk/react-native/2.0/messaging-edit-message.mdx index 8d90e459a..06c14806a 100644 --- a/sdk/react-native/2.0/messaging-edit-message.mdx +++ b/sdk/react-native/2.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-receipts.mdx b/sdk/react-native/2.0/messaging-receipts.mdx index cf2649ae7..920e368b1 100644 --- a/sdk/react-native/2.0/messaging-receipts.mdx +++ b/sdk/react-native/2.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-receive-messages.mdx b/sdk/react-native/2.0/messaging-receive-messages.mdx index aa92442b1..f3ede301b 100644 --- a/sdk/react-native/2.0/messaging-receive-messages.mdx +++ b/sdk/react-native/2.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-retrieve-conversations.mdx b/sdk/react-native/2.0/messaging-retrieve-conversations.mdx index a6875a3f6..88e09ce92 100644 --- a/sdk/react-native/2.0/messaging-retrieve-conversations.mdx +++ b/sdk/react-native/2.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-send-message.mdx b/sdk/react-native/2.0/messaging-send-message.mdx index b0966ebdf..f3e77938d 100644 --- a/sdk/react-native/2.0/messaging-send-message.mdx +++ b/sdk/react-native/2.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging-typing-indicators.mdx b/sdk/react-native/2.0/messaging-typing-indicators.mdx index d60f4c6c6..7dc925432 100644 --- a/sdk/react-native/2.0/messaging-typing-indicators.mdx +++ b/sdk/react-native/2.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/react-native/2.0/messaging.mdx b/sdk/react-native/2.0/messaging.mdx index de1fe20fa..9232f286e 100644 --- a/sdk/react-native/2.0/messaging.mdx +++ b/sdk/react-native/2.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/react-native/2.0/overview.mdx b/sdk/react-native/2.0/overview.mdx index 11a56c2b2..c6313dd44 100644 --- a/sdk/react-native/2.0/overview.mdx +++ b/sdk/react-native/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/react-native/2.0/rate-limits.mdx b/sdk/react-native/2.0/rate-limits.mdx index 30b7ca9c0..9651357e8 100644 --- a/sdk/react-native/2.0/rate-limits.mdx +++ b/sdk/react-native/2.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/react-native/2.0/resources-all-real-time-listeners.mdx b/sdk/react-native/2.0/resources-all-real-time-listeners.mdx index 97c35c267..be00e968e 100644 --- a/sdk/react-native/2.0/resources-all-real-time-listeners.mdx +++ b/sdk/react-native/2.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/react-native/2.0/resources-push-notification-setup.mdx b/sdk/react-native/2.0/resources-push-notification-setup.mdx index d745de5cc..d907597d7 100644 --- a/sdk/react-native/2.0/resources-push-notification-setup.mdx +++ b/sdk/react-native/2.0/resources-push-notification-setup.mdx @@ -1,5 +1,6 @@ --- title: "Push Notification Setup" +description: "Push Notification Setup — CometChat documentation." --- diff --git a/sdk/react-native/2.0/resources-upgrading-from-v1.mdx b/sdk/react-native/2.0/resources-upgrading-from-v1.mdx index 388fbb213..ac6d979dc 100644 --- a/sdk/react-native/2.0/resources-upgrading-from-v1.mdx +++ b/sdk/react-native/2.0/resources-upgrading-from-v1.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V1" +description: "Upgrading From V1 — CometChat documentation." --- diff --git a/sdk/react-native/2.0/resources.mdx b/sdk/react-native/2.0/resources.mdx index c08cd7c2a..cdee9fccf 100644 --- a/sdk/react-native/2.0/resources.mdx +++ b/sdk/react-native/2.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/react-native/2.0/setup.mdx b/sdk/react-native/2.0/setup.mdx index 5acdcf8c7..51efc4071 100644 --- a/sdk/react-native/2.0/setup.mdx +++ b/sdk/react-native/2.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/react-native/2.0/threaded-messages.mdx b/sdk/react-native/2.0/threaded-messages.mdx index 7872806f5..bbcfa00c7 100644 --- a/sdk/react-native/2.0/threaded-messages.mdx +++ b/sdk/react-native/2.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/react-native/2.0/user-presence.mdx b/sdk/react-native/2.0/user-presence.mdx index 24adcc0bf..38821060d 100644 --- a/sdk/react-native/2.0/user-presence.mdx +++ b/sdk/react-native/2.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/react-native/2.0/users-block-users.mdx b/sdk/react-native/2.0/users-block-users.mdx index 55c173d1a..dcedb7715 100644 --- a/sdk/react-native/2.0/users-block-users.mdx +++ b/sdk/react-native/2.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/react-native/2.0/users-retrieve-users.mdx b/sdk/react-native/2.0/users-retrieve-users.mdx index 570ee74ae..3f28e55f7 100644 --- a/sdk/react-native/2.0/users-retrieve-users.mdx +++ b/sdk/react-native/2.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/react-native/2.0/users-user-management.mdx b/sdk/react-native/2.0/users-user-management.mdx index ab1a643b7..f50833f3b 100644 --- a/sdk/react-native/2.0/users-user-management.mdx +++ b/sdk/react-native/2.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/react-native/2.0/users.mdx b/sdk/react-native/2.0/users.mdx index c4f240700..1a69532d0 100644 --- a/sdk/react-native/2.0/users.mdx +++ b/sdk/react-native/2.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/react-native/2.0/webhooks.mdx b/sdk/react-native/2.0/webhooks.mdx index cc76a6562..67342c982 100644 --- a/sdk/react-native/2.0/webhooks.mdx +++ b/sdk/react-native/2.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/react-native/3.0/advanced-connection-listener.mdx b/sdk/react-native/3.0/advanced-connection-listener.mdx index bc6b5e16c..e1ee6c09e 100644 --- a/sdk/react-native/3.0/advanced-connection-listener.mdx +++ b/sdk/react-native/3.0/advanced-connection-listener.mdx @@ -1,5 +1,6 @@ --- title: "Connection Status" +description: "Connection Status — CometChat documentation." --- diff --git a/sdk/react-native/3.0/advanced.mdx b/sdk/react-native/3.0/advanced.mdx index 7a8e791f6..931f86642 100644 --- a/sdk/react-native/3.0/advanced.mdx +++ b/sdk/react-native/3.0/advanced.mdx @@ -1,6 +1,7 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced — CometChat documentation." --- diff --git a/sdk/react-native/3.0/authentication-login-listeners.mdx b/sdk/react-native/3.0/authentication-login-listeners.mdx index 8b2004d69..d7aea4736 100644 --- a/sdk/react-native/3.0/authentication-login-listeners.mdx +++ b/sdk/react-native/3.0/authentication-login-listeners.mdx @@ -1,5 +1,6 @@ --- title: "Login Listeners" +description: "Login Listeners — CometChat documentation." --- diff --git a/sdk/react-native/3.0/authentication.mdx b/sdk/react-native/3.0/authentication.mdx index 8540f7985..8617ff551 100644 --- a/sdk/react-native/3.0/authentication.mdx +++ b/sdk/react-native/3.0/authentication.mdx @@ -1,6 +1,7 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Authentication — CometChat documentation." --- diff --git a/sdk/react-native/3.0/bots.mdx b/sdk/react-native/3.0/bots.mdx index 124af6f40..e551f1999 100644 --- a/sdk/react-native/3.0/bots.mdx +++ b/sdk/react-native/3.0/bots.mdx @@ -1,5 +1,6 @@ --- title: "Bots" +description: "Bots — CometChat documentation." --- diff --git a/sdk/react-native/3.0/calling-default-calling.mdx b/sdk/react-native/3.0/calling-default-calling.mdx index fbd98f29e..4c87a31a4 100644 --- a/sdk/react-native/3.0/calling-default-calling.mdx +++ b/sdk/react-native/3.0/calling-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/react-native/3.0/calling-direct-calling.mdx b/sdk/react-native/3.0/calling-direct-calling.mdx index 70ce277f2..7df3c1d44 100644 --- a/sdk/react-native/3.0/calling-direct-calling.mdx +++ b/sdk/react-native/3.0/calling-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/react-native/3.0/calling-recording.mdx b/sdk/react-native/3.0/calling-recording.mdx index bd3f58c7e..28acf04ff 100644 --- a/sdk/react-native/3.0/calling-recording.mdx +++ b/sdk/react-native/3.0/calling-recording.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/react-native/3.0/calling-v3.mdx b/sdk/react-native/3.0/calling-v3.mdx index fe3d46739..abd872af3 100644 --- a/sdk/react-native/3.0/calling-v3.mdx +++ b/sdk/react-native/3.0/calling-v3.mdx @@ -1,5 +1,6 @@ --- title: "Calling V3" +description: "Calling V3 — CometChat documentation." --- diff --git a/sdk/react-native/3.0/calling.mdx b/sdk/react-native/3.0/calling.mdx index 6641605b8..834ac9ac5 100644 --- a/sdk/react-native/3.0/calling.mdx +++ b/sdk/react-native/3.0/calling.mdx @@ -1,6 +1,7 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Calling — CometChat documentation." --- diff --git a/sdk/react-native/3.0/extensions-overview.mdx b/sdk/react-native/3.0/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/react-native/3.0/extensions-overview.mdx +++ b/sdk/react-native/3.0/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/react-native/3.0/groups-add-members-to-group.mdx b/sdk/react-native/3.0/groups-add-members-to-group.mdx index bd528a48b..1b2c3b119 100644 --- a/sdk/react-native/3.0/groups-add-members-to-group.mdx +++ b/sdk/react-native/3.0/groups-add-members-to-group.mdx @@ -1,5 +1,6 @@ --- title: "Add Members To A Group" +description: "Add Members To A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-change-member-scope.mdx b/sdk/react-native/3.0/groups-change-member-scope.mdx index cff2dd1b1..bbb16d59e 100644 --- a/sdk/react-native/3.0/groups-change-member-scope.mdx +++ b/sdk/react-native/3.0/groups-change-member-scope.mdx @@ -1,5 +1,6 @@ --- title: "Change Member Scope" +description: "Change Member Scope — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-create-group.mdx b/sdk/react-native/3.0/groups-create-group.mdx index 06971eb1b..f88920f53 100644 --- a/sdk/react-native/3.0/groups-create-group.mdx +++ b/sdk/react-native/3.0/groups-create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create A Group" +description: "Create A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-delete-group.mdx b/sdk/react-native/3.0/groups-delete-group.mdx index 503caa4ca..1fc645a11 100644 --- a/sdk/react-native/3.0/groups-delete-group.mdx +++ b/sdk/react-native/3.0/groups-delete-group.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Group" +description: "Delete A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-join-group.mdx b/sdk/react-native/3.0/groups-join-group.mdx index a5722cfba..1e7042523 100644 --- a/sdk/react-native/3.0/groups-join-group.mdx +++ b/sdk/react-native/3.0/groups-join-group.mdx @@ -1,5 +1,6 @@ --- title: "Join A Group" +description: "Join A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-kick-ban-members.mdx b/sdk/react-native/3.0/groups-kick-ban-members.mdx index a9ad06c3b..3b1212a59 100644 --- a/sdk/react-native/3.0/groups-kick-ban-members.mdx +++ b/sdk/react-native/3.0/groups-kick-ban-members.mdx @@ -1,5 +1,6 @@ --- title: "Ban/Kick Member From A Group" +description: "Ban/Kick Member From A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-leave-group.mdx b/sdk/react-native/3.0/groups-leave-group.mdx index 5c3f4e20b..58124aa1e 100644 --- a/sdk/react-native/3.0/groups-leave-group.mdx +++ b/sdk/react-native/3.0/groups-leave-group.mdx @@ -1,5 +1,6 @@ --- title: "Leave A Group" +description: "Leave A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-retrieve-group-members.mdx b/sdk/react-native/3.0/groups-retrieve-group-members.mdx index c0455bdaf..b8a7908cd 100644 --- a/sdk/react-native/3.0/groups-retrieve-group-members.mdx +++ b/sdk/react-native/3.0/groups-retrieve-group-members.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Group Members" +description: "Retrieve Group Members — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-retrieve-groups.mdx b/sdk/react-native/3.0/groups-retrieve-groups.mdx index 51f459163..06d36ae96 100644 --- a/sdk/react-native/3.0/groups-retrieve-groups.mdx +++ b/sdk/react-native/3.0/groups-retrieve-groups.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Groups" +description: "Retrieve Groups — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-transfer-group-ownership.mdx b/sdk/react-native/3.0/groups-transfer-group-ownership.mdx index 516bd85ad..921b4c1e0 100644 --- a/sdk/react-native/3.0/groups-transfer-group-ownership.mdx +++ b/sdk/react-native/3.0/groups-transfer-group-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Group Ownership" +description: "Transfer Group Ownership — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups-update-group.mdx b/sdk/react-native/3.0/groups-update-group.mdx index 7ae1f917d..bd2ee3aae 100644 --- a/sdk/react-native/3.0/groups-update-group.mdx +++ b/sdk/react-native/3.0/groups-update-group.mdx @@ -1,5 +1,6 @@ --- title: "Update A Group" +description: "Update A Group — CometChat documentation." --- diff --git a/sdk/react-native/3.0/groups.mdx b/sdk/react-native/3.0/groups.mdx index 4f3d1c363..2df1802aa 100644 --- a/sdk/react-native/3.0/groups.mdx +++ b/sdk/react-native/3.0/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/sdk/react-native/3.0/key-concepts.mdx b/sdk/react-native/3.0/key-concepts.mdx index 5dbfc9682..60e121998 100644 --- a/sdk/react-native/3.0/key-concepts.mdx +++ b/sdk/react-native/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- diff --git a/sdk/react-native/3.0/managing-web-socket-connections-manually.mdx b/sdk/react-native/3.0/managing-web-socket-connections-manually.mdx index 9a116092c..35e34b71a 100644 --- a/sdk/react-native/3.0/managing-web-socket-connections-manually.mdx +++ b/sdk/react-native/3.0/managing-web-socket-connections-manually.mdx @@ -1,5 +1,6 @@ --- title: "Managing Web Socket Connections Manually" +description: "Managing Web Socket Connections Manually — CometChat documentation." --- diff --git a/sdk/react-native/3.0/message-structure-and-hierarchy.mdx b/sdk/react-native/3.0/message-structure-and-hierarchy.mdx index 4f260bf3c..8548ed7ba 100644 --- a/sdk/react-native/3.0/message-structure-and-hierarchy.mdx +++ b/sdk/react-native/3.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-additional-message-filtering.mdx b/sdk/react-native/3.0/messaging-additional-message-filtering.mdx index 6839d5669..e7091de68 100644 --- a/sdk/react-native/3.0/messaging-additional-message-filtering.mdx +++ b/sdk/react-native/3.0/messaging-additional-message-filtering.mdx @@ -1,5 +1,6 @@ --- title: "Additional Message Filtering" +description: "Additional Message Filtering — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-delete-conversation.mdx b/sdk/react-native/3.0/messaging-delete-conversation.mdx index e9495c873..078c3cf0b 100644 --- a/sdk/react-native/3.0/messaging-delete-conversation.mdx +++ b/sdk/react-native/3.0/messaging-delete-conversation.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Conversation" +description: "Delete A Conversation — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-delete-message.mdx b/sdk/react-native/3.0/messaging-delete-message.mdx index 23c673849..4cf781bf3 100644 --- a/sdk/react-native/3.0/messaging-delete-message.mdx +++ b/sdk/react-native/3.0/messaging-delete-message.mdx @@ -1,5 +1,6 @@ --- title: "Delete A Message" +description: "Delete A Message — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-edit-message.mdx b/sdk/react-native/3.0/messaging-edit-message.mdx index 8b5b66533..9b8744a35 100644 --- a/sdk/react-native/3.0/messaging-edit-message.mdx +++ b/sdk/react-native/3.0/messaging-edit-message.mdx @@ -1,5 +1,6 @@ --- title: "Edit A Message" +description: "Edit A Message — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-receipts.mdx b/sdk/react-native/3.0/messaging-receipts.mdx index aee35197b..c08d0afd4 100644 --- a/sdk/react-native/3.0/messaging-receipts.mdx +++ b/sdk/react-native/3.0/messaging-receipts.mdx @@ -1,5 +1,6 @@ --- title: "Delivery & Read Receipts" +description: "Delivery & Read Receipts — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-receive-messages.mdx b/sdk/react-native/3.0/messaging-receive-messages.mdx index 44fd5186a..01f8c95b6 100644 --- a/sdk/react-native/3.0/messaging-receive-messages.mdx +++ b/sdk/react-native/3.0/messaging-receive-messages.mdx @@ -1,5 +1,6 @@ --- title: "Receive Messages" +description: "Receive Messages — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-retrieve-conversations.mdx b/sdk/react-native/3.0/messaging-retrieve-conversations.mdx index b3e9e34b3..7a7d3251e 100644 --- a/sdk/react-native/3.0/messaging-retrieve-conversations.mdx +++ b/sdk/react-native/3.0/messaging-retrieve-conversations.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Conversations" +description: "Retrieve Conversations — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-send-message.mdx b/sdk/react-native/3.0/messaging-send-message.mdx index 8161078d2..fee967faa 100644 --- a/sdk/react-native/3.0/messaging-send-message.mdx +++ b/sdk/react-native/3.0/messaging-send-message.mdx @@ -1,5 +1,6 @@ --- title: "Send A Message" +description: "Send A Message — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging-typing-indicators.mdx b/sdk/react-native/3.0/messaging-typing-indicators.mdx index c7cbc77f6..ce03a1c67 100644 --- a/sdk/react-native/3.0/messaging-typing-indicators.mdx +++ b/sdk/react-native/3.0/messaging-typing-indicators.mdx @@ -1,5 +1,6 @@ --- title: "Typing Indicators" +description: "Typing Indicators — CometChat documentation." --- diff --git a/sdk/react-native/3.0/messaging.mdx b/sdk/react-native/3.0/messaging.mdx index 2e8d5f2bf..ecaec5f4d 100644 --- a/sdk/react-native/3.0/messaging.mdx +++ b/sdk/react-native/3.0/messaging.mdx @@ -1,6 +1,7 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Messaging — CometChat documentation." --- diff --git a/sdk/react-native/3.0/overview.mdx b/sdk/react-native/3.0/overview.mdx index 733b10ee7..6b43038b8 100644 --- a/sdk/react-native/3.0/overview.mdx +++ b/sdk/react-native/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/sdk/react-native/3.0/presenter-mode.mdx b/sdk/react-native/3.0/presenter-mode.mdx index 3c4b5d68a..e3e2e49a1 100644 --- a/sdk/react-native/3.0/presenter-mode.mdx +++ b/sdk/react-native/3.0/presenter-mode.mdx @@ -1,5 +1,6 @@ --- title: "Presenter Mode" +description: "Presenter Mode — CometChat documentation." --- diff --git a/sdk/react-native/3.0/rate-limits.mdx b/sdk/react-native/3.0/rate-limits.mdx index 3e8fbd638..fe8910c75 100644 --- a/sdk/react-native/3.0/rate-limits.mdx +++ b/sdk/react-native/3.0/rate-limits.mdx @@ -1,5 +1,6 @@ --- title: "Rate Limits" +description: "Rate Limits — CometChat documentation." --- diff --git a/sdk/react-native/3.0/react-native-3-0-overview.mdx b/sdk/react-native/3.0/react-native-3-0-overview.mdx index c6bb4197c..e8e5af698 100644 --- a/sdk/react-native/3.0/react-native-3-0-overview.mdx +++ b/sdk/react-native/3.0/react-native-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "V3 UI Kit" url: "/ui-kit/react-native/3.0/overview" +description: "Navigate to V3 UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/react-native/3.0/recording-beta-v3.mdx b/sdk/react-native/3.0/recording-beta-v3.mdx index 3af2f0bd5..8d4bf667c 100644 --- a/sdk/react-native/3.0/recording-beta-v3.mdx +++ b/sdk/react-native/3.0/recording-beta-v3.mdx @@ -1,5 +1,6 @@ --- title: "Recording (Beta)" +description: "Recording (Beta) — CometChat documentation." --- diff --git a/sdk/react-native/3.0/resources-all-real-time-listeners.mdx b/sdk/react-native/3.0/resources-all-real-time-listeners.mdx index 495e849b5..3d3ab0786 100644 --- a/sdk/react-native/3.0/resources-all-real-time-listeners.mdx +++ b/sdk/react-native/3.0/resources-all-real-time-listeners.mdx @@ -1,5 +1,6 @@ --- title: "All Real Time Listeners" +description: "All Real Time Listeners — CometChat documentation." --- diff --git a/sdk/react-native/3.0/resources-push-notification-setup.mdx b/sdk/react-native/3.0/resources-push-notification-setup.mdx index cff5fea21..4dbc4ceb6 100644 --- a/sdk/react-native/3.0/resources-push-notification-setup.mdx +++ b/sdk/react-native/3.0/resources-push-notification-setup.mdx @@ -1,5 +1,6 @@ --- title: "Push Notification Setup" +description: "Push Notification Setup — CometChat documentation." --- diff --git a/sdk/react-native/3.0/resources-upgrading-from-v2.mdx b/sdk/react-native/3.0/resources-upgrading-from-v2.mdx index 0801317ec..51ca4f902 100644 --- a/sdk/react-native/3.0/resources-upgrading-from-v2.mdx +++ b/sdk/react-native/3.0/resources-upgrading-from-v2.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V2" +description: "Upgrading From V2 — CometChat documentation." --- diff --git a/sdk/react-native/3.0/resources.mdx b/sdk/react-native/3.0/resources.mdx index 4b22c4deb..768206568 100644 --- a/sdk/react-native/3.0/resources.mdx +++ b/sdk/react-native/3.0/resources.mdx @@ -1,6 +1,7 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Resources — CometChat documentation." --- diff --git a/sdk/react-native/3.0/setup.mdx b/sdk/react-native/3.0/setup.mdx index f4ec36278..f29ed87ec 100644 --- a/sdk/react-native/3.0/setup.mdx +++ b/sdk/react-native/3.0/setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- @@ -102,7 +103,7 @@ For `@cometchat-pro/react-native-calls` version starting **2.3.0**, please make -``` +```html NSCameraUsageDescription This is for Camera permission NSMicrophoneUsageDescription diff --git a/sdk/react-native/3.0/threaded-messages.mdx b/sdk/react-native/3.0/threaded-messages.mdx index d991c07aa..c866ab577 100644 --- a/sdk/react-native/3.0/threaded-messages.mdx +++ b/sdk/react-native/3.0/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/sdk/react-native/3.0/transient-messages.mdx b/sdk/react-native/3.0/transient-messages.mdx index f81eb84b5..b14c17843 100644 --- a/sdk/react-native/3.0/transient-messages.mdx +++ b/sdk/react-native/3.0/transient-messages.mdx @@ -1,5 +1,6 @@ --- title: "Transient Messages" +description: "Transient Messages — CometChat documentation." --- diff --git a/sdk/react-native/3.0/user-presence.mdx b/sdk/react-native/3.0/user-presence.mdx index 650679add..6596ad264 100644 --- a/sdk/react-native/3.0/user-presence.mdx +++ b/sdk/react-native/3.0/user-presence.mdx @@ -1,5 +1,6 @@ --- title: "User Presence" +description: "User Presence — CometChat documentation." --- diff --git a/sdk/react-native/3.0/users-block-users.mdx b/sdk/react-native/3.0/users-block-users.mdx index 8e141bd1b..08f64603b 100644 --- a/sdk/react-native/3.0/users-block-users.mdx +++ b/sdk/react-native/3.0/users-block-users.mdx @@ -1,5 +1,6 @@ --- title: "Block Users" +description: "Block Users — CometChat documentation." --- diff --git a/sdk/react-native/3.0/users-retrieve-users.mdx b/sdk/react-native/3.0/users-retrieve-users.mdx index ab4b33034..d038a4f2e 100644 --- a/sdk/react-native/3.0/users-retrieve-users.mdx +++ b/sdk/react-native/3.0/users-retrieve-users.mdx @@ -1,5 +1,6 @@ --- title: "Retrieve Users" +description: "Retrieve Users — CometChat documentation." --- diff --git a/sdk/react-native/3.0/users-user-management.mdx b/sdk/react-native/3.0/users-user-management.mdx index f892be7e9..30149ad39 100644 --- a/sdk/react-native/3.0/users-user-management.mdx +++ b/sdk/react-native/3.0/users-user-management.mdx @@ -1,5 +1,6 @@ --- title: "User Management" +description: "User Management — CometChat documentation." --- diff --git a/sdk/react-native/3.0/users.mdx b/sdk/react-native/3.0/users.mdx index eb887f201..3f0c0f200 100644 --- a/sdk/react-native/3.0/users.mdx +++ b/sdk/react-native/3.0/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/sdk/react-native/3.0/v3-default-calling.mdx b/sdk/react-native/3.0/v3-default-calling.mdx index 5dfd8fd82..066366cb3 100644 --- a/sdk/react-native/3.0/v3-default-calling.mdx +++ b/sdk/react-native/3.0/v3-default-calling.mdx @@ -1,5 +1,6 @@ --- title: "Default Calling" +description: "Default Calling — CometChat documentation." --- diff --git a/sdk/react-native/3.0/v3-direct-calling.mdx b/sdk/react-native/3.0/v3-direct-calling.mdx index aa0492417..d92c70310 100644 --- a/sdk/react-native/3.0/v3-direct-calling.mdx +++ b/sdk/react-native/3.0/v3-direct-calling.mdx @@ -1,5 +1,6 @@ --- title: "Direct Calling" +description: "Direct Calling — CometChat documentation." --- diff --git a/sdk/react-native/3.0/v3-setup.mdx b/sdk/react-native/3.0/v3-setup.mdx index 1df3b5cc9..0dcd330e9 100644 --- a/sdk/react-native/3.0/v3-setup.mdx +++ b/sdk/react-native/3.0/v3-setup.mdx @@ -1,5 +1,6 @@ --- title: "Setup" +description: "Setup — CometChat documentation." --- diff --git a/sdk/react-native/3.0/v3-video-view-customisation.mdx b/sdk/react-native/3.0/v3-video-view-customisation.mdx index 79e57166b..e50555381 100644 --- a/sdk/react-native/3.0/v3-video-view-customisation.mdx +++ b/sdk/react-native/3.0/v3-video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/react-native/3.0/video-view-customisation.mdx b/sdk/react-native/3.0/video-view-customisation.mdx index 7567f67f5..3644fdf8c 100644 --- a/sdk/react-native/3.0/video-view-customisation.mdx +++ b/sdk/react-native/3.0/video-view-customisation.mdx @@ -1,5 +1,6 @@ --- title: "Video View Customisation" +description: "Video View Customisation — CometChat documentation." --- diff --git a/sdk/react-native/3.0/webhooks.mdx b/sdk/react-native/3.0/webhooks.mdx index cc76a6562..67342c982 100644 --- a/sdk/react-native/3.0/webhooks.mdx +++ b/sdk/react-native/3.0/webhooks.mdx @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "Webhooks — CometChat documentation." --- diff --git a/sdk/react-native/ai-chatbots-overview.mdx b/sdk/react-native/ai-chatbots-overview.mdx index 7bbac1856..381a73e27 100644 --- a/sdk/react-native/ai-chatbots-overview.mdx +++ b/sdk/react-native/ai-chatbots-overview.mdx @@ -1,4 +1,5 @@ --- title: "Bots" url: "/ai-chatbots-overview" +description: "Navigate to Bots documentation." --- \ No newline at end of file diff --git a/sdk/react-native/ai-user-copilot-overview.mdx b/sdk/react-native/ai-user-copilot-overview.mdx index 3e798a3fb..eb49fe85a 100644 --- a/sdk/react-native/ai-user-copilot-overview.mdx +++ b/sdk/react-native/ai-user-copilot-overview.mdx @@ -1,4 +1,5 @@ --- title: "AI" url: "/fundamentals/ai-user-copilot/overview" +description: "Navigate to AI documentation." --- \ No newline at end of file diff --git a/sdk/react-native/changelog.mdx b/sdk/react-native/changelog.mdx index 97aed3f16..63464bb0f 100644 --- a/sdk/react-native/changelog.mdx +++ b/sdk/react-native/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/chat-sdk-react-native/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/sdk/react-native/delivery-read-receipts.mdx b/sdk/react-native/delivery-read-receipts.mdx index 854168bc1..fd5f19d84 100644 --- a/sdk/react-native/delivery-read-receipts.mdx +++ b/sdk/react-native/delivery-read-receipts.mdx @@ -285,7 +285,7 @@ Ideally, you would like to mark all the messages as read for any conversation wh -``` +```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_SENDER_UID"; var receiverType = "user"; @@ -296,7 +296,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); -``` +```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_RECEIVER_GUID"; var receiverType = "group"; @@ -307,7 +307,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); -``` +```javascript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_SENDER_UID"; var receiverType: string = "user"; @@ -318,7 +318,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); -``` +```javascript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_GUID"; var receiverType: string = "group"; diff --git a/sdk/react-native/extensions-overview.mdx b/sdk/react-native/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/sdk/react-native/extensions-overview.mdx +++ b/sdk/react-native/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/sdk/react-native/push-notification-setup.mdx b/sdk/react-native/push-notification-setup.mdx index 567859211..87f30efc3 100644 --- a/sdk/react-native/push-notification-setup.mdx +++ b/sdk/react-native/push-notification-setup.mdx @@ -1,5 +1,6 @@ --- title: "Push Notification Setup" +description: "Push Notification Setup — CometChat documentation." --- diff --git a/sdk/react-native/react-native-overview.mdx b/sdk/react-native/react-native-overview.mdx index f587f1b61..a9979760d 100644 --- a/sdk/react-native/react-native-overview.mdx +++ b/sdk/react-native/react-native-overview.mdx @@ -1,4 +1,5 @@ --- title: "React Native UI Kit" url: "/ui-kit/react-native/overview" +description: "Navigate to React Native UI Kit documentation." --- \ No newline at end of file diff --git a/sdk/react-native/webhooks-overview.mdx b/sdk/react-native/webhooks-overview.mdx index 598d43500..c6059ded0 100644 --- a/sdk/react-native/webhooks-overview.mdx +++ b/sdk/react-native/webhooks-overview.mdx @@ -1,4 +1,5 @@ --- title: "Webhooks" url: "/fundamentals/webhooks-overview" +description: "Navigate to Webhooks documentation." --- \ No newline at end of file diff --git a/snippets/widget/advanced-js-apis-wp.mdx b/snippets/widget/advanced-js-apis-wp.mdx index 3dfaf858c..6ce8b9eb5 100644 --- a/snippets/widget/advanced-js-apis-wp.mdx +++ b/snippets/widget/advanced-js-apis-wp.mdx @@ -1,5 +1,6 @@ --- title: Advanced JavaScript APIs +description: "CometChat documentation page." --- import ChatCallMethods from '/snippets/widget/chat-call-methods.mdx' diff --git a/snippets/widget/advanced-js-apis.mdx b/snippets/widget/advanced-js-apis.mdx index 8058a4a02..0360cfa3d 100644 --- a/snippets/widget/advanced-js-apis.mdx +++ b/snippets/widget/advanced-js-apis.mdx @@ -1,5 +1,6 @@ --- title: Advanced JavaScript Controls +description: "CometChat documentation page." --- import ChatCallMethods from '/snippets/widget/chat-call-methods.mdx' diff --git a/ui-kit/android/link/changelog.mdx b/ui-kit/android/link/changelog.mdx index c423ac1b8..8c52d911c 100644 --- a/ui-kit/android/link/changelog.mdx +++ b/ui-kit/android/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-android/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/android/link/figma.mdx b/ui-kit/android/link/figma.mdx index 36dc0a0e9..f1aca6d08 100644 --- a/ui-kit/android/link/figma.mdx +++ b/ui-kit/android/link/figma.mdx @@ -1,4 +1,5 @@ --- title: "Figma Design" url: "https://www.figma.com/community/file/1444324233177163609/cometchat-ui-kit-for-android" +description: "Navigate to Figma Design documentation." --- \ No newline at end of file diff --git a/ui-kit/android/link/sample.mdx b/ui-kit/android/link/sample.mdx index d05c8ebe6..df6907018 100644 --- a/ui-kit/android/link/sample.mdx +++ b/ui-kit/android/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "Android Sample App" url: "https://github.com/cometchat/cometchat-uikit-android/tree/v5" +description: "Navigate to Android Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v2/android-2-0-overview.mdx b/ui-kit/android/v2/android-2-0-overview.mdx index e493bb967..e813b8a37 100644 --- a/ui-kit/android/v2/android-2-0-overview.mdx +++ b/ui-kit/android/v2/android-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "Android SDK" url: "/sdk/android/2.0/overview" +description: "Navigate to Android SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v2/customize-ui-kit.mdx b/ui-kit/android/v2/customize-ui-kit.mdx index 49a91ad9b..a81c0ec98 100644 --- a/ui-kit/android/v2/customize-ui-kit.mdx +++ b/ui-kit/android/v2/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- diff --git a/ui-kit/android/v2/folder-structure-android-uikit.mdx b/ui-kit/android/v2/folder-structure-android-uikit.mdx index f7ba5f4f7..8c926f589 100644 --- a/ui-kit/android/v2/folder-structure-android-uikit.mdx +++ b/ui-kit/android/v2/folder-structure-android-uikit.mdx @@ -1,5 +1,6 @@ --- title: "UI Kit Library Structure" +description: "UI Kit Library Structure — CometChat documentation." --- UI Kit Library is a collection of custom UI Components designed to build text chat and voice/video calling features in your application. It includes three different packages. diff --git a/ui-kit/android/v2/key-concepts.mdx b/ui-kit/android/v2/key-concepts.mdx index c1e025c7b..b0a4d8225 100644 --- a/ui-kit/android/v2/key-concepts.mdx +++ b/ui-kit/android/v2/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### **CometChat Dashboard** diff --git a/ui-kit/android/v2/link/sdk.mdx b/ui-kit/android/v2/link/sdk.mdx index e493bb967..e813b8a37 100644 --- a/ui-kit/android/v2/link/sdk.mdx +++ b/ui-kit/android/v2/link/sdk.mdx @@ -1,4 +1,5 @@ --- title: "Android SDK" url: "/sdk/android/2.0/overview" +description: "Navigate to Android SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v2/message-structure-and-hierarchy.mdx b/ui-kit/android/v2/message-structure-and-hierarchy.mdx index 1255bd93d..218e00f44 100644 --- a/ui-kit/android/v2/message-structure-and-hierarchy.mdx +++ b/ui-kit/android/v2/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/android/v2/overview.mdx b/ui-kit/android/v2/overview.mdx index abc347ed9..206eb725c 100644 --- a/ui-kit/android/v2/overview.mdx +++ b/ui-kit/android/v2/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat Android Java UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/android/v2/ui-components.mdx b/ui-kit/android/v2/ui-components.mdx index d76d5d66c..3485edf5f 100644 --- a/ui-kit/android/v2/ui-components.mdx +++ b/ui-kit/android/v2/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building a block of the UI Kit. **UI Components** are a set of custom classes specially designed to build a feature-rich chat app. To achieve high customizability while building an app one can use the UI Components. There are different UI Components available in the UI Kit library. diff --git a/ui-kit/android/v3/android-customize-ui-kit.mdx b/ui-kit/android/v3/android-customize-ui-kit.mdx index b5535844d..ce1b333bb 100644 --- a/ui-kit/android/v3/android-customize-ui-kit.mdx +++ b/ui-kit/android/v3/android-customize-ui-kit.mdx @@ -1,6 +1,7 @@ --- title: "Customize UI Kit" sidebarTitle: "Customize Ui Kit" +description: "Customize UI Kit — CometChat documentation." --- diff --git a/ui-kit/android/v3/android-java-ui-components.mdx b/ui-kit/android/v3/android-java-ui-components.mdx index a3ac3a94e..0c976cc2e 100644 --- a/ui-kit/android/v3/android-java-ui-components.mdx +++ b/ui-kit/android/v3/android-java-ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building a block of the UI Kit. **UI Components** are a set of custom classes specially designed to build a feature-rich chat app. To achieve high customizability while building an app one can use the UI Components. There are different UI Components available in the UI Kit library. diff --git a/ui-kit/android/v3/conversationlist.mdx b/ui-kit/android/v3/conversationlist.mdx index 163b9ffa4..6e87c9197 100644 --- a/ui-kit/android/v3/conversationlist.mdx +++ b/ui-kit/android/v3/conversationlist.mdx @@ -1,6 +1,7 @@ --- title: "Conversation List" sidebarTitle: "ConversationList" +description: "Conversation List — CometChat documentation." --- `ConversationList`is a component that displays lists of recent conversation done by logged-in user. `ConversationList` also handles empty states and loading state if the users has slower internet connection. diff --git a/ui-kit/android/v3/folder-structure-android-uikit.mdx b/ui-kit/android/v3/folder-structure-android-uikit.mdx index edcb25f18..288ad943f 100644 --- a/ui-kit/android/v3/folder-structure-android-uikit.mdx +++ b/ui-kit/android/v3/folder-structure-android-uikit.mdx @@ -1,5 +1,6 @@ --- title: "UI Kit Library Structure" +description: "UI Kit Library Structure — CometChat documentation." --- UI Kit Library is a collection of custom UI Components designed to build text chat and voice/video calling features in your application. It includes three different packages. diff --git a/ui-kit/android/v3/how-to-add-uikit-module.mdx b/ui-kit/android/v3/how-to-add-uikit-module.mdx index 599c1d6f1..5e0ecaffd 100644 --- a/ui-kit/android/v3/how-to-add-uikit-module.mdx +++ b/ui-kit/android/v3/how-to-add-uikit-module.mdx @@ -1,5 +1,6 @@ --- title: "How To Add UIKit Module?" +description: "How To Add UIKit Module? — CometChat documentation." --- To add UI Kit module developer will need to follow the three basic steps. diff --git a/ui-kit/android/v3/key-concepts.mdx b/ui-kit/android/v3/key-concepts.mdx index 0d71ea534..326d4cd0f 100644 --- a/ui-kit/android/v3/key-concepts.mdx +++ b/ui-kit/android/v3/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/android/v3/link/extension.mdx b/ui-kit/android/v3/link/extension.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/android/v3/link/extension.mdx +++ b/ui-kit/android/v3/link/extension.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v3/link/sdk.mdx b/ui-kit/android/v3/link/sdk.mdx index c27a31b44..f09c8657d 100644 --- a/ui-kit/android/v3/link/sdk.mdx +++ b/ui-kit/android/v3/link/sdk.mdx @@ -1,4 +1,5 @@ --- title: "Android SDK" url: "/sdk/android/overview" +description: "Navigate to Android SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v3/link/version.mdx b/ui-kit/android/v3/link/version.mdx index 21f7f6f1c..1456b7073 100644 --- a/ui-kit/android/v3/link/version.mdx +++ b/ui-kit/android/v3/link/version.mdx @@ -1,4 +1,5 @@ --- title: "Version 4" url: "/ui-kit/android/overview" +description: "Navigate to Version 4 documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v3/overview.mdx b/ui-kit/android/v3/overview.mdx index 9e97d6ed9..0f18b6c47 100644 --- a/ui-kit/android/v3/overview.mdx +++ b/ui-kit/android/v3/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/android/v4/action-sheet.mdx b/ui-kit/android/v4/action-sheet.mdx index 4e88201e7..55e71e8a3 100644 --- a/ui-kit/android/v4/action-sheet.mdx +++ b/ui-kit/android/v4/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/ai-features.mdx b/ui-kit/android/v4/ai-features.mdx index d3a2d72dc..f1be87d65 100644 --- a/ui-kit/android/v4/ai-features.mdx +++ b/ui-kit/android/v4/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/audio-bubble.mdx b/ui-kit/android/v4/audio-bubble.mdx index 0abcc876d..99c19e5de 100644 --- a/ui-kit/android/v4/audio-bubble.mdx +++ b/ui-kit/android/v4/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- `CometChatAudioBubble` is the content view for a MediaMessage if the media sent is an audio. diff --git a/ui-kit/android/v4/avatar.mdx b/ui-kit/android/v4/avatar.mdx index 8d4dd0605..1612ba58d 100644 --- a/ui-kit/android/v4/avatar.mdx +++ b/ui-kit/android/v4/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- `CometChatAvatar` component displays an image or user's avatar with fallback to the first two letters of the username or group's icon with fallback to the first two letter of the group name. diff --git a/ui-kit/android/v4/badge.mdx b/ui-kit/android/v4/badge.mdx index e2221538e..9cb6e08c1 100644 --- a/ui-kit/android/v4/badge.mdx +++ b/ui-kit/android/v4/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- `CometChatBadge` is the custom component which is used to display the unread message count. It can be used in places like CometChatListItem, etc. diff --git a/ui-kit/android/v4/banned-members.mdx b/ui-kit/android/v4/banned-members.mdx index ee0e75d09..6636b6371 100644 --- a/ui-kit/android/v4/banned-members.mdx +++ b/ui-kit/android/v4/banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-buttons.mdx b/ui-kit/android/v4/call-buttons.mdx index f0644da87..73e11d487 100644 --- a/ui-kit/android/v4/call-buttons.mdx +++ b/ui-kit/android/v4/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-features.mdx b/ui-kit/android/v4/call-features.mdx index af09f22bb..f29c6e899 100644 --- a/ui-kit/android/v4/call-features.mdx +++ b/ui-kit/android/v4/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-log-details.mdx b/ui-kit/android/v4/call-log-details.mdx index 0a107e034..ae441dbb5 100644 --- a/ui-kit/android/v4/call-log-details.mdx +++ b/ui-kit/android/v4/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-log-history.mdx b/ui-kit/android/v4/call-log-history.mdx index 779290635..efa757da5 100644 --- a/ui-kit/android/v4/call-log-history.mdx +++ b/ui-kit/android/v4/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-log-participants.mdx b/ui-kit/android/v4/call-log-participants.mdx index d0f984508..91bb3d755 100644 --- a/ui-kit/android/v4/call-log-participants.mdx +++ b/ui-kit/android/v4/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Participants" +description: "Call Log Participants — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-log-recording.mdx b/ui-kit/android/v4/call-log-recording.mdx index 1035baee6..0312d1e24 100644 --- a/ui-kit/android/v4/call-log-recording.mdx +++ b/ui-kit/android/v4/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-log-with-details.mdx b/ui-kit/android/v4/call-log-with-details.mdx index 13021eeed..19cf18eeb 100644 --- a/ui-kit/android/v4/call-log-with-details.mdx +++ b/ui-kit/android/v4/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-logs.mdx b/ui-kit/android/v4/call-logs.mdx index e4d132b2b..316dd30d6 100644 --- a/ui-kit/android/v4/call-logs.mdx +++ b/ui-kit/android/v4/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/call-overview.mdx b/ui-kit/android/v4/call-overview.mdx index ca7352e4e..0e493ae97 100644 --- a/ui-kit/android/v4/call-overview.mdx +++ b/ui-kit/android/v4/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- ## Overview diff --git a/ui-kit/android/v4/components-overview.mdx b/ui-kit/android/v4/components-overview.mdx index 6c8bf65c2..568d8b468 100644 --- a/ui-kit/android/v4/components-overview.mdx +++ b/ui-kit/android/v4/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI components that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/android/v4/contacts.mdx b/ui-kit/android/v4/contacts.mdx index fc928ed5d..63885600b 100644 --- a/ui-kit/android/v4/contacts.mdx +++ b/ui-kit/android/v4/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- CometChatContacts is a versatile Android UI component specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. diff --git a/ui-kit/android/v4/conversations-with-messages.mdx b/ui-kit/android/v4/conversations-with-messages.mdx index 8860a0c48..f714fba38 100644 --- a/ui-kit/android/v4/conversations-with-messages.mdx +++ b/ui-kit/android/v4/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/conversations.mdx b/ui-kit/android/v4/conversations.mdx index ecfea0ed9..4a3b772fc 100644 --- a/ui-kit/android/v4/conversations.mdx +++ b/ui-kit/android/v4/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/core-features.mdx b/ui-kit/android/v4/core-features.mdx index 27e6974fb..7a7ba1fe2 100644 --- a/ui-kit/android/v4/core-features.mdx +++ b/ui-kit/android/v4/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/create-group.mdx b/ui-kit/android/v4/create-group.mdx index 9d0465ddf..e03ed0f2a 100644 --- a/ui-kit/android/v4/create-group.mdx +++ b/ui-kit/android/v4/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/date.mdx b/ui-kit/android/v4/date.mdx index 178bfc77e..f72a3f65d 100644 --- a/ui-kit/android/v4/date.mdx +++ b/ui-kit/android/v4/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- `CometChatDate` is a widget which is used to show the date and time. You can also customize the appearance of this widget by modifying its logic. diff --git a/ui-kit/android/v4/events.mdx b/ui-kit/android/v4/events.mdx index 8abb08d5c..72be5e96a 100644 --- a/ui-kit/android/v4/events.mdx +++ b/ui-kit/android/v4/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/extensions.mdx b/ui-kit/android/v4/extensions.mdx index 96017abb2..2ff0aade2 100644 --- a/ui-kit/android/v4/extensions.mdx +++ b/ui-kit/android/v4/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/file-bubble.mdx b/ui-kit/android/v4/file-bubble.mdx index c94af9234..9a78c2be7 100644 --- a/ui-kit/android/v4/file-bubble.mdx +++ b/ui-kit/android/v4/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- `CometChatFileBubble` is the content view for a MediaMessage if the media sent is a file. diff --git a/ui-kit/android/v4/getting-started.mdx b/ui-kit/android/v4/getting-started.mdx index 0c35a7374..b09de3c3e 100644 --- a/ui-kit/android/v4/getting-started.mdx +++ b/ui-kit/android/v4/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start your first conversation diff --git a/ui-kit/android/v4/group-add-members.mdx b/ui-kit/android/v4/group-add-members.mdx index 6577830ff..4c5fd501e 100644 --- a/ui-kit/android/v4/group-add-members.mdx +++ b/ui-kit/android/v4/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/group-details.mdx b/ui-kit/android/v4/group-details.mdx index 02fc0837e..e1cccdf1d 100644 --- a/ui-kit/android/v4/group-details.mdx +++ b/ui-kit/android/v4/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/group-members.mdx b/ui-kit/android/v4/group-members.mdx index e50336d00..4517c70db 100644 --- a/ui-kit/android/v4/group-members.mdx +++ b/ui-kit/android/v4/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/groups-with-messages.mdx b/ui-kit/android/v4/groups-with-messages.mdx index d26fd509d..a991315e8 100644 --- a/ui-kit/android/v4/groups-with-messages.mdx +++ b/ui-kit/android/v4/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/groups.mdx b/ui-kit/android/v4/groups.mdx index ab143b632..9ed6bf4a5 100644 --- a/ui-kit/android/v4/groups.mdx +++ b/ui-kit/android/v4/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/image-bubble.mdx b/ui-kit/android/v4/image-bubble.mdx index 3506b8b60..3a496a394 100644 --- a/ui-kit/android/v4/image-bubble.mdx +++ b/ui-kit/android/v4/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- `CometChatImageBubble` is the content view for a MediaMessage if the media sent is an image. diff --git a/ui-kit/android/v4/incoming-call.mdx b/ui-kit/android/v4/incoming-call.mdx index d25ce57df..ef023b2e5 100644 --- a/ui-kit/android/v4/incoming-call.mdx +++ b/ui-kit/android/v4/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/interactive-action-entity.mdx b/ui-kit/android/v4/interactive-action-entity.mdx index c7ca42e9e..46e031a32 100644 --- a/ui-kit/android/v4/interactive-action-entity.mdx +++ b/ui-kit/android/v4/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on `BaseInteractiveElement` diff --git a/ui-kit/android/v4/interactive-button-element.mdx b/ui-kit/android/v4/interactive-button-element.mdx index 7faa7ae0c..f05d2ed0d 100644 --- a/ui-kit/android/v4/interactive-button-element.mdx +++ b/ui-kit/android/v4/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- The `ButtonElement` class, inherited from the `BaseInteractiveElement` class, represents an interactive button element that can be added to a chat interface. It comprises of properties like button text and a flag indicating whether the button should be disabled after interaction. diff --git a/ui-kit/android/v4/interactive-card-bubble.mdx b/ui-kit/android/v4/interactive-card-bubble.mdx index 37875ba4d..b9f174ca2 100644 --- a/ui-kit/android/v4/interactive-card-bubble.mdx +++ b/ui-kit/android/v4/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The `CometChatCardBubble` component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/ui-kit/android/v4/interactive-card-message.mdx b/ui-kit/android/v4/interactive-card-message.mdx index 5efd2ef39..660f13d4a 100644 --- a/ui-kit/android/v4/interactive-card-message.mdx +++ b/ui-kit/android/v4/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- The `CardMessage` class is used to create a card message for CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/android/v4/interactive-checkbox-element.mdx b/ui-kit/android/v4/interactive-checkbox-element.mdx index 42925e2a6..1eb3bacc4 100644 --- a/ui-kit/android/v4/interactive-checkbox-element.mdx +++ b/ui-kit/android/v4/interactive-checkbox-element.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox Element" +description: "Checkbox Element — CometChat documentation." --- The `CheckboxElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/android/v4/interactive-custom-message.mdx b/ui-kit/android/v4/interactive-custom-message.mdx index 7bcd2c2f9..5877738a6 100644 --- a/ui-kit/android/v4/interactive-custom-message.mdx +++ b/ui-kit/android/v4/interactive-custom-message.mdx @@ -1,5 +1,6 @@ --- title: "Custom Interactive Message" +description: "Custom Interactive Message — CometChat documentation." --- The `CustomInteractiveMessage` class is used to create an interactive message that can be sent via CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/android/v4/interactive-date-time-element.mdx b/ui-kit/android/v4/interactive-date-time-element.mdx index 24297ce97..1b1839ea8 100644 --- a/ui-kit/android/v4/interactive-date-time-element.mdx +++ b/ui-kit/android/v4/interactive-date-time-element.mdx @@ -1,5 +1,6 @@ --- title: "DateTimeElement" +description: "DateTimeElement — CometChat documentation." --- The DateTimeElement class is used to create a Date Picker element in a user interface. diff --git a/ui-kit/android/v4/interactive-element-entity.mdx b/ui-kit/android/v4/interactive-element-entity.mdx index c057099be..aa91aa6d2 100644 --- a/ui-kit/android/v4/interactive-element-entity.mdx +++ b/ui-kit/android/v4/interactive-element-entity.mdx @@ -1,5 +1,6 @@ --- title: "Element Entity" +description: "Element Entity — CometChat documentation." --- This is the base class for every element possible in the Interactive message component, defined by cometchat diff --git a/ui-kit/android/v4/interactive-form-bubble.mdx b/ui-kit/android/v4/interactive-form-bubble.mdx index bbe4a791d..d0dd74158 100644 --- a/ui-kit/android/v4/interactive-form-bubble.mdx +++ b/ui-kit/android/v4/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The `CometChatFormBubble` component is used to render a form within a chat bubble. The form fields are dynamically built based on the data passed in the `message` prop. The form fields can include text inputs, checkboxes, radio buttons, dropdown, labels, single selects, buttons. Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/ui-kit/android/v4/interactive-form-message.mdx b/ui-kit/android/v4/interactive-form-message.mdx index c4669260b..83f2a81ad 100644 --- a/ui-kit/android/v4/interactive-form-message.mdx +++ b/ui-kit/android/v4/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- The `FormMessage` class is used to create an interactive form message that can be sent via CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/android/v4/interactive-label-element.mdx b/ui-kit/android/v4/interactive-label-element.mdx index 68cce289f..f3227b4b6 100644 --- a/ui-kit/android/v4/interactive-label-element.mdx +++ b/ui-kit/android/v4/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The `LabelElement` class enables the creation of a label element in a user interface. diff --git a/ui-kit/android/v4/interactive-radio-button-element.mdx b/ui-kit/android/v4/interactive-radio-button-element.mdx index 96300235e..a2052fb5d 100644 --- a/ui-kit/android/v4/interactive-radio-button-element.mdx +++ b/ui-kit/android/v4/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- The `RadioButtonElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/android/v4/interactive-scheduler-message.mdx b/ui-kit/android/v4/interactive-scheduler-message.mdx index 92ebb469d..ba962ed99 100644 --- a/ui-kit/android/v4/interactive-scheduler-message.mdx +++ b/ui-kit/android/v4/interactive-scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- The `SchedulerMessage` class is used to create an interactive scheduler message that can be sent via CometChat. It extends the [Interactive Messages](/sdk/android/interactive-messages) class from CometChat. diff --git a/ui-kit/android/v4/interactive-single-select-element.mdx b/ui-kit/android/v4/interactive-single-select-element.mdx index 9c82971ac..a8db81bdd 100644 --- a/ui-kit/android/v4/interactive-single-select-element.mdx +++ b/ui-kit/android/v4/interactive-single-select-element.mdx @@ -1,5 +1,6 @@ --- title: "Single Select Element" +description: "Single Select Element — CometChat documentation." --- The `SingleSelectElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/android/v4/interactive-spinner-element.mdx b/ui-kit/android/v4/interactive-spinner-element.mdx index 680ac35f8..fbbf348a0 100644 --- a/ui-kit/android/v4/interactive-spinner-element.mdx +++ b/ui-kit/android/v4/interactive-spinner-element.mdx @@ -1,5 +1,6 @@ --- title: "Spinner Element" +description: "Spinner Element — CometChat documentation." --- The `SpinnerElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/android/v4/interactive-textinput-element.mdx b/ui-kit/android/v4/interactive-textinput-element.mdx index 331a3f8d2..5beb483c3 100644 --- a/ui-kit/android/v4/interactive-textinput-element.mdx +++ b/ui-kit/android/v4/interactive-textinput-element.mdx @@ -1,5 +1,6 @@ --- title: "TextInput Element" +description: "TextInput Element — CometChat documentation." --- The `TextInputElement` class is used to create a text input element in a user interface. diff --git a/ui-kit/android/v4/join-protected-group.mdx b/ui-kit/android/v4/join-protected-group.mdx index 8400f16a2..4ca02a22e 100644 --- a/ui-kit/android/v4/join-protected-group.mdx +++ b/ui-kit/android/v4/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/link/changelog.mdx b/ui-kit/android/v4/link/changelog.mdx index a6ee25e91..09d01a90c 100644 --- a/ui-kit/android/v4/link/changelog.mdx +++ b/ui-kit/android/v4/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-android-legacy/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v4/link/java.mdx b/ui-kit/android/v4/link/java.mdx index 523156f7e..bf5b90957 100644 --- a/ui-kit/android/v4/link/java.mdx +++ b/ui-kit/android/v4/link/java.mdx @@ -1,4 +1,5 @@ --- title: "Java Sample App" url: "https://github.com/cometchat/cometchat-sample-app-android-java" +description: "Navigate to Java Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v4/link/kotlin.mdx b/ui-kit/android/v4/link/kotlin.mdx index 630f0e24b..221a880b8 100644 --- a/ui-kit/android/v4/link/kotlin.mdx +++ b/ui-kit/android/v4/link/kotlin.mdx @@ -1,4 +1,5 @@ --- title: "Kotlin Sample App" url: "https://github.com/cometchat/cometchat-uikit-android/tree/v4" +description: "Navigate to Kotlin Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/android/v4/list-base.mdx b/ui-kit/android/v4/list-base.mdx index 3db1ac76f..beabe3c5f 100644 --- a/ui-kit/android/v4/list-base.mdx +++ b/ui-kit/android/v4/list-base.mdx @@ -1,5 +1,6 @@ --- title: "List Base" +description: "List Base — CometChat documentation." --- `CometChatListBase` is a custom UI Component which displays common components used across `Conversations`, `Groups` & `Users`. It serves as the base component from which these components are inherited. diff --git a/ui-kit/android/v4/list-item.mdx b/ui-kit/android/v4/list-item.mdx index a6e70a4d8..3de118d80 100644 --- a/ui-kit/android/v4/list-item.mdx +++ b/ui-kit/android/v4/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- `CometChatListItem` contains one to three lines of text optionally flanked by icons or other widgets, such as `CometChatAvatar`, `CometChatDate` or `Text`. `CometChatAvatar` will always be shown in the leading view therefore either one among the `avatarURL` or `avatarName` must be provided. The icons (or other widgets) for the list item are defined with the `tailView` parameter. The first line of text is optional and is specified with `title`. The value of subtitle is also optional, will occupy the space allocated for an additional line of text or some other widget. diff --git a/ui-kit/android/v4/localize.mdx b/ui-kit/android/v4/localize.mdx index d3e062a43..456915e04 100644 --- a/ui-kit/android/v4/localize.mdx +++ b/ui-kit/android/v4/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/media-recorder.mdx b/ui-kit/android/v4/media-recorder.mdx index fbeb2b810..007b2052d 100644 --- a/ui-kit/android/v4/media-recorder.mdx +++ b/ui-kit/android/v4/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- The `CometChatMediaRecorder` is a custom Android component that provides a user interface for recording audio and playing back the recorded audio. It is designed to be easily integrated into chat applications or other projects where audio messaging is required. diff --git a/ui-kit/android/v4/mentions-formatter-guide.mdx b/ui-kit/android/v4/mentions-formatter-guide.mdx index 3abcb5b71..ebf5b9cec 100644 --- a/ui-kit/android/v4/mentions-formatter-guide.mdx +++ b/ui-kit/android/v4/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/android/v4/message-bubble.mdx b/ui-kit/android/v4/message-bubble.mdx index 8d08f3f2f..9fb65c2b9 100644 --- a/ui-kit/android/v4/message-bubble.mdx +++ b/ui-kit/android/v4/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/message-composer.mdx b/ui-kit/android/v4/message-composer.mdx index 5e7dfcbe3..def1cad63 100644 --- a/ui-kit/android/v4/message-composer.mdx +++ b/ui-kit/android/v4/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/message-header.mdx b/ui-kit/android/v4/message-header.mdx index 7a69b9641..c890f3753 100644 --- a/ui-kit/android/v4/message-header.mdx +++ b/ui-kit/android/v4/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/message-information.mdx b/ui-kit/android/v4/message-information.mdx index 2f5b217c0..d9b5614fc 100644 --- a/ui-kit/android/v4/message-information.mdx +++ b/ui-kit/android/v4/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- The MessageInformation is a [Component](/ui-kit/android/v4/components-overview#components) designed to display message-related information, such as delivery and read receipts. It serves as an integral part of the CometChat UI UI Kit, extending the [ListBase](/ui-kit/android/v4/list-base) class, which provides the underlying infrastructure for CometChat UI components. With its rich set of methods and properties, developers can easily customize and tailor the appearance and behavior of the message information view to suit the specific requirements of their application. diff --git a/ui-kit/android/v4/message-input.mdx b/ui-kit/android/v4/message-input.mdx index 82b55af62..fe868b9a0 100644 --- a/ui-kit/android/v4/message-input.mdx +++ b/ui-kit/android/v4/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- `CometChatMessageInput` is a component that provides a skeleton layout for contents of like `TextField`, auxiliary options, primary button view and attachment options. diff --git a/ui-kit/android/v4/message-list.mdx b/ui-kit/android/v4/message-list.mdx index 2fb2ca8f5..0e89ea6d3 100644 --- a/ui-kit/android/v4/message-list.mdx +++ b/ui-kit/android/v4/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/message-template.mdx b/ui-kit/android/v4/message-template.mdx index 93f270aaa..b64b15814 100644 --- a/ui-kit/android/v4/message-template.mdx +++ b/ui-kit/android/v4/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/messages.mdx b/ui-kit/android/v4/messages.mdx index 31b939c22..1f1dc99a1 100644 --- a/ui-kit/android/v4/messages.mdx +++ b/ui-kit/android/v4/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/methods.mdx b/ui-kit/android/v4/methods.mdx index 45ed3b890..b415ae243 100644 --- a/ui-kit/android/v4/methods.mdx +++ b/ui-kit/android/v4/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/multi-tab-chat-ui-guide.mdx b/ui-kit/android/v4/multi-tab-chat-ui-guide.mdx index 0a471923d..e377711dc 100644 --- a/ui-kit/android/v4/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/android/v4/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- In this guide you will learn how to create a tabbed layout component using [bottom navigation](https://m2.material.io/components/bottom-navigation#using-tabs) to use widgets like [CometChatUsersWithMessages](/ui-kit/android/v4/users-with-messages), [CometChatGroupsWithMessages](/ui-kit/android/v4/groups-with-messages) and [CometChatConversationsWithMessages](/ui-kit/android/v4/users-with-messages) simultaneously. diff --git a/ui-kit/android/v4/ongoing-call.mdx b/ui-kit/android/v4/ongoing-call.mdx index 6a9550eb7..95d008c47 100644 --- a/ui-kit/android/v4/ongoing-call.mdx +++ b/ui-kit/android/v4/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/outgoing-call.mdx b/ui-kit/android/v4/outgoing-call.mdx index 3eebb77fe..2192b9840 100644 --- a/ui-kit/android/v4/outgoing-call.mdx +++ b/ui-kit/android/v4/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/overview.mdx b/ui-kit/android/v4/overview.mdx index 25c5e7a82..ccae860a1 100644 --- a/ui-kit/android/v4/overview.mdx +++ b/ui-kit/android/v4/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- With CometChat's UI Kit for Android, you can effortlessly build a chat app equipped with all the essential messaging features, along with customizable options tailored to your application requirements. This UI Kit comprises prebuilt UI components organized into smaller modules and components, each configurable to meet your specific needs. diff --git a/ui-kit/android/v4/receipt.mdx b/ui-kit/android/v4/receipt.mdx index ffa3f2ee0..8d2fe69d9 100644 --- a/ui-kit/android/v4/receipt.mdx +++ b/ui-kit/android/v4/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- The CometChatReceipt component renders the receipts such as sending, sent, delivered, read and error state indicator of a message. diff --git a/ui-kit/android/v4/shortcut-formatter-guide.mdx b/ui-kit/android/v4/shortcut-formatter-guide.mdx index ab6b7c715..d0ee4c8b4 100644 --- a/ui-kit/android/v4/shortcut-formatter-guide.mdx +++ b/ui-kit/android/v4/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- ## Introduction diff --git a/ui-kit/android/v4/sound-manager.mdx b/ui-kit/android/v4/sound-manager.mdx index c57d4466b..a563c5833 100644 --- a/ui-kit/android/v4/sound-manager.mdx +++ b/ui-kit/android/v4/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/status-indicator.mdx b/ui-kit/android/v4/status-indicator.mdx index c8de2694a..9d2f592a5 100644 --- a/ui-kit/android/v4/status-indicator.mdx +++ b/ui-kit/android/v4/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- `CometChatStatusIndicator` is a customized component which indicates whether user is online or offline. You can customize the `borderColor`, `borderSize`, and `backgroundColor` of this component. diff --git a/ui-kit/android/v4/text-bubble.mdx b/ui-kit/android/v4/text-bubble.mdx index 2dc76e29a..afa2d3ddc 100644 --- a/ui-kit/android/v4/text-bubble.mdx +++ b/ui-kit/android/v4/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- `CometChatTextBubble` is the content view shown for TextMessage. diff --git a/ui-kit/android/v4/theme.mdx b/ui-kit/android/v4/theme.mdx index c07712687..d9f560ae5 100644 --- a/ui-kit/android/v4/theme.mdx +++ b/ui-kit/android/v4/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/threaded-messages.mdx b/ui-kit/android/v4/threaded-messages.mdx index b1089495b..92b4d253e 100644 --- a/ui-kit/android/v4/threaded-messages.mdx +++ b/ui-kit/android/v4/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/transfer-ownership.mdx b/ui-kit/android/v4/transfer-ownership.mdx index b9146055e..5c4a34bf0 100644 --- a/ui-kit/android/v4/transfer-ownership.mdx +++ b/ui-kit/android/v4/transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/users-with-messages.mdx b/ui-kit/android/v4/users-with-messages.mdx index f37b33c7f..59dd3d63f 100644 --- a/ui-kit/android/v4/users-with-messages.mdx +++ b/ui-kit/android/v4/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/users.mdx b/ui-kit/android/v4/users.mdx index 72678421d..e38f11717 100644 --- a/ui-kit/android/v4/users.mdx +++ b/ui-kit/android/v4/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- ## Overview diff --git a/ui-kit/android/v4/video-bubble.mdx b/ui-kit/android/v4/video-bubble.mdx index 2b2b117ec..08d7a4925 100644 --- a/ui-kit/android/v4/video-bubble.mdx +++ b/ui-kit/android/v4/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- `CometChatVideoBubble` is the content view for a MediaMessage if the media sent is a video. diff --git a/ui-kit/angular/2.0/javascript-2-0-overview.mdx b/ui-kit/angular/2.0/javascript-2-0-overview.mdx index 9580ee04e..edf236ad5 100644 --- a/ui-kit/angular/2.0/javascript-2-0-overview.mdx +++ b/ui-kit/angular/2.0/javascript-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/2.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/2.0/key-concepts.mdx b/ui-kit/angular/2.0/key-concepts.mdx index b8cfef722..479cd16ff 100644 --- a/ui-kit/angular/2.0/key-concepts.mdx +++ b/ui-kit/angular/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/angular/2.0/link/sdk.mdx b/ui-kit/angular/2.0/link/sdk.mdx index ee6f4494f..84e471eca 100644 --- a/ui-kit/angular/2.0/link/sdk.mdx +++ b/ui-kit/angular/2.0/link/sdk.mdx @@ -1,4 +1,5 @@ --- title: "Javascript SDK" url: "/sdk/javascript/2.0/overview" +description: "Navigate to Javascript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/2.0/message-structure-and-hierarchy.mdx b/ui-kit/angular/2.0/message-structure-and-hierarchy.mdx index 9b471b90a..2409f2dd4 100644 --- a/ui-kit/angular/2.0/message-structure-and-hierarchy.mdx +++ b/ui-kit/angular/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/angular/2.0/overview.mdx b/ui-kit/angular/2.0/overview.mdx index ebbd50f66..68713dd93 100644 --- a/ui-kit/angular/2.0/overview.mdx +++ b/ui-kit/angular/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat Angular UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/angular/2.0/ui-components.mdx b/ui-kit/angular/2.0/ui-components.mdx index f6b2ae1d2..edaa624b4 100644 --- a/ui-kit/angular/2.0/ui-components.mdx +++ b/ui-kit/angular/2.0/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/angular/3.0/javascript-3-0-overview.mdx b/ui-kit/angular/3.0/javascript-3-0-overview.mdx index 22b6579f4..3c2e8653d 100644 --- a/ui-kit/angular/3.0/javascript-3-0-overview.mdx +++ b/ui-kit/angular/3.0/javascript-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/3.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/3.0/key-concepts.mdx b/ui-kit/angular/3.0/key-concepts.mdx index e290d2e68..d74b76bd4 100644 --- a/ui-kit/angular/3.0/key-concepts.mdx +++ b/ui-kit/angular/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/angular/3.0/link/extension.mdx b/ui-kit/angular/3.0/link/extension.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/angular/3.0/link/extension.mdx +++ b/ui-kit/angular/3.0/link/extension.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/3.0/link/version.mdx b/ui-kit/angular/3.0/link/version.mdx index e53123d0b..e0a230ef0 100644 --- a/ui-kit/angular/3.0/link/version.mdx +++ b/ui-kit/angular/3.0/link/version.mdx @@ -1,4 +1,5 @@ --- title: "Version 4" url: "/ui-kit/angular/overview" +description: "Navigate to Version 4 documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/3.0/overview.mdx b/ui-kit/angular/3.0/overview.mdx index beb26bbe5..8ad77e54f 100644 --- a/ui-kit/angular/3.0/overview.mdx +++ b/ui-kit/angular/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/angular/3.0/ui-components.mdx b/ui-kit/angular/3.0/ui-components.mdx index 1555933af..c96a13dd8 100644 --- a/ui-kit/angular/3.0/ui-components.mdx +++ b/ui-kit/angular/3.0/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/angular/action-sheet.mdx b/ui-kit/angular/action-sheet.mdx index a33ee5409..df9169852 100644 --- a/ui-kit/angular/action-sheet.mdx +++ b/ui-kit/angular/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/ai-features.mdx b/ui-kit/angular/ai-features.mdx index 98fe10d99..ed1f2838b 100644 --- a/ui-kit/angular/ai-features.mdx +++ b/ui-kit/angular/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/audio-bubble.mdx b/ui-kit/angular/audio-bubble.mdx index c2f2d054b..c6da51739 100644 --- a/ui-kit/angular/audio-bubble.mdx +++ b/ui-kit/angular/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- `CometChatAudioBubble` is the content view for a MediaMessage if the media sent is an audio. diff --git a/ui-kit/angular/avatar.mdx b/ui-kit/angular/avatar.mdx index 7244a15c3..5a8e1b112 100644 --- a/ui-kit/angular/avatar.mdx +++ b/ui-kit/angular/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- `CometChatAvatar` component displays an image or user's avatar with fallback to the first two letters of the username or group's icon with fallback to the first two letter of the group name. diff --git a/ui-kit/angular/backdrop.mdx b/ui-kit/angular/backdrop.mdx index a4a1c8222..516f4f21a 100644 --- a/ui-kit/angular/backdrop.mdx +++ b/ui-kit/angular/backdrop.mdx @@ -1,5 +1,6 @@ --- title: "Backdrop" +description: "Backdrop — CometChat documentation." --- This element represents the background against which other elements are presented. diff --git a/ui-kit/angular/badge.mdx b/ui-kit/angular/badge.mdx index 07358aac4..80bcca42b 100644 --- a/ui-kit/angular/badge.mdx +++ b/ui-kit/angular/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- `CometChatBadge` is the custom component which is used to display the unread message count. It can be used in places like CometChatListItem, etc. diff --git a/ui-kit/angular/button-group.mdx b/ui-kit/angular/button-group.mdx index 70fc3c1f4..674b87f59 100644 --- a/ui-kit/angular/button-group.mdx +++ b/ui-kit/angular/button-group.mdx @@ -1,5 +1,6 @@ --- title: "Button Group" +description: "Button Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-buttons.mdx b/ui-kit/angular/call-buttons.mdx index 10f9534da..bf59ec403 100644 --- a/ui-kit/angular/call-buttons.mdx +++ b/ui-kit/angular/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-features.mdx b/ui-kit/angular/call-features.mdx index d92c48634..4c2cfe4e5 100644 --- a/ui-kit/angular/call-features.mdx +++ b/ui-kit/angular/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-log-details.mdx b/ui-kit/angular/call-log-details.mdx index d2c6aa3c6..e1b66e181 100644 --- a/ui-kit/angular/call-log-details.mdx +++ b/ui-kit/angular/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-log-history.mdx b/ui-kit/angular/call-log-history.mdx index a2b2db78d..0a220b998 100644 --- a/ui-kit/angular/call-log-history.mdx +++ b/ui-kit/angular/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-log-participants.mdx b/ui-kit/angular/call-log-participants.mdx index 800cbfc65..587ebc905 100644 --- a/ui-kit/angular/call-log-participants.mdx +++ b/ui-kit/angular/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Participants" +description: "Call Log Participants — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-log-recording.mdx b/ui-kit/angular/call-log-recording.mdx index 60305c63c..2db55d48f 100644 --- a/ui-kit/angular/call-log-recording.mdx +++ b/ui-kit/angular/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-log-with-details.mdx b/ui-kit/angular/call-log-with-details.mdx index 08b6cdfb6..278c36ea0 100644 --- a/ui-kit/angular/call-log-with-details.mdx +++ b/ui-kit/angular/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-logs.mdx b/ui-kit/angular/call-logs.mdx index 0faf75039..21d0a23a3 100644 --- a/ui-kit/angular/call-logs.mdx +++ b/ui-kit/angular/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/call-overview.mdx b/ui-kit/angular/call-overview.mdx index e06825018..51154114f 100644 --- a/ui-kit/angular/call-overview.mdx +++ b/ui-kit/angular/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's Calls feature is a sophisticated function that facilitates the smooth integration of one-on-one and group audio-visual calling capabilities into your application, enhancing user interactivity and experience. This advanced feature is implemented effectively and efficiently in the angular UI Kit. diff --git a/ui-kit/angular/checkbox.mdx b/ui-kit/angular/checkbox.mdx index 1d84259f5..c4f196f14 100644 --- a/ui-kit/angular/checkbox.mdx +++ b/ui-kit/angular/checkbox.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox" +description: "Checkbox — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/cometchat-quick-view.mdx b/ui-kit/angular/cometchat-quick-view.mdx index 967d5954e..5bc396c4b 100644 --- a/ui-kit/angular/cometchat-quick-view.mdx +++ b/ui-kit/angular/cometchat-quick-view.mdx @@ -1,5 +1,6 @@ --- title: "Quick View" +description: "Quick View — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/components-overview.mdx b/ui-kit/angular/components-overview.mdx index 6c8bf65c2..568d8b468 100644 --- a/ui-kit/angular/components-overview.mdx +++ b/ui-kit/angular/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI components that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/angular/confirm-dialog.mdx b/ui-kit/angular/confirm-dialog.mdx index f08af1e7e..f23a1f048 100644 --- a/ui-kit/angular/confirm-dialog.mdx +++ b/ui-kit/angular/confirm-dialog.mdx @@ -1,5 +1,6 @@ --- title: "Confirm Dialog" +description: "Confirm Dialog — CometChat documentation." --- ## OverView diff --git a/ui-kit/angular/contacts.mdx b/ui-kit/angular/contacts.mdx index 65d32c201..e696bf818 100644 --- a/ui-kit/angular/contacts.mdx +++ b/ui-kit/angular/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- CometChatContacts is a versatile Angular UI component specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. diff --git a/ui-kit/angular/conversations-with-messages.mdx b/ui-kit/angular/conversations-with-messages.mdx index a92ae19a9..f26176b8e 100644 --- a/ui-kit/angular/conversations-with-messages.mdx +++ b/ui-kit/angular/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/conversations.mdx b/ui-kit/angular/conversations.mdx index a524c09d9..451cd2520 100644 --- a/ui-kit/angular/conversations.mdx +++ b/ui-kit/angular/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/core-features.mdx b/ui-kit/angular/core-features.mdx index a45eb73e1..88aa7691e 100644 --- a/ui-kit/angular/core-features.mdx +++ b/ui-kit/angular/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/create-group.mdx b/ui-kit/angular/create-group.mdx index e636ed778..6a3e85ce8 100644 --- a/ui-kit/angular/create-group.mdx +++ b/ui-kit/angular/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/custom-message-guide.mdx b/ui-kit/angular/custom-message-guide.mdx index 27bfe77fe..d78755fb1 100644 --- a/ui-kit/angular/custom-message-guide.mdx +++ b/ui-kit/angular/custom-message-guide.mdx @@ -1,5 +1,6 @@ --- title: "Custom Message" +description: "Custom Message — CometChat integration guide." --- In this guide, we will demonstrate how to add a custom message with a custom-built message bubble to the [Message List](/ui-kit/angular/message-list) component. diff --git a/ui-kit/angular/custom-text-formatter-guide.mdx b/ui-kit/angular/custom-text-formatter-guide.mdx index 14706d0a8..25705c3b2 100644 --- a/ui-kit/angular/custom-text-formatter-guide.mdx +++ b/ui-kit/angular/custom-text-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Custom Text Formatter" +description: "Custom Text Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/angular/date.mdx b/ui-kit/angular/date.mdx index a7cf3254d..09c7aa149 100644 --- a/ui-kit/angular/date.mdx +++ b/ui-kit/angular/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- `CometChatDate` is a widget which is used to show the date and time. You can also customize the appearance of this widget by modifying its logic. diff --git a/ui-kit/angular/document-bubble.mdx b/ui-kit/angular/document-bubble.mdx index 0aba3b349..ae4195936 100644 --- a/ui-kit/angular/document-bubble.mdx +++ b/ui-kit/angular/document-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Document Bubble" +description: "Document Bubble — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/dropdown.mdx b/ui-kit/angular/dropdown.mdx index 475186c09..794b826be 100644 --- a/ui-kit/angular/dropdown.mdx +++ b/ui-kit/angular/dropdown.mdx @@ -1,5 +1,6 @@ --- title: "Dropdown" +description: "Dropdown — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/emoji-keyboard.mdx b/ui-kit/angular/emoji-keyboard.mdx index 95e480060..7f6b55d23 100644 --- a/ui-kit/angular/emoji-keyboard.mdx +++ b/ui-kit/angular/emoji-keyboard.mdx @@ -1,5 +1,6 @@ --- title: "Emoji Keyboard" +description: "Emoji Keyboard — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/events.mdx b/ui-kit/angular/events.mdx index 011a99964..636e6ac86 100644 --- a/ui-kit/angular/events.mdx +++ b/ui-kit/angular/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/extensions.mdx b/ui-kit/angular/extensions.mdx index 89c89485b..e7cd18089 100644 --- a/ui-kit/angular/extensions.mdx +++ b/ui-kit/angular/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/file-bubble.mdx b/ui-kit/angular/file-bubble.mdx index e1d6dc4a6..cbb4153e2 100644 --- a/ui-kit/angular/file-bubble.mdx +++ b/ui-kit/angular/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- `CometChatFileBubble` is the content view for a MediaMessage if the media sent is a file. diff --git a/ui-kit/angular/getting-started.mdx b/ui-kit/angular/getting-started.mdx index 6f045dc18..09eb326d2 100644 --- a/ui-kit/angular/getting-started.mdx +++ b/ui-kit/angular/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start your first conversation diff --git a/ui-kit/angular/group-add-members.mdx b/ui-kit/angular/group-add-members.mdx index 7f3f24e77..b0048b7df 100644 --- a/ui-kit/angular/group-add-members.mdx +++ b/ui-kit/angular/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/group-banned-members.mdx b/ui-kit/angular/group-banned-members.mdx index f075839b4..68b97e5d5 100644 --- a/ui-kit/angular/group-banned-members.mdx +++ b/ui-kit/angular/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/group-details.mdx b/ui-kit/angular/group-details.mdx index 6f7fe839c..0db6454e3 100644 --- a/ui-kit/angular/group-details.mdx +++ b/ui-kit/angular/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/group-members.mdx b/ui-kit/angular/group-members.mdx index 6d8cbac94..0e7e515fe 100644 --- a/ui-kit/angular/group-members.mdx +++ b/ui-kit/angular/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/group-transfer-ownership.mdx b/ui-kit/angular/group-transfer-ownership.mdx index 97bdd945f..7638a8104 100644 --- a/ui-kit/angular/group-transfer-ownership.mdx +++ b/ui-kit/angular/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/groups-with-messages.mdx b/ui-kit/angular/groups-with-messages.mdx index 7a7bfa761..106e5fb9c 100644 --- a/ui-kit/angular/groups-with-messages.mdx +++ b/ui-kit/angular/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/groups.mdx b/ui-kit/angular/groups.mdx index 3dc4d96b5..138801988 100644 --- a/ui-kit/angular/groups.mdx +++ b/ui-kit/angular/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/icon-button.mdx b/ui-kit/angular/icon-button.mdx index d6258c2db..07bf039cf 100644 --- a/ui-kit/angular/icon-button.mdx +++ b/ui-kit/angular/icon-button.mdx @@ -1,5 +1,6 @@ --- title: "Icon Button" +description: "Icon Button — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/icon.mdx b/ui-kit/angular/icon.mdx index 5c2f82ddc..a94323ab3 100644 --- a/ui-kit/angular/icon.mdx +++ b/ui-kit/angular/icon.mdx @@ -1,5 +1,6 @@ --- title: "Icon" +description: "Icon — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/image-bubble.mdx b/ui-kit/angular/image-bubble.mdx index 20017ba66..c5b590557 100644 --- a/ui-kit/angular/image-bubble.mdx +++ b/ui-kit/angular/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- `CometChatImageBubble` is the content view for a MediaMessage if the media sent is an image. diff --git a/ui-kit/angular/incoming-call.mdx b/ui-kit/angular/incoming-call.mdx index 02ce75293..6b887c604 100644 --- a/ui-kit/angular/incoming-call.mdx +++ b/ui-kit/angular/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/input.mdx b/ui-kit/angular/input.mdx index 3406afbb2..d3514b77c 100644 --- a/ui-kit/angular/input.mdx +++ b/ui-kit/angular/input.mdx @@ -1,5 +1,6 @@ --- title: "Input" +description: "Input — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/interactive-action-entity.mdx b/ui-kit/angular/interactive-action-entity.mdx index 86c655af5..b5184de8f 100644 --- a/ui-kit/angular/interactive-action-entity.mdx +++ b/ui-kit/angular/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on `BaseInteractiveElement` diff --git a/ui-kit/angular/interactive-button-element.mdx b/ui-kit/angular/interactive-button-element.mdx index 2b3e2faae..3a2e66621 100644 --- a/ui-kit/angular/interactive-button-element.mdx +++ b/ui-kit/angular/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- The `ButtonElement` class, inherited from the `BaseInteractiveElement` class, represents an interactive button element that can be added to a chat interface. It comprises of properties like button text and a flag indicating whether the button should be disabled after interaction. diff --git a/ui-kit/angular/interactive-card-bubble.mdx b/ui-kit/angular/interactive-card-bubble.mdx index 702a04421..31ce8fb57 100644 --- a/ui-kit/angular/interactive-card-bubble.mdx +++ b/ui-kit/angular/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The `CometChatCardBubble` component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/ui-kit/angular/interactive-card-message.mdx b/ui-kit/angular/interactive-card-message.mdx index ca4cd5e92..269433aa2 100644 --- a/ui-kit/angular/interactive-card-message.mdx +++ b/ui-kit/angular/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- The `CardMessage` class is used to create a card message for CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/angular/interactive-checkbox-element.mdx b/ui-kit/angular/interactive-checkbox-element.mdx index 1c99b2f40..0acb0a88a 100644 --- a/ui-kit/angular/interactive-checkbox-element.mdx +++ b/ui-kit/angular/interactive-checkbox-element.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox Element" +description: "Checkbox Element — CometChat documentation." --- The `CheckboxElement` class aids in creating checkbox input elements in a user interface. diff --git a/ui-kit/angular/interactive-custom-interactive-message.mdx b/ui-kit/angular/interactive-custom-interactive-message.mdx index 9d4be1015..87d8ca6e4 100644 --- a/ui-kit/angular/interactive-custom-interactive-message.mdx +++ b/ui-kit/angular/interactive-custom-interactive-message.mdx @@ -1,5 +1,6 @@ --- title: "Custom Interactive Message" +description: "Custom Interactive Message — CometChat documentation." --- The `CustomInteractiveMessage` class extends CometChat's `InteractiveMessage` class and represents a custom interactive message that can be sent via CometChat. diff --git a/ui-kit/angular/interactive-date-time-picker-element.mdx b/ui-kit/angular/interactive-date-time-picker-element.mdx index ff1d23fe1..15aafc8ed 100644 --- a/ui-kit/angular/interactive-date-time-picker-element.mdx +++ b/ui-kit/angular/interactive-date-time-picker-element.mdx @@ -1,5 +1,6 @@ --- title: "DateTimePickerElement" +description: "DateTimePickerElement — CometChat documentation." --- The DateTimePickerElement class is used to create a Date Picker element in a user interface. diff --git a/ui-kit/angular/interactive-dropdown-element.mdx b/ui-kit/angular/interactive-dropdown-element.mdx index cfa52ff0e..b44e9dc44 100644 --- a/ui-kit/angular/interactive-dropdown-element.mdx +++ b/ui-kit/angular/interactive-dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "DropdownElement" +description: "DropdownElement — CometChat documentation." --- The `DropdownElement` class is used to create a dropdown selection element in a user interface. diff --git a/ui-kit/angular/interactive-element-type.mdx b/ui-kit/angular/interactive-element-type.mdx index fc5392ca7..cb6fa962f 100644 --- a/ui-kit/angular/interactive-element-type.mdx +++ b/ui-kit/angular/interactive-element-type.mdx @@ -1,5 +1,6 @@ --- title: "Element Type" +description: "Element Type — CometChat documentation." --- This is the base class for every element possible in the Interactive message component, defined by CometChat diff --git a/ui-kit/angular/interactive-form-bubble.mdx b/ui-kit/angular/interactive-form-bubble.mdx index 5e5e0cf5d..1a7e0ccdc 100644 --- a/ui-kit/angular/interactive-form-bubble.mdx +++ b/ui-kit/angular/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The `CometChatFormBubble` component is used to render a form within a chat bubble. The form fields are dynamically built based on the data passed in the `message` prop. The form fields can include text inputs, checkboxes, radio buttons, dropdown, labels, single selects, buttons. Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/ui-kit/angular/interactive-form-message.mdx b/ui-kit/angular/interactive-form-message.mdx index 42474a5f3..9ba422f5c 100644 --- a/ui-kit/angular/interactive-form-message.mdx +++ b/ui-kit/angular/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- The `FormMessage` class is used to create an interactive form message that can be sent via CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/angular/interactive-label-element.mdx b/ui-kit/angular/interactive-label-element.mdx index ef63196d6..c9366bdb8 100644 --- a/ui-kit/angular/interactive-label-element.mdx +++ b/ui-kit/angular/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The `LabelElement` class enables the creation of a label element in a user interface. diff --git a/ui-kit/angular/interactive-radio-button-element.mdx b/ui-kit/angular/interactive-radio-button-element.mdx index 1b8bd3e5e..30fc77946 100644 --- a/ui-kit/angular/interactive-radio-button-element.mdx +++ b/ui-kit/angular/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- The `RadioButtonElement` class is designed to create a radio button input element in a user interface. diff --git a/ui-kit/angular/interactive-scheduler-bubble.mdx b/ui-kit/angular/interactive-scheduler-bubble.mdx index a6350662a..99aaebe8b 100644 --- a/ui-kit/angular/interactive-scheduler-bubble.mdx +++ b/ui-kit/angular/interactive-scheduler-bubble.mdx @@ -1,5 +1,6 @@ --- title: "SchedulerBubble" +description: "SchedulerBubble — CometChat documentation." --- SchedulerBubble is a versatile type of component designed to facilitate easy and efficient event scheduling. It offers the following key features: diff --git a/ui-kit/angular/interactive-scheduler-message.mdx b/ui-kit/angular/interactive-scheduler-message.mdx index 5f221afdd..8b43a9c35 100644 --- a/ui-kit/angular/interactive-scheduler-message.mdx +++ b/ui-kit/angular/interactive-scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- The `SchedulerMessage` class is used to create an interactive scheduler message that can be sent via CometChat. It extends the [Interactive Messages](/sdk/javascript/interactive-messages) class from CometChat. diff --git a/ui-kit/angular/interactive-single-select-element.mdx b/ui-kit/angular/interactive-single-select-element.mdx index d6a268c96..268d35701 100644 --- a/ui-kit/angular/interactive-single-select-element.mdx +++ b/ui-kit/angular/interactive-single-select-element.mdx @@ -1,5 +1,6 @@ --- title: "Single Select Element" +description: "Single Select Element — CometChat documentation." --- The `SingleSelectElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/angular/interactive-text-input-element.mdx b/ui-kit/angular/interactive-text-input-element.mdx index f31410e30..e1833a43c 100644 --- a/ui-kit/angular/interactive-text-input-element.mdx +++ b/ui-kit/angular/interactive-text-input-element.mdx @@ -1,5 +1,6 @@ --- title: "Text Input Element" +description: "Text Input Element — CometChat documentation." --- The `TextInputElement` class is used to create a text input element in a user interface. diff --git a/ui-kit/angular/join-protected-group.mdx b/ui-kit/angular/join-protected-group.mdx index 3d45760b4..c5bdb7fe2 100644 --- a/ui-kit/angular/join-protected-group.mdx +++ b/ui-kit/angular/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/label.mdx b/ui-kit/angular/label.mdx index 343cecd80..ce6d64d45 100644 --- a/ui-kit/angular/label.mdx +++ b/ui-kit/angular/label.mdx @@ -1,5 +1,6 @@ --- title: "Label" +description: "Label — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/link/changelog.mdx b/ui-kit/angular/link/changelog.mdx index 587316007..c357449a7 100644 --- a/ui-kit/angular/link/changelog.mdx +++ b/ui-kit/angular/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-angular/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/link/sample.mdx b/ui-kit/angular/link/sample.mdx index dcef84015..be60fd5e2 100644 --- a/ui-kit/angular/link/sample.mdx +++ b/ui-kit/angular/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "Angular Sample App" url: "https://github.com/cometchat/cometchat-sample-app-angular" +description: "Navigate to Angular Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/angular/list-item.mdx b/ui-kit/angular/list-item.mdx index 6b6edd794..4fa61c280 100644 --- a/ui-kit/angular/list-item.mdx +++ b/ui-kit/angular/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- `CometChatListItem` contains one to three lines of text optionally flanked by icons or other widgets, such as `CometChatAvatar`, `CometChatDate` or `Text`. `CometChatAvatar` will always be shown in the leading view therefore either one among the `avatarURL` or `avatarName` must be provided. The icons (or other widgets) for the list item are defined with the `tailView` parameter. The first line of text is optional and is specified with `title`. The value of subtitle is also optional, will occupy the space allocated for an additional line of text or some other widget. diff --git a/ui-kit/angular/list.mdx b/ui-kit/angular/list.mdx index 2e80152a8..a6755ccc1 100644 --- a/ui-kit/angular/list.mdx +++ b/ui-kit/angular/list.mdx @@ -1,5 +1,6 @@ --- title: "List" +description: "List — CometChat documentation." --- `CometChatList` contains one to three lines of text optionally flanked by icons or other widgets, such as `CometChatAvatar`, `CometChatDate` or `Text`. `CometChatAvatar` will always be shown in the leading view therefore either one among the `avatarURL` or `avatarName` must be provided. The icons (or other widgets) for the list item are defined with the `tailView` parameter. The first line of text is optional and is specified with `title`. The value of subtitle is also optional, will occupy the space allocated for an additional line of text or some other widget. diff --git a/ui-kit/angular/loader.mdx b/ui-kit/angular/loader.mdx index c6b54bfde..e1e80f7be 100644 --- a/ui-kit/angular/loader.mdx +++ b/ui-kit/angular/loader.mdx @@ -1,5 +1,6 @@ --- title: "Loader" +description: "Loader — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/localize.mdx b/ui-kit/angular/localize.mdx index b532eb983..d7e4e500f 100644 --- a/ui-kit/angular/localize.mdx +++ b/ui-kit/angular/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/media-recorder.mdx b/ui-kit/angular/media-recorder.mdx index 9e0b58e9b..97ff4e5fa 100644 --- a/ui-kit/angular/media-recorder.mdx +++ b/ui-kit/angular/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- The `CometChatMediaRecorder` is a custom Android component that provides a user interface for recording audio and playing back the recorded audio. It is designed to be easily integrated into chat applications or other projects where audio messaging is required. diff --git a/ui-kit/angular/mentions-formatter-guide.mdx b/ui-kit/angular/mentions-formatter-guide.mdx index f1c273bab..1914b0bdf 100644 --- a/ui-kit/angular/mentions-formatter-guide.mdx +++ b/ui-kit/angular/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/angular/message-bubble.mdx b/ui-kit/angular/message-bubble.mdx index 5ac38274f..cb8f30091 100644 --- a/ui-kit/angular/message-bubble.mdx +++ b/ui-kit/angular/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- This component is used to visually represent individual messages and display them in a conversation-like format. diff --git a/ui-kit/angular/message-composer.mdx b/ui-kit/angular/message-composer.mdx index 1526ee688..73e7964ca 100644 --- a/ui-kit/angular/message-composer.mdx +++ b/ui-kit/angular/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/message-header.mdx b/ui-kit/angular/message-header.mdx index 13b616a29..aefb3a42a 100644 --- a/ui-kit/angular/message-header.mdx +++ b/ui-kit/angular/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/message-information.mdx b/ui-kit/angular/message-information.mdx index a8efe0691..d5733d200 100644 --- a/ui-kit/angular/message-information.mdx +++ b/ui-kit/angular/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- The MessageInformation is a [Component](/ui-kit/angular/components-overview#components) designed to display message-related information, such as delivery and read receipts. It serves as an integral part of the CometChat UI UI Kit, extending the [List Item](/ui-kit/angular/list-item) class, which provides the underlying infrastructure for CometChat UI components. With its rich set of methods and properties, developers can easily customize and tailor the appearance and behavior of the message information view to suit the specific requirements of their application. diff --git a/ui-kit/angular/message-input.mdx b/ui-kit/angular/message-input.mdx index cf3527048..44acd569b 100644 --- a/ui-kit/angular/message-input.mdx +++ b/ui-kit/angular/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- `CometChatMessageInput` is a component that provides a skeleton layout for contents of like `TextField`, auxiliary options, primary button view and attachment options. This element enable users to enter free-form text data along with custom view of 3 variants (primary, secondary and auxiliary). diff --git a/ui-kit/angular/message-list.mdx b/ui-kit/angular/message-list.mdx index ecea4c027..2be92c35c 100644 --- a/ui-kit/angular/message-list.mdx +++ b/ui-kit/angular/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/message-template.mdx b/ui-kit/angular/message-template.mdx index cd6a9ba1b..a36b683a9 100644 --- a/ui-kit/angular/message-template.mdx +++ b/ui-kit/angular/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/messages.mdx b/ui-kit/angular/messages.mdx index c2785ffbc..7692289da 100644 --- a/ui-kit/angular/messages.mdx +++ b/ui-kit/angular/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/methods.mdx b/ui-kit/angular/methods.mdx index 6780532a6..80e893be4 100644 --- a/ui-kit/angular/methods.mdx +++ b/ui-kit/angular/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/modal.mdx b/ui-kit/angular/modal.mdx index 16a713e82..fbe547fbc 100644 --- a/ui-kit/angular/modal.mdx +++ b/ui-kit/angular/modal.mdx @@ -1,5 +1,6 @@ --- title: "Modal" +description: "Modal — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/multi-tab-chat-ui-guide.mdx b/ui-kit/angular/multi-tab-chat-ui-guide.mdx index b1f356da4..31be18f94 100644 --- a/ui-kit/angular/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/angular/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- This guide will help you achieve a tabbed layout (aka Multi-Tab Chat UI) of the components available in CometChatUIKit for Angular. diff --git a/ui-kit/angular/new-attachment-option-guide.mdx b/ui-kit/angular/new-attachment-option-guide.mdx index d7db73855..0686c4da0 100644 --- a/ui-kit/angular/new-attachment-option-guide.mdx +++ b/ui-kit/angular/new-attachment-option-guide.mdx @@ -1,5 +1,6 @@ --- title: "New Attachment Option" +description: "New Attachment Option — CometChat integration guide." --- In this guide, we will demonstrate how to add a custom option to the action sheet of the [MessageComposer](/ui-kit/angular/message-composer) component. This guide is meant to showcase how custom features can be built on top of the existing codebase, enabling developers to tailor the user experience to their specific requirements. diff --git a/ui-kit/angular/new-message-option-guide.mdx b/ui-kit/angular/new-message-option-guide.mdx index 301d1c1ff..3f21488dc 100644 --- a/ui-kit/angular/new-message-option-guide.mdx +++ b/ui-kit/angular/new-message-option-guide.mdx @@ -1,5 +1,6 @@ --- title: "New Message Option" +description: "New Message Option — CometChat integration guide." --- This guide will help you add a custom option to the messages of type image. By default, CometChat UI Kit for Angular supports the following message options: diff --git a/ui-kit/angular/ongoing-call.mdx b/ui-kit/angular/ongoing-call.mdx index 5428722f2..9b2b74af1 100644 --- a/ui-kit/angular/ongoing-call.mdx +++ b/ui-kit/angular/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/outgoing-call.mdx b/ui-kit/angular/outgoing-call.mdx index a97365cf1..c5a359540 100644 --- a/ui-kit/angular/outgoing-call.mdx +++ b/ui-kit/angular/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/overview.mdx b/ui-kit/angular/overview.mdx index de16e7cf6..0503bdc31 100644 --- a/ui-kit/angular/overview.mdx +++ b/ui-kit/angular/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/angular/pop-over.mdx b/ui-kit/angular/pop-over.mdx index c49699a43..433cb9435 100644 --- a/ui-kit/angular/pop-over.mdx +++ b/ui-kit/angular/pop-over.mdx @@ -1,5 +1,6 @@ --- title: "Pop Over" +description: "Pop Over — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/radio-button.mdx b/ui-kit/angular/radio-button.mdx index b8cf70e49..b8ce963b8 100644 --- a/ui-kit/angular/radio-button.mdx +++ b/ui-kit/angular/radio-button.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button" +description: "Radio Button — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/reaction-info.mdx b/ui-kit/angular/reaction-info.mdx index bf50c9dfa..f3e927390 100644 --- a/ui-kit/angular/reaction-info.mdx +++ b/ui-kit/angular/reaction-info.mdx @@ -1,5 +1,6 @@ --- title: "Reaction Info" +description: "Reaction Info — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/reaction-list.mdx b/ui-kit/angular/reaction-list.mdx index 771d405ee..7f74fc14a 100644 --- a/ui-kit/angular/reaction-list.mdx +++ b/ui-kit/angular/reaction-list.mdx @@ -1,5 +1,6 @@ --- title: "Reaction List" +description: "Reaction List — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/reaction.mdx b/ui-kit/angular/reaction.mdx index a8f7834a6..0b4d671e8 100644 --- a/ui-kit/angular/reaction.mdx +++ b/ui-kit/angular/reaction.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/receipt.mdx b/ui-kit/angular/receipt.mdx index 3b6573975..77bc1f8f4 100644 --- a/ui-kit/angular/receipt.mdx +++ b/ui-kit/angular/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- The CometChatReceipt component renders the receipts such as sending, sent, delivered, read and error state indicator of a message. diff --git a/ui-kit/angular/search-input.mdx b/ui-kit/angular/search-input.mdx index 33669e0e3..bc99709a5 100644 --- a/ui-kit/angular/search-input.mdx +++ b/ui-kit/angular/search-input.mdx @@ -1,5 +1,6 @@ --- title: "Search Input" +description: "Search Input — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/shortcut-formatter-guide.mdx b/ui-kit/angular/shortcut-formatter-guide.mdx index 84d5ddc47..f9c8b64ab 100644 --- a/ui-kit/angular/shortcut-formatter-guide.mdx +++ b/ui-kit/angular/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/angular/singleselect.mdx b/ui-kit/angular/singleselect.mdx index 5a1994f58..382c86f07 100644 --- a/ui-kit/angular/singleselect.mdx +++ b/ui-kit/angular/singleselect.mdx @@ -1,5 +1,6 @@ --- title: "Single Select" +description: "Single Select — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/sound-manager.mdx b/ui-kit/angular/sound-manager.mdx index d3010162d..393ed7a2d 100644 --- a/ui-kit/angular/sound-manager.mdx +++ b/ui-kit/angular/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/status-indicator.mdx b/ui-kit/angular/status-indicator.mdx index fd922402f..523e872e8 100644 --- a/ui-kit/angular/status-indicator.mdx +++ b/ui-kit/angular/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- `CometChatStatusIndicator` is a customized component which indicates whether user is online or offline. You can customize the `borderColor`, `borderSize`, and `backgroundColor` of this component. diff --git a/ui-kit/angular/text-bubble.mdx b/ui-kit/angular/text-bubble.mdx index 7a030ba93..bbacdb465 100644 --- a/ui-kit/angular/text-bubble.mdx +++ b/ui-kit/angular/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- `CometChatTextBubble` is the content view shown for TextMessage. diff --git a/ui-kit/angular/theme.mdx b/ui-kit/angular/theme.mdx index febf1d987..bd53ad20c 100644 --- a/ui-kit/angular/theme.mdx +++ b/ui-kit/angular/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/threaded-messages.mdx b/ui-kit/angular/threaded-messages.mdx index b064e60b1..72be534b5 100644 --- a/ui-kit/angular/threaded-messages.mdx +++ b/ui-kit/angular/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/url-formatter-guide.mdx b/ui-kit/angular/url-formatter-guide.mdx index 5ac23e4a5..02da3a77c 100644 --- a/ui-kit/angular/url-formatter-guide.mdx +++ b/ui-kit/angular/url-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "URL Formatter" +description: "URL Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/angular/user-details.mdx b/ui-kit/angular/user-details.mdx index 61cf37572..0d93ad5ff 100644 --- a/ui-kit/angular/user-details.mdx +++ b/ui-kit/angular/user-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/user-member-wrapper.mdx b/ui-kit/angular/user-member-wrapper.mdx index 14d90529f..58ee5ab07 100644 --- a/ui-kit/angular/user-member-wrapper.mdx +++ b/ui-kit/angular/user-member-wrapper.mdx @@ -1,5 +1,6 @@ --- title: "User Member Wrapper" +description: "User Member Wrapper — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/users-with-messages.mdx b/ui-kit/angular/users-with-messages.mdx index cc1d3c0dd..e457ec500 100644 --- a/ui-kit/angular/users-with-messages.mdx +++ b/ui-kit/angular/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/users.mdx b/ui-kit/angular/users.mdx index 40d545070..b39add62c 100644 --- a/ui-kit/angular/users.mdx +++ b/ui-kit/angular/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- ## Overview diff --git a/ui-kit/angular/v5/overview.mdx b/ui-kit/angular/v5/overview.mdx index b003339ba..038842d0c 100644 --- a/ui-kit/angular/v5/overview.mdx +++ b/ui-kit/angular/v5/overview.mdx @@ -1,5 +1,6 @@ --- title: Overview +description: "CometChat documentation page." --- diff --git a/ui-kit/angular/video-bubble.mdx b/ui-kit/angular/video-bubble.mdx index ec7bf357b..ed2250be3 100644 --- a/ui-kit/angular/video-bubble.mdx +++ b/ui-kit/angular/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- `CometChatVideoBubble` is the content view for a MediaMessage if the media sent is a video. diff --git a/ui-kit/flutter/link/changelog.mdx b/ui-kit/flutter/link/changelog.mdx index 112358550..7de4cc005 100644 --- a/ui-kit/flutter/link/changelog.mdx +++ b/ui-kit/flutter/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-flutter/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/flutter/link/sample.mdx b/ui-kit/flutter/link/sample.mdx index df4a74be3..e9cbab794 100644 --- a/ui-kit/flutter/link/sample.mdx +++ b/ui-kit/flutter/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "Flutter Sample App" url: "https://github.com/cometchat/cometchat-sample-app-flutter" +description: "Navigate to Flutter Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/flutter/multi-tab-chat-ui-guide.mdx b/ui-kit/flutter/multi-tab-chat-ui-guide.mdx index 949a0cc3d..24f03ebfa 100644 --- a/ui-kit/flutter/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/flutter/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- This guide will help you create a multi-tab chat user interface using the cometchat\_chat\_uikit package in Flutter. The final UI will consist of three tabs: Conversations, Users, and Groups. diff --git a/ui-kit/flutter/upgrading-from-v4.mdx b/ui-kit/flutter/upgrading-from-v4.mdx index ea2c9de2f..5cd8c5ee7 100644 --- a/ui-kit/flutter/upgrading-from-v4.mdx +++ b/ui-kit/flutter/upgrading-from-v4.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading from V4 to V5" +description: "Upgrading from V4 to V5 — CometChat documentation." --- diff --git a/ui-kit/flutter/v4/action-sheet.mdx b/ui-kit/flutter/v4/action-sheet.mdx index dcf9b380d..90e5774fe 100644 --- a/ui-kit/flutter/v4/action-sheet.mdx +++ b/ui-kit/flutter/v4/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- `CometChatActionSheet` is a `DraggableScrollableSheet` which shows each `ActionItem` and returns the `ActionItem` that is clicked on . You can customize the appearance of `CometChatActionSheet` too. diff --git a/ui-kit/flutter/v4/ai-features.mdx b/ui-kit/flutter/v4/ai-features.mdx index baa8e4ee4..49f6348eb 100644 --- a/ui-kit/flutter/v4/ai-features.mdx +++ b/ui-kit/flutter/v4/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/audio-bubble.mdx b/ui-kit/flutter/v4/audio-bubble.mdx index c4b398cc2..ccd874f8c 100644 --- a/ui-kit/flutter/v4/audio-bubble.mdx +++ b/ui-kit/flutter/v4/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- `CometChatAudioBubble` is the content view for a [MediaMessage](/sdk/flutter/send-message#media-message) if the media sent is an audio. diff --git a/ui-kit/flutter/v4/avatar.mdx b/ui-kit/flutter/v4/avatar.mdx index 1f586619b..88eafe0e3 100644 --- a/ui-kit/flutter/v4/avatar.mdx +++ b/ui-kit/flutter/v4/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- `CometChatAvatar` component displays an image or user's avatar with fallback to the first two letters of the username or group's icon with fallback to the first two letter of the group name. diff --git a/ui-kit/flutter/v4/badge.mdx b/ui-kit/flutter/v4/badge.mdx index 387b81d5a..469cd5cda 100644 --- a/ui-kit/flutter/v4/badge.mdx +++ b/ui-kit/flutter/v4/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- `CometChatBadge` is the custom component which is used to display the unread message count. It can be used in widgets like `CometChatListItem` shown for Conversation objects, `CometChatUI`, etc. diff --git a/ui-kit/flutter/v4/button.mdx b/ui-kit/flutter/v4/button.mdx index b25e24dc5..61c48cb16 100644 --- a/ui-kit/flutter/v4/button.mdx +++ b/ui-kit/flutter/v4/button.mdx @@ -1,5 +1,6 @@ --- title: "Button" +description: "Button — CometChat documentation." --- `CometChatButton` is a widget representing a button with optional icon and text. It provides customisable button styles through the `buttonStyle` object and handles tap events with `onTap` callback. diff --git a/ui-kit/flutter/v4/call-bubble.mdx b/ui-kit/flutter/v4/call-bubble.mdx index c0b6ff79c..a89038e42 100644 --- a/ui-kit/flutter/v4/call-bubble.mdx +++ b/ui-kit/flutter/v4/call-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Call Bubble" +description: "Call Bubble — CometChat documentation." --- `CometChatCallBubble` is a widget that displays the call information and a button to join a direct call. diff --git a/ui-kit/flutter/v4/call-buttons.mdx b/ui-kit/flutter/v4/call-buttons.mdx index 03dd200d7..f1d4cf4a3 100644 --- a/ui-kit/flutter/v4/call-buttons.mdx +++ b/ui-kit/flutter/v4/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-features.mdx b/ui-kit/flutter/v4/call-features.mdx index 76dc34d5c..826b7e682 100644 --- a/ui-kit/flutter/v4/call-features.mdx +++ b/ui-kit/flutter/v4/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-log-details.mdx b/ui-kit/flutter/v4/call-log-details.mdx index 706d560e2..4315eb363 100644 --- a/ui-kit/flutter/v4/call-log-details.mdx +++ b/ui-kit/flutter/v4/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-log-history.mdx b/ui-kit/flutter/v4/call-log-history.mdx index 36fe2a366..e3ff736bf 100644 --- a/ui-kit/flutter/v4/call-log-history.mdx +++ b/ui-kit/flutter/v4/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-log-participants.mdx b/ui-kit/flutter/v4/call-log-participants.mdx index 6ec888261..fa816eca0 100644 --- a/ui-kit/flutter/v4/call-log-participants.mdx +++ b/ui-kit/flutter/v4/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Participants" +description: "Call Log Participants — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-log-recording.mdx b/ui-kit/flutter/v4/call-log-recording.mdx index b409d6e23..2b0ef5cc7 100644 --- a/ui-kit/flutter/v4/call-log-recording.mdx +++ b/ui-kit/flutter/v4/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-log-with-details.mdx b/ui-kit/flutter/v4/call-log-with-details.mdx index 8b0239f7f..6a395baac 100644 --- a/ui-kit/flutter/v4/call-log-with-details.mdx +++ b/ui-kit/flutter/v4/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-logs.mdx b/ui-kit/flutter/v4/call-logs.mdx index 107e746dc..4bf012e14 100644 --- a/ui-kit/flutter/v4/call-logs.mdx +++ b/ui-kit/flutter/v4/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/call-overview.mdx b/ui-kit/flutter/v4/call-overview.mdx index cc8dd8154..fad73fdea 100644 --- a/ui-kit/flutter/v4/call-overview.mdx +++ b/ui-kit/flutter/v4/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- ## Overview diff --git a/ui-kit/flutter/v4/card.mdx b/ui-kit/flutter/v4/card.mdx index e0252ebef..94bfb8573 100644 --- a/ui-kit/flutter/v4/card.mdx +++ b/ui-kit/flutter/v4/card.mdx @@ -1,5 +1,6 @@ --- title: "Card" +description: "Card — CometChat documentation." --- `CometChatCard` is a prebuilt widget which is used to display a card with title, subtitle, avatar and bottom view. diff --git a/ui-kit/flutter/v4/components-overview.mdx b/ui-kit/flutter/v4/components-overview.mdx index d379c3615..bc23b55b4 100644 --- a/ui-kit/flutter/v4/components-overview.mdx +++ b/ui-kit/flutter/v4/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI Widget that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/flutter/v4/confirm-dialog.mdx b/ui-kit/flutter/v4/confirm-dialog.mdx index 128639b26..cc3d6441e 100644 --- a/ui-kit/flutter/v4/confirm-dialog.mdx +++ b/ui-kit/flutter/v4/confirm-dialog.mdx @@ -1,5 +1,6 @@ --- title: "Confirm Dialog" +description: "Confirm Dialog — CometChat documentation." --- `CometChatConfirmDialog` is a customizable alert dialog . diff --git a/ui-kit/flutter/v4/contacts.mdx b/ui-kit/flutter/v4/contacts.mdx index 2e0d1575b..fad683003 100644 --- a/ui-kit/flutter/v4/contacts.mdx +++ b/ui-kit/flutter/v4/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- `CometChatContacts` is a widget specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. Additionally, the widget includes a UI Segmented Control to switch between the users and groups list, enhancing navigation and usability. diff --git a/ui-kit/flutter/v4/conversations-with-messages.mdx b/ui-kit/flutter/v4/conversations-with-messages.mdx index 75a4d9cfd..d0ad9c6e6 100644 --- a/ui-kit/flutter/v4/conversations-with-messages.mdx +++ b/ui-kit/flutter/v4/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/conversations.mdx b/ui-kit/flutter/v4/conversations.mdx index 093b20a57..6274759f9 100644 --- a/ui-kit/flutter/v4/conversations.mdx +++ b/ui-kit/flutter/v4/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/core-features.mdx b/ui-kit/flutter/v4/core-features.mdx index 8de54a6db..19195ef6c 100644 --- a/ui-kit/flutter/v4/core-features.mdx +++ b/ui-kit/flutter/v4/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/create-group.mdx b/ui-kit/flutter/v4/create-group.mdx index c015a745b..4b7dfa4bf 100644 --- a/ui-kit/flutter/v4/create-group.mdx +++ b/ui-kit/flutter/v4/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/date.mdx b/ui-kit/flutter/v4/date.mdx index 97a2a4e19..529604c2b 100644 --- a/ui-kit/flutter/v4/date.mdx +++ b/ui-kit/flutter/v4/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- `CometChatDate` is a widget which is used to show the date and time. You can also customize the appearance of this widget by modifying its logic. diff --git a/ui-kit/flutter/v4/emoji-keyboard.mdx b/ui-kit/flutter/v4/emoji-keyboard.mdx index b895e4357..408d20ac2 100644 --- a/ui-kit/flutter/v4/emoji-keyboard.mdx +++ b/ui-kit/flutter/v4/emoji-keyboard.mdx @@ -1,5 +1,6 @@ --- title: "Emoji Keyboard" +description: "Emoji Keyboard — CometChat documentation." --- `CometChatEmojiKeyboard` is CometChat's very own customizable emoji keyboard. it can be rendered by calling function `showCometChatEmojiKeyboard`. diff --git a/ui-kit/flutter/v4/events.mdx b/ui-kit/flutter/v4/events.mdx index 7e059a76b..daea87313 100644 --- a/ui-kit/flutter/v4/events.mdx +++ b/ui-kit/flutter/v4/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/extensions.mdx b/ui-kit/flutter/v4/extensions.mdx index 76b43d8b3..7aeb4e7ad 100644 --- a/ui-kit/flutter/v4/extensions.mdx +++ b/ui-kit/flutter/v4/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/file-bubble.mdx b/ui-kit/flutter/v4/file-bubble.mdx index ee166c49a..f3513b81a 100644 --- a/ui-kit/flutter/v4/file-bubble.mdx +++ b/ui-kit/flutter/v4/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- `CometChatFileBubble` is the content view for a [MediaMessage](/sdk/flutter/send-message#media-message) if the media sent is a file. diff --git a/ui-kit/flutter/v4/getting-started.mdx b/ui-kit/flutter/v4/getting-started.mdx index ee96ab2cb..d12e2790b 100644 --- a/ui-kit/flutter/v4/getting-started.mdx +++ b/ui-kit/flutter/v4/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start Your First Conversation diff --git a/ui-kit/flutter/v4/group-add-members.mdx b/ui-kit/flutter/v4/group-add-members.mdx index a2e588f5e..1b661edff 100644 --- a/ui-kit/flutter/v4/group-add-members.mdx +++ b/ui-kit/flutter/v4/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/group-banned-members.mdx b/ui-kit/flutter/v4/group-banned-members.mdx index 080664c18..5b440f474 100644 --- a/ui-kit/flutter/v4/group-banned-members.mdx +++ b/ui-kit/flutter/v4/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/group-details.mdx b/ui-kit/flutter/v4/group-details.mdx index 93a142dbc..63cc94421 100644 --- a/ui-kit/flutter/v4/group-details.mdx +++ b/ui-kit/flutter/v4/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/group-members.mdx b/ui-kit/flutter/v4/group-members.mdx index f9ac3b87e..5bf2af85f 100644 --- a/ui-kit/flutter/v4/group-members.mdx +++ b/ui-kit/flutter/v4/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/group-transfer-ownership.mdx b/ui-kit/flutter/v4/group-transfer-ownership.mdx index 1f91478b8..398c46db4 100644 --- a/ui-kit/flutter/v4/group-transfer-ownership.mdx +++ b/ui-kit/flutter/v4/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/groups-with-messages.mdx b/ui-kit/flutter/v4/groups-with-messages.mdx index 14fd9c18c..50bfa7049 100644 --- a/ui-kit/flutter/v4/groups-with-messages.mdx +++ b/ui-kit/flutter/v4/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/groups.mdx b/ui-kit/flutter/v4/groups.mdx index c02e3d6c3..afb7e1a6d 100644 --- a/ui-kit/flutter/v4/groups.mdx +++ b/ui-kit/flutter/v4/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/image-bubble.mdx b/ui-kit/flutter/v4/image-bubble.mdx index e78e89d67..e56985f21 100644 --- a/ui-kit/flutter/v4/image-bubble.mdx +++ b/ui-kit/flutter/v4/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- `CometChatImageBubble` is the content view for a [MediaMessage](/sdk/flutter/send-message#media-message) if the media sent is an image. diff --git a/ui-kit/flutter/v4/incoming-call.mdx b/ui-kit/flutter/v4/incoming-call.mdx index 81f7b696e..a6d37e260 100644 --- a/ui-kit/flutter/v4/incoming-call.mdx +++ b/ui-kit/flutter/v4/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/interactive-action-entity.mdx b/ui-kit/flutter/v4/interactive-action-entity.mdx index e40bf9c29..029091568 100644 --- a/ui-kit/flutter/v4/interactive-action-entity.mdx +++ b/ui-kit/flutter/v4/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on `BaseInteractiveElement` diff --git a/ui-kit/flutter/v4/interactive-button-element.mdx b/ui-kit/flutter/v4/interactive-button-element.mdx index eb23377ff..04325dc3d 100644 --- a/ui-kit/flutter/v4/interactive-button-element.mdx +++ b/ui-kit/flutter/v4/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- The `ButtonElement` class, inherited from the `BaseInteractiveElement` class, represents an interactive button element that can be added to a chat interface. It comprises of properties like button text and a flag indicating whether the button should be disabled after interaction. diff --git a/ui-kit/flutter/v4/interactive-card-bubble.mdx b/ui-kit/flutter/v4/interactive-card-bubble.mdx index 6cb2f20a9..1daa3a140 100644 --- a/ui-kit/flutter/v4/interactive-card-bubble.mdx +++ b/ui-kit/flutter/v4/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The `CometChatCardBubble` component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/ui-kit/flutter/v4/interactive-card-message.mdx b/ui-kit/flutter/v4/interactive-card-message.mdx index 459e42d27..35af21c24 100644 --- a/ui-kit/flutter/v4/interactive-card-message.mdx +++ b/ui-kit/flutter/v4/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- The `CardMessage` class is used to create a card message for CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/flutter/v4/interactive-check-box-element.mdx b/ui-kit/flutter/v4/interactive-check-box-element.mdx index 6e11a6dca..d382007f9 100644 --- a/ui-kit/flutter/v4/interactive-check-box-element.mdx +++ b/ui-kit/flutter/v4/interactive-check-box-element.mdx @@ -1,5 +1,6 @@ --- title: "Check Box Element" +description: "Check Box Element — CometChat documentation." --- The `CheckboxElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/flutter/v4/interactive-date-time-picker-element.mdx b/ui-kit/flutter/v4/interactive-date-time-picker-element.mdx index 1948f278f..b8ef237c9 100644 --- a/ui-kit/flutter/v4/interactive-date-time-picker-element.mdx +++ b/ui-kit/flutter/v4/interactive-date-time-picker-element.mdx @@ -1,5 +1,6 @@ --- title: "Date Time Picker Element" +description: "Date Time Picker Element — CometChat documentation." --- `DateTimeElement` is used to represent a single input field that allows to select date and time. diff --git a/ui-kit/flutter/v4/interactive-dropdown-element.mdx b/ui-kit/flutter/v4/interactive-dropdown-element.mdx index 9e65cbbed..418fa402d 100644 --- a/ui-kit/flutter/v4/interactive-dropdown-element.mdx +++ b/ui-kit/flutter/v4/interactive-dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "DropDown Element" +description: "DropDown Element — CometChat documentation." --- The `DropDownElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/flutter/v4/interactive-element-entity.mdx b/ui-kit/flutter/v4/interactive-element-entity.mdx index bf94cb17f..a2ff9431f 100644 --- a/ui-kit/flutter/v4/interactive-element-entity.mdx +++ b/ui-kit/flutter/v4/interactive-element-entity.mdx @@ -1,5 +1,6 @@ --- title: "Element Entity" +description: "Element Entity — CometChat documentation." --- This is the base class for every element possible in the Interactive message component, defined by cometchat diff --git a/ui-kit/flutter/v4/interactive-form-bubble.mdx b/ui-kit/flutter/v4/interactive-form-bubble.mdx index b7136fd2e..054ad1587 100644 --- a/ui-kit/flutter/v4/interactive-form-bubble.mdx +++ b/ui-kit/flutter/v4/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The `CometChatFormBubble` component is used to render a [form](/ui-kit/flutter/v4/interactive-form-message) within a chat bubble. The form fields are dynamically built based on the data passed in the `message` prop. The form fields can include [TextInput Element](/ui-kit/flutter/v4/interactive-textinput-element), [Label Element](/ui-kit/flutter/v4/interactive-label-element), [Checkbox Element](/ui-kit/flutter/v4/interactive-check-box-element), [Radio Button Element](/ui-kit/flutter/v4/interactive-radio-button-element), [Dropdown](/web-elements/dropdown), [Single Select Element](/ui-kit/flutter/v4/single-select), [Button Element](/ui-kit/flutter/v4/button). Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/ui-kit/flutter/v4/interactive-form-message.mdx b/ui-kit/flutter/v4/interactive-form-message.mdx index 0e3b9a804..c6721e27a 100644 --- a/ui-kit/flutter/v4/interactive-form-message.mdx +++ b/ui-kit/flutter/v4/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- The `FormMessage` class is used to create an interactive form message that can be sent via CometChat. It extends the [Interactive Messages](/sdk/flutter/interactive-messages) class from CometChat. diff --git a/ui-kit/flutter/v4/interactive-label-element.mdx b/ui-kit/flutter/v4/interactive-label-element.mdx index c92f07496..426e25091 100644 --- a/ui-kit/flutter/v4/interactive-label-element.mdx +++ b/ui-kit/flutter/v4/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The `LabelElement` class enables the creation of a label element in a user interface. diff --git a/ui-kit/flutter/v4/interactive-radio-button-element.mdx b/ui-kit/flutter/v4/interactive-radio-button-element.mdx index 823ff95c8..e872f5a25 100644 --- a/ui-kit/flutter/v4/interactive-radio-button-element.mdx +++ b/ui-kit/flutter/v4/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- The `RadioButtonElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/flutter/v4/interactive-scheduler-bubble.mdx b/ui-kit/flutter/v4/interactive-scheduler-bubble.mdx index fa73093a1..5c3ef7b9b 100644 --- a/ui-kit/flutter/v4/interactive-scheduler-bubble.mdx +++ b/ui-kit/flutter/v4/interactive-scheduler-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Bubble" +description: "Scheduler Bubble — CometChat documentation." --- CometChatSchedulerBubble is a versatile type of message widget designed to facilitate easy and efficient event scheduling. It offers the following key features: diff --git a/ui-kit/flutter/v4/interactive-scheduler-message.mdx b/ui-kit/flutter/v4/interactive-scheduler-message.mdx index ff07db2d8..000bb796f 100644 --- a/ui-kit/flutter/v4/interactive-scheduler-message.mdx +++ b/ui-kit/flutter/v4/interactive-scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- The `SchedulerMessage` class is used to create an interactive scheduler message that can be sent via CometChat. It extends the [Interactive Messages](/sdk/flutter/interactive-messages) class from CometChat. diff --git a/ui-kit/flutter/v4/interactive-textinput-element.mdx b/ui-kit/flutter/v4/interactive-textinput-element.mdx index ba8981941..e6c930b22 100644 --- a/ui-kit/flutter/v4/interactive-textinput-element.mdx +++ b/ui-kit/flutter/v4/interactive-textinput-element.mdx @@ -1,5 +1,6 @@ --- title: "TextInput Element" +description: "TextInput Element — CometChat documentation." --- The `TextInputElement` class is used to create a text input element in a user interface. diff --git a/ui-kit/flutter/v4/join-protected-group.mdx b/ui-kit/flutter/v4/join-protected-group.mdx index be2f41a93..5723f763e 100644 --- a/ui-kit/flutter/v4/join-protected-group.mdx +++ b/ui-kit/flutter/v4/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/list-base.mdx b/ui-kit/flutter/v4/list-base.mdx index 9f3c7f321..4fdf3fffb 100644 --- a/ui-kit/flutter/v4/list-base.mdx +++ b/ui-kit/flutter/v4/list-base.mdx @@ -1,5 +1,6 @@ --- title: "List Base" +description: "List Base — CometChat documentation." --- `CometChatListBase` is a scaffolding widget which displays contents passed as child used across `CometChatConversations`, `CometChatGroups` & `CometChatUsers`. diff --git a/ui-kit/flutter/v4/list-item.mdx b/ui-kit/flutter/v4/list-item.mdx index 5c7b16df6..5586d225d 100644 --- a/ui-kit/flutter/v4/list-item.mdx +++ b/ui-kit/flutter/v4/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- `CometChatListItem` contains one to three lines of text optionally flanked by icons or other widgets, such as `CometChatAvatar`, `CometChatDate` or `Text`. `CometChatAvatar` will always be shown in the leading view therefore either one among the `avatarURL` or `avatarName` must be provided. The icons (or other widgets) for the list item are defined with the `tailView` parameter. The first line of text is optional and is specified with `title`. The value of subtitle is also optional, will occupy the space allocated for an additional line of text or some other widget. diff --git a/ui-kit/flutter/v4/localize.mdx b/ui-kit/flutter/v4/localize.mdx index 4b15c1bb7..c6886b7aa 100644 --- a/ui-kit/flutter/v4/localize.mdx +++ b/ui-kit/flutter/v4/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/media-recorder.mdx b/ui-kit/flutter/v4/media-recorder.mdx index 29f9d4f40..18290b795 100644 --- a/ui-kit/flutter/v4/media-recorder.mdx +++ b/ui-kit/flutter/v4/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- `CometChatMediaRecorder` is a class that allows users to record and send audio messages. It has a start button to start recording, a stop button to stop recording, a play button to play the recorded message, a pause button to pause the recorded message, a submit button to submit the recorded message and a close button to close the media recorder. diff --git a/ui-kit/flutter/v4/mentions-formatter-guide.mdx b/ui-kit/flutter/v4/mentions-formatter-guide.mdx index 4136beee1..bc623c8ad 100644 --- a/ui-kit/flutter/v4/mentions-formatter-guide.mdx +++ b/ui-kit/flutter/v4/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/flutter/v4/message-bubble.mdx b/ui-kit/flutter/v4/message-bubble.mdx index 618da0348..1404678b5 100644 --- a/ui-kit/flutter/v4/message-bubble.mdx +++ b/ui-kit/flutter/v4/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/message-composer.mdx b/ui-kit/flutter/v4/message-composer.mdx index 4c1ea001d..48dbe86eb 100644 --- a/ui-kit/flutter/v4/message-composer.mdx +++ b/ui-kit/flutter/v4/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/message-header.mdx b/ui-kit/flutter/v4/message-header.mdx index 644cef9f5..433410dd5 100644 --- a/ui-kit/flutter/v4/message-header.mdx +++ b/ui-kit/flutter/v4/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/message-information.mdx b/ui-kit/flutter/v4/message-information.mdx index 3dc29f236..9a5d28850 100644 --- a/ui-kit/flutter/v4/message-information.mdx +++ b/ui-kit/flutter/v4/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- The `CometChatMessageInformation` is a [Widget](/ui-kit/flutter/v4/components-overview#components) designed to display message-related information, such as delivery and read receipts. It serves as an integral part of the CometChat UI UI Kit, extending the [ListBase](/ui-kit/flutter/v4/list-base) class, which provides the underlying infrastructure for CometChat UI widgets. With its rich set of methods and properties, developers can easily customize and tailor the appearance and behavior of the message information widget to suit the specific requirements of their application. diff --git a/ui-kit/flutter/v4/message-input.mdx b/ui-kit/flutter/v4/message-input.mdx index 18cde18ab..aa7412775 100644 --- a/ui-kit/flutter/v4/message-input.mdx +++ b/ui-kit/flutter/v4/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- `CometChatMessageInput` is a component that provides a skeleton layout for contents of [CometChatMessageComposer](/ui-kit/flutter/v4/message-composer) like `TextField`, auxiliary options, primary button view and attachment options. diff --git a/ui-kit/flutter/v4/message-list.mdx b/ui-kit/flutter/v4/message-list.mdx index 96eafc786..6253ae173 100644 --- a/ui-kit/flutter/v4/message-list.mdx +++ b/ui-kit/flutter/v4/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/message-template.mdx b/ui-kit/flutter/v4/message-template.mdx index d671bcdaa..4addec00c 100644 --- a/ui-kit/flutter/v4/message-template.mdx +++ b/ui-kit/flutter/v4/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/messages.mdx b/ui-kit/flutter/v4/messages.mdx index 172813c22..988d1508e 100644 --- a/ui-kit/flutter/v4/messages.mdx +++ b/ui-kit/flutter/v4/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/methods.mdx b/ui-kit/flutter/v4/methods.mdx index e07b9b467..2ca332cd3 100644 --- a/ui-kit/flutter/v4/methods.mdx +++ b/ui-kit/flutter/v4/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/multi-tab-chat-ui-guide.mdx b/ui-kit/flutter/v4/multi-tab-chat-ui-guide.mdx index 949a0cc3d..24f03ebfa 100644 --- a/ui-kit/flutter/v4/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/flutter/v4/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- This guide will help you create a multi-tab chat user interface using the cometchat\_chat\_uikit package in Flutter. The final UI will consist of three tabs: Conversations, Users, and Groups. diff --git a/ui-kit/flutter/v4/ongoing-call.mdx b/ui-kit/flutter/v4/ongoing-call.mdx index 225e178e2..de16bb05c 100644 --- a/ui-kit/flutter/v4/ongoing-call.mdx +++ b/ui-kit/flutter/v4/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/outgoing-call.mdx b/ui-kit/flutter/v4/outgoing-call.mdx index aff2dfec2..ffb995f8b 100644 --- a/ui-kit/flutter/v4/outgoing-call.mdx +++ b/ui-kit/flutter/v4/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/overview.mdx b/ui-kit/flutter/v4/overview.mdx index 426bacdce..0aa179975 100644 --- a/ui-kit/flutter/v4/overview.mdx +++ b/ui-kit/flutter/v4/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's UI Kit for Flutter simplifies the development of chat applications by providing a comprehensive set of customizable UI widgets. These widgets are organized into modules, allowing for easy integration and adaptation to match the specific requirements of your app. With this UI Kit, you can effortlessly incorporate essential messaging features while tailoring the interface to align with your application's unique style and functionality. diff --git a/ui-kit/flutter/v4/quick-view.mdx b/ui-kit/flutter/v4/quick-view.mdx index 476dda9c9..5bf5c959e 100644 --- a/ui-kit/flutter/v4/quick-view.mdx +++ b/ui-kit/flutter/v4/quick-view.mdx @@ -1,5 +1,6 @@ --- title: "Quick View" +description: "Quick View — CometChat documentation." --- CometChat's Quick View component allows you to create a quick overview panel with a title, subtitle, and an optional close button. diff --git a/ui-kit/flutter/v4/reactions-list.mdx b/ui-kit/flutter/v4/reactions-list.mdx index 002f91923..b1bfb81e3 100644 --- a/ui-kit/flutter/v4/reactions-list.mdx +++ b/ui-kit/flutter/v4/reactions-list.mdx @@ -1,5 +1,6 @@ --- title: "Reactions List" +description: "Reactions List — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/reactions.mdx b/ui-kit/flutter/v4/reactions.mdx index bb5634c0e..fa56b75cc 100644 --- a/ui-kit/flutter/v4/reactions.mdx +++ b/ui-kit/flutter/v4/reactions.mdx @@ -1,6 +1,7 @@ --- title: "Reactions" sidebarTitle: "Overview" +description: "Reactions — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/receipt.mdx b/ui-kit/flutter/v4/receipt.mdx index a75ee16d0..1023b39e0 100644 --- a/ui-kit/flutter/v4/receipt.mdx +++ b/ui-kit/flutter/v4/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- The `CometChatReceipt` component renders the receipts such as sending, sent, delivered, read, and error state indicators of a message. diff --git a/ui-kit/flutter/v4/shortcut-formatter-guide.mdx b/ui-kit/flutter/v4/shortcut-formatter-guide.mdx index 6660a6eff..33a7161d7 100644 --- a/ui-kit/flutter/v4/shortcut-formatter-guide.mdx +++ b/ui-kit/flutter/v4/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Shortcut Formatter" +description: "Shortcut Formatter — CometChat integration guide." --- ## Introduction diff --git a/ui-kit/flutter/v4/single-select.mdx b/ui-kit/flutter/v4/single-select.mdx index 907dfffb8..106652d47 100644 --- a/ui-kit/flutter/v4/single-select.mdx +++ b/ui-kit/flutter/v4/single-select.mdx @@ -1,5 +1,6 @@ --- title: "Single Select" +description: "Single Select — CometChat documentation." --- The `CometChatSingleSelect` component is a customizable Single Select component that allows you to choose one option from a list of box-structured options. diff --git a/ui-kit/flutter/v4/sound-manager.mdx b/ui-kit/flutter/v4/sound-manager.mdx index fd3317552..6e7fa02f0 100644 --- a/ui-kit/flutter/v4/sound-manager.mdx +++ b/ui-kit/flutter/v4/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/status-indicator.mdx b/ui-kit/flutter/v4/status-indicator.mdx index 7589a75c4..c118ad73d 100644 --- a/ui-kit/flutter/v4/status-indicator.mdx +++ b/ui-kit/flutter/v4/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- `CometChatStatusIndicator` is a component which indicates whether user is online or offline. You can customize the `border` and `background color` of this component. diff --git a/ui-kit/flutter/v4/text-bubble.mdx b/ui-kit/flutter/v4/text-bubble.mdx index 9fc219b4a..1d2e7b285 100644 --- a/ui-kit/flutter/v4/text-bubble.mdx +++ b/ui-kit/flutter/v4/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- `CometChatTextBubble` is the content view shown for [TextMessage](/sdk/flutter/send-message#text-message). diff --git a/ui-kit/flutter/v4/theme.mdx b/ui-kit/flutter/v4/theme.mdx index 657dee3a5..b18ee26d0 100644 --- a/ui-kit/flutter/v4/theme.mdx +++ b/ui-kit/flutter/v4/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/threaded-messages.mdx b/ui-kit/flutter/v4/threaded-messages.mdx index 9c5b07149..0f902038f 100644 --- a/ui-kit/flutter/v4/threaded-messages.mdx +++ b/ui-kit/flutter/v4/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/user-details.mdx b/ui-kit/flutter/v4/user-details.mdx index 62dd81ec1..00d5dbbcb 100644 --- a/ui-kit/flutter/v4/user-details.mdx +++ b/ui-kit/flutter/v4/user-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/users-with-messages.mdx b/ui-kit/flutter/v4/users-with-messages.mdx index 9edae1518..f7634d35a 100644 --- a/ui-kit/flutter/v4/users-with-messages.mdx +++ b/ui-kit/flutter/v4/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/users.mdx b/ui-kit/flutter/v4/users.mdx index 0c42bbb05..e682517b7 100644 --- a/ui-kit/flutter/v4/users.mdx +++ b/ui-kit/flutter/v4/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- ## Overview diff --git a/ui-kit/flutter/v4/video-bubble.mdx b/ui-kit/flutter/v4/video-bubble.mdx index 7d2e9a5a5..32b92f825 100644 --- a/ui-kit/flutter/v4/video-bubble.mdx +++ b/ui-kit/flutter/v4/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- `CometChatVideoBubble` is the content view for a [MediaMessage](/sdk/flutter/send-message#media-message) if the media sent is a video. diff --git a/ui-kit/ios/compact-message-composer.mdx b/ui-kit/ios/compact-message-composer.mdx index e49da9411..8916e9f04 100644 --- a/ui-kit/ios/compact-message-composer.mdx +++ b/ui-kit/ios/compact-message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Compact Message Composer" +description: "Compact Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/link/changelog.mdx b/ui-kit/ios/link/changelog.mdx index 93875d746..091346209 100644 --- a/ui-kit/ios/link/changelog.mdx +++ b/ui-kit/ios/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-ios/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/link/figma.mdx b/ui-kit/ios/link/figma.mdx index afbd1a467..077585558 100644 --- a/ui-kit/ios/link/figma.mdx +++ b/ui-kit/ios/link/figma.mdx @@ -1,4 +1,5 @@ --- title: "Figma Design" url: "https://www.figma.com/community/file/1444325479486807899/cometchat-ui-kit-for-ios" +description: "Navigate to Figma Design documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/link/sample.mdx b/ui-kit/ios/link/sample.mdx index 394270a49..5caddcef2 100644 --- a/ui-kit/ios/link/sample.mdx +++ b/ui-kit/ios/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "iOS Sample App" url: "https://github.com/cometchat/cometchat-uikit-ios/tree/v5" +description: "Navigate to iOS Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v2/ios-2-0-overview.mdx b/ui-kit/ios/v2/ios-2-0-overview.mdx index a2b556226..2e8ebe5f6 100644 --- a/ui-kit/ios/v2/ios-2-0-overview.mdx +++ b/ui-kit/ios/v2/ios-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "iOS SDK" url: "/sdk/ios/2.0/overview" +description: "Navigate to iOS SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v2/ios-customize-ui-kit.mdx b/ui-kit/ios/v2/ios-customize-ui-kit.mdx index 2d110fd39..645404678 100644 --- a/ui-kit/ios/v2/ios-customize-ui-kit.mdx +++ b/ui-kit/ios/v2/ios-customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- diff --git a/ui-kit/ios/v2/key-concepts.mdx b/ui-kit/ios/v2/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/ios/v2/key-concepts.mdx +++ b/ui-kit/ios/v2/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/ios/v2/message-structure-and-hierarchy.mdx b/ui-kit/ios/v2/message-structure-and-hierarchy.mdx index 06692c9d0..6272c3ae3 100644 --- a/ui-kit/ios/v2/message-structure-and-hierarchy.mdx +++ b/ui-kit/ios/v2/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/ios/v2/overview.mdx b/ui-kit/ios/v2/overview.mdx index 1e53bb3d5..ac7f408b0 100644 --- a/ui-kit/ios/v2/overview.mdx +++ b/ui-kit/ios/v2/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The **CometChat iOS UI Kit** is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/ios/v2/ui-components.mdx b/ui-kit/ios/v2/ui-components.mdx index 837acd545..f818a97a8 100644 --- a/ui-kit/ios/v2/ui-components.mdx +++ b/ui-kit/ios/v2/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/ios/v3/customize-ui-kit.mdx b/ui-kit/ios/v3/customize-ui-kit.mdx index fde305dcf..678aa02c2 100644 --- a/ui-kit/ios/v3/customize-ui-kit.mdx +++ b/ui-kit/ios/v3/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- diff --git a/ui-kit/ios/v3/ios-3-0-overview.mdx b/ui-kit/ios/v3/ios-3-0-overview.mdx index 1463fde85..87e7e8757 100644 --- a/ui-kit/ios/v3/ios-3-0-overview.mdx +++ b/ui-kit/ios/v3/ios-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "iOS SDK" url: "/sdk/ios/3.0/overview" +description: "Navigate to iOS SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v3/ios-ui-components.mdx b/ui-kit/ios/v3/ios-ui-components.mdx index 99cf79af0..eaf36d406 100644 --- a/ui-kit/ios/v3/ios-ui-components.mdx +++ b/ui-kit/ios/v3/ios-ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/ios/v3/key-concepts.mdx b/ui-kit/ios/v3/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/ios/v3/key-concepts.mdx +++ b/ui-kit/ios/v3/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/ios/v3/link/extension.mdx b/ui-kit/ios/v3/link/extension.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/ios/v3/link/extension.mdx +++ b/ui-kit/ios/v3/link/extension.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v3/link/version.mdx b/ui-kit/ios/v3/link/version.mdx index afe9576f3..a01a9ff8f 100644 --- a/ui-kit/ios/v3/link/version.mdx +++ b/ui-kit/ios/v3/link/version.mdx @@ -1,4 +1,5 @@ --- title: "Version 4" url: "/ui-kit/ios/v4/overview" +description: "Navigate to Version 4 documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v3/overview.mdx b/ui-kit/ios/v3/overview.mdx index d58b9a8bc..d1f913685 100644 --- a/ui-kit/ios/v3/overview.mdx +++ b/ui-kit/ios/v3/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The **CometChat Swift UI Kit** lets developers integrate text chat and voice/video calling features into iOS apps seamlessly. diff --git a/ui-kit/ios/v4/action-sheet.mdx b/ui-kit/ios/v4/action-sheet.mdx index abac536a4..3ecda5fc7 100644 --- a/ui-kit/ios/v4/action-sheet.mdx +++ b/ui-kit/ios/v4/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/ai-features.mdx b/ui-kit/ios/v4/ai-features.mdx index be875ba3c..6c8d5b8ad 100644 --- a/ui-kit/ios/v4/ai-features.mdx +++ b/ui-kit/ios/v4/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/audio-bubble.mdx b/ui-kit/ios/v4/audio-bubble.mdx index 9dbb5f502..5196d9707 100644 --- a/ui-kit/ios/v4/audio-bubble.mdx +++ b/ui-kit/ios/v4/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- `CometChatAudioBubble` is the content view for a MediaMessage if the media sent is an audio. diff --git a/ui-kit/ios/v4/avatar.mdx b/ui-kit/ios/v4/avatar.mdx index 5436c78a7..9d1ef959d 100644 --- a/ui-kit/ios/v4/avatar.mdx +++ b/ui-kit/ios/v4/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- The `CometChatAvatar` component displays user and group avatars. For users and groups , it displays either an image or the user's avatar and falls back to the first two letters of the username. diff --git a/ui-kit/ios/v4/badge.mdx b/ui-kit/ios/v4/badge.mdx index f7316a837..c4471d329 100644 --- a/ui-kit/ios/v4/badge.mdx +++ b/ui-kit/ios/v4/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- The `CometChatBadge` component displays the unread count of messages for one-to-one private and group chats. diff --git a/ui-kit/ios/v4/call-buttons.mdx b/ui-kit/ios/v4/call-buttons.mdx index 7a4ccd546..48d230335 100644 --- a/ui-kit/ios/v4/call-buttons.mdx +++ b/ui-kit/ios/v4/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-features.mdx b/ui-kit/ios/v4/call-features.mdx index 423cc28ae..a54a12c5a 100644 --- a/ui-kit/ios/v4/call-features.mdx +++ b/ui-kit/ios/v4/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-log-details.mdx b/ui-kit/ios/v4/call-log-details.mdx index 6f5974474..f7506f089 100644 --- a/ui-kit/ios/v4/call-log-details.mdx +++ b/ui-kit/ios/v4/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-log-history.mdx b/ui-kit/ios/v4/call-log-history.mdx index 142209e0b..32ed77d0c 100644 --- a/ui-kit/ios/v4/call-log-history.mdx +++ b/ui-kit/ios/v4/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-log-participants.mdx b/ui-kit/ios/v4/call-log-participants.mdx index 46c97e4ce..175569c5f 100644 --- a/ui-kit/ios/v4/call-log-participants.mdx +++ b/ui-kit/ios/v4/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Participants" +description: "Call Log Participants — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-log-recording.mdx b/ui-kit/ios/v4/call-log-recording.mdx index 943eb561d..3c9f81793 100644 --- a/ui-kit/ios/v4/call-log-recording.mdx +++ b/ui-kit/ios/v4/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-log-with-details.mdx b/ui-kit/ios/v4/call-log-with-details.mdx index 9e358f267..f2d34c4fc 100644 --- a/ui-kit/ios/v4/call-log-with-details.mdx +++ b/ui-kit/ios/v4/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-logs.mdx b/ui-kit/ios/v4/call-logs.mdx index 6ae31a87a..a46472c1e 100644 --- a/ui-kit/ios/v4/call-logs.mdx +++ b/ui-kit/ios/v4/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/call-overview.mdx b/ui-kit/ios/v4/call-overview.mdx index b7023716b..be9cc8b1f 100644 --- a/ui-kit/ios/v4/call-overview.mdx +++ b/ui-kit/ios/v4/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- ## Overview diff --git a/ui-kit/ios/v4/components-overview.mdx b/ui-kit/ios/v4/components-overview.mdx index 3888e4b00..63287042d 100644 --- a/ui-kit/ios/v4/components-overview.mdx +++ b/ui-kit/ios/v4/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI components that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/ios/v4/contacts.mdx b/ui-kit/ios/v4/contacts.mdx index 128716cb0..d3e024ba9 100644 --- a/ui-kit/ios/v4/contacts.mdx +++ b/ui-kit/ios/v4/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- `CometChatContacts` is a `UIViewController` specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. Additionally, the view controller includes a `UISegmentedControl` to switch between the users and groups list, enhancing navigation and usability. diff --git a/ui-kit/ios/v4/conversations-with-messages.mdx b/ui-kit/ios/v4/conversations-with-messages.mdx index ef62f8248..5700d57a8 100644 --- a/ui-kit/ios/v4/conversations-with-messages.mdx +++ b/ui-kit/ios/v4/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/conversations.mdx b/ui-kit/ios/v4/conversations.mdx index 7e8a0c478..7182c9735 100644 --- a/ui-kit/ios/v4/conversations.mdx +++ b/ui-kit/ios/v4/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/core-features.mdx b/ui-kit/ios/v4/core-features.mdx index 64bb66cdc..52c15668e 100644 --- a/ui-kit/ios/v4/core-features.mdx +++ b/ui-kit/ios/v4/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/create-group.mdx b/ui-kit/ios/v4/create-group.mdx index 8ddef31e9..0d8b80d07 100644 --- a/ui-kit/ios/v4/create-group.mdx +++ b/ui-kit/ios/v4/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/date.mdx b/ui-kit/ios/v4/date.mdx index f3dcfad50..13d589447 100644 --- a/ui-kit/ios/v4/date.mdx +++ b/ui-kit/ios/v4/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- `CometChatDate` is a UILabel which is used to show the date and time. It provides various methods to customize the appearance and behavior of the CometChatDate. diff --git a/ui-kit/ios/v4/events.mdx b/ui-kit/ios/v4/events.mdx index c159fa652..03c877f1e 100644 --- a/ui-kit/ios/v4/events.mdx +++ b/ui-kit/ios/v4/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/extensions.mdx b/ui-kit/ios/v4/extensions.mdx index d5f46e4a5..df6d45c59 100644 --- a/ui-kit/ios/v4/extensions.mdx +++ b/ui-kit/ios/v4/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/file-bubble.mdx b/ui-kit/ios/v4/file-bubble.mdx index 70eeb7c0b..753f6a519 100644 --- a/ui-kit/ios/v4/file-bubble.mdx +++ b/ui-kit/ios/v4/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- CometChatFileBubble is the content view for a MediaMessage if the media sent is an file. diff --git a/ui-kit/ios/v4/getting-started.mdx b/ui-kit/ios/v4/getting-started.mdx index 34395baa1..2c7f8c3c0 100644 --- a/ui-kit/ios/v4/getting-started.mdx +++ b/ui-kit/ios/v4/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start your first conversation diff --git a/ui-kit/ios/v4/group-add-members.mdx b/ui-kit/ios/v4/group-add-members.mdx index 03e6bb4ac..bada837c6 100644 --- a/ui-kit/ios/v4/group-add-members.mdx +++ b/ui-kit/ios/v4/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/group-banned-members.mdx b/ui-kit/ios/v4/group-banned-members.mdx index db44937d6..cc4c3f9b7 100644 --- a/ui-kit/ios/v4/group-banned-members.mdx +++ b/ui-kit/ios/v4/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/group-details.mdx b/ui-kit/ios/v4/group-details.mdx index fcfa64dde..a47ad559f 100644 --- a/ui-kit/ios/v4/group-details.mdx +++ b/ui-kit/ios/v4/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/group-members.mdx b/ui-kit/ios/v4/group-members.mdx index 372499274..74eaef4b8 100644 --- a/ui-kit/ios/v4/group-members.mdx +++ b/ui-kit/ios/v4/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/group-transfer-ownership.mdx b/ui-kit/ios/v4/group-transfer-ownership.mdx index 105bb1719..5c717c9f6 100644 --- a/ui-kit/ios/v4/group-transfer-ownership.mdx +++ b/ui-kit/ios/v4/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/groups-with-messages.mdx b/ui-kit/ios/v4/groups-with-messages.mdx index 98c0e8844..56fd279fe 100644 --- a/ui-kit/ios/v4/groups-with-messages.mdx +++ b/ui-kit/ios/v4/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/groups.mdx b/ui-kit/ios/v4/groups.mdx index c1522337f..832a16cde 100644 --- a/ui-kit/ios/v4/groups.mdx +++ b/ui-kit/ios/v4/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/image-bubble.mdx b/ui-kit/ios/v4/image-bubble.mdx index 469a50c47..a0ce83a30 100644 --- a/ui-kit/ios/v4/image-bubble.mdx +++ b/ui-kit/ios/v4/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- `CometChatImageBubble` is the content view for a MediaMessage if the media sent is an image. diff --git a/ui-kit/ios/v4/incoming-call.mdx b/ui-kit/ios/v4/incoming-call.mdx index 1dc49c3a5..8e00e2cee 100644 --- a/ui-kit/ios/v4/incoming-call.mdx +++ b/ui-kit/ios/v4/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/interactive-action-entity.mdx b/ui-kit/ios/v4/interactive-action-entity.mdx index f5e434a02..65bf088a6 100644 --- a/ui-kit/ios/v4/interactive-action-entity.mdx +++ b/ui-kit/ios/v4/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on `BaseInteractiveElement` diff --git a/ui-kit/ios/v4/interactive-button-element.mdx b/ui-kit/ios/v4/interactive-button-element.mdx index b5420f8f9..efc87f0e1 100644 --- a/ui-kit/ios/v4/interactive-button-element.mdx +++ b/ui-kit/ios/v4/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- The `ButtonElement` class, inherited from the `BaseInteractiveElement` class, represents an interactive button element that can be added to a chat interface. It comprises of properties like button text and a flag indicating whether the button should be disabled after interaction. diff --git a/ui-kit/ios/v4/interactive-card-bubble.mdx b/ui-kit/ios/v4/interactive-card-bubble.mdx index 0ae4977aa..19c305c1c 100644 --- a/ui-kit/ios/v4/interactive-card-bubble.mdx +++ b/ui-kit/ios/v4/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The `CometChatCardBubble` component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/ui-kit/ios/v4/interactive-card-message.mdx b/ui-kit/ios/v4/interactive-card-message.mdx index b65081188..5588fc478 100644 --- a/ui-kit/ios/v4/interactive-card-message.mdx +++ b/ui-kit/ios/v4/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- The `CardMessage` class is used to create a card message for CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/ios/v4/interactive-check-box-element.mdx b/ui-kit/ios/v4/interactive-check-box-element.mdx index 94a92a797..7125826a9 100644 --- a/ui-kit/ios/v4/interactive-check-box-element.mdx +++ b/ui-kit/ios/v4/interactive-check-box-element.mdx @@ -1,5 +1,6 @@ --- title: "Check Box Element" +description: "Check Box Element — CometChat documentation." --- The `CheckboxElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/ios/v4/interactive-date-time-picker-element.mdx b/ui-kit/ios/v4/interactive-date-time-picker-element.mdx index f85c52a66..870150b83 100644 --- a/ui-kit/ios/v4/interactive-date-time-picker-element.mdx +++ b/ui-kit/ios/v4/interactive-date-time-picker-element.mdx @@ -1,5 +1,6 @@ --- title: "Date Time Picker Element" +description: "Date Time Picker Element — CometChat documentation." --- `DateTimeElement` is used to represent a single input field that allows to select date and time. diff --git a/ui-kit/ios/v4/interactive-dropdown-element.mdx b/ui-kit/ios/v4/interactive-dropdown-element.mdx index 465a0b4b9..d7f4e2b09 100644 --- a/ui-kit/ios/v4/interactive-dropdown-element.mdx +++ b/ui-kit/ios/v4/interactive-dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "DropDown Element" +description: "DropDown Element — CometChat documentation." --- The `DropDownElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/ios/v4/interactive-element-entity.mdx b/ui-kit/ios/v4/interactive-element-entity.mdx index cc9eb3ff6..98d68bd50 100644 --- a/ui-kit/ios/v4/interactive-element-entity.mdx +++ b/ui-kit/ios/v4/interactive-element-entity.mdx @@ -1,5 +1,6 @@ --- title: "Element Entity" +description: "Element Entity — CometChat documentation." --- This is the base class for every element possible in the Interactive message component, defined by cometchat diff --git a/ui-kit/ios/v4/interactive-form-bubble.mdx b/ui-kit/ios/v4/interactive-form-bubble.mdx index 668144bb3..05a2be58c 100644 --- a/ui-kit/ios/v4/interactive-form-bubble.mdx +++ b/ui-kit/ios/v4/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The `CometChatFormBubble` component is used to render a form within a chat bubble. The form fields are dynamically built based on the data passed in the `message` prop. The form fields can include text inputs, checkboxes, radio buttons, dropdown, labels, single selects, buttons. Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/ui-kit/ios/v4/interactive-form-message.mdx b/ui-kit/ios/v4/interactive-form-message.mdx index 724546e88..1170b0317 100644 --- a/ui-kit/ios/v4/interactive-form-message.mdx +++ b/ui-kit/ios/v4/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- The `FormMessage` class is used to create an interactive form message that can be sent via CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/ui-kit/ios/v4/interactive-label-element.mdx b/ui-kit/ios/v4/interactive-label-element.mdx index 1fbcd64d6..58d2d21f2 100644 --- a/ui-kit/ios/v4/interactive-label-element.mdx +++ b/ui-kit/ios/v4/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The `LabelElement` class enables the creation of a label element in a user interface. diff --git a/ui-kit/ios/v4/interactive-radio-button-element.mdx b/ui-kit/ios/v4/interactive-radio-button-element.mdx index 74188f485..6994507a0 100644 --- a/ui-kit/ios/v4/interactive-radio-button-element.mdx +++ b/ui-kit/ios/v4/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- The `RadioButtonElement` class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/ios/v4/interactive-scheduler-bubble.mdx b/ui-kit/ios/v4/interactive-scheduler-bubble.mdx index 55a26fc22..61a3e3eda 100644 --- a/ui-kit/ios/v4/interactive-scheduler-bubble.mdx +++ b/ui-kit/ios/v4/interactive-scheduler-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Bubble" +description: "Scheduler Bubble — CometChat documentation." --- CometChatSchedulerBubble is a versatile type of message widget designed to facilitate easy and efficient event scheduling. It offers the following key features: diff --git a/ui-kit/ios/v4/interactive-scheduler-message.mdx b/ui-kit/ios/v4/interactive-scheduler-message.mdx index 6d28880e4..88a9a79e6 100644 --- a/ui-kit/ios/v4/interactive-scheduler-message.mdx +++ b/ui-kit/ios/v4/interactive-scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- The `SchedulerMessage` class is used to create an interactive scheduler message that can be sent via CometChat. It extends the Interactive Interactive Messages class from CometChat. diff --git a/ui-kit/ios/v4/interactive-textinput-element.mdx b/ui-kit/ios/v4/interactive-textinput-element.mdx index 66485b817..252209e26 100644 --- a/ui-kit/ios/v4/interactive-textinput-element.mdx +++ b/ui-kit/ios/v4/interactive-textinput-element.mdx @@ -1,5 +1,6 @@ --- title: "TextInput Element" +description: "TextInput Element — CometChat documentation." --- The `TextInputElement` class is used to create a text input element in a user interface. diff --git a/ui-kit/ios/v4/join-protected-group.mdx b/ui-kit/ios/v4/join-protected-group.mdx index ccfdcd98b..dfeefd7ea 100644 --- a/ui-kit/ios/v4/join-protected-group.mdx +++ b/ui-kit/ios/v4/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/link/sample.mdx b/ui-kit/ios/v4/link/sample.mdx index 4172d09f7..8d83beb76 100644 --- a/ui-kit/ios/v4/link/sample.mdx +++ b/ui-kit/ios/v4/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "iOS Sample App" url: "https://github.com/cometchat/cometchat-uikit-ios/tree/v4" +description: "Navigate to iOS Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/ios/v4/list-base.mdx b/ui-kit/ios/v4/list-base.mdx index ac9ed4c08..72b3854fb 100644 --- a/ui-kit/ios/v4/list-base.mdx +++ b/ui-kit/ios/v4/list-base.mdx @@ -1,5 +1,6 @@ --- title: "List Base" +description: "List Base — CometChat documentation." --- **CometChatListBase** is a container component having title (`navigationBar`), search (`search-bar`), `background`, and a container to embed a list view, such as `CometChatConversationList, CometChatGroupList, CometChatUserList,CometChatCallList.` diff --git a/ui-kit/ios/v4/list-item.mdx b/ui-kit/ios/v4/list-item.mdx index 04dd196ce..da1c25428 100644 --- a/ui-kit/ios/v4/list-item.mdx +++ b/ui-kit/ios/v4/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- `CometChatListItem` contains one to three lines of text optionally flanked by icons or other views, such as `CometChatAvatar`, `CometChatDate` or `Text`. `CometChatAvatar` will always be shown in the leading view therefore either one among the `avatarURL` or `avatarName` must be provided. The icons (or other widgets) for the list item are defined with the `tailView` parameter. The first line of text is optional and is specified with `title`. The value of subtitle is also optional, will occupy the space allocated for an additional line of text or some other view. diff --git a/ui-kit/ios/v4/localize.mdx b/ui-kit/ios/v4/localize.mdx index dd0b48439..a5e9844bd 100644 --- a/ui-kit/ios/v4/localize.mdx +++ b/ui-kit/ios/v4/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/media-recorder.mdx b/ui-kit/ios/v4/media-recorder.mdx index a38878c80..b45c38f9d 100644 --- a/ui-kit/ios/v4/media-recorder.mdx +++ b/ui-kit/ios/v4/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- `CometChatMediaRecorder` is a class that allows users to record and send audio messages. It has a start button to start recording, a stop button to stop recording, a play button to play the recorded message, a pause button to pause the recorded message, a submit button to submit the recorded message and a close button to close the media recorder. diff --git a/ui-kit/ios/v4/mentions-formatter-guide.mdx b/ui-kit/ios/v4/mentions-formatter-guide.mdx index 448797aa9..d8b78002e 100644 --- a/ui-kit/ios/v4/mentions-formatter-guide.mdx +++ b/ui-kit/ios/v4/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/ios/v4/message-bubble.mdx b/ui-kit/ios/v4/message-bubble.mdx index 3ce281388..b42bf1027 100644 --- a/ui-kit/ios/v4/message-bubble.mdx +++ b/ui-kit/ios/v4/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/message-composer.mdx b/ui-kit/ios/v4/message-composer.mdx index 7ebbff3be..9cb64c52d 100644 --- a/ui-kit/ios/v4/message-composer.mdx +++ b/ui-kit/ios/v4/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/message-header.mdx b/ui-kit/ios/v4/message-header.mdx index 9a91ee785..1b8063fa5 100644 --- a/ui-kit/ios/v4/message-header.mdx +++ b/ui-kit/ios/v4/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/message-information.mdx b/ui-kit/ios/v4/message-information.mdx index 5fa4054b1..b5d93a3c6 100644 --- a/ui-kit/ios/v4/message-information.mdx +++ b/ui-kit/ios/v4/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- The MessageInformation is a [Component](/ui-kit/ios/v4/components-overview#components) designed to display message-related information, such as delivery and read receipts. It serves as an integral part of the CometChat UI Kit, extending the [ListBase](/ui-kit/ios/v4/list-base) class, which provides the underlying infrastructure for CometChat UI components. With its rich set of methods and properties, developers can easily customize and tailor the appearance and behavior of the message information view to suit the specific requirements of their application. diff --git a/ui-kit/ios/v4/message-input.mdx b/ui-kit/ios/v4/message-input.mdx index 82b55af62..fe868b9a0 100644 --- a/ui-kit/ios/v4/message-input.mdx +++ b/ui-kit/ios/v4/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- `CometChatMessageInput` is a component that provides a skeleton layout for contents of like `TextField`, auxiliary options, primary button view and attachment options. diff --git a/ui-kit/ios/v4/message-list.mdx b/ui-kit/ios/v4/message-list.mdx index c945884cf..8b7bcd73f 100644 --- a/ui-kit/ios/v4/message-list.mdx +++ b/ui-kit/ios/v4/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/message-template.mdx b/ui-kit/ios/v4/message-template.mdx index 72a72b63d..e5eb73736 100644 --- a/ui-kit/ios/v4/message-template.mdx +++ b/ui-kit/ios/v4/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- ## Overview @@ -365,7 +366,7 @@ The `template.contentView` method of MessageTemplate allows you to add a custom custom\_message\_view\_file -``` +```python import UIKit import CometChatSDK import CometChatUIKitSwift diff --git a/ui-kit/ios/v4/messages.mdx b/ui-kit/ios/v4/messages.mdx index edc59f835..792e72996 100644 --- a/ui-kit/ios/v4/messages.mdx +++ b/ui-kit/ios/v4/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/methods.mdx b/ui-kit/ios/v4/methods.mdx index 5ee1253d5..076b15f57 100644 --- a/ui-kit/ios/v4/methods.mdx +++ b/ui-kit/ios/v4/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/multi-tab-chat-ui-guide.mdx b/ui-kit/ios/v4/multi-tab-chat-ui-guide.mdx index cde8ca4a1..745eb96d0 100644 --- a/ui-kit/ios/v4/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/ios/v4/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- ## How to add Tabbed layout for Chat,Users,Groups and Call modules? diff --git a/ui-kit/ios/v4/ongoing-call.mdx b/ui-kit/ios/v4/ongoing-call.mdx index 70a83252d..0b240577c 100644 --- a/ui-kit/ios/v4/ongoing-call.mdx +++ b/ui-kit/ios/v4/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/outgoing-call.mdx b/ui-kit/ios/v4/outgoing-call.mdx index 6f4e8be1d..0f7c1fe42 100644 --- a/ui-kit/ios/v4/outgoing-call.mdx +++ b/ui-kit/ios/v4/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/overview.mdx b/ui-kit/ios/v4/overview.mdx index 69689e687..7ec80489d 100644 --- a/ui-kit/ios/v4/overview.mdx +++ b/ui-kit/ios/v4/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's UI Kit for iOS Swift simplifies the development of chat applications by providing a comprehensive set of customizable UI components. These components are organized into modules, allowing for easy integration and adaptation to match the specific requirements of your app. With this UI Kit, you can effortlessly incorporate essential messaging features while tailoring the interface to align with your application's unique style and functionality. diff --git a/ui-kit/ios/v4/quick-reactions.mdx b/ui-kit/ios/v4/quick-reactions.mdx index cb1046ead..9be5de808 100644 --- a/ui-kit/ios/v4/quick-reactions.mdx +++ b/ui-kit/ios/v4/quick-reactions.mdx @@ -1,5 +1,6 @@ --- title: "Quick Reactions" +description: "Quick Reactions — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/reactions-list.mdx b/ui-kit/ios/v4/reactions-list.mdx index df5bc9092..1e99b1a84 100644 --- a/ui-kit/ios/v4/reactions-list.mdx +++ b/ui-kit/ios/v4/reactions-list.mdx @@ -1,5 +1,6 @@ --- title: "Reactions List" +description: "Reactions List — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/reactions.mdx b/ui-kit/ios/v4/reactions.mdx index b06863865..fdb39c94e 100644 --- a/ui-kit/ios/v4/reactions.mdx +++ b/ui-kit/ios/v4/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/receipt.mdx b/ui-kit/ios/v4/receipt.mdx index c51d4cf47..4fb82c1ae 100644 --- a/ui-kit/ios/v4/receipt.mdx +++ b/ui-kit/ios/v4/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- This component is of class `UIImageView` and is customizable to display `CometChatReceipt`. diff --git a/ui-kit/ios/v4/shortcut-formatter-guide.mdx b/ui-kit/ios/v4/shortcut-formatter-guide.mdx index 14e69e1e7..127dd05c6 100644 --- a/ui-kit/ios/v4/shortcut-formatter-guide.mdx +++ b/ui-kit/ios/v4/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- ## Introduction diff --git a/ui-kit/ios/v4/sound-manager.mdx b/ui-kit/ios/v4/sound-manager.mdx index a9fdcd3cc..dc43d594c 100644 --- a/ui-kit/ios/v4/sound-manager.mdx +++ b/ui-kit/ios/v4/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/status-indicator.mdx b/ui-kit/ios/v4/status-indicator.mdx index 6ad095b5b..42d655dce 100644 --- a/ui-kit/ios/v4/status-indicator.mdx +++ b/ui-kit/ios/v4/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- This component is of the class `UImageView`. It's customisable to display the status of the user's presence as online, offline using colour codes or can be used to display type of a group as password protected, public or private using a custom image. diff --git a/ui-kit/ios/v4/text-bubble.mdx b/ui-kit/ios/v4/text-bubble.mdx index d5268c0c7..605629069 100644 --- a/ui-kit/ios/v4/text-bubble.mdx +++ b/ui-kit/ios/v4/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- `CometChatTextBubble` is the content view shown for TextMessage. diff --git a/ui-kit/ios/v4/theme.mdx b/ui-kit/ios/v4/theme.mdx index 4496a95c1..05248e287 100644 --- a/ui-kit/ios/v4/theme.mdx +++ b/ui-kit/ios/v4/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/threaded-messages.mdx b/ui-kit/ios/v4/threaded-messages.mdx index ee452a0e4..46e145bf3 100644 --- a/ui-kit/ios/v4/threaded-messages.mdx +++ b/ui-kit/ios/v4/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/user-details.mdx b/ui-kit/ios/v4/user-details.mdx index 971092175..399ba8458 100644 --- a/ui-kit/ios/v4/user-details.mdx +++ b/ui-kit/ios/v4/user-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- ## Overview @@ -555,7 +556,7 @@ class CustomUDProfileView: UIView { -``` +```javascript let customUDProfileView = CustomUDProfileView() let cometChatDetails = CometChatDetails() diff --git a/ui-kit/ios/v4/users-with-messages.mdx b/ui-kit/ios/v4/users-with-messages.mdx index 0c8b01747..1916c1142 100644 --- a/ui-kit/ios/v4/users-with-messages.mdx +++ b/ui-kit/ios/v4/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/ios/v4/users.mdx b/ui-kit/ios/v4/users.mdx index 962dfe2a7..b3cd89acd 100644 --- a/ui-kit/ios/v4/users.mdx +++ b/ui-kit/ios/v4/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- ## Overview @@ -668,7 +669,7 @@ class CustomUserSubtitleView: UIView { -``` +```javascript let cometChatUser = CometChatUsers() .setSubtitle { user in let customUserSubtitleView = CustomUserSubtitleView() diff --git a/ui-kit/ios/v4/video-bubble.mdx b/ui-kit/ios/v4/video-bubble.mdx index d3a9c4ec2..cc3fd80a0 100644 --- a/ui-kit/ios/v4/video-bubble.mdx +++ b/ui-kit/ios/v4/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- `CometChatVideoBubble` is the content view for a MediaMessage if the media sent is a video. diff --git a/ui-kit/kotlin/2.0/customize-ui-kit.mdx b/ui-kit/kotlin/2.0/customize-ui-kit.mdx index 94496dcea..f07b2d4b5 100644 --- a/ui-kit/kotlin/2.0/customize-ui-kit.mdx +++ b/ui-kit/kotlin/2.0/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- Version: v2 diff --git a/ui-kit/kotlin/2.0/key-concepts.mdx b/ui-kit/kotlin/2.0/key-concepts.mdx index 9ad7dc9ec..844ce28c9 100644 --- a/ui-kit/kotlin/2.0/key-concepts.mdx +++ b/ui-kit/kotlin/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- Version: v2 diff --git a/ui-kit/kotlin/2.0/message-structure-and-hierarchy.mdx b/ui-kit/kotlin/2.0/message-structure-and-hierarchy.mdx index 97051b194..0090cc7cf 100644 --- a/ui-kit/kotlin/2.0/message-structure-and-hierarchy.mdx +++ b/ui-kit/kotlin/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- Version: v2 diff --git a/ui-kit/kotlin/2.0/overview.mdx b/ui-kit/kotlin/2.0/overview.mdx index a4f148ccf..e7af62be9 100644 --- a/ui-kit/kotlin/2.0/overview.mdx +++ b/ui-kit/kotlin/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- Version: v2 diff --git a/ui-kit/kotlin/2.0/ui-components.mdx b/ui-kit/kotlin/2.0/ui-components.mdx index e1b008437..2096e00de 100644 --- a/ui-kit/kotlin/2.0/ui-components.mdx +++ b/ui-kit/kotlin/2.0/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- Version: v2 diff --git a/ui-kit/kotlin/customize-ui-kit.mdx b/ui-kit/kotlin/customize-ui-kit.mdx index 3575c81e3..77be3515d 100644 --- a/ui-kit/kotlin/customize-ui-kit.mdx +++ b/ui-kit/kotlin/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- diff --git a/ui-kit/kotlin/key-concepts.mdx b/ui-kit/kotlin/key-concepts.mdx index 1f9b918b1..6f1ae61b7 100644 --- a/ui-kit/kotlin/key-concepts.mdx +++ b/ui-kit/kotlin/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### **CometChat Dashboard** diff --git a/ui-kit/kotlin/overview.mdx b/ui-kit/kotlin/overview.mdx index b7ee6eff6..5091da019 100644 --- a/ui-kit/kotlin/overview.mdx +++ b/ui-kit/kotlin/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat Kotlin Chat UI Kit lets Android developers integrate fully featured text chat & voice/video calling into mobile apps seamlessly. diff --git a/ui-kit/kotlin/ui-components.mdx b/ui-kit/kotlin/ui-components.mdx index 395e04b88..09d47a44a 100644 --- a/ui-kit/kotlin/ui-components.mdx +++ b/ui-kit/kotlin/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building a block of the UI Kit. **UI Components** are a set of custom classes specially designed to build a feature-rich chat app. To achieve high customizability while building an app one can use the UI Components. There are different UI Components available in the UI Kit library. diff --git a/ui-kit/react-native/link/changelog.mdx b/ui-kit/react-native/link/changelog.mdx index 708d00156..fd068aa6c 100644 --- a/ui-kit/react-native/link/changelog.mdx +++ b/ui-kit/react-native/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-react-native/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/link/sample.mdx b/ui-kit/react-native/link/sample.mdx index 9e2822934..7bb9df68c 100644 --- a/ui-kit/react-native/link/sample.mdx +++ b/ui-kit/react-native/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "React Native Sample App" url: "https://github.com/cometchat/cometchat-uikit-react-native/tree/v5" +description: "Navigate to React Native Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v2/customize-ui-kit.mdx b/ui-kit/react-native/v2/customize-ui-kit.mdx index 90b093b41..5f01f2ebe 100644 --- a/ui-kit/react-native/v2/customize-ui-kit.mdx +++ b/ui-kit/react-native/v2/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- This guide helps you to enable/disable features present in the UI Kit. diff --git a/ui-kit/react-native/v2/key-concepts.mdx b/ui-kit/react-native/v2/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/react-native/v2/key-concepts.mdx +++ b/ui-kit/react-native/v2/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/react-native/v2/message-structure-and-hierarchy.mdx b/ui-kit/react-native/v2/message-structure-and-hierarchy.mdx index 01a6cd66d..1db5d1fd2 100644 --- a/ui-kit/react-native/v2/message-structure-and-hierarchy.mdx +++ b/ui-kit/react-native/v2/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/react-native/v2/overview.mdx b/ui-kit/react-native/v2/overview.mdx index 90337318c..fe1e5fcfe 100644 --- a/ui-kit/react-native/v2/overview.mdx +++ b/ui-kit/react-native/v2/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat React Native UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/react-native/v2/react-native-2-0-overview.mdx b/ui-kit/react-native/v2/react-native-2-0-overview.mdx index ddbdc1d15..bb4cac623 100644 --- a/ui-kit/react-native/v2/react-native-2-0-overview.mdx +++ b/ui-kit/react-native/v2/react-native-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "React-Native SDK" url: "/sdk/react-native/2.0/overview" +description: "Navigate to React-Native SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v2/ui-components.mdx b/ui-kit/react-native/v2/ui-components.mdx index 3feb03afb..74d16ea3f 100644 --- a/ui-kit/react-native/v2/ui-components.mdx +++ b/ui-kit/react-native/v2/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/react-native/v3/customize-ui-kit.mdx b/ui-kit/react-native/v3/customize-ui-kit.mdx index 04a6ae7bb..26c03f6ec 100644 --- a/ui-kit/react-native/v3/customize-ui-kit.mdx +++ b/ui-kit/react-native/v3/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- This guide helps you to enable/disable features present in the UI Kit. diff --git a/ui-kit/react-native/v3/key-concepts.mdx b/ui-kit/react-native/v3/key-concepts.mdx index b0236fbd3..53a130d7e 100644 --- a/ui-kit/react-native/v3/key-concepts.mdx +++ b/ui-kit/react-native/v3/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/react-native/v3/link/extension.mdx b/ui-kit/react-native/v3/link/extension.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/react-native/v3/link/extension.mdx +++ b/ui-kit/react-native/v3/link/extension.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v3/link/sdk.mdx b/ui-kit/react-native/v3/link/sdk.mdx index 2f01efb12..ce652e7de 100644 --- a/ui-kit/react-native/v3/link/sdk.mdx +++ b/ui-kit/react-native/v3/link/sdk.mdx @@ -1,4 +1,5 @@ --- title: "React Native SDK" url: "/sdk/react-native/overview" +description: "Navigate to React Native SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v3/link/version.mdx b/ui-kit/react-native/v3/link/version.mdx index 67409bc23..d0817eac5 100644 --- a/ui-kit/react-native/v3/link/version.mdx +++ b/ui-kit/react-native/v3/link/version.mdx @@ -1,4 +1,5 @@ --- title: "Version 4" url: "/ui-kit/react-native/overview" +description: "Navigate to Version 4 documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v3/overview.mdx b/ui-kit/react-native/v3/overview.mdx index 66cbc02aa..7af729e51 100644 --- a/ui-kit/react-native/v3/overview.mdx +++ b/ui-kit/react-native/v3/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react-native/v3/ui-components.mdx b/ui-kit/react-native/v3/ui-components.mdx index 5e83d6ca1..75d7ad87a 100644 --- a/ui-kit/react-native/v3/ui-components.mdx +++ b/ui-kit/react-native/v3/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/react-native/v4/ai-features.mdx b/ui-kit/react-native/v4/ai-features.mdx index c26a2c9da..75449a874 100644 --- a/ui-kit/react-native/v4/ai-features.mdx +++ b/ui-kit/react-native/v4/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- Version: v4 diff --git a/ui-kit/react-native/v4/apple-privacy-manifest-guide.mdx b/ui-kit/react-native/v4/apple-privacy-manifest-guide.mdx index a7bacfe8a..b904421ed 100644 --- a/ui-kit/react-native/v4/apple-privacy-manifest-guide.mdx +++ b/ui-kit/react-native/v4/apple-privacy-manifest-guide.mdx @@ -1,5 +1,6 @@ --- title: "Apple Privacy Manifest" +description: "Apple Privacy Manifest — CometChat integration guide." --- ## Overview diff --git a/ui-kit/react-native/v4/audio-bubble.mdx b/ui-kit/react-native/v4/audio-bubble.mdx index 49b5e6e45..32054e329 100644 --- a/ui-kit/react-native/v4/audio-bubble.mdx +++ b/ui-kit/react-native/v4/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- `CometChatAudioBubble` is the content view for a [MediaMessage](/sdk/react-native/send-message#media-message) if the media sent is an audio. diff --git a/ui-kit/react-native/v4/avatar.mdx b/ui-kit/react-native/v4/avatar.mdx index 3b5d495f9..7588cc59b 100644 --- a/ui-kit/react-native/v4/avatar.mdx +++ b/ui-kit/react-native/v4/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- The `CometChatAvatar` component displays user and group avatars. For users and groups , it displays either an image or the user's avatar and falls back to the first two letters of the username. diff --git a/ui-kit/react-native/v4/badge.mdx b/ui-kit/react-native/v4/badge.mdx index 998a66825..dfc13bb97 100644 --- a/ui-kit/react-native/v4/badge.mdx +++ b/ui-kit/react-native/v4/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- The `CometChatBadgeCount` component displays the unread count of messages for one-to-one private and group chats. diff --git a/ui-kit/react-native/v4/call-buttons.mdx b/ui-kit/react-native/v4/call-buttons.mdx index ea138be78..087c3d4e8 100644 --- a/ui-kit/react-native/v4/call-buttons.mdx +++ b/ui-kit/react-native/v4/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-features.mdx b/ui-kit/react-native/v4/call-features.mdx index 7eda3c5dd..e5d45f456 100644 --- a/ui-kit/react-native/v4/call-features.mdx +++ b/ui-kit/react-native/v4/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- You can integrate voice and video calling SDK to add calling functionality to your CometChat-enabled application. diff --git a/ui-kit/react-native/v4/call-log-details.mdx b/ui-kit/react-native/v4/call-log-details.mdx index 45c1d7b39..3606ce6fb 100644 --- a/ui-kit/react-native/v4/call-log-details.mdx +++ b/ui-kit/react-native/v4/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-log-history.mdx b/ui-kit/react-native/v4/call-log-history.mdx index 717feb792..9a5681c82 100644 --- a/ui-kit/react-native/v4/call-log-history.mdx +++ b/ui-kit/react-native/v4/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-log-participants.mdx b/ui-kit/react-native/v4/call-log-participants.mdx index 132669ae5..6388a7b8b 100644 --- a/ui-kit/react-native/v4/call-log-participants.mdx +++ b/ui-kit/react-native/v4/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Participants" +description: "Call Participants — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-log-recording.mdx b/ui-kit/react-native/v4/call-log-recording.mdx index 676a86abb..0bb0a0f76 100644 --- a/ui-kit/react-native/v4/call-log-recording.mdx +++ b/ui-kit/react-native/v4/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-log-with-details.mdx b/ui-kit/react-native/v4/call-log-with-details.mdx index 982b16c20..98147fd74 100644 --- a/ui-kit/react-native/v4/call-log-with-details.mdx +++ b/ui-kit/react-native/v4/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-logs.mdx b/ui-kit/react-native/v4/call-logs.mdx index d6c9fe541..25a417168 100644 --- a/ui-kit/react-native/v4/call-logs.mdx +++ b/ui-kit/react-native/v4/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/call-overview.mdx b/ui-kit/react-native/v4/call-overview.mdx index 8030aca22..b07d81660 100644 --- a/ui-kit/react-native/v4/call-overview.mdx +++ b/ui-kit/react-native/v4/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's Calls feature is a sophisticated function that facilitates the smooth integration of one-on-one and group audio-visual calling capabilities into your application, enhancing user interactivity and experience. This advanced feature is implemented effectively and efficiently in the React UI Kit. diff --git a/ui-kit/react-native/v4/components-overview.mdx b/ui-kit/react-native/v4/components-overview.mdx index a77206d36..adfa32d65 100644 --- a/ui-kit/react-native/v4/components-overview.mdx +++ b/ui-kit/react-native/v4/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI components that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/react-native/v4/contacts.mdx b/ui-kit/react-native/v4/contacts.mdx index 6d9154919..139171212 100644 --- a/ui-kit/react-native/v4/contacts.mdx +++ b/ui-kit/react-native/v4/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- CometChatContacts is a versatile UI component specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. diff --git a/ui-kit/react-native/v4/conversations-with-messages.mdx b/ui-kit/react-native/v4/conversations-with-messages.mdx index 2fb5c3eff..c22e26eea 100644 --- a/ui-kit/react-native/v4/conversations-with-messages.mdx +++ b/ui-kit/react-native/v4/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/conversations.mdx b/ui-kit/react-native/v4/conversations.mdx index 26d9bca5e..00cd05f4d 100644 --- a/ui-kit/react-native/v4/conversations.mdx +++ b/ui-kit/react-native/v4/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/core-features.mdx b/ui-kit/react-native/v4/core-features.mdx index 1afeb7d29..c57f6c677 100644 --- a/ui-kit/react-native/v4/core-features.mdx +++ b/ui-kit/react-native/v4/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/create-group.mdx b/ui-kit/react-native/v4/create-group.mdx index 5f726903a..d4c967856 100644 --- a/ui-kit/react-native/v4/create-group.mdx +++ b/ui-kit/react-native/v4/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/date.mdx b/ui-kit/react-native/v4/date.mdx index 64f15674c..91dd2cdde 100644 --- a/ui-kit/react-native/v4/date.mdx +++ b/ui-kit/react-native/v4/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- `CometChatDate` is a widget which is used to show the date and time. You can also customize the appearance of this widget by modifying its logic. diff --git a/ui-kit/react-native/v4/events.mdx b/ui-kit/react-native/v4/events.mdx index 5d1db0468..52cac4f71 100644 --- a/ui-kit/react-native/v4/events.mdx +++ b/ui-kit/react-native/v4/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/expo-integration-guide.mdx b/ui-kit/react-native/v4/expo-integration-guide.mdx index 224ed39b5..6822bc7fa 100644 --- a/ui-kit/react-native/v4/expo-integration-guide.mdx +++ b/ui-kit/react-native/v4/expo-integration-guide.mdx @@ -1,5 +1,6 @@ --- title: "Expo Integration" +description: "Expo Integration — CometChat integration guide." --- Our React Native UI Kit does not work with Expo GO since it requires some custom native modules. Also, expo does not recommend using Expo GO for building production grade apps. So in order to use our UI Kit in an expo app you need to use [development builds](https://docs.expo.dev/develop/development-builds/introduction/). You can follow [this](https://docs.expo.dev/guides/local-app-development/) official Expo guide for more details. diff --git a/ui-kit/react-native/v4/extensions.mdx b/ui-kit/react-native/v4/extensions.mdx index 3fb56313b..674a76d4b 100644 --- a/ui-kit/react-native/v4/extensions.mdx +++ b/ui-kit/react-native/v4/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/file-bubble.mdx b/ui-kit/react-native/v4/file-bubble.mdx index 80490d7bc..dd1fed019 100644 --- a/ui-kit/react-native/v4/file-bubble.mdx +++ b/ui-kit/react-native/v4/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- `CometChatFileBubble` is the content view for a [MediaMessage](/sdk/react-native/send-message#media-message) if the media sent is a file. diff --git a/ui-kit/react-native/v4/getting-started.mdx b/ui-kit/react-native/v4/getting-started.mdx index 4ee556cd8..4dd184211 100644 --- a/ui-kit/react-native/v4/getting-started.mdx +++ b/ui-kit/react-native/v4/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start your first conversation diff --git a/ui-kit/react-native/v4/group-add-members.mdx b/ui-kit/react-native/v4/group-add-members.mdx index f06a62548..2e9722eea 100644 --- a/ui-kit/react-native/v4/group-add-members.mdx +++ b/ui-kit/react-native/v4/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/group-banned-members.mdx b/ui-kit/react-native/v4/group-banned-members.mdx index 08423f725..bd402e2f6 100644 --- a/ui-kit/react-native/v4/group-banned-members.mdx +++ b/ui-kit/react-native/v4/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/group-details.mdx b/ui-kit/react-native/v4/group-details.mdx index 56b15fd38..42b7a9d81 100644 --- a/ui-kit/react-native/v4/group-details.mdx +++ b/ui-kit/react-native/v4/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/group-members.mdx b/ui-kit/react-native/v4/group-members.mdx index 996ea62d3..936dc2d4e 100644 --- a/ui-kit/react-native/v4/group-members.mdx +++ b/ui-kit/react-native/v4/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/group-transfer-ownership.mdx b/ui-kit/react-native/v4/group-transfer-ownership.mdx index a36d682f4..c1b23c373 100644 --- a/ui-kit/react-native/v4/group-transfer-ownership.mdx +++ b/ui-kit/react-native/v4/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/groups-with-messages.mdx b/ui-kit/react-native/v4/groups-with-messages.mdx index eb9daec37..71de2da7b 100644 --- a/ui-kit/react-native/v4/groups-with-messages.mdx +++ b/ui-kit/react-native/v4/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- The GroupsWithMessages is a [Composite Component](/ui-kit/react-native/v4/components-overview#composite-components) encompassing components such as [Groups](/ui-kit/react-native/v4/groups) and [Messages](/ui-kit/react-native/v4/messages). Both of these component contributes to the functionality and structure of the overall GroupsWithMessages component. diff --git a/ui-kit/react-native/v4/groups.mdx b/ui-kit/react-native/v4/groups.mdx index e9c90fb79..5d9625cee 100644 --- a/ui-kit/react-native/v4/groups.mdx +++ b/ui-kit/react-native/v4/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- The Groups is a [Component](/ui-kit/react-native/v4/components-overview#components), showcasing an accessible list of all available groups. It provides an integral search functionality, allowing you to locate any specific groups swiftly and easily. For each group listed, the group name is displayed by default, in conjunction with the group icon when available. Additionally, it provides a useful feature by displaying the number of members in each group as a subtitle, offering valuable context about group size and activity level. diff --git a/ui-kit/react-native/v4/image-bubble.mdx b/ui-kit/react-native/v4/image-bubble.mdx index 8d7300633..115befe9e 100644 --- a/ui-kit/react-native/v4/image-bubble.mdx +++ b/ui-kit/react-native/v4/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- `CometChatImageBubble` is the content view for a [MediaMessage](/sdk/react-native/send-message#media-message) if the media sent is an image. diff --git a/ui-kit/react-native/v4/incoming-call.mdx b/ui-kit/react-native/v4/incoming-call.mdx index 85d55c773..56f765997 100644 --- a/ui-kit/react-native/v4/incoming-call.mdx +++ b/ui-kit/react-native/v4/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- The `Incoming call` is a [Component](/ui-kit/react-native/v4/components-overview#components) that serves as a visual representation when the user receives an incoming call, such as a voice call or video call, providing options to answer or decline the call. diff --git a/ui-kit/react-native/v4/interactive-action-entity.mdx b/ui-kit/react-native/v4/interactive-action-entity.mdx index eca58911c..b32eb2e16 100644 --- a/ui-kit/react-native/v4/interactive-action-entity.mdx +++ b/ui-kit/react-native/v4/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on BaseInteractiveElement diff --git a/ui-kit/react-native/v4/interactive-button-element.mdx b/ui-kit/react-native/v4/interactive-button-element.mdx index d073ff46d..4243c15c0 100644 --- a/ui-kit/react-native/v4/interactive-button-element.mdx +++ b/ui-kit/react-native/v4/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- ## Constructor diff --git a/ui-kit/react-native/v4/interactive-card-bubble.mdx b/ui-kit/react-native/v4/interactive-card-bubble.mdx index f96dfafa1..2c7b07194 100644 --- a/ui-kit/react-native/v4/interactive-card-bubble.mdx +++ b/ui-kit/react-native/v4/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The CometChatCardBubble component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/ui-kit/react-native/v4/interactive-card-message.mdx b/ui-kit/react-native/v4/interactive-card-message.mdx index af1842dfc..12386047c 100644 --- a/ui-kit/react-native/v4/interactive-card-message.mdx +++ b/ui-kit/react-native/v4/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- ## Constructor diff --git a/ui-kit/react-native/v4/interactive-checkbox-element.mdx b/ui-kit/react-native/v4/interactive-checkbox-element.mdx index b3e5e2ecc..eb1fd86d1 100644 --- a/ui-kit/react-native/v4/interactive-checkbox-element.mdx +++ b/ui-kit/react-native/v4/interactive-checkbox-element.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox Element" +description: "Checkbox Element — CometChat documentation." --- The CheckboxElement class aids in creating checkbox input elements in a user interface. diff --git a/ui-kit/react-native/v4/interactive-custom-interactive-message.mdx b/ui-kit/react-native/v4/interactive-custom-interactive-message.mdx index 5cf85c797..b1c79acc8 100644 --- a/ui-kit/react-native/v4/interactive-custom-interactive-message.mdx +++ b/ui-kit/react-native/v4/interactive-custom-interactive-message.mdx @@ -1,5 +1,6 @@ --- title: "Custom Interactive Message" +description: "Custom Interactive Message — CometChat documentation." --- | Name | Type | Description | diff --git a/ui-kit/react-native/v4/interactive-dropdown-element.mdx b/ui-kit/react-native/v4/interactive-dropdown-element.mdx index 5dcdf315d..d7ffc63de 100644 --- a/ui-kit/react-native/v4/interactive-dropdown-element.mdx +++ b/ui-kit/react-native/v4/interactive-dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "Dropdown Element" +description: "Dropdown Element — CometChat documentation." --- The DropdownElement class is used to create a dropdown selection element in a user interface. diff --git a/ui-kit/react-native/v4/interactive-element-entity.mdx b/ui-kit/react-native/v4/interactive-element-entity.mdx index d928789d1..e7141e329 100644 --- a/ui-kit/react-native/v4/interactive-element-entity.mdx +++ b/ui-kit/react-native/v4/interactive-element-entity.mdx @@ -1,5 +1,6 @@ --- title: "Element Entity" +description: "Element Entity — CometChat documentation." --- Following are the different elements possible diff --git a/ui-kit/react-native/v4/interactive-form-bubble.mdx b/ui-kit/react-native/v4/interactive-form-bubble.mdx index a58fa8b27..37042ea92 100644 --- a/ui-kit/react-native/v4/interactive-form-bubble.mdx +++ b/ui-kit/react-native/v4/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The CometChatFormBubble component is used to render a form within a chat bubble. The form fields are dynamically built based on the data passed in the message prop. The form fields can include text inputs, checkboxes, radio buttons, dropdown, labels, single selects, buttons. Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/ui-kit/react-native/v4/interactive-form-message.mdx b/ui-kit/react-native/v4/interactive-form-message.mdx index 0bef1c916..dad18088d 100644 --- a/ui-kit/react-native/v4/interactive-form-message.mdx +++ b/ui-kit/react-native/v4/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- ## Constructor diff --git a/ui-kit/react-native/v4/interactive-label-element.mdx b/ui-kit/react-native/v4/interactive-label-element.mdx index da1b5e9d4..72d2b7137 100644 --- a/ui-kit/react-native/v4/interactive-label-element.mdx +++ b/ui-kit/react-native/v4/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The LabelElement class enables the creation of a label element in a user interface. diff --git a/ui-kit/react-native/v4/interactive-radio-button-element.mdx b/ui-kit/react-native/v4/interactive-radio-button-element.mdx index 74c75167a..3b72c9957 100644 --- a/ui-kit/react-native/v4/interactive-radio-button-element.mdx +++ b/ui-kit/react-native/v4/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- ## Constructor diff --git a/ui-kit/react-native/v4/interactive-single-select-element.mdx b/ui-kit/react-native/v4/interactive-single-select-element.mdx index f90b3c027..22f63465a 100644 --- a/ui-kit/react-native/v4/interactive-single-select-element.mdx +++ b/ui-kit/react-native/v4/interactive-single-select-element.mdx @@ -1,5 +1,6 @@ --- title: "Single Select Element" +description: "Single Select Element — CometChat documentation." --- The SingleSelectElement class is utilised to create a single selection input element in a user interface. diff --git a/ui-kit/react-native/v4/interactive-textinput-element.mdx b/ui-kit/react-native/v4/interactive-textinput-element.mdx index 46ebfdedd..f5087b09d 100644 --- a/ui-kit/react-native/v4/interactive-textinput-element.mdx +++ b/ui-kit/react-native/v4/interactive-textinput-element.mdx @@ -1,5 +1,6 @@ --- title: "Text Input Element" +description: "Text Input Element — CometChat documentation." --- ## Constructor diff --git a/ui-kit/react-native/v4/join-protected-group.mdx b/ui-kit/react-native/v4/join-protected-group.mdx index 4043d07a6..84f82328d 100644 --- a/ui-kit/react-native/v4/join-protected-group.mdx +++ b/ui-kit/react-native/v4/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/label-alignment.mdx b/ui-kit/react-native/v4/label-alignment.mdx index b4a88a5b8..4f3418ebd 100644 --- a/ui-kit/react-native/v4/label-alignment.mdx +++ b/ui-kit/react-native/v4/label-alignment.mdx @@ -1,5 +1,6 @@ --- title: "Label Alignment" +description: "Label Alignment — CometChat documentation." --- LabelAlignment is used to align the label for web elements. diff --git a/ui-kit/react-native/v4/link/sample.mdx b/ui-kit/react-native/v4/link/sample.mdx index 00af9b186..9f0ed31c6 100644 --- a/ui-kit/react-native/v4/link/sample.mdx +++ b/ui-kit/react-native/v4/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "React Native Sample App" url: "https://github.com/cometchat/cometchat-sample-app-react-native" +description: "Navigate to React Native Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/react-native/v4/list-item.mdx b/ui-kit/react-native/v4/list-item.mdx index cfc3871aa..1d5a37b52 100644 --- a/ui-kit/react-native/v4/list-item.mdx +++ b/ui-kit/react-native/v4/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- ## How to integrate CometChatListItem ? diff --git a/ui-kit/react-native/v4/localize.mdx b/ui-kit/react-native/v4/localize.mdx index f270fe15e..6e35fe3b0 100644 --- a/ui-kit/react-native/v4/localize.mdx +++ b/ui-kit/react-native/v4/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/media-recorder.mdx b/ui-kit/react-native/v4/media-recorder.mdx index 69b9f6c1e..cc1aca174 100644 --- a/ui-kit/react-native/v4/media-recorder.mdx +++ b/ui-kit/react-native/v4/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- diff --git a/ui-kit/react-native/v4/mentions-formatter-guide.mdx b/ui-kit/react-native/v4/mentions-formatter-guide.mdx index 4b2e3908e..67d711d44 100644 --- a/ui-kit/react-native/v4/mentions-formatter-guide.mdx +++ b/ui-kit/react-native/v4/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- ## Overview diff --git a/ui-kit/react-native/v4/message-bubble.mdx b/ui-kit/react-native/v4/message-bubble.mdx index 66152ce61..2994de88c 100644 --- a/ui-kit/react-native/v4/message-bubble.mdx +++ b/ui-kit/react-native/v4/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- `CometChatMessageBubble` is the reusable components which forms different types of message bubbles accordingly. diff --git a/ui-kit/react-native/v4/message-composer.mdx b/ui-kit/react-native/v4/message-composer.mdx index 390a063d9..bceec3b27 100644 --- a/ui-kit/react-native/v4/message-composer.mdx +++ b/ui-kit/react-native/v4/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/message-header.mdx b/ui-kit/react-native/v4/message-header.mdx index 30766e110..3afebec9a 100644 --- a/ui-kit/react-native/v4/message-header.mdx +++ b/ui-kit/react-native/v4/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- `MessageHeader` is a [Component](/ui-kit/react-native/v4/components-overview#components) that showcases the [User](/sdk/react-native/users-overview) or [Group](/sdk/react-native/groups-overview) details in the toolbar. Furthermore, it also presents a typing indicator and a back navigation button for ease of use. diff --git a/ui-kit/react-native/v4/message-information.mdx b/ui-kit/react-native/v4/message-information.mdx index 20808f9ff..8c14aba51 100644 --- a/ui-kit/react-native/v4/message-information.mdx +++ b/ui-kit/react-native/v4/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- diff --git a/ui-kit/react-native/v4/message-list.mdx b/ui-kit/react-native/v4/message-list.mdx index dcac94c76..f083b96fd 100644 --- a/ui-kit/react-native/v4/message-list.mdx +++ b/ui-kit/react-native/v4/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/message-template.mdx b/ui-kit/react-native/v4/message-template.mdx index 8fcc2dae5..8171930a2 100644 --- a/ui-kit/react-native/v4/message-template.mdx +++ b/ui-kit/react-native/v4/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- A MessageTemplate provides you with the capability to define and customize both the structure and the behavior of the [MessageBubble](/ui-kit/react-native/v4/message-bubble). It acts as a schema or design blueprint for the creation of a variety of [MessageBubble](/ui-kit/react-native/v4/message-bubble) components, allowing you to manage the appearance and interactions of [MessageBubble](/ui-kit/react-native/v4/message-bubble) within your application effectively and consistently. diff --git a/ui-kit/react-native/v4/messages.mdx b/ui-kit/react-native/v4/messages.mdx index 6e14e381d..bd6694c3a 100644 --- a/ui-kit/react-native/v4/messages.mdx +++ b/ui-kit/react-native/v4/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- The Messages is a [Composite Component](/ui-kit/react-native/v4/components-overview#components) that manages messages for users and groups. diff --git a/ui-kit/react-native/v4/methods.mdx b/ui-kit/react-native/v4/methods.mdx index 485564347..a5ce367ac 100644 --- a/ui-kit/react-native/v4/methods.mdx +++ b/ui-kit/react-native/v4/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- `CometChatUIKit` is a class that contains all necessary methods to help initialize the [CometChat SDK](/sdk/react-native/overview) with valid credentials for the ui kit to utilize. diff --git a/ui-kit/react-native/v4/multi-tab-chat-ui-guide.mdx b/ui-kit/react-native/v4/multi-tab-chat-ui-guide.mdx index 2304e0e30..c44e8d75b 100644 --- a/ui-kit/react-native/v4/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/react-native/v4/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- We’ll use the [CometChatConversationsWithMessages](/ui-kit/react-native/v4/conversations-with-messages), [CometChatUsersWithMessages](/ui-kit/react-native/v4/users-with-messages), and [CometChatGroupsWithMessages](/ui-kit/react-native/v4/groups-with-messages) components and launch them as individual tab items within the tabbed layout. diff --git a/ui-kit/react-native/v4/ongoing-call.mdx b/ui-kit/react-native/v4/ongoing-call.mdx index e0d885b9f..fbf1b8f15 100644 --- a/ui-kit/react-native/v4/ongoing-call.mdx +++ b/ui-kit/react-native/v4/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/outgoing-call.mdx b/ui-kit/react-native/v4/outgoing-call.mdx index 113f2ff00..3b958c0f6 100644 --- a/ui-kit/react-native/v4/outgoing-call.mdx +++ b/ui-kit/react-native/v4/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- The outgoing call component is a visual representation of a user-initiated call, whether it's a voice or video call. It serves as an interface for managing outgoing calls, providing users with essential options to control the call experience. This component typically includes information about the call recipient, call controls for canceling the call, and feedback on the call status, such as indicating when the call is in progress. diff --git a/ui-kit/react-native/v4/overview.mdx b/ui-kit/react-native/v4/overview.mdx index f5f75de16..2c46f3fb6 100644 --- a/ui-kit/react-native/v4/overview.mdx +++ b/ui-kit/react-native/v4/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- With CometChat's UI Kit for React Native, you can effortlessly build a chat app equipped with all the essential messaging features, along with customizable options tailored to your application requirements. This UI Kit comprises prebuilt UI components organized into smaller modules and components, each configurable to meet your specific needs. diff --git a/ui-kit/react-native/v4/quick-reactions.mdx b/ui-kit/react-native/v4/quick-reactions.mdx index 64f79b942..ae84b4aa3 100644 --- a/ui-kit/react-native/v4/quick-reactions.mdx +++ b/ui-kit/react-native/v4/quick-reactions.mdx @@ -1,5 +1,6 @@ --- title: "Quick Reactions" +description: "Quick Reactions — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/reaction-list.mdx b/ui-kit/react-native/v4/reaction-list.mdx index 070d72fe5..31a97891a 100644 --- a/ui-kit/react-native/v4/reaction-list.mdx +++ b/ui-kit/react-native/v4/reaction-list.mdx @@ -1,5 +1,6 @@ --- title: "Reaction List" +description: "Reaction List — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/reaction.mdx b/ui-kit/react-native/v4/reaction.mdx index cc27a468d..529edcb06 100644 --- a/ui-kit/react-native/v4/reaction.mdx +++ b/ui-kit/react-native/v4/reaction.mdx @@ -1,6 +1,7 @@ --- title: "Reactions" sidebarTitle: "Overview" +description: "Reactions — CometChat documentation." --- The `CometChatReactions` component provides a visual representation of emoji reactions associated with a specific message. It enables users to quickly identify which emojis were used to react to the message and by whom. diff --git a/ui-kit/react-native/v4/receipt.mdx b/ui-kit/react-native/v4/receipt.mdx index 3af8e741f..c3fcd3da2 100644 --- a/ui-kit/react-native/v4/receipt.mdx +++ b/ui-kit/react-native/v4/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- The CometChatMessageReceipt component renders the receipts such as sending, sent, delivered, read and error state indicator of a message. diff --git a/ui-kit/react-native/v4/shortcut-formatter-guide.mdx b/ui-kit/react-native/v4/shortcut-formatter-guide.mdx index df7ab8ba6..e00a052d0 100644 --- a/ui-kit/react-native/v4/shortcut-formatter-guide.mdx +++ b/ui-kit/react-native/v4/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- ## Introduction diff --git a/ui-kit/react-native/v4/sound-manager.mdx b/ui-kit/react-native/v4/sound-manager.mdx index c2fc808c5..5f139eec8 100644 --- a/ui-kit/react-native/v4/sound-manager.mdx +++ b/ui-kit/react-native/v4/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/status-indicator.mdx b/ui-kit/react-native/v4/status-indicator.mdx index fc7506fa5..d657d8f8f 100644 --- a/ui-kit/react-native/v4/status-indicator.mdx +++ b/ui-kit/react-native/v4/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- `CometChatStatusIndicator` is a customised component which indicates whether user is online or offline. diff --git a/ui-kit/react-native/v4/text-bubble.mdx b/ui-kit/react-native/v4/text-bubble.mdx index bd2fe1ec1..fcbb356a3 100644 --- a/ui-kit/react-native/v4/text-bubble.mdx +++ b/ui-kit/react-native/v4/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- `CometChatTextBubble` is the content view shown for [TextMessage](/sdk/react-native/send-message#text-message). diff --git a/ui-kit/react-native/v4/theme.mdx b/ui-kit/react-native/v4/theme.mdx index 8a684fc24..04e2503c7 100644 --- a/ui-kit/react-native/v4/theme.mdx +++ b/ui-kit/react-native/v4/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/threaded-messages.mdx b/ui-kit/react-native/v4/threaded-messages.mdx index 99153e479..4e988e7cb 100644 --- a/ui-kit/react-native/v4/threaded-messages.mdx +++ b/ui-kit/react-native/v4/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/user-details.mdx b/ui-kit/react-native/v4/user-details.mdx index 9edf86ed1..720745e9e 100644 --- a/ui-kit/react-native/v4/user-details.mdx +++ b/ui-kit/react-native/v4/user-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/users-with-messages.mdx b/ui-kit/react-native/v4/users-with-messages.mdx index 37b6a6d92..57f52e0e4 100644 --- a/ui-kit/react-native/v4/users-with-messages.mdx +++ b/ui-kit/react-native/v4/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/users.mdx b/ui-kit/react-native/v4/users.mdx index 1b0f8c293..90f3160b8 100644 --- a/ui-kit/react-native/v4/users.mdx +++ b/ui-kit/react-native/v4/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- ## Overview diff --git a/ui-kit/react-native/v4/video-bubble.mdx b/ui-kit/react-native/v4/video-bubble.mdx index 991ccd39d..121b916f1 100644 --- a/ui-kit/react-native/v4/video-bubble.mdx +++ b/ui-kit/react-native/v4/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- `CometChatVideoBubble` is the content component for [Media message](/sdk/react-native/send-message#media-message) if the media sent is a video. diff --git a/ui-kit/react/link/changelog.mdx b/ui-kit/react/link/changelog.mdx index e3acadbd7..c5b52da0f 100644 --- a/ui-kit/react/link/changelog.mdx +++ b/ui-kit/react/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-react/releases?q=v6&expanded=true" +description: "Navigate to Changelog documentation." --- diff --git a/ui-kit/react/link/figma.mdx b/ui-kit/react/link/figma.mdx index 784cf16e7..d33e50f01 100644 --- a/ui-kit/react/link/figma.mdx +++ b/ui-kit/react/link/figma.mdx @@ -1,4 +1,5 @@ --- title: "Figma Design" url: "https://www.figma.com/community/file/1442863561340379957/cometchat-ui-kit-for-web" +description: "Navigate to Figma Design documentation." --- diff --git a/ui-kit/react/link/sample.mdx b/ui-kit/react/link/sample.mdx index d7748ae0d..f0d70f9fd 100644 --- a/ui-kit/react/link/sample.mdx +++ b/ui-kit/react/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "React Sample App" url: "https://github.com/cometchat/cometchat-uikit-react/tree/v6/sample-app" +description: "Navigate to React Sample App documentation." --- diff --git a/ui-kit/react/moved/builder-customisations.mdx b/ui-kit/react/moved/builder-customisations.mdx index c0aab0638..4d8ecec92 100644 --- a/ui-kit/react/moved/builder-customisations.mdx +++ b/ui-kit/react/moved/builder-customisations.mdx @@ -1,6 +1,7 @@ --- title: "Customizing Your UI Kit Builder Integration" sidebarTitle: "Overview" +description: "Customizing Your UI Kit Builder Integration — CometChat documentation." --- While the `CometChatSettings.ts` file allows basic toggling of features in the UI Kit Builder, **deeper customizations** require a more hands-on approach. Follow the steps below to tailor the UI Kit to your exact needs. diff --git a/ui-kit/react/moved/builder-dir-structure.mdx b/ui-kit/react/moved/builder-dir-structure.mdx index 9ec131b6d..7c5fff088 100644 --- a/ui-kit/react/moved/builder-dir-structure.mdx +++ b/ui-kit/react/moved/builder-dir-structure.mdx @@ -1,6 +1,7 @@ --- title: "CometChat UI Kit Builder Directory Structure" sidebarTitle: "Directory Structure" +description: "CometChat UI Kit Builder Directory Structure — CometChat documentation." --- This document provides an overview of the CometChat UI Kit Builder directory structure, helping you understand the organization of the project and where to find specific files when you need to customize or extend functionality. diff --git a/ui-kit/react/moved/builder-integration-nextjs.mdx b/ui-kit/react/moved/builder-integration-nextjs.mdx index f44aad528..df1399d67 100644 --- a/ui-kit/react/moved/builder-integration-nextjs.mdx +++ b/ui-kit/react/moved/builder-integration-nextjs.mdx @@ -1,6 +1,7 @@ --- title: "Getting Started With UI Kit Builder" sidebarTitle: "Integration - Next.js" +description: "Getting Started With UI Kit Builder — CometChat documentation." --- **UI Kit Builder** is a powerful tool designed to simplify the integration of CometChat's UI Kit into your existing React application. @@ -460,7 +461,7 @@ When you enable the **Without Sidebar** option for the Sidebar, the following be Start your development server: -``` +```bash npm run dev ``` diff --git a/ui-kit/react/moved/builder-integration-react-router.mdx b/ui-kit/react/moved/builder-integration-react-router.mdx index a7d044879..a746a3c15 100644 --- a/ui-kit/react/moved/builder-integration-react-router.mdx +++ b/ui-kit/react/moved/builder-integration-react-router.mdx @@ -1,6 +1,7 @@ --- title: "Getting Started With UI Kit Builder" sidebarTitle: "Integration - React Router" +description: "Getting Started With UI Kit Builder — CometChat documentation." --- **UI Kit Builder** is a powerful tool designed to simplify the integration of CometChat's UI Kit into your existing React application. @@ -475,7 +476,7 @@ When you enable the **Without Sidebar** option for the Sidebar, the following be 1. **Start the development server** - ``` + ```bash npm run dev ``` diff --git a/ui-kit/react/moved/builder-integration.mdx b/ui-kit/react/moved/builder-integration.mdx index 6efcbefa9..093989dee 100644 --- a/ui-kit/react/moved/builder-integration.mdx +++ b/ui-kit/react/moved/builder-integration.mdx @@ -1,6 +1,7 @@ --- title: "Getting Started With UI Kit Builder" sidebarTitle: "Integration - React.js" +description: "Getting Started With UI Kit Builder — CometChat documentation." --- **UI Kit Builder** is a powerful tool designed to simplify the integration of CometChat's UI Kit into your existing React application. @@ -397,7 +398,7 @@ Start your application with the appropriate command based on your setup: * Vite / Next.js: -``` +```bash npm run dev ``` diff --git a/ui-kit/react/moved/builder-settings.mdx b/ui-kit/react/moved/builder-settings.mdx index 433780beb..9d2e35c3d 100644 --- a/ui-kit/react/moved/builder-settings.mdx +++ b/ui-kit/react/moved/builder-settings.mdx @@ -1,5 +1,6 @@ --- title: "CometChat Settings Guide" +description: "CometChat Settings Guide — CometChat documentation." --- The `CometChatSettings.ts` file defines configuration options for **[CometChat Builder](https://preview.cometchat.com/)**, giving developers full control over messaging capabilities, AI enhancements, UI layout, styling, and moderation tools. diff --git a/ui-kit/react/v2/customize-ui-kit.mdx b/ui-kit/react/v2/customize-ui-kit.mdx index 449423dee..9a66f826b 100644 --- a/ui-kit/react/v2/customize-ui-kit.mdx +++ b/ui-kit/react/v2/customize-ui-kit.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- This guide helps you to enable/disable features present in the UI Kit. diff --git a/ui-kit/react/v2/integration-with-nextjs.mdx b/ui-kit/react/v2/integration-with-nextjs.mdx index 766230006..ccd8fd617 100644 --- a/ui-kit/react/v2/integration-with-nextjs.mdx +++ b/ui-kit/react/v2/integration-with-nextjs.mdx @@ -1,5 +1,6 @@ --- title: "Integration With Next.js" +description: "Integration With Next.js — CometChat documentation." --- Using React UI Kit, you can integrate your Next.js application with CometChat. diff --git a/ui-kit/react/v2/javascript-2-0-overview.mdx b/ui-kit/react/v2/javascript-2-0-overview.mdx index 9580ee04e..edf236ad5 100644 --- a/ui-kit/react/v2/javascript-2-0-overview.mdx +++ b/ui-kit/react/v2/javascript-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/2.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/react/v2/key-concepts.mdx b/ui-kit/react/v2/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/react/v2/key-concepts.mdx +++ b/ui-kit/react/v2/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/react/v2/message-structure-and-hierarchy.mdx b/ui-kit/react/v2/message-structure-and-hierarchy.mdx index 1c85b0c9c..5ec91704f 100644 --- a/ui-kit/react/v2/message-structure-and-hierarchy.mdx +++ b/ui-kit/react/v2/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/react/v2/overview.mdx b/ui-kit/react/v2/overview.mdx index 00a8d5949..14542d32e 100644 --- a/ui-kit/react/v2/overview.mdx +++ b/ui-kit/react/v2/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat React UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/react/v2/ui-components.mdx b/ui-kit/react/v2/ui-components.mdx index 3a22d01ef..13012d2d4 100644 --- a/ui-kit/react/v2/ui-components.mdx +++ b/ui-kit/react/v2/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/react/v3/customize.mdx b/ui-kit/react/v3/customize.mdx index 7ddae7765..7d9439a72 100644 --- a/ui-kit/react/v3/customize.mdx +++ b/ui-kit/react/v3/customize.mdx @@ -1,5 +1,6 @@ --- title: "Customize UI Kit" +description: "Customize UI Kit — CometChat documentation." --- This guide helps you to enable/disable features present in the UI Kit. diff --git a/ui-kit/react/v3/extensions-overview.mdx b/ui-kit/react/v3/extensions-overview.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/react/v3/extensions-overview.mdx +++ b/ui-kit/react/v3/extensions-overview.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/react/v3/javascript-3-0-overview.mdx b/ui-kit/react/v3/javascript-3-0-overview.mdx index 22b6579f4..3c2e8653d 100644 --- a/ui-kit/react/v3/javascript-3-0-overview.mdx +++ b/ui-kit/react/v3/javascript-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/3.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/react/v3/key-concepts.mdx b/ui-kit/react/v3/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/react/v3/key-concepts.mdx +++ b/ui-kit/react/v3/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/react/v3/nextjs.mdx b/ui-kit/react/v3/nextjs.mdx index b6ded2e63..a1fe52578 100644 --- a/ui-kit/react/v3/nextjs.mdx +++ b/ui-kit/react/v3/nextjs.mdx @@ -1,5 +1,6 @@ --- title: "Integration With Next.js" +description: "Integration With Next.js — CometChat documentation." --- Using React UI Kit, you can integrate your Next.js application with CometChat. diff --git a/ui-kit/react/v3/overview.mdx b/ui-kit/react/v3/overview.mdx index ef9b04c8c..776a7f6e5 100644 --- a/ui-kit/react/v3/overview.mdx +++ b/ui-kit/react/v3/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- Our React Chat UI Kit lets developers easily add text, voice & video to your website. It a fully polished UI and the complete business logic. diff --git a/ui-kit/react/v3/ui-components.mdx b/ui-kit/react/v3/ui-components.mdx index bddde5416..ee566bed9 100644 --- a/ui-kit/react/v3/ui-components.mdx +++ b/ui-kit/react/v3/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/react/v4/action-sheet.mdx b/ui-kit/react/v4/action-sheet.mdx index e0733f2ae..5beb29f3e 100644 --- a/ui-kit/react/v4/action-sheet.mdx +++ b/ui-kit/react/v4/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- diff --git a/ui-kit/react/v4/ai-features.mdx b/ui-kit/react/v4/ai-features.mdx index 413a5e1ca..cb9708690 100644 --- a/ui-kit/react/v4/ai-features.mdx +++ b/ui-kit/react/v4/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI" +description: "AI — CometChat documentation." --- diff --git a/ui-kit/react/v4/audio-bubble.mdx b/ui-kit/react/v4/audio-bubble.mdx index c6d6ac26f..e4e913963 100644 --- a/ui-kit/react/v4/audio-bubble.mdx +++ b/ui-kit/react/v4/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/avatar.mdx b/ui-kit/react/v4/avatar.mdx index 1c9f9885c..828e75eef 100644 --- a/ui-kit/react/v4/avatar.mdx +++ b/ui-kit/react/v4/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- diff --git a/ui-kit/react/v4/backdrop.mdx b/ui-kit/react/v4/backdrop.mdx index 1d599835c..c8ceeeec2 100644 --- a/ui-kit/react/v4/backdrop.mdx +++ b/ui-kit/react/v4/backdrop.mdx @@ -1,5 +1,6 @@ --- title: "Backdrop" +description: "Backdrop — CometChat documentation." --- diff --git a/ui-kit/react/v4/badge.mdx b/ui-kit/react/v4/badge.mdx index 8dd783d25..a84c0713e 100644 --- a/ui-kit/react/v4/badge.mdx +++ b/ui-kit/react/v4/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- diff --git a/ui-kit/react/v4/button-group.mdx b/ui-kit/react/v4/button-group.mdx index 22741e845..030677e94 100644 --- a/ui-kit/react/v4/button-group.mdx +++ b/ui-kit/react/v4/button-group.mdx @@ -1,5 +1,6 @@ --- title: "Button Group" +description: "Button Group — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-buttons.mdx b/ui-kit/react/v4/call-buttons.mdx index 16babe97d..c485e9476 100644 --- a/ui-kit/react/v4/call-buttons.mdx +++ b/ui-kit/react/v4/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-features.mdx b/ui-kit/react/v4/call-features.mdx index 81972f2f0..e6298a252 100644 --- a/ui-kit/react/v4/call-features.mdx +++ b/ui-kit/react/v4/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-log-details.mdx b/ui-kit/react/v4/call-log-details.mdx index 5f982754b..f3b5ca584 100644 --- a/ui-kit/react/v4/call-log-details.mdx +++ b/ui-kit/react/v4/call-log-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Details" +description: "Call Log Details — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-log-history.mdx b/ui-kit/react/v4/call-log-history.mdx index cc1c5e12b..e290df3fc 100644 --- a/ui-kit/react/v4/call-log-history.mdx +++ b/ui-kit/react/v4/call-log-history.mdx @@ -1,5 +1,6 @@ --- title: "Call Log History" +description: "Call Log History — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-log-participants.mdx b/ui-kit/react/v4/call-log-participants.mdx index 04e09f664..ecce14ab9 100644 --- a/ui-kit/react/v4/call-log-participants.mdx +++ b/ui-kit/react/v4/call-log-participants.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Participants" +description: "Call Log Participants — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-log-recording.mdx b/ui-kit/react/v4/call-log-recording.mdx index 9895f6cd1..61f095293 100644 --- a/ui-kit/react/v4/call-log-recording.mdx +++ b/ui-kit/react/v4/call-log-recording.mdx @@ -1,5 +1,6 @@ --- title: "Call Log Recordings" +description: "Call Log Recordings — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-log-with-details.mdx b/ui-kit/react/v4/call-log-with-details.mdx index 957b2d20f..e02ef7a28 100644 --- a/ui-kit/react/v4/call-log-with-details.mdx +++ b/ui-kit/react/v4/call-log-with-details.mdx @@ -1,5 +1,6 @@ --- title: "Call Log With Details" +description: "Call Log With Details — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-logs.mdx b/ui-kit/react/v4/call-logs.mdx index 7f6dab0a7..1f2a16b92 100644 --- a/ui-kit/react/v4/call-logs.mdx +++ b/ui-kit/react/v4/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/ui-kit/react/v4/call-overview.mdx b/ui-kit/react/v4/call-overview.mdx index f71d7339c..14c7044c3 100644 --- a/ui-kit/react/v4/call-overview.mdx +++ b/ui-kit/react/v4/call-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react/v4/checkbox.mdx b/ui-kit/react/v4/checkbox.mdx index 821b3f368..1cc0d6415 100644 --- a/ui-kit/react/v4/checkbox.mdx +++ b/ui-kit/react/v4/checkbox.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox" +description: "Checkbox — CometChat documentation." --- diff --git a/ui-kit/react/v4/cometchat-quick-view.mdx b/ui-kit/react/v4/cometchat-quick-view.mdx index d83429801..75471be7c 100644 --- a/ui-kit/react/v4/cometchat-quick-view.mdx +++ b/ui-kit/react/v4/cometchat-quick-view.mdx @@ -1,5 +1,6 @@ --- title: "Quick View" +description: "Quick View — CometChat documentation." --- diff --git a/ui-kit/react/v4/components-overview.mdx b/ui-kit/react/v4/components-overview.mdx index bec7db55b..2b348f570 100644 --- a/ui-kit/react/v4/components-overview.mdx +++ b/ui-kit/react/v4/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react/v4/confirm-dialog.mdx b/ui-kit/react/v4/confirm-dialog.mdx index 9b3aac13c..9f3b27d0e 100644 --- a/ui-kit/react/v4/confirm-dialog.mdx +++ b/ui-kit/react/v4/confirm-dialog.mdx @@ -1,5 +1,6 @@ --- title: "Confirm Dialog" +description: "Confirm Dialog — CometChat documentation." --- diff --git a/ui-kit/react/v4/contacts.mdx b/ui-kit/react/v4/contacts.mdx index 6c0cf74df..24cada0de 100644 --- a/ui-kit/react/v4/contacts.mdx +++ b/ui-kit/react/v4/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- diff --git a/ui-kit/react/v4/conversations-with-messages.mdx b/ui-kit/react/v4/conversations-with-messages.mdx index 516e0a56a..d183d4168 100644 --- a/ui-kit/react/v4/conversations-with-messages.mdx +++ b/ui-kit/react/v4/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- diff --git a/ui-kit/react/v4/conversations.mdx b/ui-kit/react/v4/conversations.mdx index 7f2ffd2c9..182eb6273 100644 --- a/ui-kit/react/v4/conversations.mdx +++ b/ui-kit/react/v4/conversations.mdx @@ -1,6 +1,7 @@ --- title: "Conversations" sidebarTitle: "Overview" +description: "Conversations — CometChat documentation." --- diff --git a/ui-kit/react/v4/core-features.mdx b/ui-kit/react/v4/core-features.mdx index fbf7e721b..b46db6c08 100644 --- a/ui-kit/react/v4/core-features.mdx +++ b/ui-kit/react/v4/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- diff --git a/ui-kit/react/v4/create-group.mdx b/ui-kit/react/v4/create-group.mdx index 314783cb5..22f0f051b 100644 --- a/ui-kit/react/v4/create-group.mdx +++ b/ui-kit/react/v4/create-group.mdx @@ -1,5 +1,6 @@ --- title: "Create Group" +description: "Create Group — CometChat documentation." --- diff --git a/ui-kit/react/v4/custom-text-formatter-guide.mdx b/ui-kit/react/v4/custom-text-formatter-guide.mdx index b0ee91c9e..d8f37c13f 100644 --- a/ui-kit/react/v4/custom-text-formatter-guide.mdx +++ b/ui-kit/react/v4/custom-text-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Custom Text Formatter" +description: "Custom Text Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v4/date.mdx b/ui-kit/react/v4/date.mdx index 75c152bcc..ddd4c9334 100644 --- a/ui-kit/react/v4/date.mdx +++ b/ui-kit/react/v4/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- diff --git a/ui-kit/react/v4/document-bubble.mdx b/ui-kit/react/v4/document-bubble.mdx index 94e35c7a1..c2a7cdf96 100644 --- a/ui-kit/react/v4/document-bubble.mdx +++ b/ui-kit/react/v4/document-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Document Bubble" +description: "Document Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/dropdown.mdx b/ui-kit/react/v4/dropdown.mdx index a19078e88..c70f208e1 100644 --- a/ui-kit/react/v4/dropdown.mdx +++ b/ui-kit/react/v4/dropdown.mdx @@ -1,5 +1,6 @@ --- title: "Dropdown" +description: "Dropdown — CometChat documentation." --- diff --git a/ui-kit/react/v4/emoji-keyboard.mdx b/ui-kit/react/v4/emoji-keyboard.mdx index 87614d09f..efc178f23 100644 --- a/ui-kit/react/v4/emoji-keyboard.mdx +++ b/ui-kit/react/v4/emoji-keyboard.mdx @@ -1,5 +1,6 @@ --- title: "Emoji Keyboard" +description: "Emoji Keyboard — CometChat documentation." --- diff --git a/ui-kit/react/v4/events.mdx b/ui-kit/react/v4/events.mdx index 5a11143bb..2ab7be0d2 100644 --- a/ui-kit/react/v4/events.mdx +++ b/ui-kit/react/v4/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- diff --git a/ui-kit/react/v4/extensions.mdx b/ui-kit/react/v4/extensions.mdx index cfbe39714..fdd096782 100644 --- a/ui-kit/react/v4/extensions.mdx +++ b/ui-kit/react/v4/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- diff --git a/ui-kit/react/v4/file-bubble.mdx b/ui-kit/react/v4/file-bubble.mdx index b933e95f9..2c13522bc 100644 --- a/ui-kit/react/v4/file-bubble.mdx +++ b/ui-kit/react/v4/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/getting-started.mdx b/ui-kit/react/v4/getting-started.mdx index 54b785a94..29f16088d 100644 --- a/ui-kit/react/v4/getting-started.mdx +++ b/ui-kit/react/v4/getting-started.mdx @@ -1,5 +1,6 @@ --- title: "Getting Started" +description: "Getting Started — CometChat documentation." --- ## Start your first conversation diff --git a/ui-kit/react/v4/group-add-members.mdx b/ui-kit/react/v4/group-add-members.mdx index 22727db3f..c4bda9379 100644 --- a/ui-kit/react/v4/group-add-members.mdx +++ b/ui-kit/react/v4/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- diff --git a/ui-kit/react/v4/group-banned-members.mdx b/ui-kit/react/v4/group-banned-members.mdx index 61fd97e2c..ecbc135f5 100644 --- a/ui-kit/react/v4/group-banned-members.mdx +++ b/ui-kit/react/v4/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- diff --git a/ui-kit/react/v4/group-details.mdx b/ui-kit/react/v4/group-details.mdx index a1bfe26d1..e43ea7650 100644 --- a/ui-kit/react/v4/group-details.mdx +++ b/ui-kit/react/v4/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- diff --git a/ui-kit/react/v4/group-members.mdx b/ui-kit/react/v4/group-members.mdx index 8781640dc..206e7c535 100644 --- a/ui-kit/react/v4/group-members.mdx +++ b/ui-kit/react/v4/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- diff --git a/ui-kit/react/v4/group-transfer-ownership.mdx b/ui-kit/react/v4/group-transfer-ownership.mdx index 8a4ac6e31..43feb20bb 100644 --- a/ui-kit/react/v4/group-transfer-ownership.mdx +++ b/ui-kit/react/v4/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- diff --git a/ui-kit/react/v4/groups-with-messages.mdx b/ui-kit/react/v4/groups-with-messages.mdx index d14fbf93f..dc11f4c8d 100644 --- a/ui-kit/react/v4/groups-with-messages.mdx +++ b/ui-kit/react/v4/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- diff --git a/ui-kit/react/v4/groups.mdx b/ui-kit/react/v4/groups.mdx index 5910635c3..4c768d687 100644 --- a/ui-kit/react/v4/groups.mdx +++ b/ui-kit/react/v4/groups.mdx @@ -1,6 +1,7 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Groups — CometChat documentation." --- diff --git a/ui-kit/react/v4/icon-button.mdx b/ui-kit/react/v4/icon-button.mdx index 9f17a0733..f2c325a85 100644 --- a/ui-kit/react/v4/icon-button.mdx +++ b/ui-kit/react/v4/icon-button.mdx @@ -1,5 +1,6 @@ --- title: "Icon Button" +description: "Icon Button — CometChat documentation." --- diff --git a/ui-kit/react/v4/icon.mdx b/ui-kit/react/v4/icon.mdx index 49a419bc6..c70c27eac 100644 --- a/ui-kit/react/v4/icon.mdx +++ b/ui-kit/react/v4/icon.mdx @@ -1,5 +1,6 @@ --- title: "Icon" +description: "Icon — CometChat documentation." --- diff --git a/ui-kit/react/v4/image-bubble.mdx b/ui-kit/react/v4/image-bubble.mdx index b62ff5a59..d818da454 100644 --- a/ui-kit/react/v4/image-bubble.mdx +++ b/ui-kit/react/v4/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/incoming-call.mdx b/ui-kit/react/v4/incoming-call.mdx index 94d2ded33..b512e5b8a 100644 --- a/ui-kit/react/v4/incoming-call.mdx +++ b/ui-kit/react/v4/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- diff --git a/ui-kit/react/v4/input.mdx b/ui-kit/react/v4/input.mdx index a61231d4f..bade75311 100644 --- a/ui-kit/react/v4/input.mdx +++ b/ui-kit/react/v4/input.mdx @@ -1,5 +1,6 @@ --- title: "Input" +description: "Input — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-action-entity.mdx b/ui-kit/react/v4/interactive-action-entity.mdx index 69348fbc1..ef03786f7 100644 --- a/ui-kit/react/v4/interactive-action-entity.mdx +++ b/ui-kit/react/v4/interactive-action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-button-element.mdx b/ui-kit/react/v4/interactive-button-element.mdx index 409f85d8a..7dc07ef87 100644 --- a/ui-kit/react/v4/interactive-button-element.mdx +++ b/ui-kit/react/v4/interactive-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-card-bubble.mdx b/ui-kit/react/v4/interactive-card-bubble.mdx index a1761fef6..f5bb4d731 100644 --- a/ui-kit/react/v4/interactive-card-bubble.mdx +++ b/ui-kit/react/v4/interactive-card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-card-message.mdx b/ui-kit/react/v4/interactive-card-message.mdx index 036f5a152..00b7dbb1b 100644 --- a/ui-kit/react/v4/interactive-card-message.mdx +++ b/ui-kit/react/v4/interactive-card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-checkbox-element.mdx b/ui-kit/react/v4/interactive-checkbox-element.mdx index e8c3dadfb..f43cdd8c1 100644 --- a/ui-kit/react/v4/interactive-checkbox-element.mdx +++ b/ui-kit/react/v4/interactive-checkbox-element.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox Element" +description: "Checkbox Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-custom-interactive-message.mdx b/ui-kit/react/v4/interactive-custom-interactive-message.mdx index ca7b3fc42..f233cb9ae 100644 --- a/ui-kit/react/v4/interactive-custom-interactive-message.mdx +++ b/ui-kit/react/v4/interactive-custom-interactive-message.mdx @@ -1,5 +1,6 @@ --- title: "Custom Interactive Message" +description: "Custom Interactive Message — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-date-time-picker-element.mdx b/ui-kit/react/v4/interactive-date-time-picker-element.mdx index 9f608beb0..2ebe1ceeb 100644 --- a/ui-kit/react/v4/interactive-date-time-picker-element.mdx +++ b/ui-kit/react/v4/interactive-date-time-picker-element.mdx @@ -1,5 +1,6 @@ --- title: "DateTimePickerElement" +description: "DateTimePickerElement — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-dropdown-element.mdx b/ui-kit/react/v4/interactive-dropdown-element.mdx index 7f893acc5..584bc7e76 100644 --- a/ui-kit/react/v4/interactive-dropdown-element.mdx +++ b/ui-kit/react/v4/interactive-dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "DropdownElement" +description: "DropdownElement — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-element-type.mdx b/ui-kit/react/v4/interactive-element-type.mdx index 50e6e0a82..09e3ec39b 100644 --- a/ui-kit/react/v4/interactive-element-type.mdx +++ b/ui-kit/react/v4/interactive-element-type.mdx @@ -1,5 +1,6 @@ --- title: "Element Type" +description: "Element Type — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-form-bubble.mdx b/ui-kit/react/v4/interactive-form-bubble.mdx index a03dbf615..9a20f4e19 100644 --- a/ui-kit/react/v4/interactive-form-bubble.mdx +++ b/ui-kit/react/v4/interactive-form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-form-message.mdx b/ui-kit/react/v4/interactive-form-message.mdx index 54d89ef43..bdebed606 100644 --- a/ui-kit/react/v4/interactive-form-message.mdx +++ b/ui-kit/react/v4/interactive-form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-label-element.mdx b/ui-kit/react/v4/interactive-label-element.mdx index d4ed016d8..2ed97ae10 100644 --- a/ui-kit/react/v4/interactive-label-element.mdx +++ b/ui-kit/react/v4/interactive-label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-radio-button-element.mdx b/ui-kit/react/v4/interactive-radio-button-element.mdx index 89f88a2fc..6016e9f68 100644 --- a/ui-kit/react/v4/interactive-radio-button-element.mdx +++ b/ui-kit/react/v4/interactive-radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-scheduler-bubble.mdx b/ui-kit/react/v4/interactive-scheduler-bubble.mdx index 66618641f..9ff286dd3 100644 --- a/ui-kit/react/v4/interactive-scheduler-bubble.mdx +++ b/ui-kit/react/v4/interactive-scheduler-bubble.mdx @@ -1,5 +1,6 @@ --- title: "SchedulerBubble" +description: "SchedulerBubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-scheduler-message.mdx b/ui-kit/react/v4/interactive-scheduler-message.mdx index 9c3219f89..c83fee020 100644 --- a/ui-kit/react/v4/interactive-scheduler-message.mdx +++ b/ui-kit/react/v4/interactive-scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-single-select-element.mdx b/ui-kit/react/v4/interactive-single-select-element.mdx index 7c0e30ba7..0b740c849 100644 --- a/ui-kit/react/v4/interactive-single-select-element.mdx +++ b/ui-kit/react/v4/interactive-single-select-element.mdx @@ -1,5 +1,6 @@ --- title: "Single Select Element" +description: "Single Select Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/interactive-text-input-element.mdx b/ui-kit/react/v4/interactive-text-input-element.mdx index 3d90c958b..08dd20b9d 100644 --- a/ui-kit/react/v4/interactive-text-input-element.mdx +++ b/ui-kit/react/v4/interactive-text-input-element.mdx @@ -1,5 +1,6 @@ --- title: "Text Input Element" +description: "Text Input Element — CometChat documentation." --- diff --git a/ui-kit/react/v4/join-protected-group.mdx b/ui-kit/react/v4/join-protected-group.mdx index 7ff0effb7..b9f072abe 100644 --- a/ui-kit/react/v4/join-protected-group.mdx +++ b/ui-kit/react/v4/join-protected-group.mdx @@ -1,5 +1,6 @@ --- title: "Join Protected Group" +description: "Join Protected Group — CometChat documentation." --- diff --git a/ui-kit/react/v4/label.mdx b/ui-kit/react/v4/label.mdx index 604d23e75..18f95b1f8 100644 --- a/ui-kit/react/v4/label.mdx +++ b/ui-kit/react/v4/label.mdx @@ -1,5 +1,6 @@ --- title: "Label" +description: "Label — CometChat documentation." --- diff --git a/ui-kit/react/v4/list-item.mdx b/ui-kit/react/v4/list-item.mdx index dcb7f3cd5..1e8ec989d 100644 --- a/ui-kit/react/v4/list-item.mdx +++ b/ui-kit/react/v4/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- diff --git a/ui-kit/react/v4/list.mdx b/ui-kit/react/v4/list.mdx index dd4eb3145..f8149df22 100644 --- a/ui-kit/react/v4/list.mdx +++ b/ui-kit/react/v4/list.mdx @@ -1,5 +1,6 @@ --- title: "List" +description: "List — CometChat documentation." --- diff --git a/ui-kit/react/v4/loader.mdx b/ui-kit/react/v4/loader.mdx index f4368af11..a28c2efc3 100644 --- a/ui-kit/react/v4/loader.mdx +++ b/ui-kit/react/v4/loader.mdx @@ -1,5 +1,6 @@ --- title: "Loader" +description: "Loader — CometChat documentation." --- diff --git a/ui-kit/react/v4/localize.mdx b/ui-kit/react/v4/localize.mdx index 08bed141a..9c066e3fe 100644 --- a/ui-kit/react/v4/localize.mdx +++ b/ui-kit/react/v4/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- diff --git a/ui-kit/react/v4/media-recorder.mdx b/ui-kit/react/v4/media-recorder.mdx index 512e79762..3351f140e 100644 --- a/ui-kit/react/v4/media-recorder.mdx +++ b/ui-kit/react/v4/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- diff --git a/ui-kit/react/v4/mentions-formatter-guide.mdx b/ui-kit/react/v4/mentions-formatter-guide.mdx index c9f645e68..99beed181 100644 --- a/ui-kit/react/v4/mentions-formatter-guide.mdx +++ b/ui-kit/react/v4/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v4/message-bubble.mdx b/ui-kit/react/v4/message-bubble.mdx index fd9b7ee74..1618b9a86 100644 --- a/ui-kit/react/v4/message-bubble.mdx +++ b/ui-kit/react/v4/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-composer.mdx b/ui-kit/react/v4/message-composer.mdx index a49d1ccaf..03b6348b7 100644 --- a/ui-kit/react/v4/message-composer.mdx +++ b/ui-kit/react/v4/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-header.mdx b/ui-kit/react/v4/message-header.mdx index 0a9cec485..77e2d5ffd 100644 --- a/ui-kit/react/v4/message-header.mdx +++ b/ui-kit/react/v4/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-information.mdx b/ui-kit/react/v4/message-information.mdx index ef4e3cb1c..3d5354393 100644 --- a/ui-kit/react/v4/message-information.mdx +++ b/ui-kit/react/v4/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-input.mdx b/ui-kit/react/v4/message-input.mdx index 1ed4eaa02..081f6ecf9 100644 --- a/ui-kit/react/v4/message-input.mdx +++ b/ui-kit/react/v4/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-list.mdx b/ui-kit/react/v4/message-list.mdx index 94534796f..32b852579 100644 --- a/ui-kit/react/v4/message-list.mdx +++ b/ui-kit/react/v4/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- diff --git a/ui-kit/react/v4/message-template.mdx b/ui-kit/react/v4/message-template.mdx index 273f9d5b7..14870bf01 100644 --- a/ui-kit/react/v4/message-template.mdx +++ b/ui-kit/react/v4/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- diff --git a/ui-kit/react/v4/messages.mdx b/ui-kit/react/v4/messages.mdx index 18dc49dc1..e07ef6743 100644 --- a/ui-kit/react/v4/messages.mdx +++ b/ui-kit/react/v4/messages.mdx @@ -1,6 +1,7 @@ --- title: "Messages" sidebarTitle: "Overview" +description: "Messages — CometChat documentation." --- diff --git a/ui-kit/react/v4/methods.mdx b/ui-kit/react/v4/methods.mdx index e86351903..46075fe7f 100644 --- a/ui-kit/react/v4/methods.mdx +++ b/ui-kit/react/v4/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- diff --git a/ui-kit/react/v4/modal.mdx b/ui-kit/react/v4/modal.mdx index 83ba10ac1..e8ffce5eb 100644 --- a/ui-kit/react/v4/modal.mdx +++ b/ui-kit/react/v4/modal.mdx @@ -1,5 +1,6 @@ --- title: "Modal" +description: "Modal — CometChat documentation." --- diff --git a/ui-kit/react/v4/multi-tab-chat-ui-guide.mdx b/ui-kit/react/v4/multi-tab-chat-ui-guide.mdx index 7062c4d12..bfa5272b9 100644 --- a/ui-kit/react/v4/multi-tab-chat-ui-guide.mdx +++ b/ui-kit/react/v4/multi-tab-chat-ui-guide.mdx @@ -1,5 +1,6 @@ --- title: "Multi Tab Chat UI Guide" +description: "Multi Tab Chat UI Guide — CometChat integration guide." --- diff --git a/ui-kit/react/v4/next-js-integration-guide.mdx b/ui-kit/react/v4/next-js-integration-guide.mdx index f67afeae4..105eef3c3 100644 --- a/ui-kit/react/v4/next-js-integration-guide.mdx +++ b/ui-kit/react/v4/next-js-integration-guide.mdx @@ -1,5 +1,6 @@ --- title: "Next.js Integration" +description: "Next.js Integration — CometChat integration guide." --- diff --git a/ui-kit/react/v4/ongoing-call.mdx b/ui-kit/react/v4/ongoing-call.mdx index bbad6388f..f22efa46e 100644 --- a/ui-kit/react/v4/ongoing-call.mdx +++ b/ui-kit/react/v4/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- diff --git a/ui-kit/react/v4/outgoing-call.mdx b/ui-kit/react/v4/outgoing-call.mdx index a63880adc..85b836805 100644 --- a/ui-kit/react/v4/outgoing-call.mdx +++ b/ui-kit/react/v4/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- diff --git a/ui-kit/react/v4/overview.mdx b/ui-kit/react/v4/overview.mdx index e3ae577c1..e51201dfe 100644 --- a/ui-kit/react/v4/overview.mdx +++ b/ui-kit/react/v4/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react/v4/pop-over.mdx b/ui-kit/react/v4/pop-over.mdx index d3b64e868..e603aba0f 100644 --- a/ui-kit/react/v4/pop-over.mdx +++ b/ui-kit/react/v4/pop-over.mdx @@ -1,5 +1,6 @@ --- title: "Pop Over" +description: "Pop Over — CometChat documentation." --- diff --git a/ui-kit/react/v4/property-changes.mdx b/ui-kit/react/v4/property-changes.mdx index 8e8569441..846b6d906 100644 --- a/ui-kit/react/v4/property-changes.mdx +++ b/ui-kit/react/v4/property-changes.mdx @@ -1,5 +1,6 @@ --- title: "Property Changes" +description: "Property Changes — CometChat documentation." --- diff --git a/ui-kit/react/v4/radio-button.mdx b/ui-kit/react/v4/radio-button.mdx index f3be8718f..8428a146b 100644 --- a/ui-kit/react/v4/radio-button.mdx +++ b/ui-kit/react/v4/radio-button.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button" +description: "Radio Button — CometChat documentation." --- diff --git a/ui-kit/react/v4/reaction-info.mdx b/ui-kit/react/v4/reaction-info.mdx index 5cb140eea..ba871008c 100644 --- a/ui-kit/react/v4/reaction-info.mdx +++ b/ui-kit/react/v4/reaction-info.mdx @@ -1,5 +1,6 @@ --- title: "Reaction Info" +description: "Reaction Info — CometChat documentation." --- diff --git a/ui-kit/react/v4/reaction-list.mdx b/ui-kit/react/v4/reaction-list.mdx index cc746a790..c24b666a3 100644 --- a/ui-kit/react/v4/reaction-list.mdx +++ b/ui-kit/react/v4/reaction-list.mdx @@ -1,5 +1,6 @@ --- title: "Reaction List" +description: "Reaction List — CometChat documentation." --- diff --git a/ui-kit/react/v4/reaction.mdx b/ui-kit/react/v4/reaction.mdx index 1c0dc33d7..8c16bd60f 100644 --- a/ui-kit/react/v4/reaction.mdx +++ b/ui-kit/react/v4/reaction.mdx @@ -1,6 +1,7 @@ --- title: "Reactions" sidebarTitle: "Overview" +description: "Reactions — CometChat documentation." --- diff --git a/ui-kit/react/v4/receipt.mdx b/ui-kit/react/v4/receipt.mdx index c11564de0..56019c138 100644 --- a/ui-kit/react/v4/receipt.mdx +++ b/ui-kit/react/v4/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- diff --git a/ui-kit/react/v4/search-input.mdx b/ui-kit/react/v4/search-input.mdx index c4f57b3f2..c39db763f 100644 --- a/ui-kit/react/v4/search-input.mdx +++ b/ui-kit/react/v4/search-input.mdx @@ -1,5 +1,6 @@ --- title: "Search Input" +description: "Search Input — CometChat documentation." --- diff --git a/ui-kit/react/v4/shortcut-formatter-guide.mdx b/ui-kit/react/v4/shortcut-formatter-guide.mdx index de75735b2..91eba2316 100644 --- a/ui-kit/react/v4/shortcut-formatter-guide.mdx +++ b/ui-kit/react/v4/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v4/singleselect.mdx b/ui-kit/react/v4/singleselect.mdx index 2cc7345dd..e35d915db 100644 --- a/ui-kit/react/v4/singleselect.mdx +++ b/ui-kit/react/v4/singleselect.mdx @@ -1,5 +1,6 @@ --- title: "Single Select" +description: "Single Select — CometChat documentation." --- diff --git a/ui-kit/react/v4/sound-manager.mdx b/ui-kit/react/v4/sound-manager.mdx index 7b2f44511..387cf0d55 100644 --- a/ui-kit/react/v4/sound-manager.mdx +++ b/ui-kit/react/v4/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- diff --git a/ui-kit/react/v4/status-indicator.mdx b/ui-kit/react/v4/status-indicator.mdx index 6796a9195..4d0420df0 100644 --- a/ui-kit/react/v4/status-indicator.mdx +++ b/ui-kit/react/v4/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- diff --git a/ui-kit/react/v4/text-bubble.mdx b/ui-kit/react/v4/text-bubble.mdx index f03bfc1ed..43d167fea 100644 --- a/ui-kit/react/v4/text-bubble.mdx +++ b/ui-kit/react/v4/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v4/theme.mdx b/ui-kit/react/v4/theme.mdx index 92526a338..aa2d7b684 100644 --- a/ui-kit/react/v4/theme.mdx +++ b/ui-kit/react/v4/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- diff --git a/ui-kit/react/v4/threaded-messages.mdx b/ui-kit/react/v4/threaded-messages.mdx index 8e7496d49..fd9b0afcd 100644 --- a/ui-kit/react/v4/threaded-messages.mdx +++ b/ui-kit/react/v4/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- diff --git a/ui-kit/react/v4/upgrade-to-v5.mdx b/ui-kit/react/v4/upgrade-to-v5.mdx index 15035c156..bcff96eb8 100644 --- a/ui-kit/react/v4/upgrade-to-v5.mdx +++ b/ui-kit/react/v4/upgrade-to-v5.mdx @@ -1,5 +1,6 @@ --- title: "Upgrade To V5" +description: "Upgrade To V5 — CometChat documentation." --- diff --git a/ui-kit/react/v4/url-formatter-guide.mdx b/ui-kit/react/v4/url-formatter-guide.mdx index fc77b714e..955c78f01 100644 --- a/ui-kit/react/v4/url-formatter-guide.mdx +++ b/ui-kit/react/v4/url-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "URL Formatter" +description: "URL Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v4/user-member-wrapper.mdx b/ui-kit/react/v4/user-member-wrapper.mdx index e31603ee0..0bc2255bc 100644 --- a/ui-kit/react/v4/user-member-wrapper.mdx +++ b/ui-kit/react/v4/user-member-wrapper.mdx @@ -1,5 +1,6 @@ --- title: "User Member Wrapper" +description: "User Member Wrapper — CometChat documentation." --- diff --git a/ui-kit/react/v4/users-details.mdx b/ui-kit/react/v4/users-details.mdx index 65b64a2c8..03667f79a 100644 --- a/ui-kit/react/v4/users-details.mdx +++ b/ui-kit/react/v4/users-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- diff --git a/ui-kit/react/v4/users-with-messages.mdx b/ui-kit/react/v4/users-with-messages.mdx index 1c403337f..4e4f3ba99 100644 --- a/ui-kit/react/v4/users-with-messages.mdx +++ b/ui-kit/react/v4/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- diff --git a/ui-kit/react/v4/users.mdx b/ui-kit/react/v4/users.mdx index b26a26c2e..bf84aa98b 100644 --- a/ui-kit/react/v4/users.mdx +++ b/ui-kit/react/v4/users.mdx @@ -1,6 +1,7 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Users — CometChat documentation." --- diff --git a/ui-kit/react/v4/video-bubble.mdx b/ui-kit/react/v4/video-bubble.mdx index ba98d7337..c2afecaf6 100644 --- a/ui-kit/react/v4/video-bubble.mdx +++ b/ui-kit/react/v4/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- diff --git a/ui-kit/react/v5/ai-features.mdx b/ui-kit/react/v5/ai-features.mdx index 019856554..b65cdfebf 100644 --- a/ui-kit/react/v5/ai-features.mdx +++ b/ui-kit/react/v5/ai-features.mdx @@ -1,5 +1,6 @@ --- title: "AI User Copilot" +description: "AI User Copilot — CometChat documentation." --- diff --git a/ui-kit/react/v5/call-buttons.mdx b/ui-kit/react/v5/call-buttons.mdx index 2a44b105f..6346ce04f 100644 --- a/ui-kit/react/v5/call-buttons.mdx +++ b/ui-kit/react/v5/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- ## Overview diff --git a/ui-kit/react/v5/call-features.mdx b/ui-kit/react/v5/call-features.mdx index 2bc386a85..2e88a01ef 100644 --- a/ui-kit/react/v5/call-features.mdx +++ b/ui-kit/react/v5/call-features.mdx @@ -1,5 +1,6 @@ --- title: "Call" +description: "Call — CometChat documentation." --- diff --git a/ui-kit/react/v5/call-logs.mdx b/ui-kit/react/v5/call-logs.mdx index 94da06d47..1ecd2728a 100644 --- a/ui-kit/react/v5/call-logs.mdx +++ b/ui-kit/react/v5/call-logs.mdx @@ -1,5 +1,6 @@ --- title: "Call Logs" +description: "Call Logs — CometChat documentation." --- diff --git a/ui-kit/react/v5/components-overview.mdx b/ui-kit/react/v5/components-overview.mdx index a3955f297..44f398e33 100644 --- a/ui-kit/react/v5/components-overview.mdx +++ b/ui-kit/react/v5/components-overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react/v5/conversations.mdx b/ui-kit/react/v5/conversations.mdx index bb54d647b..e24a4a68e 100644 --- a/ui-kit/react/v5/conversations.mdx +++ b/ui-kit/react/v5/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- diff --git a/ui-kit/react/v5/core-features.mdx b/ui-kit/react/v5/core-features.mdx index d292749d2..81fd28959 100644 --- a/ui-kit/react/v5/core-features.mdx +++ b/ui-kit/react/v5/core-features.mdx @@ -1,5 +1,6 @@ --- title: "Core" +description: "Core — CometChat documentation." --- diff --git a/ui-kit/react/v5/custom-text-formatter-guide.mdx b/ui-kit/react/v5/custom-text-formatter-guide.mdx index b60fee647..fd59b0673 100644 --- a/ui-kit/react/v5/custom-text-formatter-guide.mdx +++ b/ui-kit/react/v5/custom-text-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Custom Text Formatter" +description: "Custom Text Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v5/events.mdx b/ui-kit/react/v5/events.mdx index a93b4eac5..0217762ce 100644 --- a/ui-kit/react/v5/events.mdx +++ b/ui-kit/react/v5/events.mdx @@ -1,5 +1,6 @@ --- title: "Events" +description: "Events — CometChat documentation." --- diff --git a/ui-kit/react/v5/extensions.mdx b/ui-kit/react/v5/extensions.mdx index 757e7152a..67547ae50 100644 --- a/ui-kit/react/v5/extensions.mdx +++ b/ui-kit/react/v5/extensions.mdx @@ -1,5 +1,6 @@ --- title: "Extensions" +description: "Extensions — CometChat documentation." --- diff --git a/ui-kit/react/v5/group-members.mdx b/ui-kit/react/v5/group-members.mdx index 7cb6f470a..268152310 100644 --- a/ui-kit/react/v5/group-members.mdx +++ b/ui-kit/react/v5/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- ## Overview diff --git a/ui-kit/react/v5/groups.mdx b/ui-kit/react/v5/groups.mdx index 1be8ddf63..1633d5352 100644 --- a/ui-kit/react/v5/groups.mdx +++ b/ui-kit/react/v5/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- diff --git a/ui-kit/react/v5/incoming-call.mdx b/ui-kit/react/v5/incoming-call.mdx index ed0a6f1a7..57b95917f 100644 --- a/ui-kit/react/v5/incoming-call.mdx +++ b/ui-kit/react/v5/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- diff --git a/ui-kit/react/v5/integration.mdx b/ui-kit/react/v5/integration.mdx index d96c20cc8..98933e443 100644 --- a/ui-kit/react/v5/integration.mdx +++ b/ui-kit/react/v5/integration.mdx @@ -1,5 +1,6 @@ --- title: "React Integration" +description: "React Integration — CometChat documentation." --- diff --git a/ui-kit/react/v5/integration/next-js.mdx b/ui-kit/react/v5/integration/next-js.mdx index 2bb0c6d3e..02e01b7e3 100644 --- a/ui-kit/react/v5/integration/next-js.mdx +++ b/ui-kit/react/v5/integration/next-js.mdx @@ -1,5 +1,6 @@ --- title: "Next.js Integration" +description: "Next.js Integration — CometChat documentation." --- @@ -321,7 +322,7 @@ body { -``` +```bash npm run dev ``` 🎉 You can now see conversations component like below, diff --git a/ui-kit/react/v5/localize.mdx b/ui-kit/react/v5/localize.mdx index 3e570f2ae..2fc6112ec 100644 --- a/ui-kit/react/v5/localize.mdx +++ b/ui-kit/react/v5/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- diff --git a/ui-kit/react/v5/mentions-formatter-guide.mdx b/ui-kit/react/v5/mentions-formatter-guide.mdx index 8ee2b9693..b1dde56ef 100644 --- a/ui-kit/react/v5/mentions-formatter-guide.mdx +++ b/ui-kit/react/v5/mentions-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "Mentions Formatter" +description: "Mentions Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v5/message-composer.mdx b/ui-kit/react/v5/message-composer.mdx index 8caa3f6be..28401b543 100644 --- a/ui-kit/react/v5/message-composer.mdx +++ b/ui-kit/react/v5/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- ## Overview diff --git a/ui-kit/react/v5/message-header.mdx b/ui-kit/react/v5/message-header.mdx index 113fdd88b..296cc8120 100644 --- a/ui-kit/react/v5/message-header.mdx +++ b/ui-kit/react/v5/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- diff --git a/ui-kit/react/v5/message-list.mdx b/ui-kit/react/v5/message-list.mdx index 4445f1073..b873a89ec 100644 --- a/ui-kit/react/v5/message-list.mdx +++ b/ui-kit/react/v5/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- diff --git a/ui-kit/react/v5/message-template.mdx b/ui-kit/react/v5/message-template.mdx index 69df70e1b..336e0fe2e 100644 --- a/ui-kit/react/v5/message-template.mdx +++ b/ui-kit/react/v5/message-template.mdx @@ -1,5 +1,6 @@ --- title: "Message Template" +description: "Message Template — CometChat documentation." --- ## Overview diff --git a/ui-kit/react/v5/methods.mdx b/ui-kit/react/v5/methods.mdx index 8dc6ec4c8..087171112 100644 --- a/ui-kit/react/v5/methods.mdx +++ b/ui-kit/react/v5/methods.mdx @@ -1,5 +1,6 @@ --- title: "Methods" +description: "Methods — CometChat documentation." --- diff --git a/ui-kit/react/v5/outgoing-call.mdx b/ui-kit/react/v5/outgoing-call.mdx index 3d1f432ad..7c3fdeac3 100644 --- a/ui-kit/react/v5/outgoing-call.mdx +++ b/ui-kit/react/v5/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- diff --git a/ui-kit/react/v5/overview.mdx b/ui-kit/react/v5/overview.mdx index 854279b3d..e638038de 100644 --- a/ui-kit/react/v5/overview.mdx +++ b/ui-kit/react/v5/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/react/v5/property-changes.mdx b/ui-kit/react/v5/property-changes.mdx index 71bb0ced8..bf7c3a7c6 100644 --- a/ui-kit/react/v5/property-changes.mdx +++ b/ui-kit/react/v5/property-changes.mdx @@ -1,5 +1,6 @@ --- title: "Property Changes" +description: "Property Changes — CometChat documentation." --- diff --git a/ui-kit/react/v5/shortcut-formatter-guide.mdx b/ui-kit/react/v5/shortcut-formatter-guide.mdx index 5092da158..9ef211997 100644 --- a/ui-kit/react/v5/shortcut-formatter-guide.mdx +++ b/ui-kit/react/v5/shortcut-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "ShortCut Formatter" +description: "ShortCut Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v5/sound-manager.mdx b/ui-kit/react/v5/sound-manager.mdx index 26f4efcf8..9c5bfe604 100644 --- a/ui-kit/react/v5/sound-manager.mdx +++ b/ui-kit/react/v5/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- diff --git a/ui-kit/react/v5/theme.mdx b/ui-kit/react/v5/theme.mdx index 8d02b2ce6..4d43ce281 100644 --- a/ui-kit/react/v5/theme.mdx +++ b/ui-kit/react/v5/theme.mdx @@ -1,5 +1,6 @@ --- title: "Introduction" +description: "Introduction — CometChat documentation." --- diff --git a/ui-kit/react/v5/theme/color-resources.mdx b/ui-kit/react/v5/theme/color-resources.mdx index 398a1a1f8..6c82237fa 100644 --- a/ui-kit/react/v5/theme/color-resources.mdx +++ b/ui-kit/react/v5/theme/color-resources.mdx @@ -1,5 +1,6 @@ --- title: "Color Resources" +description: "Color Resources — CometChat documentation." --- diff --git a/ui-kit/react/v5/theme/message-bubble-styling.mdx b/ui-kit/react/v5/theme/message-bubble-styling.mdx index 23feefaa1..2f1f9ee5c 100644 --- a/ui-kit/react/v5/theme/message-bubble-styling.mdx +++ b/ui-kit/react/v5/theme/message-bubble-styling.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble Styling" +description: "Message Bubble Styling — CometChat documentation." --- diff --git a/ui-kit/react/v5/threaded-message-preview.mdx b/ui-kit/react/v5/threaded-message-preview.mdx index c919ec6b8..46f4cc4a5 100644 --- a/ui-kit/react/v5/threaded-message-preview.mdx +++ b/ui-kit/react/v5/threaded-message-preview.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Message Preview" +description: "Threaded Message Preview — CometChat documentation." --- diff --git a/ui-kit/react/v5/upgrading-from-v4.mdx b/ui-kit/react/v5/upgrading-from-v4.mdx index efae853c9..8fc8630f1 100644 --- a/ui-kit/react/v5/upgrading-from-v4.mdx +++ b/ui-kit/react/v5/upgrading-from-v4.mdx @@ -1,5 +1,6 @@ --- title: "Upgrading From V4" +description: "Upgrading From V4 — CometChat documentation." --- diff --git a/ui-kit/react/v5/url-formatter-guide.mdx b/ui-kit/react/v5/url-formatter-guide.mdx index 0fd14b6fa..f0f7b6277 100644 --- a/ui-kit/react/v5/url-formatter-guide.mdx +++ b/ui-kit/react/v5/url-formatter-guide.mdx @@ -1,5 +1,6 @@ --- title: "URL Formatter" +description: "URL Formatter — CometChat integration guide." --- diff --git a/ui-kit/react/v5/users.mdx b/ui-kit/react/v5/users.mdx index 271042dc6..701a60a0f 100644 --- a/ui-kit/react/v5/users.mdx +++ b/ui-kit/react/v5/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- diff --git a/ui-kit/vue/2.0/javascript-2-0-overview.mdx b/ui-kit/vue/2.0/javascript-2-0-overview.mdx index 9580ee04e..edf236ad5 100644 --- a/ui-kit/vue/2.0/javascript-2-0-overview.mdx +++ b/ui-kit/vue/2.0/javascript-2-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/2.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/2.0/key-concepts.mdx b/ui-kit/vue/2.0/key-concepts.mdx index deb56e53a..b7e97a976 100644 --- a/ui-kit/vue/2.0/key-concepts.mdx +++ b/ui-kit/vue/2.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/vue/2.0/message-structure-and-hierarchy.mdx b/ui-kit/vue/2.0/message-structure-and-hierarchy.mdx index da76ab48f..bbbc64284 100644 --- a/ui-kit/vue/2.0/message-structure-and-hierarchy.mdx +++ b/ui-kit/vue/2.0/message-structure-and-hierarchy.mdx @@ -1,5 +1,6 @@ --- title: "Message Structure And Hierarchy" +description: "Message Structure And Hierarchy — CometChat documentation." --- The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. diff --git a/ui-kit/vue/2.0/overview.mdx b/ui-kit/vue/2.0/overview.mdx index c005a4617..9288847d9 100644 --- a/ui-kit/vue/2.0/overview.mdx +++ b/ui-kit/vue/2.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- The CometChat Vue UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly. diff --git a/ui-kit/vue/2.0/ui-components.mdx b/ui-kit/vue/2.0/ui-components.mdx index 79d72526d..029d6b5f4 100644 --- a/ui-kit/vue/2.0/ui-components.mdx +++ b/ui-kit/vue/2.0/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/vue/3.0/integration-with-nuxtjs.mdx b/ui-kit/vue/3.0/integration-with-nuxtjs.mdx index deb371260..497f56860 100644 --- a/ui-kit/vue/3.0/integration-with-nuxtjs.mdx +++ b/ui-kit/vue/3.0/integration-with-nuxtjs.mdx @@ -1,5 +1,6 @@ --- title: "Integration With Nuxt.Js" +description: "Integration With Nuxt.Js — CometChat documentation." --- Using Vue UI Kit, you can integrate your Nuxt.js application with CometChat. diff --git a/ui-kit/vue/3.0/javascript-3-0-overview.mdx b/ui-kit/vue/3.0/javascript-3-0-overview.mdx index 22b6579f4..3c2e8653d 100644 --- a/ui-kit/vue/3.0/javascript-3-0-overview.mdx +++ b/ui-kit/vue/3.0/javascript-3-0-overview.mdx @@ -1,4 +1,5 @@ --- title: "JavaScript SDK" url: "/sdk/javascript/3.0/overview" +description: "Navigate to JavaScript SDK documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/3.0/key-concepts.mdx b/ui-kit/vue/3.0/key-concepts.mdx index 32c0854d7..dd808c2a7 100644 --- a/ui-kit/vue/3.0/key-concepts.mdx +++ b/ui-kit/vue/3.0/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/vue/3.0/link/extension.mdx b/ui-kit/vue/3.0/link/extension.mdx index 29c1774bd..d7eadbbe5 100644 --- a/ui-kit/vue/3.0/link/extension.mdx +++ b/ui-kit/vue/3.0/link/extension.mdx @@ -1,4 +1,5 @@ --- title: "Extensions" url: "/fundamentals/extensions-overview" +description: "Navigate to Extensions documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/3.0/link/version.mdx b/ui-kit/vue/3.0/link/version.mdx index 8346b776a..1f085748b 100644 --- a/ui-kit/vue/3.0/link/version.mdx +++ b/ui-kit/vue/3.0/link/version.mdx @@ -1,4 +1,5 @@ --- title: "Version 4" url: "/ui-kit/vue/overview" +description: "Navigate to Version 4 documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/3.0/overview.mdx b/ui-kit/vue/3.0/overview.mdx index 4d90a8fbf..607f8e968 100644 --- a/ui-kit/vue/3.0/overview.mdx +++ b/ui-kit/vue/3.0/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- diff --git a/ui-kit/vue/3.0/ui-components.mdx b/ui-kit/vue/3.0/ui-components.mdx index b338478fa..10ae5ed4e 100644 --- a/ui-kit/vue/3.0/ui-components.mdx +++ b/ui-kit/vue/3.0/ui-components.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "UI Components — CometChat documentation." --- **UI Components** are building blocks of the UI Kit. **UI Components** are a set of custom classes specially designed to build a rich chat app. There are different UI Components available in the UI Kit Library. diff --git a/ui-kit/vue/ai-assist-bot.mdx b/ui-kit/vue/ai-assist-bot.mdx index bb23619b4..e8d947799 100644 --- a/ui-kit/vue/ai-assist-bot.mdx +++ b/ui-kit/vue/ai-assist-bot.mdx @@ -1,5 +1,6 @@ --- title: "AI Assist Bot" +description: "AI Assist Bot — CometChat documentation." --- `AI Assist Bot` is a class which can be used to ask a question to a bot in a given conversation. diff --git a/ui-kit/vue/ai-conversation-starter.mdx b/ui-kit/vue/ai-conversation-starter.mdx index ae34756dd..a1645a44e 100644 --- a/ui-kit/vue/ai-conversation-starter.mdx +++ b/ui-kit/vue/ai-conversation-starter.mdx @@ -1,5 +1,6 @@ --- title: "AI Conversation Starter" +description: "AI Conversation Starter — CometChat documentation." --- Configure Conversation Starter with this class. diff --git a/ui-kit/vue/ai-conversation-summary.mdx b/ui-kit/vue/ai-conversation-summary.mdx index 87d00ecef..88549b22a 100644 --- a/ui-kit/vue/ai-conversation-summary.mdx +++ b/ui-kit/vue/ai-conversation-summary.mdx @@ -1,5 +1,6 @@ --- title: "AI Conversation Summary" +description: "AI Conversation Summary — CometChat documentation." --- AI Conversation Summary is a class which generates a summary of a given conversation. diff --git a/ui-kit/vue/ai-integration.mdx b/ui-kit/vue/ai-integration.mdx index 18b4d7fe4..d32aa8ecc 100644 --- a/ui-kit/vue/ai-integration.mdx +++ b/ui-kit/vue/ai-integration.mdx @@ -1,5 +1,6 @@ --- title: "Integration" +description: "Integration — CometChat documentation." --- By default, SmartReplies and ConversationStarter will be enabled if they are enabled from the dashboard as well. diff --git a/ui-kit/vue/ai-smart-replies.mdx b/ui-kit/vue/ai-smart-replies.mdx index 7ab799d40..75b290982 100644 --- a/ui-kit/vue/ai-smart-replies.mdx +++ b/ui-kit/vue/ai-smart-replies.mdx @@ -1,5 +1,6 @@ --- title: "AI Smart Replies" +description: "AI Smart Replies — CometChat documentation." --- `AI Smart Replies` is a class which fetches a list of replies generated using AI for replying to a message in a conversation. diff --git a/ui-kit/vue/call-buttons.mdx b/ui-kit/vue/call-buttons.mdx index d0c72154d..ca4fcef5e 100644 --- a/ui-kit/vue/call-buttons.mdx +++ b/ui-kit/vue/call-buttons.mdx @@ -1,5 +1,6 @@ --- title: "Call Buttons" +description: "Call Buttons — CometChat documentation." --- This component provides users with the ability to make calls, access call-related functionalities, and control call settings. Clicking this button typically triggers the call to be placed to the desired recipient. diff --git a/ui-kit/vue/calls-integration.mdx b/ui-kit/vue/calls-integration.mdx index 60e09dd27..170bec647 100644 --- a/ui-kit/vue/calls-integration.mdx +++ b/ui-kit/vue/calls-integration.mdx @@ -1,5 +1,6 @@ --- title: "Integration" +description: "Integration — CometChat documentation." --- ## Integration diff --git a/ui-kit/vue/contacts.mdx b/ui-kit/vue/contacts.mdx index a053de767..9041449c2 100644 --- a/ui-kit/vue/contacts.mdx +++ b/ui-kit/vue/contacts.mdx @@ -1,5 +1,6 @@ --- title: "Contacts" +description: "Contacts — CometChat documentation." --- CometChatContacts is a standalone UI component specifically designed to facilitate the display and management of users and groups within chat applications. It streamlines the process of showcasing all app users and available chat groups in a user-friendly interface, making it easier for users to connect and communicate effectively. diff --git a/ui-kit/vue/conversations-with-messages.mdx b/ui-kit/vue/conversations-with-messages.mdx index 9530a53ad..adecde89d 100644 --- a/ui-kit/vue/conversations-with-messages.mdx +++ b/ui-kit/vue/conversations-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Conversations With Messages" +description: "Conversations With Messages — CometChat documentation." --- This component is responsible for displaying the recent conversation between participants in a 1:1 or group chat. It also allows users to send text, images, videos, or other media as messages to communicate with one another in real-time. diff --git a/ui-kit/vue/conversations.mdx b/ui-kit/vue/conversations.mdx index 61a7dee54..b235239a1 100644 --- a/ui-kit/vue/conversations.mdx +++ b/ui-kit/vue/conversations.mdx @@ -1,5 +1,6 @@ --- title: "Conversations" +description: "Conversations — CometChat documentation." --- This component lists the most recent or latest conversations or contacts with whom you have exchanged messages. It provides a convenient way to quickly access and resume conversations with the people you have been in contact with recently. diff --git a/ui-kit/vue/group-add-members.mdx b/ui-kit/vue/group-add-members.mdx index 5deb424d2..cabe6a281 100644 --- a/ui-kit/vue/group-add-members.mdx +++ b/ui-kit/vue/group-add-members.mdx @@ -1,5 +1,6 @@ --- title: "Add Members" +description: "Add Members — CometChat documentation." --- This component allows administrators or group owners to add new members to a specific group. It enables administrators or group owners to extend the membership of a group by adding new users to participate in the group's discussions and activities. By utilising this feature, administrators can manage group membership, and control access to group content. diff --git a/ui-kit/vue/group-banned-members.mdx b/ui-kit/vue/group-banned-members.mdx index 7690d9bd2..3e48e7d39 100644 --- a/ui-kit/vue/group-banned-members.mdx +++ b/ui-kit/vue/group-banned-members.mdx @@ -1,5 +1,6 @@ --- title: "Banned Members" +description: "Banned Members — CometChat documentation." --- This component lists all the users who have been restricted or prohibited from participating in specific groups or conversations. When the user is banned, they are no longer able to access or engage with the content and discussions within the banned group. diff --git a/ui-kit/vue/group-details.mdx b/ui-kit/vue/group-details.mdx index 8fb21140a..6a3b30447 100644 --- a/ui-kit/vue/group-details.mdx +++ b/ui-kit/vue/group-details.mdx @@ -1,5 +1,6 @@ --- title: "Group Details" +description: "Group Details — CometChat documentation." --- `CometChatDetails` is a component that provides additional information and settings related to a specific group. diff --git a/ui-kit/vue/group-members.mdx b/ui-kit/vue/group-members.mdx index 4cdea6ad0..9f8fe8205 100644 --- a/ui-kit/vue/group-members.mdx +++ b/ui-kit/vue/group-members.mdx @@ -1,5 +1,6 @@ --- title: "Group Members" +description: "Group Members — CometChat documentation." --- This component lists all the users who have been added or invited to participate in a particular group and have access to its discussions, shared content, and collaboration features. diff --git a/ui-kit/vue/group-transfer-ownership.mdx b/ui-kit/vue/group-transfer-ownership.mdx index fe80ec029..e734f8c8c 100644 --- a/ui-kit/vue/group-transfer-ownership.mdx +++ b/ui-kit/vue/group-transfer-ownership.mdx @@ -1,5 +1,6 @@ --- title: "Transfer Ownership" +description: "Transfer Ownership — CometChat documentation." --- This component allows the current owner or administrator of a group to transfer the ownership rights and administrative control of that group to another user. By transferring ownership, the original owner can designate a new user as the group owner, giving them full control and administrative privileges over the group. diff --git a/ui-kit/vue/groups-with-messages.mdx b/ui-kit/vue/groups-with-messages.mdx index 240c784cc..8e5703e4b 100644 --- a/ui-kit/vue/groups-with-messages.mdx +++ b/ui-kit/vue/groups-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Groups With Messages" +description: "Groups With Messages — CometChat documentation." --- This component is responsible for listing all the groups created on CometChat. It also allows group members to send text, images, videos, or other media as messages to communicate with one another in real-time. diff --git a/ui-kit/vue/groups.mdx b/ui-kit/vue/groups.mdx index 5cb198e13..383864f4a 100644 --- a/ui-kit/vue/groups.mdx +++ b/ui-kit/vue/groups.mdx @@ -1,5 +1,6 @@ --- title: "Groups" +description: "Groups — CometChat documentation." --- This component lists all the groups created on CometChat and also allows users to search for groups. It enables users to find and locate specific groups based on various search criteria or parameters. diff --git a/ui-kit/vue/incoming-call.mdx b/ui-kit/vue/incoming-call.mdx index 40ca5da29..252c11bf9 100644 --- a/ui-kit/vue/incoming-call.mdx +++ b/ui-kit/vue/incoming-call.mdx @@ -1,5 +1,6 @@ --- title: "Incoming Call" +description: "Incoming Call — CometChat documentation." --- The incoming call component is displayed when the user receives an incoming call, such as a voice call, video call. It serves as a visual representation of an incoming call and provides options for the user to answer or decline the call. diff --git a/ui-kit/vue/integration.mdx b/ui-kit/vue/integration.mdx index 1b2533d66..82d421572 100644 --- a/ui-kit/vue/integration.mdx +++ b/ui-kit/vue/integration.mdx @@ -1,6 +1,7 @@ --- title: "Integration" sidebarTitle: "Overview" +description: "Integration — CometChat documentation." --- ### Before you begin @@ -46,7 +47,7 @@ This developer kit is an add-on feature to [CometChat JavaScript SDK](/sdk/javas * CLI -``` +```bash npm install @cometchat/chat-uikit-vue ``` diff --git a/ui-kit/vue/key-concepts.mdx b/ui-kit/vue/key-concepts.mdx index e9f5d0d12..788d1c49c 100644 --- a/ui-kit/vue/key-concepts.mdx +++ b/ui-kit/vue/key-concepts.mdx @@ -1,5 +1,6 @@ --- title: "Key Concepts" +description: "Key Concepts — CometChat documentation." --- ### CometChat Dashboard diff --git a/ui-kit/vue/link/changelog.mdx b/ui-kit/vue/link/changelog.mdx index 3717b6c9e..7c77f1375 100644 --- a/ui-kit/vue/link/changelog.mdx +++ b/ui-kit/vue/link/changelog.mdx @@ -1,4 +1,5 @@ --- title: "Changelog" url: "https://github.com/cometchat/cometchat-uikit-vue/releases" +description: "Navigate to Changelog documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/link/sample.mdx b/ui-kit/vue/link/sample.mdx index 7a4d44231..4436a8f68 100644 --- a/ui-kit/vue/link/sample.mdx +++ b/ui-kit/vue/link/sample.mdx @@ -1,4 +1,5 @@ --- title: "Vue Sample App" url: "https://github.com/cometchat/cometchat-sample-app-vue/releases" +description: "Navigate to Vue Sample App documentation." --- \ No newline at end of file diff --git a/ui-kit/vue/message-bubble.mdx b/ui-kit/vue/message-bubble.mdx index 5ac38274f..cb8f30091 100644 --- a/ui-kit/vue/message-bubble.mdx +++ b/ui-kit/vue/message-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Message Bubble" +description: "Message Bubble — CometChat documentation." --- This component is used to visually represent individual messages and display them in a conversation-like format. diff --git a/ui-kit/vue/message-composer.mdx b/ui-kit/vue/message-composer.mdx index 3ca449f52..e3abc2f7c 100644 --- a/ui-kit/vue/message-composer.mdx +++ b/ui-kit/vue/message-composer.mdx @@ -1,5 +1,6 @@ --- title: "Message Composer" +description: "Message Composer — CometChat documentation." --- This component allows users to compose and send messages. It provides a text input area or field where users can enter their messages or responses before sending them to other participants in the conversation. diff --git a/ui-kit/vue/message-header.mdx b/ui-kit/vue/message-header.mdx index bd65a4156..ed54b39cb 100644 --- a/ui-kit/vue/message-header.mdx +++ b/ui-kit/vue/message-header.mdx @@ -1,5 +1,6 @@ --- title: "Message Header" +description: "Message Header — CometChat documentation." --- This component contains relevant information relevant to the chat conversation. diff --git a/ui-kit/vue/message-information.mdx b/ui-kit/vue/message-information.mdx index 3f630dae8..1bcea0b30 100644 --- a/ui-kit/vue/message-information.mdx +++ b/ui-kit/vue/message-information.mdx @@ -1,5 +1,6 @@ --- title: "Message Information" +description: "Message Information — CometChat documentation." --- CometChatMessageInformation is a standalone component that displays comprehensive information about the message receipts. This will enable users to easily access details such as the message content, recipient and delivery receipt information for a more informed communication experience. diff --git a/ui-kit/vue/message-list.mdx b/ui-kit/vue/message-list.mdx index dee54734c..3283339dd 100644 --- a/ui-kit/vue/message-list.mdx +++ b/ui-kit/vue/message-list.mdx @@ -1,5 +1,6 @@ --- title: "Message List" +description: "Message List — CometChat documentation." --- This is a fundamental component of the chat interface that displays a list of chat messages exchanged between participants in a conversation. It serves as a chronological log of the conversation, presenting messages in the order they were sent. diff --git a/ui-kit/vue/messages.mdx b/ui-kit/vue/messages.mdx index 43519ac5c..209623506 100644 --- a/ui-kit/vue/messages.mdx +++ b/ui-kit/vue/messages.mdx @@ -1,5 +1,6 @@ --- title: "Messages" +description: "Messages — CometChat documentation." --- This component is responsible for displaying the conversation between participants in a 1:1 or group chat. diff --git a/ui-kit/vue/nuxtjs-integration.mdx b/ui-kit/vue/nuxtjs-integration.mdx index 28c78ef80..876a40aea 100644 --- a/ui-kit/vue/nuxtjs-integration.mdx +++ b/ui-kit/vue/nuxtjs-integration.mdx @@ -1,5 +1,6 @@ --- title: "Nuxt.Js Integration" +description: "Nuxt.Js Integration — CometChat documentation." --- Using Vue UI Kit, you can integrate your Nuxt.js application with CometChat. diff --git a/ui-kit/vue/ongoing-call.mdx b/ui-kit/vue/ongoing-call.mdx index dcf3da5ce..3dd030011 100644 --- a/ui-kit/vue/ongoing-call.mdx +++ b/ui-kit/vue/ongoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Ongoing Call" +description: "Ongoing Call — CometChat documentation." --- This component is displayed during an ongoing voice or video call. This provides a dedicated screen or interface where users can engage in real-time conversation, view video streams, access call controls, and interact with various call-related features. diff --git a/ui-kit/vue/outgoing-call.mdx b/ui-kit/vue/outgoing-call.mdx index 783e24119..610861e76 100644 --- a/ui-kit/vue/outgoing-call.mdx +++ b/ui-kit/vue/outgoing-call.mdx @@ -1,5 +1,6 @@ --- title: "Outgoing Call" +description: "Outgoing Call — CometChat documentation." --- ## Overview diff --git a/ui-kit/vue/overview.mdx b/ui-kit/vue/overview.mdx index e78b1ce24..8f306b71c 100644 --- a/ui-kit/vue/overview.mdx +++ b/ui-kit/vue/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- CometChat's **UI Kit** for Vue, you can easily built an chat app with all the essential messaging feature along with the customisations and so on as per your application needs. This **UI Kit** is a set of prebuilt UI components divided into smaller modules and components and each and every component is configurable to suit your need. diff --git a/ui-kit/vue/shared-elements.mdx b/ui-kit/vue/shared-elements.mdx index ce61285a5..3bee97c92 100644 --- a/ui-kit/vue/shared-elements.mdx +++ b/ui-kit/vue/shared-elements.mdx @@ -1,5 +1,6 @@ --- title: "Shared" +description: "Shared — CometChat documentation." --- This module contains reusable components, utilities, constants, and helper functions that are used across the other CometChat's web UI Kits. [Learn more](/web-shared/overview) diff --git a/ui-kit/vue/tabs.mdx b/ui-kit/vue/tabs.mdx index 880e25f99..ea8f4788a 100644 --- a/ui-kit/vue/tabs.mdx +++ b/ui-kit/vue/tabs.mdx @@ -1,5 +1,6 @@ --- title: "Tabs" +description: "Tabs — CometChat documentation." --- This component allows for the organisation and presentation of content or functionality into separate tabs or sections. It provides a way for users to switch between different tabs to access distinct sets of information or perform specific actions. diff --git a/ui-kit/vue/theme.mdx b/ui-kit/vue/theme.mdx index 38b19dcac..1f5fbd2ee 100644 --- a/ui-kit/vue/theme.mdx +++ b/ui-kit/vue/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- Theme class provides endless number of customisations to improve or transform the look and feel of the UI Kit as per your application need. [Learn more](/web-shared/theme). diff --git a/ui-kit/vue/threaded-messages.mdx b/ui-kit/vue/threaded-messages.mdx index b238e9dd7..a766fa3b5 100644 --- a/ui-kit/vue/threaded-messages.mdx +++ b/ui-kit/vue/threaded-messages.mdx @@ -1,5 +1,6 @@ --- title: "Threaded Messages" +description: "Threaded Messages — CometChat documentation." --- This component allows users to organise and group related messages into separate conversations within a larger conversation. It provides a way to maintain context, focus, and clarity when multiple discussions or topics are happening simultaneously within a chat. diff --git a/ui-kit/vue/ui-components-overview.mdx b/ui-kit/vue/ui-components-overview.mdx index 555d6b9d8..bfb1ca259 100644 --- a/ui-kit/vue/ui-components-overview.mdx +++ b/ui-kit/vue/ui-components-overview.mdx @@ -1,5 +1,6 @@ --- title: "UI Components" +description: "Overview of UI Components in CometChat." --- CometChat's **UI Kit** is a set of pre-built UI components that allows you to easily craft an in-app chat with all the essential messaging features. diff --git a/ui-kit/vue/ui-kit-methods.mdx b/ui-kit/vue/ui-kit-methods.mdx index 4bcf62418..1999cb716 100644 --- a/ui-kit/vue/ui-kit-methods.mdx +++ b/ui-kit/vue/ui-kit-methods.mdx @@ -1,5 +1,6 @@ --- title: "CometChat UI Kit" +description: "CometChat UI Kit — CometChat documentation." --- `CometChatUIKit` is a class that contains all necessary methods to help initialise the [CometChat SDK](/sdk/javascript/overview) with valid credentials for the UI Kit to utilise. diff --git a/ui-kit/vue/user-details.mdx b/ui-kit/vue/user-details.mdx index 0a6d707e2..a242b5356 100644 --- a/ui-kit/vue/user-details.mdx +++ b/ui-kit/vue/user-details.mdx @@ -1,5 +1,6 @@ --- title: "User Details" +description: "User Details — CometChat documentation." --- `CometChatDetails` is a component that provides additional information and settings related to a specific user. diff --git a/ui-kit/vue/user-member-wrapper.mdx b/ui-kit/vue/user-member-wrapper.mdx index 671470ce1..f128f9914 100644 --- a/ui-kit/vue/user-member-wrapper.mdx +++ b/ui-kit/vue/user-member-wrapper.mdx @@ -1,5 +1,6 @@ --- title: "User Member Wrapper" +description: "User Member Wrapper — CometChat documentation." --- The CometChatUserMemberWrapper is a UI component that combines the features of CometChatUsers and CometChatGroupMemberWrapper. It's designed to work behind the scenes in the CometChatMessageComposer to show a simple and smart list of suggestions when users want to mention others in their messages. This makes it easier for users to engage with each other and manage group conversations in a smooth and convenient way. diff --git a/ui-kit/vue/users-with-messages.mdx b/ui-kit/vue/users-with-messages.mdx index dd7d69433..eb96c2ff4 100644 --- a/ui-kit/vue/users-with-messages.mdx +++ b/ui-kit/vue/users-with-messages.mdx @@ -1,5 +1,6 @@ --- title: "Users With Messages" +description: "Users With Messages — CometChat documentation." --- This component is responsible for listing all the users registered on CometChat. It also allows users to send text, images, videos, or other media as messages to communicate with one another in real-time. diff --git a/ui-kit/vue/users.mdx b/ui-kit/vue/users.mdx index af76539a6..12b032c7c 100644 --- a/ui-kit/vue/users.mdx +++ b/ui-kit/vue/users.mdx @@ -1,5 +1,6 @@ --- title: "Users" +description: "Users — CometChat documentation." --- This component lists all the users registered on CometChat and also allows users to search for other users. It enables users to find and locate specific individuals based on various search criteria or parameters. Online users are represented with a green colored dot. diff --git a/ui-kit/vue/web-elements.mdx b/ui-kit/vue/web-elements.mdx index f72bd89c0..f7da5af0f 100644 --- a/ui-kit/vue/web-elements.mdx +++ b/ui-kit/vue/web-elements.mdx @@ -1,5 +1,6 @@ --- title: "Elements" +description: "Elements — CometChat documentation." --- Elements is a set of pre-built UI components that act as building blocks of our UI Kit. These UI components are built following the [web components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) standard and using [lit](https://lit.dev/) library. This allows us to create a framework-agnostic solution so that they can be integrated with our web UIKits such as React, Angular and Vue. diff --git a/web-elements/action-sheet.mdx b/web-elements/action-sheet.mdx index 9fec359c2..42b1f2873 100644 --- a/web-elements/action-sheet.mdx +++ b/web-elements/action-sheet.mdx @@ -1,5 +1,6 @@ --- title: "Action Sheet" +description: "Action Sheet — CometChat documentation." --- This element is a slide-up pane for presenting the user with a set of actions. diff --git a/web-elements/audio-bubble.mdx b/web-elements/audio-bubble.mdx index 0e976d31b..1d1171300 100644 --- a/web-elements/audio-bubble.mdx +++ b/web-elements/audio-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Audio Bubble" +description: "Audio Bubble — CometChat documentation." --- This element handles the display and the play/pause functionality for an individual audio. This element uses the native embed audio element. diff --git a/web-elements/avatar.mdx b/web-elements/avatar.mdx index f03e026bd..0beee7816 100644 --- a/web-elements/avatar.mdx +++ b/web-elements/avatar.mdx @@ -1,5 +1,6 @@ --- title: "Avatar" +description: "Avatar — CometChat documentation." --- This element is used to represent a CometChat.User of CometChat.group profile picture with fallback to the initials. diff --git a/web-elements/backdrop.mdx b/web-elements/backdrop.mdx index 0b2409fa8..3f3ebe7e5 100644 --- a/web-elements/backdrop.mdx +++ b/web-elements/backdrop.mdx @@ -1,5 +1,6 @@ --- title: "Backdrop" +description: "Backdrop — CometChat documentation." --- This element represents the background against which other elements are presented. diff --git a/web-elements/badge.mdx b/web-elements/badge.mdx index fa4ac4e58..8ed3874a1 100644 --- a/web-elements/badge.mdx +++ b/web-elements/badge.mdx @@ -1,5 +1,6 @@ --- title: "Badge" +description: "Badge — CometChat documentation." --- This element is a numeric value descriptor i.e it displays the unread count of messages for 1-1/group chats. diff --git a/web-elements/button-group.mdx b/web-elements/button-group.mdx index f38540e5f..65d8b3387 100644 --- a/web-elements/button-group.mdx +++ b/web-elements/button-group.mdx @@ -1,5 +1,6 @@ --- title: "Button Group" +description: "Button Group — CometChat documentation." --- This element is grouping of buttons together in a single line. diff --git a/web-elements/checkbox.mdx b/web-elements/checkbox.mdx index e3281c66c..b0e31138b 100644 --- a/web-elements/checkbox.mdx +++ b/web-elements/checkbox.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox" +description: "Checkbox — CometChat documentation." --- This element allow the user to select one or more items from a set. diff --git a/web-elements/cometchat-quick-view.mdx b/web-elements/cometchat-quick-view.mdx index afbf237a4..d25a0b95a 100644 --- a/web-elements/cometchat-quick-view.mdx +++ b/web-elements/cometchat-quick-view.mdx @@ -1,5 +1,6 @@ --- title: "QuickView" +description: "QuickView — CometChat documentation." --- CometChat's Quick View component allows you to create a quick overview panel with a title, subtitle, and an optional close button. It extends from the LitElement's base class. diff --git a/web-elements/confirm-dialog.mdx b/web-elements/confirm-dialog.mdx index f75ddac65..345894f02 100644 --- a/web-elements/confirm-dialog.mdx +++ b/web-elements/confirm-dialog.mdx @@ -1,5 +1,6 @@ --- title: "Confirm Dialog" +description: "Confirm Dialog — CometChat documentation." --- This element is a type of modal window that appears in front of app content to ask for a decision. It require users to explicitly confirm their choice before an option is committed. diff --git a/web-elements/date.mdx b/web-elements/date.mdx index 723cfc886..61d3d9056 100644 --- a/web-elements/date.mdx +++ b/web-elements/date.mdx @@ -1,5 +1,6 @@ --- title: "Date" +description: "Date — CometChat documentation." --- This element displays the date with the in-built support of 3 date patterns. diff --git a/web-elements/document-bubble.mdx b/web-elements/document-bubble.mdx index df5db40b2..f9cc23cb3 100644 --- a/web-elements/document-bubble.mdx +++ b/web-elements/document-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Document Bubble" +description: "Document Bubble — CometChat documentation." --- This element is a card view consisting of title, subtitle, url, icon and a launch button. diff --git a/web-elements/dropdown.mdx b/web-elements/dropdown.mdx index 3661dfa62..64f65ab02 100644 --- a/web-elements/dropdown.mdx +++ b/web-elements/dropdown.mdx @@ -1,5 +1,6 @@ --- title: "Dropdown" +description: "Dropdown — CometChat documentation." --- This element is a stylised version of the select component. It allows the user to select one option from a list. diff --git a/web-elements/emoji-keyboard.mdx b/web-elements/emoji-keyboard.mdx index a0d33939c..df2f08c44 100644 --- a/web-elements/emoji-keyboard.mdx +++ b/web-elements/emoji-keyboard.mdx @@ -1,5 +1,6 @@ --- title: "Emoji Keyboard" +description: "Emoji Keyboard — CometChat documentation." --- This element is CometChat's very own emoji picker with native emoji support. diff --git a/web-elements/file-bubble.mdx b/web-elements/file-bubble.mdx index 87cfd1164..e9b7c3cff 100644 --- a/web-elements/file-bubble.mdx +++ b/web-elements/file-bubble.mdx @@ -1,5 +1,6 @@ --- title: "File Bubble" +description: "File Bubble — CometChat documentation." --- This element handles the display and the download functionality for an individual file. diff --git a/web-elements/icon-button.mdx b/web-elements/icon-button.mdx index 2d3f61dd2..dc01b249a 100644 --- a/web-elements/icon-button.mdx +++ b/web-elements/icon-button.mdx @@ -1,5 +1,6 @@ --- title: "Icon Button" +description: "Icon Button — CometChat documentation." --- This element uses [Icon element](/web-elements/icon) and [Label element](/web-elements/label) to show text and icon(with background) and along with an alignment property to align the icon around the text. The purpose of this element is to initiate an action. diff --git a/web-elements/icon.mdx b/web-elements/icon.mdx index c5758663b..e7778e78e 100644 --- a/web-elements/icon.mdx +++ b/web-elements/icon.mdx @@ -1,5 +1,6 @@ --- title: "Icon" +description: "Icon — CometChat documentation." --- This element displays an icon. It currently supports only svg icons diff --git a/web-elements/image-bubble.mdx b/web-elements/image-bubble.mdx index 948732ac7..27449455a 100644 --- a/web-elements/image-bubble.mdx +++ b/web-elements/image-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Image Bubble" +description: "Image Bubble — CometChat documentation." --- This element handles the display for an individual image. diff --git a/web-elements/input.mdx b/web-elements/input.mdx index 735253cd7..34b7ae3d9 100644 --- a/web-elements/input.mdx +++ b/web-elements/input.mdx @@ -1,5 +1,6 @@ --- title: "Input" +description: "Input — CometChat documentation." --- This element allows users to enter or provide data or information within a web form or interface. It is one of the fundamental building blocks for user input and interaction on websites and web applications. diff --git a/web-elements/label.mdx b/web-elements/label.mdx index 8ea19df75..0d6935f9f 100644 --- a/web-elements/label.mdx +++ b/web-elements/label.mdx @@ -1,5 +1,6 @@ --- title: "Label" +description: "Label — CometChat documentation." --- This element provides descriptive information about the associated UI element. diff --git a/web-elements/list-item.mdx b/web-elements/list-item.mdx index 22836077e..f92bc34ce 100644 --- a/web-elements/list-item.mdx +++ b/web-elements/list-item.mdx @@ -1,5 +1,6 @@ --- title: "List Item" +description: "List Item — CometChat documentation." --- This element is used to display rows of information, such as a contact list, playlist, or menu. They contain Avatar, Status indicator, title, subtitle, tailView and menuView. diff --git a/web-elements/loader.mdx b/web-elements/loader.mdx index 9cf5d0da6..63c86cda8 100644 --- a/web-elements/loader.mdx +++ b/web-elements/loader.mdx @@ -1,5 +1,6 @@ --- title: "Loader" +description: "Loader — CometChat documentation." --- This element helps to notify users that loading is underway. They are used while retrieving data or performing slow computations. diff --git a/web-elements/media-recorder.mdx b/web-elements/media-recorder.mdx index 2cec8a06e..db35a109a 100644 --- a/web-elements/media-recorder.mdx +++ b/web-elements/media-recorder.mdx @@ -1,5 +1,6 @@ --- title: "Media Recorder" +description: "Media Recorder — CometChat documentation." --- This element allows users to record voice and send them as audio messages. It has a start button to start recording, a stop button to stop recording, a play button to play the recorded message, a submit button to submit the recorded message and a close button to close the media recorder. diff --git a/web-elements/message-input.mdx b/web-elements/message-input.mdx index 7561812cb..e8f7dd56f 100644 --- a/web-elements/message-input.mdx +++ b/web-elements/message-input.mdx @@ -1,5 +1,6 @@ --- title: "Message Input" +description: "Message Input — CometChat documentation." --- This element enable users to enter free-form text data along with custom view of 3 variants (primary, secondary and auxiliary). diff --git a/web-elements/modal.mdx b/web-elements/modal.mdx index 21890f619..a9091e3e1 100644 --- a/web-elements/modal.mdx +++ b/web-elements/modal.mdx @@ -1,5 +1,6 @@ --- title: "Modal" +description: "Modal — CometChat documentation." --- This element renders its children component in front of the backdrop element. diff --git a/web-elements/overview.mdx b/web-elements/overview.mdx index b2128bcc6..7aab51196 100644 --- a/web-elements/overview.mdx +++ b/web-elements/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- Elements is a set of pre-built UI components that act as building blocks of our UI Kit. These UI components are built following the [web components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) standard and using [lit](https://lit.dev/) library. This allows us to create a framework-agnostic solution so that they can be integrated with our web UIKits such as React, Angular and Vue. diff --git a/web-elements/pop-over.mdx b/web-elements/pop-over.mdx index f5ac7403f..4f32ebc69 100644 --- a/web-elements/pop-over.mdx +++ b/web-elements/pop-over.mdx @@ -1,5 +1,6 @@ --- title: "Popover" +description: "Popover — CometChat documentation." --- This element displays additional content or options in a small, overlay-like window. It appears on top of the current screen without requiring the user to navigate to a different page or screen. diff --git a/web-elements/radio-button.mdx b/web-elements/radio-button.mdx index 676fd5c87..ca5e249a2 100644 --- a/web-elements/radio-button.mdx +++ b/web-elements/radio-button.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button" +description: "Radio Button — CometChat documentation." --- This element allows the user to exactly select one item from a set. diff --git a/web-elements/receipt.mdx b/web-elements/receipt.mdx index 1841015ec..5003f94ab 100644 --- a/web-elements/receipt.mdx +++ b/web-elements/receipt.mdx @@ -1,5 +1,6 @@ --- title: "Receipt" +description: "Receipt — CometChat documentation." --- This element renders the read receipts such as sending, sent, delivered and error state indicator of a sent message. diff --git a/web-elements/search-input.mdx b/web-elements/search-input.mdx index 4b230bb97..92b8d0055 100644 --- a/web-elements/search-input.mdx +++ b/web-elements/search-input.mdx @@ -1,5 +1,6 @@ --- title: "Search Input" +description: "Search Input — CometChat documentation." --- This element is built on top of [Input](/web-elements/input) element and enables users to enter a search string. diff --git a/web-elements/singleselect.mdx b/web-elements/singleselect.mdx index 805ae35ce..5e09bddfd 100644 --- a/web-elements/singleselect.mdx +++ b/web-elements/singleselect.mdx @@ -1,5 +1,6 @@ --- title: "SingleSelect" +description: "SingleSelect — CometChat documentation." --- The `CometChatSingleSelect` component is a customizable Single Select component that allows you to choose one option from a list of box-structured options. It extends from the LitElement's base class. diff --git a/web-elements/status-indicator.mdx b/web-elements/status-indicator.mdx index b10a8037f..6c6f1e501 100644 --- a/web-elements/status-indicator.mdx +++ b/web-elements/status-indicator.mdx @@ -1,5 +1,6 @@ --- title: "Status Indicator" +description: "Status Indicator — CometChat documentation." --- This element shows the user presence as dots with colored background and group type as dots with background images. diff --git a/web-elements/text-bubble.mdx b/web-elements/text-bubble.mdx index 11baa4a37..f59646501 100644 --- a/web-elements/text-bubble.mdx +++ b/web-elements/text-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Text Bubble" +description: "Text Bubble — CometChat documentation." --- This element handles the display for an individual text message. diff --git a/web-elements/text-input.mdx b/web-elements/text-input.mdx index 725e77c40..22a497a20 100644 --- a/web-elements/text-input.mdx +++ b/web-elements/text-input.mdx @@ -1,5 +1,6 @@ --- title: "Text Input" +description: "Text Input — CometChat documentation." --- This element enable users to enter free-form text data along with custom view of 3 variants (primary, secondary and auxiliary). diff --git a/web-elements/video-bubble.mdx b/web-elements/video-bubble.mdx index 3d829b313..86b4a1901 100644 --- a/web-elements/video-bubble.mdx +++ b/web-elements/video-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Video Bubble" +description: "Video Bubble — CometChat documentation." --- This element handles the display and the play/pause functionality for an individual video. This element uses the native embed video element. diff --git a/web-shared/action-entity.mdx b/web-shared/action-entity.mdx index 0ead05c56..8c871afcc 100644 --- a/web-shared/action-entity.mdx +++ b/web-shared/action-entity.mdx @@ -1,5 +1,6 @@ --- title: "Action Entity" +description: "Action Entity — CometChat documentation." --- Base class for defining the type of actions that can be performed on `BaseInteractiveElement` diff --git a/web-shared/actionitem.mdx b/web-shared/actionitem.mdx index 1a05e40e0..3e77ea2cf 100644 --- a/web-shared/actionitem.mdx +++ b/web-shared/actionitem.mdx @@ -1,5 +1,6 @@ --- title: "ActionItem" +description: "ActionItem — CometChat documentation." --- CometChatActionItem is a pre-defined structure for creating action that can be used to perform an action such as a button click or navigating a link. diff --git a/web-shared/actionsicon.mdx b/web-shared/actionsicon.mdx index b79e982ef..9f13b7060 100644 --- a/web-shared/actionsicon.mdx +++ b/web-shared/actionsicon.mdx @@ -1,5 +1,6 @@ --- title: "ActionsIcon" +description: "ActionsIcon — CometChat documentation." --- `CometChatActionsIcon` is a pre-defined structure for creating actions that the user can perform on a message with an icon representation. diff --git a/web-shared/actionsview.mdx b/web-shared/actionsview.mdx index ac31504b5..f7547715f 100644 --- a/web-shared/actionsview.mdx +++ b/web-shared/actionsview.mdx @@ -1,5 +1,6 @@ --- title: "ActionsView" +description: "ActionsView — CometChat documentation." --- `CometChatActionsView` is a pre-defined structure for creating actions that the user can perform on a message with a customised UI view representation. diff --git a/web-shared/add-members-configuration.mdx b/web-shared/add-members-configuration.mdx index 1a6621022..21379e444 100644 --- a/web-shared/add-members-configuration.mdx +++ b/web-shared/add-members-configuration.mdx @@ -1,5 +1,6 @@ --- title: "AddMembersConfiguration" +description: "AddMembersConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatAddMembers` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/addmembersstyle.mdx b/web-shared/addmembersstyle.mdx index 13567c837..d3a8307f1 100644 --- a/web-shared/addmembersstyle.mdx +++ b/web-shared/addmembersstyle.mdx @@ -1,5 +1,6 @@ --- title: "AddMembersStyle" +description: "AddMembersStyle — CometChat documentation." --- Styling properties of the `CometChatAddMembers` component diff --git a/web-shared/ai-assist-bot-configuration.mdx b/web-shared/ai-assist-bot-configuration.mdx index d64489245..baecc231d 100644 --- a/web-shared/ai-assist-bot-configuration.mdx +++ b/web-shared/ai-assist-bot-configuration.mdx @@ -1,5 +1,6 @@ --- title: "AIAssistBotConfiguration" +description: "AIAssistBotConfiguration — CometChat documentation." --- This refers to the properties of the `AIAssistBot` component that are available for customisation. diff --git a/web-shared/ai-assist-bot-style.mdx b/web-shared/ai-assist-bot-style.mdx index 7c0a4ba38..6d397bdcf 100644 --- a/web-shared/ai-assist-bot-style.mdx +++ b/web-shared/ai-assist-bot-style.mdx @@ -1,5 +1,6 @@ --- title: "AIAssistBotStyle" +description: "AIAssistBotStyle — CometChat documentation." --- Styling properties of `AIAssistBot` component. diff --git a/web-shared/ai-conversation-starter-configuration.mdx b/web-shared/ai-conversation-starter-configuration.mdx index 32b06806a..57888a20e 100644 --- a/web-shared/ai-conversation-starter-configuration.mdx +++ b/web-shared/ai-conversation-starter-configuration.mdx @@ -1,5 +1,6 @@ --- title: "AIConversationStarterConfiguration" +description: "AIConversationStarterConfiguration — CometChat documentation." --- This refers to the properties of the AIConversationStarter component that are available for customisation. diff --git a/web-shared/ai-conversation-starter-style.mdx b/web-shared/ai-conversation-starter-style.mdx index 1349c1057..a821b1df5 100644 --- a/web-shared/ai-conversation-starter-style.mdx +++ b/web-shared/ai-conversation-starter-style.mdx @@ -1,5 +1,6 @@ --- title: "AIConversationStarterStyle" +description: "AIConversationStarterStyle — CometChat documentation." --- Styling properties of `AIConversationStarter` component. diff --git a/web-shared/ai-conversation-summary-configuration.mdx b/web-shared/ai-conversation-summary-configuration.mdx index 5066eb743..084abef00 100644 --- a/web-shared/ai-conversation-summary-configuration.mdx +++ b/web-shared/ai-conversation-summary-configuration.mdx @@ -1,5 +1,6 @@ --- title: "AIConversationSummaryConfiguration" +description: "AIConversationSummaryConfiguration — CometChat documentation." --- | Property | Type | Description | diff --git a/web-shared/ai-conversation-summary-style.mdx b/web-shared/ai-conversation-summary-style.mdx index 357ce9404..bff7c1eed 100644 --- a/web-shared/ai-conversation-summary-style.mdx +++ b/web-shared/ai-conversation-summary-style.mdx @@ -1,5 +1,6 @@ --- title: "AIConversationSummaryStyle" +description: "AIConversationSummaryStyle — CometChat documentation." --- Styling properties of `AIConversationSummary` component. diff --git a/web-shared/ai-smart-replies-configuration.mdx b/web-shared/ai-smart-replies-configuration.mdx index 2387ab8d7..1c5abbd31 100644 --- a/web-shared/ai-smart-replies-configuration.mdx +++ b/web-shared/ai-smart-replies-configuration.mdx @@ -1,5 +1,6 @@ --- title: "AISmartRepliesConfiguration" +description: "AISmartRepliesConfiguration — CometChat documentation." --- This refers to the properties of the `AISmartReplies` component that are available for customisation. diff --git a/web-shared/ai-smart-replies-style.mdx b/web-shared/ai-smart-replies-style.mdx index a777efa43..c32e9edfe 100644 --- a/web-shared/ai-smart-replies-style.mdx +++ b/web-shared/ai-smart-replies-style.mdx @@ -1,5 +1,6 @@ --- title: "AISmartRepliesStyle" +description: "AISmartRepliesStyle — CometChat documentation." --- Styling properties of `AISmartReplies` component. diff --git a/web-shared/auxiliarybuttonalignment.mdx b/web-shared/auxiliarybuttonalignment.mdx index 998a6a256..086691e3e 100644 --- a/web-shared/auxiliarybuttonalignment.mdx +++ b/web-shared/auxiliarybuttonalignment.mdx @@ -1,5 +1,6 @@ --- title: "AuxiliaryButtonAlignment" +description: "AuxiliaryButtonAlignment — CometChat documentation." --- AuxiliaryButtonAlignment describes the positioning of auxiliary buttons in `CometChatMessageComposer` component. diff --git a/web-shared/banned-members-configuration.mdx b/web-shared/banned-members-configuration.mdx index e6301f915..6f377f930 100644 --- a/web-shared/banned-members-configuration.mdx +++ b/web-shared/banned-members-configuration.mdx @@ -1,5 +1,6 @@ --- title: "BannedMembersConfiguration" +description: "BannedMembersConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatBannedMembers` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/bannedmembersstyle.mdx b/web-shared/bannedmembersstyle.mdx index a44adb182..dbc7c9386 100644 --- a/web-shared/bannedmembersstyle.mdx +++ b/web-shared/bannedmembersstyle.mdx @@ -1,5 +1,6 @@ --- title: "BannedMembersStyle" +description: "BannedMembersStyle — CometChat documentation." --- Styling properties of the `CometChatBannedMembers` component. diff --git a/web-shared/button-element.mdx b/web-shared/button-element.mdx index 37244a349..d0783c8b5 100644 --- a/web-shared/button-element.mdx +++ b/web-shared/button-element.mdx @@ -1,5 +1,6 @@ --- title: "Button Element" +description: "Button Element — CometChat documentation." --- The `ButtonElement` class, inherited from the `BaseInteractiveElement` class, represents an interactive button element that can be added to a chat interface. It comprises of properties like button text and a flag indicating whether the button should be disabled after interaction. diff --git a/web-shared/call-log-details-configuration.mdx b/web-shared/call-log-details-configuration.mdx index e28074711..d80fe13a5 100644 --- a/web-shared/call-log-details-configuration.mdx +++ b/web-shared/call-log-details-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CallLogDetailsConfiguration" +description: "CallLogDetailsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatCallLogDetails` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/call-log-history-configuration.mdx b/web-shared/call-log-history-configuration.mdx index 182d98cc6..7539cde32 100644 --- a/web-shared/call-log-history-configuration.mdx +++ b/web-shared/call-log-history-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CallLogHistoryConfiguration" +description: "CallLogHistoryConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatCallLogHistory` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/call-log-participants-configuration.mdx b/web-shared/call-log-participants-configuration.mdx index 38b13e6d7..be6f2e9b8 100644 --- a/web-shared/call-log-participants-configuration.mdx +++ b/web-shared/call-log-participants-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CallLogParticipantsConfiguration" +description: "CallLogParticipantsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatCallLogParticipants` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/call-log-recordings-configuration.mdx b/web-shared/call-log-recordings-configuration.mdx index c4119da46..7a97a5ce6 100644 --- a/web-shared/call-log-recordings-configuration.mdx +++ b/web-shared/call-log-recordings-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CallLogRecordingsConfiguration" +description: "CallLogRecordingsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatCallLogRecordings` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/call-logs-configuration.mdx b/web-shared/call-logs-configuration.mdx index 35af40699..bdfe88142 100644 --- a/web-shared/call-logs-configuration.mdx +++ b/web-shared/call-logs-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CallLogsConfiguration" +description: "CallLogsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatCallLogs` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/callbuttonsstyle.mdx b/web-shared/callbuttonsstyle.mdx index 869861cbc..15c24318b 100644 --- a/web-shared/callbuttonsstyle.mdx +++ b/web-shared/callbuttonsstyle.mdx @@ -1,5 +1,6 @@ --- title: "CallButtonsStyle" +description: "CallButtonsStyle — CometChat documentation." --- Styling properties of the `CometChatCallButtons` component diff --git a/web-shared/calllogdetailsstyle.mdx b/web-shared/calllogdetailsstyle.mdx index 67b36becf..aa0edad60 100644 --- a/web-shared/calllogdetailsstyle.mdx +++ b/web-shared/calllogdetailsstyle.mdx @@ -1,5 +1,6 @@ --- title: "CallLogDetailsStyle" +description: "CallLogDetailsStyle — CometChat documentation." --- Styling properties of CometChatCallLogDetails component. diff --git a/web-shared/callloghistorystyle.mdx b/web-shared/callloghistorystyle.mdx index a4eddd51d..71c798a05 100644 --- a/web-shared/callloghistorystyle.mdx +++ b/web-shared/callloghistorystyle.mdx @@ -1,5 +1,6 @@ --- title: "CallLogHistoryStyle" +description: "CallLogHistoryStyle — CometChat documentation." --- Styling properties of `CometChatCallLogHistory` component. diff --git a/web-shared/calllogparticipantsstyle.mdx b/web-shared/calllogparticipantsstyle.mdx index c7e157004..e1e3ff6ae 100644 --- a/web-shared/calllogparticipantsstyle.mdx +++ b/web-shared/calllogparticipantsstyle.mdx @@ -1,5 +1,6 @@ --- title: "CallLogParticipantsStyle" +description: "CallLogParticipantsStyle — CometChat documentation." --- `CometChatCallLogParticipants` diff --git a/web-shared/calllogrecordingsstyle.mdx b/web-shared/calllogrecordingsstyle.mdx index 8d01684d2..c339402bb 100644 --- a/web-shared/calllogrecordingsstyle.mdx +++ b/web-shared/calllogrecordingsstyle.mdx @@ -1,5 +1,6 @@ --- title: "CallLogRecordingsStyle" +description: "CallLogRecordingsStyle — CometChat documentation." --- `CometChatCallRecording` diff --git a/web-shared/calllogsstyle.mdx b/web-shared/calllogsstyle.mdx index 7336936c2..0e53859e0 100644 --- a/web-shared/calllogsstyle.mdx +++ b/web-shared/calllogsstyle.mdx @@ -1,5 +1,6 @@ --- title: "CallLogsStyle" +description: "CallLogsStyle — CometChat documentation." --- Styling properties of `CometChatCallLogs` component. diff --git a/web-shared/calls-events.mdx b/web-shared/calls-events.mdx index 4d642323c..9a06b63f3 100644 --- a/web-shared/calls-events.mdx +++ b/web-shared/calls-events.mdx @@ -1,5 +1,6 @@ --- title: "Calls Events" +description: "Calls Events — CometChat documentation." --- `CometChatCallEvents` emits events when the logged-in user executes some action on a call object. diff --git a/web-shared/card-bubble.mdx b/web-shared/card-bubble.mdx index 246cf4cf8..d4fc89459 100644 --- a/web-shared/card-bubble.mdx +++ b/web-shared/card-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Card Bubble" +description: "Card Bubble — CometChat documentation." --- The `CometChatCardBubble` component is used to display a card within a chat bubble. The card includes an image, text, and action buttons. It helps to offer action-oriented chat experiences, like booking a flight, ordering food, scheduling a meeting, etc., directly in the chat. diff --git a/web-shared/card-message.mdx b/web-shared/card-message.mdx index bf4b0aa82..ce542b4a8 100644 --- a/web-shared/card-message.mdx +++ b/web-shared/card-message.mdx @@ -1,5 +1,6 @@ --- title: "Card Message" +description: "Card Message — CometChat documentation." --- The `CardMessage` class is used to create a card message for CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/web-shared/checkbox-element.mdx b/web-shared/checkbox-element.mdx index d6364e15f..8a2111ee8 100644 --- a/web-shared/checkbox-element.mdx +++ b/web-shared/checkbox-element.mdx @@ -1,5 +1,6 @@ --- title: "Checkbox Element" +description: "Checkbox Element — CometChat documentation." --- The `CheckboxElement` class aids in creating checkbox input elements in a user interface. diff --git a/web-shared/cometchatschedulerbubble.mdx b/web-shared/cometchatschedulerbubble.mdx index adc5624f3..1daaa9291 100644 --- a/web-shared/cometchatschedulerbubble.mdx +++ b/web-shared/cometchatschedulerbubble.mdx @@ -1,5 +1,6 @@ --- title: "SchedulerBubble" +description: "SchedulerBubble — CometChat documentation." --- SchedulerBubble is a versatile type of component designed to facilitate easy and efficient event scheduling. It offers the following key features: diff --git a/web-shared/contacts-configuration.mdx b/web-shared/contacts-configuration.mdx index dd2cd35a1..b9245ce4d 100644 --- a/web-shared/contacts-configuration.mdx +++ b/web-shared/contacts-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ContactsConfiguration" +description: "ContactsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatContacts` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/contactsstyle.mdx b/web-shared/contactsstyle.mdx index 64030edf9..c3283bfdf 100644 --- a/web-shared/contactsstyle.mdx +++ b/web-shared/contactsstyle.mdx @@ -1,5 +1,6 @@ --- title: "ContactsStyle" +description: "ContactsStyle — CometChat documentation." --- Styling properties of the `CometChatContacts` component diff --git a/web-shared/conversations-configuration.mdx b/web-shared/conversations-configuration.mdx index 97d22f7d9..c118932b3 100644 --- a/web-shared/conversations-configuration.mdx +++ b/web-shared/conversations-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ConversationsConfiguration" +description: "ConversationsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatConversations` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/conversations-events.mdx b/web-shared/conversations-events.mdx index 0399f7ad0..c93053d3c 100644 --- a/web-shared/conversations-events.mdx +++ b/web-shared/conversations-events.mdx @@ -1,5 +1,6 @@ --- title: "Conversations Events" +description: "Conversations Events — CometChat documentation." --- `CometChatConversationEvents` emits events when the logged-in user executes some action on a conversation object. diff --git a/web-shared/conversationsstyle.mdx b/web-shared/conversationsstyle.mdx index 3020c377c..8a6e8d52f 100644 --- a/web-shared/conversationsstyle.mdx +++ b/web-shared/conversationsstyle.mdx @@ -1,5 +1,6 @@ --- title: "ConversationsStyle" +description: "ConversationsStyle — CometChat documentation." --- Styling properties of `CometChatConversations` component diff --git a/web-shared/creategroup-configuration.mdx b/web-shared/creategroup-configuration.mdx index 385476e60..cabf8c79d 100644 --- a/web-shared/creategroup-configuration.mdx +++ b/web-shared/creategroup-configuration.mdx @@ -1,5 +1,6 @@ --- title: "CreateGroupConfiguration" +description: "CreateGroupConfiguration — CometChat documentation." --- Configurable properties of `CometChatCreateGroup` component diff --git a/web-shared/creategroupstyle.mdx b/web-shared/creategroupstyle.mdx index d6536f0a0..d7c59393d 100644 --- a/web-shared/creategroupstyle.mdx +++ b/web-shared/creategroupstyle.mdx @@ -1,5 +1,6 @@ --- title: "CreateGroupStyle" +description: "CreateGroupStyle — CometChat documentation." --- Styling properties of `CometChatCreateGroup` component diff --git a/web-shared/custom-interactive-message.mdx b/web-shared/custom-interactive-message.mdx index 5eb131318..691f1ac3b 100644 --- a/web-shared/custom-interactive-message.mdx +++ b/web-shared/custom-interactive-message.mdx @@ -1,5 +1,6 @@ --- title: "Custom Interactive Message" +description: "Custom Interactive Message — CometChat documentation." --- The `CustomInteractiveMessage` class extends CometChat's `InteractiveMessage` class and represents a custom interactive message that can be sent via CometChat. diff --git a/web-shared/date-time-picker-element.mdx b/web-shared/date-time-picker-element.mdx index 8012cfa13..8b568c1bc 100644 --- a/web-shared/date-time-picker-element.mdx +++ b/web-shared/date-time-picker-element.mdx @@ -1,5 +1,6 @@ --- title: "DateTimePickerElement" +description: "DateTimePickerElement — CometChat documentation." --- The DateTimePickerElement class is used to create a Date Picker element in a user interface. diff --git a/web-shared/datepatterns.mdx b/web-shared/datepatterns.mdx index 90f819319..0b3f6b5fd 100644 --- a/web-shared/datepatterns.mdx +++ b/web-shared/datepatterns.mdx @@ -1,5 +1,6 @@ --- title: "DatePatterns" +description: "DatePatterns — CometChat documentation." --- DatePatterns describes a specific format or arrangement used to represent dates in a human-readable form. diff --git a/web-shared/details-configuration.mdx b/web-shared/details-configuration.mdx index 30e67726c..3530cc54c 100644 --- a/web-shared/details-configuration.mdx +++ b/web-shared/details-configuration.mdx @@ -1,5 +1,6 @@ --- title: "DetailsConfiguration" +description: "DetailsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatDetails` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/detailsoption.mdx b/web-shared/detailsoption.mdx index bace7dc62..99f1faf19 100644 --- a/web-shared/detailsoption.mdx +++ b/web-shared/detailsoption.mdx @@ -1,5 +1,6 @@ --- title: "DetailsOption" +description: "DetailsOption — CometChat documentation." --- CometChatDetailsOption is a pre-defined structure for creating option within a [DetailsTemplate](/web-shared/detailstemplate) in the `CometChatDetails` component. diff --git a/web-shared/detailsstyle.mdx b/web-shared/detailsstyle.mdx index 9e3df6582..e533bba88 100644 --- a/web-shared/detailsstyle.mdx +++ b/web-shared/detailsstyle.mdx @@ -1,5 +1,6 @@ --- title: "DetailsStyle" +description: "DetailsStyle — CometChat documentation." --- Styling properties of the `CometChatDetails` component diff --git a/web-shared/detailstemplate.mdx b/web-shared/detailstemplate.mdx index 931d1ebfc..aef64dfd7 100644 --- a/web-shared/detailstemplate.mdx +++ b/web-shared/detailstemplate.mdx @@ -1,5 +1,6 @@ --- title: "DetailsTemplate" +description: "DetailsTemplate — CometChat documentation." --- `CometChatDetailsTemplate` is a pre-defined structure for creating a template data for the `CometChatDetails` component. diff --git a/web-shared/documenticonalignment.mdx b/web-shared/documenticonalignment.mdx index b02e69e85..6260656e0 100644 --- a/web-shared/documenticonalignment.mdx +++ b/web-shared/documenticonalignment.mdx @@ -1,5 +1,6 @@ --- title: "DocumentIconAlignment" +description: "DocumentIconAlignment — CometChat documentation." --- DocumentIconAlignment describes the positioning of icon within the [CometChatDocumentBubble](/web-elements/document-bubble) component. diff --git a/web-shared/dropdown-element.mdx b/web-shared/dropdown-element.mdx index c29e0f9cd..327590eca 100644 --- a/web-shared/dropdown-element.mdx +++ b/web-shared/dropdown-element.mdx @@ -1,5 +1,6 @@ --- title: "DropdownElement" +description: "DropdownElement — CometChat documentation." --- The `DropdownElement` class is used to create a dropdown selection element in a user interface. diff --git a/web-shared/element-type.mdx b/web-shared/element-type.mdx index fc5392ca7..cb6fa962f 100644 --- a/web-shared/element-type.mdx +++ b/web-shared/element-type.mdx @@ -1,5 +1,6 @@ --- title: "Element Type" +description: "Element Type — CometChat documentation." --- This is the base class for every element possible in the Interactive message component, defined by CometChat diff --git a/web-shared/form-bubble.mdx b/web-shared/form-bubble.mdx index 109dc550c..5f7eda9b7 100644 --- a/web-shared/form-bubble.mdx +++ b/web-shared/form-bubble.mdx @@ -1,5 +1,6 @@ --- title: "Form Bubble" +description: "Form Bubble — CometChat documentation." --- The `CometChatFormBubble` component is used to render a form within a chat bubble. The form fields are dynamically built based on the data passed in the `message` prop. The form fields can include text inputs, checkboxes, radio buttons, dropdown, labels, single selects, buttons. Once the form is filled out and submitted, the data will be sent to the provided URL or handled by a custom function. diff --git a/web-shared/form-message.mdx b/web-shared/form-message.mdx index 6b3ee6ef7..66f650681 100644 --- a/web-shared/form-message.mdx +++ b/web-shared/form-message.mdx @@ -1,5 +1,6 @@ --- title: "Form Message" +description: "Form Message — CometChat documentation." --- The `FormMessage` class is used to create an interactive form message that can be sent via CometChat. It extends the `InteractiveMessage` class from CometChat. diff --git a/web-shared/group-members-configuration.mdx b/web-shared/group-members-configuration.mdx index ac15aa617..7248432e7 100644 --- a/web-shared/group-members-configuration.mdx +++ b/web-shared/group-members-configuration.mdx @@ -1,5 +1,6 @@ --- title: "GroupMembersConfiguration" +description: "GroupMembersConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatGroupMembers` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/groupmembersstyle.mdx b/web-shared/groupmembersstyle.mdx index 936d9c522..5d377e702 100644 --- a/web-shared/groupmembersstyle.mdx +++ b/web-shared/groupmembersstyle.mdx @@ -1,5 +1,6 @@ --- title: "GroupMembersStyle" +description: "GroupMembersStyle — CometChat documentation." --- Styling properties of the `CometChatGroupMembers` component diff --git a/web-shared/groups-configurations.mdx b/web-shared/groups-configurations.mdx index df4cffc77..88ef89161 100644 --- a/web-shared/groups-configurations.mdx +++ b/web-shared/groups-configurations.mdx @@ -1,5 +1,6 @@ --- title: "GroupsConfiguration" +description: "GroupsConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatGroups` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/groups-events.mdx b/web-shared/groups-events.mdx index 4c1aa9125..eedd41b77 100644 --- a/web-shared/groups-events.mdx +++ b/web-shared/groups-events.mdx @@ -1,5 +1,6 @@ --- title: "Groups Events" +description: "Groups Events — CometChat documentation." --- `CometChatGroupEvents` emits events when the logged-in user executes some action on a group object. diff --git a/web-shared/groupsstyle.mdx b/web-shared/groupsstyle.mdx index 966b92e81..52794219c 100644 --- a/web-shared/groupsstyle.mdx +++ b/web-shared/groupsstyle.mdx @@ -1,5 +1,6 @@ --- title: "GroupsStyle" +description: "GroupsStyle — CometChat documentation." --- Styling properties of `CometChatGroups` component. diff --git a/web-shared/httpsrequestmethods.mdx b/web-shared/httpsrequestmethods.mdx index e502b4ddf..cbbe65d0b 100644 --- a/web-shared/httpsrequestmethods.mdx +++ b/web-shared/httpsrequestmethods.mdx @@ -1,5 +1,6 @@ --- title: "HTTPSRequestMethods" +description: "HTTPSRequestMethods — CometChat documentation." --- HTTPSRequestMethods lists the HTTP methods for API requests. diff --git a/web-shared/iconbuttonalignment.mdx b/web-shared/iconbuttonalignment.mdx index 700e60d02..53d4557a1 100644 --- a/web-shared/iconbuttonalignment.mdx +++ b/web-shared/iconbuttonalignment.mdx @@ -1,5 +1,6 @@ --- title: "IconButtonAlignment" +description: "IconButtonAlignment — CometChat documentation." --- IconButtonAlignment describes the positioning of icon within the [CometChatIconButton](/web-elements/icon-button) component. diff --git a/web-shared/incomingcallstyle.mdx b/web-shared/incomingcallstyle.mdx index d3d37524f..474b1fa92 100644 --- a/web-shared/incomingcallstyle.mdx +++ b/web-shared/incomingcallstyle.mdx @@ -1,5 +1,6 @@ --- title: "IncomingCallStyle" +description: "IncomingCallStyle — CometChat documentation." --- Styling properties of the `CometChatIncomingCall` component diff --git a/web-shared/joinggroupstyle.mdx b/web-shared/joinggroupstyle.mdx index 5271ddb8f..469146c9e 100644 --- a/web-shared/joinggroupstyle.mdx +++ b/web-shared/joinggroupstyle.mdx @@ -1,5 +1,6 @@ --- title: "JoinGroupStyle" +description: "JoinGroupStyle — CometChat documentation." --- Styling properties of `CometChatJoinGroup` component. diff --git a/web-shared/joingroup-configuration.mdx b/web-shared/joingroup-configuration.mdx index a198e0b05..0549d94db 100644 --- a/web-shared/joingroup-configuration.mdx +++ b/web-shared/joingroup-configuration.mdx @@ -1,5 +1,6 @@ --- title: "JoinGroupConfiguration" +description: "JoinGroupConfiguration — CometChat documentation." --- Configurable properties of `CometChatJoinGroup` component. diff --git a/web-shared/label-element.mdx b/web-shared/label-element.mdx index 5e5efd2e8..53784bfee 100644 --- a/web-shared/label-element.mdx +++ b/web-shared/label-element.mdx @@ -1,5 +1,6 @@ --- title: "Label Element" +description: "Label Element — CometChat documentation." --- The `LabelElement` class enables the creation of a label element in a user interface. diff --git a/web-shared/labelalignment.mdx b/web-shared/labelalignment.mdx index f556d5d1f..81d978ded 100644 --- a/web-shared/labelalignment.mdx +++ b/web-shared/labelalignment.mdx @@ -1,5 +1,6 @@ --- title: "LabelAlignment" +description: "LabelAlignment — CometChat documentation." --- LabelAlignment is used to align the label for web elements. diff --git a/web-shared/localize.mdx b/web-shared/localize.mdx index 5790c5c24..5dd185f54 100644 --- a/web-shared/localize.mdx +++ b/web-shared/localize.mdx @@ -1,5 +1,6 @@ --- title: "Localize" +description: "Localize — CometChat documentation." --- With language localization, CometChat UI Kit adapts to the language of a specific country or region. `CometChatLocalize` allows you to detect the language of your users based on their browser settings and set the language accordingly. diff --git a/web-shared/mentions-text-formatter.mdx b/web-shared/mentions-text-formatter.mdx index d3ffbf402..df95669a2 100644 --- a/web-shared/mentions-text-formatter.mdx +++ b/web-shared/mentions-text-formatter.mdx @@ -1,5 +1,6 @@ --- title: "CometChatMentionsTextFormatter" +description: "CometChatMentionsTextFormatter — CometChat documentation." --- ## Introduction diff --git a/web-shared/message-composer-configuration.mdx b/web-shared/message-composer-configuration.mdx index 004886da4..c1b548082 100644 --- a/web-shared/message-composer-configuration.mdx +++ b/web-shared/message-composer-configuration.mdx @@ -1,5 +1,6 @@ --- title: "MessageComposerConfiguration" +description: "MessageComposerConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatMessageComposer` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/message-header-configuration.mdx b/web-shared/message-header-configuration.mdx index b9133d7f0..2061cefbc 100644 --- a/web-shared/message-header-configuration.mdx +++ b/web-shared/message-header-configuration.mdx @@ -1,5 +1,6 @@ --- title: "MessageHeaderConfiguration" +description: "MessageHeaderConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatMessageHeader` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/message-information-configuration.mdx b/web-shared/message-information-configuration.mdx index 451d28084..fb755d7a3 100644 --- a/web-shared/message-information-configuration.mdx +++ b/web-shared/message-information-configuration.mdx @@ -1,5 +1,6 @@ --- title: "MessageInformationConfiguration" +description: "MessageInformationConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatMessageInformation` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/message-list-configuration.mdx b/web-shared/message-list-configuration.mdx index ef45a5a12..e66f21f35 100644 --- a/web-shared/message-list-configuration.mdx +++ b/web-shared/message-list-configuration.mdx @@ -1,5 +1,6 @@ --- title: "MessageListConfiguration" +description: "MessageListConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatMessageList` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/message-template.mdx b/web-shared/message-template.mdx index 3df583b3a..dfb52344c 100644 --- a/web-shared/message-template.mdx +++ b/web-shared/message-template.mdx @@ -1,5 +1,6 @@ --- title: "MessageTemplate" +description: "MessageTemplate — CometChat documentation." --- `CometChatMessageTemplate` is a pre-defined structure for creating message views that can be used as a starting point or blueprint for creating message views, often known as message bubbles. These views appear in the message list view and render the messages of that particular chat or conversation. It allows developers to define standard message viewing formats that can be reused or customised for different use cases, or even add new ones for their own purposes. diff --git a/web-shared/messagebubblealignment.mdx b/web-shared/messagebubblealignment.mdx index 992dc8f22..0adbbcae9 100644 --- a/web-shared/messagebubblealignment.mdx +++ b/web-shared/messagebubblealignment.mdx @@ -1,5 +1,6 @@ --- title: "MessageBubbleAlignment" +description: "MessageBubbleAlignment — CometChat documentation." --- MessageBubbleAlignment describes the positioning of the message bubble. diff --git a/web-shared/messagebubblestyle.mdx b/web-shared/messagebubblestyle.mdx index b3d9fe0fc..3e2fd3ed7 100644 --- a/web-shared/messagebubblestyle.mdx +++ b/web-shared/messagebubblestyle.mdx @@ -1,5 +1,6 @@ --- title: "MessageBubbleStyle" +description: "MessageBubbleStyle — CometChat documentation." --- Styling properties and values of the `CometChatMessageBubble` component diff --git a/web-shared/messagecomposeraction.mdx b/web-shared/messagecomposeraction.mdx index 7c37d8243..8ecb1ac8b 100644 --- a/web-shared/messagecomposeraction.mdx +++ b/web-shared/messagecomposeraction.mdx @@ -1,5 +1,6 @@ --- title: "MessageComposerAction" +description: "MessageComposerAction — CometChat documentation." --- `CometChatMessageComposerAction` is a pre-defined structure for creating an attachment option in the `CometChatMessageComposer` component that the user can perform in addition to composing a message. diff --git a/web-shared/messagecomposerstyle.mdx b/web-shared/messagecomposerstyle.mdx index a1d3de301..b18c675ee 100644 --- a/web-shared/messagecomposerstyle.mdx +++ b/web-shared/messagecomposerstyle.mdx @@ -1,5 +1,6 @@ --- title: "MessageComposerStyle" +description: "MessageComposerStyle — CometChat documentation." --- Styling properties of the `CometChatMessageComposer` component diff --git a/web-shared/messageheaderstyle.mdx b/web-shared/messageheaderstyle.mdx index c8692968d..d566e4cdc 100644 --- a/web-shared/messageheaderstyle.mdx +++ b/web-shared/messageheaderstyle.mdx @@ -1,5 +1,6 @@ --- title: "MessageHeaderStyle" +description: "MessageHeaderStyle — CometChat documentation." --- Styling properties of the `CometChatMessageHeader` component diff --git a/web-shared/messageinformationstyle.mdx b/web-shared/messageinformationstyle.mdx index bbd8dbeb5..401d3a3d1 100644 --- a/web-shared/messageinformationstyle.mdx +++ b/web-shared/messageinformationstyle.mdx @@ -1,5 +1,6 @@ --- title: "MessageInformationStyle" +description: "MessageInformationStyle — CometChat documentation." --- Styling properties of `CometChatMessageInformation` component. diff --git a/web-shared/messagelistalignment.mdx b/web-shared/messagelistalignment.mdx index 33e2c1925..79ad6677a 100644 --- a/web-shared/messagelistalignment.mdx +++ b/web-shared/messagelistalignment.mdx @@ -1,5 +1,6 @@ --- title: "MessageListAlignment" +description: "MessageListAlignment — CometChat documentation." --- `MessageListAlignment` describes the positioning or arrangement of message bubbles in the component diff --git a/web-shared/messageliststyle.mdx b/web-shared/messageliststyle.mdx index 56a733fe8..78c39d6ab 100644 --- a/web-shared/messageliststyle.mdx +++ b/web-shared/messageliststyle.mdx @@ -1,5 +1,6 @@ --- title: "MessageListStyle" +description: "MessageListStyle — CometChat documentation." --- Styling properties of the `CometChatMessageList` component diff --git a/web-shared/messages-configuration.mdx b/web-shared/messages-configuration.mdx index af82979b2..ad410392b 100644 --- a/web-shared/messages-configuration.mdx +++ b/web-shared/messages-configuration.mdx @@ -1,5 +1,6 @@ --- title: "MessagesConfiguration" +description: "MessagesConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatMessages` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/messages-events.mdx b/web-shared/messages-events.mdx index c4bcb1d97..ef8f59f07 100644 --- a/web-shared/messages-events.mdx +++ b/web-shared/messages-events.mdx @@ -1,5 +1,6 @@ --- title: "Messages Events" +description: "Messages Events — CometChat documentation." --- `CometChatMessageEvents` emits events when the logged-in user executes some action on a message object. diff --git a/web-shared/messagesstyle.mdx b/web-shared/messagesstyle.mdx index dbb218729..c4d3d00af 100644 --- a/web-shared/messagesstyle.mdx +++ b/web-shared/messagesstyle.mdx @@ -1,5 +1,6 @@ --- title: "MessagesStyle" +description: "MessagesStyle — CometChat documentation." --- Styling properties of `CometChatMessages` component. diff --git a/web-shared/ongoingcallstyle.mdx b/web-shared/ongoingcallstyle.mdx index 4ed195ab2..9a48ff66e 100644 --- a/web-shared/ongoingcallstyle.mdx +++ b/web-shared/ongoingcallstyle.mdx @@ -1,5 +1,6 @@ --- title: "OngoingCallStyle" +description: "OngoingCallStyle — CometChat documentation." --- Styling properties of the `CometChatOngoingCall` component. diff --git a/web-shared/option.mdx b/web-shared/option.mdx index 56a477382..c2749effb 100644 --- a/web-shared/option.mdx +++ b/web-shared/option.mdx @@ -1,5 +1,6 @@ --- title: "Option" +description: "Option — CometChat documentation." --- CometChatOption is a pre-defined structure for creating an option that can be used to perform an action message such as edit, delete etc. diff --git a/web-shared/outgoingcallstyle.mdx b/web-shared/outgoingcallstyle.mdx index 6eea06378..cb56a19e8 100644 --- a/web-shared/outgoingcallstyle.mdx +++ b/web-shared/outgoingcallstyle.mdx @@ -1,5 +1,6 @@ --- title: "OutgoingCallStyle" +description: "OutgoingCallStyle — CometChat documentation." --- Styling properties of the `CometChatOutgoingCall` component diff --git a/web-shared/overview.mdx b/web-shared/overview.mdx index 366a3d6dd..728a0bcea 100644 --- a/web-shared/overview.mdx +++ b/web-shared/overview.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Overview of Overview in CometChat." --- This is a collection of utility functions and constants for building chat UI components with CometChat's web UIKits. This is created and published as a dependency of all our web UIKits. diff --git a/web-shared/radio-button-element.mdx b/web-shared/radio-button-element.mdx index eb5f1d944..4be33d8c1 100644 --- a/web-shared/radio-button-element.mdx +++ b/web-shared/radio-button-element.mdx @@ -1,5 +1,6 @@ --- title: "Radio Button Element" +description: "Radio Button Element — CometChat documentation." --- The `RadioButtonElement` class is designed to create a radio button input element in a user interface. diff --git a/web-shared/reaction-info-configuration.mdx b/web-shared/reaction-info-configuration.mdx index 0dc20741b..44ef1f22a 100644 --- a/web-shared/reaction-info-configuration.mdx +++ b/web-shared/reaction-info-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ReactionInfoConfiguration" +description: "ReactionInfoConfiguration — CometChat documentation." --- You can modify the Reaction Info component's properties using the ReactionInfoConfiguration object. To use a configuration, you simply need to pass it to respective parameter. diff --git a/web-shared/reaction-info-style.mdx b/web-shared/reaction-info-style.mdx index 32c719328..afcd8b4ef 100644 --- a/web-shared/reaction-info-style.mdx +++ b/web-shared/reaction-info-style.mdx @@ -1,5 +1,6 @@ --- title: "ReactionInfoStyle" +description: "ReactionInfoStyle — CometChat documentation." --- Styling properties of `ReactionInfo` component. diff --git a/web-shared/reaction-info.mdx b/web-shared/reaction-info.mdx index 867b7ba11..56e38928d 100644 --- a/web-shared/reaction-info.mdx +++ b/web-shared/reaction-info.mdx @@ -1,5 +1,6 @@ --- title: "ReactionInfo" +description: "ReactionInfo — CometChat documentation." --- The `CometChatReactionInfo` component is used to display the count and users of a specific reaction to a message. diff --git a/web-shared/reaction-list-configuration.mdx b/web-shared/reaction-list-configuration.mdx index 9515a9d55..6eb53f838 100644 --- a/web-shared/reaction-list-configuration.mdx +++ b/web-shared/reaction-list-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ReactionListConfiguration" +description: "ReactionListConfiguration — CometChat documentation." --- You can modify the Reaction List component's properties using the ReactionListConfiguration object. To use a configuration, you simply need to pass it to respective parameter. diff --git a/web-shared/reaction-list-style.mdx b/web-shared/reaction-list-style.mdx index b8dcc82b5..85b7217c1 100644 --- a/web-shared/reaction-list-style.mdx +++ b/web-shared/reaction-list-style.mdx @@ -1,5 +1,6 @@ --- title: "ReactionListStyle" +description: "ReactionListStyle — CometChat documentation." --- Styling properties of `ReactionList` component. diff --git a/web-shared/reaction-list.mdx b/web-shared/reaction-list.mdx index 521cd97bc..c73b467b2 100644 --- a/web-shared/reaction-list.mdx +++ b/web-shared/reaction-list.mdx @@ -1,5 +1,6 @@ --- title: "ReactionList" +description: "ReactionList — CometChat documentation." --- The `CometChatReactionList` component is used to manage and display reactions in messages. It provides functionalities like fetching reactions when a message is updated, updating the reactions, and observing when the user has scrolled to the end of the reaction list. diff --git a/web-shared/reactions-configuration.mdx b/web-shared/reactions-configuration.mdx index b8532b1cc..4ab268095 100644 --- a/web-shared/reactions-configuration.mdx +++ b/web-shared/reactions-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ReactionsConfiguration" +description: "ReactionsConfiguration — CometChat documentation." --- You can modify the Reaction component's properties using the ReactionsConfiguration object. To use a configuration, you simply need to pass it to respective parameter. diff --git a/web-shared/reactions-style.mdx b/web-shared/reactions-style.mdx index 23edb844a..f7400c444 100644 --- a/web-shared/reactions-style.mdx +++ b/web-shared/reactions-style.mdx @@ -1,5 +1,6 @@ --- title: "ReactionsStyle" +description: "ReactionsStyle — CometChat documentation." --- Styling properties of `Reactions` component. diff --git a/web-shared/reactions.mdx b/web-shared/reactions.mdx index 0928d7448..0f723fa2c 100644 --- a/web-shared/reactions.mdx +++ b/web-shared/reactions.mdx @@ -1,5 +1,6 @@ --- title: "Reactions" +description: "Reactions — CometChat documentation." --- The `CometChatReactions` component is used to display a list of reactions to a specific message. Users can see who has reacted to the message and with what emoji. diff --git a/web-shared/receipts.mdx b/web-shared/receipts.mdx index 8f228a24c..e723d1ff7 100644 --- a/web-shared/receipts.mdx +++ b/web-shared/receipts.mdx @@ -1,5 +1,6 @@ --- title: "Receipts" +description: "Receipts — CometChat documentation." --- `Receipts` describes the different states of sent messages. diff --git a/web-shared/scheduler-message.mdx b/web-shared/scheduler-message.mdx index 2a41a4605..831b03b02 100644 --- a/web-shared/scheduler-message.mdx +++ b/web-shared/scheduler-message.mdx @@ -1,5 +1,6 @@ --- title: "Scheduler Message" +description: "Scheduler Message — CometChat documentation." --- The `SchedulerMessage` class is used to create an interactive scheduler message that can be sent via CometChat. It extends the [Interactive Messages](/sdk/javascript/interactive-messages) class from CometChat. diff --git a/web-shared/selectionmode.mdx b/web-shared/selectionmode.mdx index 7daf7adbb..dc8d2f4ce 100644 --- a/web-shared/selectionmode.mdx +++ b/web-shared/selectionmode.mdx @@ -1,5 +1,6 @@ --- title: "SelectionMode" +description: "SelectionMode — CometChat documentation." --- `MessageListAlignment` describes the positioning or arrangement of message bubbles in the component diff --git a/web-shared/single-select-element.mdx b/web-shared/single-select-element.mdx index f35b9e646..7a6ce9627 100644 --- a/web-shared/single-select-element.mdx +++ b/web-shared/single-select-element.mdx @@ -1,5 +1,6 @@ --- title: "Single Select Element" +description: "Single Select Element — CometChat documentation." --- The `SingleSelectElement` class is utilised to create a single selection input element in a user interface. diff --git a/web-shared/sound-manager.mdx b/web-shared/sound-manager.mdx index e08f762b0..c71504b89 100644 --- a/web-shared/sound-manager.mdx +++ b/web-shared/sound-manager.mdx @@ -1,5 +1,6 @@ --- title: "Sound Manager" +description: "Sound Manager — CometChat documentation." --- `CometChatSoundManager` provides functionalities for managing audio playback for incoming / outgoing messages in 1:1 or group chat. diff --git a/web-shared/tabalignment.mdx b/web-shared/tabalignment.mdx index 9420a07d6..e75e23f5f 100644 --- a/web-shared/tabalignment.mdx +++ b/web-shared/tabalignment.mdx @@ -1,5 +1,6 @@ --- title: "TabAlignment" +description: "TabAlignment — CometChat documentation." --- `TabAlignment` describes alignment or positioning of tabs in a tabbed interface diff --git a/web-shared/tabitem.mdx b/web-shared/tabitem.mdx index 6cbbe79ff..09e17f7f3 100644 --- a/web-shared/tabitem.mdx +++ b/web-shared/tabitem.mdx @@ -1,5 +1,6 @@ --- title: "TabItem" +description: "TabItem — CometChat documentation." --- `CometChatTabItem` is a pre-defined structure for creating a tab item that can be part of tabbed interface. diff --git a/web-shared/tabitemstyle.mdx b/web-shared/tabitemstyle.mdx index daa561a56..9630ba584 100644 --- a/web-shared/tabitemstyle.mdx +++ b/web-shared/tabitemstyle.mdx @@ -1,5 +1,6 @@ --- title: "TabItemStyle" +description: "TabItemStyle — CometChat documentation." --- Styling properties of `CometChatTabItem` component. diff --git a/web-shared/tabsstyle.mdx b/web-shared/tabsstyle.mdx index a05ded37f..226b12119 100644 --- a/web-shared/tabsstyle.mdx +++ b/web-shared/tabsstyle.mdx @@ -1,5 +1,6 @@ --- title: "TabsStyle" +description: "TabsStyle — CometChat documentation." --- Styling properties of `CometChatTabs` component. diff --git a/web-shared/tabsvisibility.mdx b/web-shared/tabsvisibility.mdx index babd7c854..c386b599d 100644 --- a/web-shared/tabsvisibility.mdx +++ b/web-shared/tabsvisibility.mdx @@ -1,5 +1,6 @@ --- title: "TabsVisibility" +description: "TabsVisibility — CometChat documentation." --- `TabsVisibility` describes distinct state of tabs in order to change their visibility diff --git a/web-shared/text-formatters.mdx b/web-shared/text-formatters.mdx index 21780871f..e3676b58e 100644 --- a/web-shared/text-formatters.mdx +++ b/web-shared/text-formatters.mdx @@ -1,5 +1,6 @@ --- title: "CometChatTextFormatter" +description: "CometChatTextFormatter — CometChat documentation." --- ## Introduction diff --git a/web-shared/text-input-element.mdx b/web-shared/text-input-element.mdx index 6dd900dc0..f7a9089f3 100644 --- a/web-shared/text-input-element.mdx +++ b/web-shared/text-input-element.mdx @@ -1,5 +1,6 @@ --- title: "Text Input Element" +description: "Text Input Element — CometChat documentation." --- The `TextInputElement` class is used to create a text input element in a user interface. diff --git a/web-shared/theme.mdx b/web-shared/theme.mdx index 661783e8e..814af849e 100644 --- a/web-shared/theme.mdx +++ b/web-shared/theme.mdx @@ -1,5 +1,6 @@ --- title: "Theme" +description: "Theme — CometChat documentation." --- `CometChatTheme` class is made up of two primary components such as: diff --git a/web-shared/threaded-messages-configuration.mdx b/web-shared/threaded-messages-configuration.mdx index 0f0aaca6d..4e97eb372 100644 --- a/web-shared/threaded-messages-configuration.mdx +++ b/web-shared/threaded-messages-configuration.mdx @@ -1,5 +1,6 @@ --- title: "ThreadedMessagesConfiguration" +description: "ThreadedMessagesConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatThreadedMessages` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/threadedmessagesstyle.mdx b/web-shared/threadedmessagesstyle.mdx index fcbdc75a1..39f9bb7a7 100644 --- a/web-shared/threadedmessagesstyle.mdx +++ b/web-shared/threadedmessagesstyle.mdx @@ -1,5 +1,6 @@ --- title: "ThreadedMessagesStyle" +description: "ThreadedMessagesStyle — CometChat documentation." --- Styling properties of the `CometChatThreadedMessages` component. diff --git a/web-shared/timestampalignment.mdx b/web-shared/timestampalignment.mdx index 40c17d646..b020372ca 100644 --- a/web-shared/timestampalignment.mdx +++ b/web-shared/timestampalignment.mdx @@ -1,5 +1,6 @@ --- title: "TimestampAlignment" +description: "TimestampAlignment — CometChat documentation." --- `TimestampAlignment` described the positioning or arrangement of timestamp for each message bubble in the component diff --git a/web-shared/transfer-ownership-configuration.mdx b/web-shared/transfer-ownership-configuration.mdx index c4ed5e65d..ea28e240f 100644 --- a/web-shared/transfer-ownership-configuration.mdx +++ b/web-shared/transfer-ownership-configuration.mdx @@ -1,5 +1,6 @@ --- title: "TransferOwnershipConfiguration" +description: "TransferOwnershipConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatTransferOwnership` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/transferownershipstyle.mdx b/web-shared/transferownershipstyle.mdx index 183f51e6a..8c8508fbb 100644 --- a/web-shared/transferownershipstyle.mdx +++ b/web-shared/transferownershipstyle.mdx @@ -1,5 +1,6 @@ --- title: "TransferOwnershipStyle" +description: "TransferOwnershipStyle — CometChat documentation." --- Styling properties of the `CometChatTransferOwnership` component. diff --git a/web-shared/ui-events.mdx b/web-shared/ui-events.mdx index 6d8ea0b2a..a8ecaf1c8 100644 --- a/web-shared/ui-events.mdx +++ b/web-shared/ui-events.mdx @@ -1,5 +1,6 @@ --- title: "UI Events" +description: "UI Events — CometChat documentation." --- UI events, refer to actions or interactions performed by a user within the CometChat's UI Kit. These events are triggered when a user interacts with various UI elements, such as buttons, menus, checkboxes, input fields, or any other interactive components. diff --git a/web-shared/uikitsettings.mdx b/web-shared/uikitsettings.mdx index 96bc860f7..664f783e2 100644 --- a/web-shared/uikitsettings.mdx +++ b/web-shared/uikitsettings.mdx @@ -1,5 +1,6 @@ --- title: "UIKitSettings" +description: "UIKitSettings — CometChat documentation." --- UIKitSettings is pre-defined structure containing credentials required to initialise [CometChat SDK](/sdk/javascript/overview). diff --git a/web-shared/url-text-formatter.mdx b/web-shared/url-text-formatter.mdx index e3c95b4ab..bf6baf337 100644 --- a/web-shared/url-text-formatter.mdx +++ b/web-shared/url-text-formatter.mdx @@ -1,5 +1,6 @@ --- title: "CometChatUrlTextFormatter" +description: "CometChatUrlTextFormatter — CometChat documentation." --- ## Introduction diff --git a/web-shared/usermember-wrapper-configuration.mdx b/web-shared/usermember-wrapper-configuration.mdx index 1422b5aa1..79d8810ca 100644 --- a/web-shared/usermember-wrapper-configuration.mdx +++ b/web-shared/usermember-wrapper-configuration.mdx @@ -1,5 +1,6 @@ --- title: "UserMemberWrapperConfiguration" +description: "UserMemberWrapperConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatUserMemberWrapper` component that are available for customization via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/users-configuration.mdx b/web-shared/users-configuration.mdx index e5a815f40..67e01a25e 100644 --- a/web-shared/users-configuration.mdx +++ b/web-shared/users-configuration.mdx @@ -1,5 +1,6 @@ --- title: "UsersConfiguration" +description: "UsersConfiguration — CometChat documentation." --- This refers to the properties of the `CometChatUsers` component that are available for customisation via the parent component when the component exists in a deep nested hierarchy. diff --git a/web-shared/users-events.mdx b/web-shared/users-events.mdx index 487ae4087..fc7622539 100644 --- a/web-shared/users-events.mdx +++ b/web-shared/users-events.mdx @@ -1,5 +1,6 @@ --- title: "Users Events" +description: "Users Events — CometChat documentation." --- `CometChatUserEvents` emits events when the logged-in user executes some action on an user object. diff --git a/web-shared/usersstyle.mdx b/web-shared/usersstyle.mdx index 30e1ae877..b315068f9 100644 --- a/web-shared/usersstyle.mdx +++ b/web-shared/usersstyle.mdx @@ -1,5 +1,6 @@ --- title: "UsersStyle" +description: "UsersStyle — CometChat documentation." --- Styling properties of `CometChatUsers` component. diff --git a/web-shared/withdetailsstyle.mdx b/web-shared/withdetailsstyle.mdx index 39e2645f5..a0ea9b92a 100644 --- a/web-shared/withdetailsstyle.mdx +++ b/web-shared/withdetailsstyle.mdx @@ -1,5 +1,6 @@ --- title: "WithDetailsStyle" +description: "WithDetailsStyle — CometChat documentation." --- Styling properties of `CometChatCallLogsWithDetails` component. diff --git a/web-shared/withmessagesstyle.mdx b/web-shared/withmessagesstyle.mdx index 3ca5af395..3a2666e2c 100644 --- a/web-shared/withmessagesstyle.mdx +++ b/web-shared/withmessagesstyle.mdx @@ -1,5 +1,6 @@ --- title: "WithMessagesStyle" +description: "WithMessagesStyle — CometChat documentation." --- Styling properties of all the `CometChatConversationsWithMessages`, `CometChatUsersWithMessages`, `CometChatGroupsWithMessages` component. diff --git a/widget/html/legacy.mdx b/widget/html/legacy.mdx index 9d4763bf9..b8350e995 100644 --- a/widget/html/legacy.mdx +++ b/widget/html/legacy.mdx @@ -1,6 +1,7 @@ --- title: "HTML Widget (Legacy)" sidebarTitle: "HTML Widget (Legacy)" +description: "HTML Widget (Legacy) — CometChat documentation." --- import ChatWidgetLegacyOverview from '/snippets/widget/legacy/overview.mdx'; diff --git a/widget/wordpress/legacy.mdx b/widget/wordpress/legacy.mdx index a3667efcd..3e2883b4d 100644 --- a/widget/wordpress/legacy.mdx +++ b/widget/wordpress/legacy.mdx @@ -1,6 +1,7 @@ --- title: "WordPress Widget (Legacy)" sidebarTitle: "WordPress Widget (Legacy)" +description: "WordPress Widget (Legacy) — CometChat documentation." --- import ChatWidgetLegacyOverview from '/snippets/widget/legacy/overview.mdx'; @@ -78,7 +79,7 @@ Replace `WIDGET_ID` with your Widget ID. -``` +```json [cometchat-pro widget-id='WIDGET_ID' widget-height='600px' widget-width='600px' widget-version='v3'] ``` @@ -120,7 +121,7 @@ Replace `WIDGET_ID` with your Widget ID. -``` +```json [cometchat-pro widget-id='WIDGET_ID' widget-height='600px' widget-width='600px' widget-version='v3' widget-docked='true' widget-docked-position='right' rounded-corners='true'] ``` From 78fd34e7f295969d4687d047e4fcc64e36641c75 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Wed, 1 Apr 2026 12:05:16 +0530 Subject: [PATCH 55/56] Fixed link hygiene to 10/10 --- ai-chatbots/ai-bots/bots.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ai-chatbots/ai-bots/bots.mdx b/ai-chatbots/ai-bots/bots.mdx index c2adf8b17..a85f389c2 100644 --- a/ai-chatbots/ai-bots/bots.mdx +++ b/ai-chatbots/ai-bots/bots.mdx @@ -3,7 +3,7 @@ title: "AI Bots" description: "AI Bots — CometChat documentation." --- -AI Bots in CometChat are designed to facilitate conversations with users. Each AI Bot is associated with a specific [AI Instruction](/ai/instructions). +AI Bots in CometChat are designed to facilitate conversations with users. Each AI Bot is associated with a specific [AI Instruction](/ai-chatbots/ai-bots/instructions). ## Before you begin From d3702cb0580ceea2d6438ed76172c3147337e8d8 Mon Sep 17 00:00:00 2001 From: "Ketan (CometChat)" Date: Wed, 1 Apr 2026 16:21:09 +0530 Subject: [PATCH 56/56] updated code blocks for AEO --- rest-api/calls-apis/overview.mdx | 2 +- rest-api/data-import.mdx | 2 +- rest-api/rate-limits.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rest-api/calls-apis/overview.mdx b/rest-api/calls-apis/overview.mdx index 78421e751..0062f4495 100644 --- a/rest-api/calls-apis/overview.mdx +++ b/rest-api/calls-apis/overview.mdx @@ -10,7 +10,7 @@ The Calls API provides programmatic access to call logs and analytics. Use these The Calls API uses a different base URL than the Chat APIs: -``` +```text https://{appId}.call-{region}.cometchat.io/v3 ``` diff --git a/rest-api/data-import.mdx b/rest-api/data-import.mdx index 59539e8e1..113a4f783 100644 --- a/rest-api/data-import.mdx +++ b/rest-api/data-import.mdx @@ -27,7 +27,7 @@ All Data Import API requests require your `appId`, `apiKey`, and `region`, avail Base URL: -``` +```text https://.api-.cometchat.io/v3.0/data_import ``` diff --git a/rest-api/rate-limits.mdx b/rest-api/rate-limits.mdx index 6fa60447e..b35695022 100644 --- a/rest-api/rate-limits.mdx +++ b/rest-api/rate-limits.mdx @@ -53,7 +53,7 @@ When rate limited, the API returns HTTP 429 with these headers: ## Retry Strategy -``` +```text if response.status == 429: wait = response.headers['Retry-After'] or 60 sleep(wait)