> For the complete documentation index, see [llms.txt](https://docs.360dialog.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.360dialog.com/docs/inbox/inbox-api/api-ref/models.md).

# Models

## The ActionEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ActionEnum":{"enum":["added","removed"],"type":"string","description":"* `added` - Added\n* `removed` - Removed"}}}}
```

## The AuthToken object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"AuthToken":{"type":"object","properties":{"username":{"type":"string","writeOnly":true},"password":{"type":"string","writeOnly":true},"token":{"type":"string","readOnly":true}},"required":["password","token","username"]}}}}
```

## The Availability object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Availability":{"type":"object","properties":{"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}}}}}
```

## The BusinessProfileSettings object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"BusinessProfileSettings":{"type":"object","properties":{"address":{"type":"string"},"description":{"type":"string"},"email":{"type":"string","format":"email"},"messaging_product":{"allOf":[{"$ref":"#/components/schemas/MessagingProductEnum"}],"default":"whatsapp"},"vertical":{"$ref":"#/components/schemas/VerticalEnum"},"websites":{"type":"array","items":{}}},"required":["address","description","email","vertical"]},"MessagingProductEnum":{"enum":["whatsapp"],"type":"string","description":"* `whatsapp` - whatsapp"},"VerticalEnum":{"enum":["Automotive","Beauty, Spa and Salon","Clothing and Apparel","Education","Entertainment","Event Planning and Service","Finance and Banking","Food and Grocery","Public Service","Hotel and Lodging","Medical and Health","Non-profit","Professional Services","Shopping and Retail","Travel and Transportation","Restaurant","Other"],"type":"string","description":"* `Automotive` - Automotive\n* `Beauty, Spa and Salon` - Beauty, Spa and Salon\n* `Clothing and Apparel` - Clothing and Apparel\n* `Education` - Education\n* `Entertainment` - Entertainment\n* `Event Planning and Service` - Event Planning and Service\n* `Finance and Banking` - Finance and Banking\n* `Food and Grocery` - Food and Grocery\n* `Public Service` - Public Service\n* `Hotel and Lodging` - Hotel and Lodging\n* `Medical and Health` - Medical and Health\n* `Non-profit` - Non-profit\n* `Professional Services` - Professional Services\n* `Shopping and Retail` - Shopping and Retail\n* `Travel and Transportation` - Travel and Transportation\n* `Restaurant` - Restaurant\n* `Other` - Other"}}}}
```

## The CanReadChatsEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The CanWriteToChatsEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The CaptionedMedia object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CaptionedMedia":{"type":"object","description":"A media object that has `caption` field\n\nUsed in `document`, `image` and `video` media. Do **not** use with `audio` or `sticker` media.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."},"caption":{"type":"string","description":"Caption of the media file"}},"required":["link"]}}}}
```

## The Chat object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Chat":{"type":"object","properties":{"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"new_messages":{"type":"integer","description":"The number of messages not received by currently authenticated user"},"wa_id":{"type":"string","description":"**Deprecated**"},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"last_message":{"$ref":"#/components/schemas/RetrieveMessage"},"assigned_to_user":{"$ref":"#/components/schemas/User"},"assigned_group":{"$ref":"#/components/schemas/Group"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"}},"thread_controller":{"readOnly":true,"nullable":true,"description":"Who currently responds in this conversation: `mba` while Meta Business Agent holds control, `inbox` after an agent took over. `null` means Meta Business Agent was never involved in this chat.\n\n* `mba` - Meta Business Agent\n* `inbox` - Inbox","oneOf":[{"$ref":"#/components/schemas/ThreadControllerEnum"},{"$ref":"#/components/schemas/NullEnum"}]}},"required":["assigned_group","assigned_to_user","bsuid","contact","last_message","new_messages","phone_number","tags","thread_controller","wa_id"]},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"RetrieveMessage":{"type":"object","properties":{"id":{"type":"string","description":"Internal Inbox Message ID"},"waba_payload":{"description":"See [Inbound Notifications from WhatsApp Business API](https://developers.facebook.com/docs/whatsapp/api/webhooks/inbound)"},"waba_statuses":{"allOf":[{"$ref":"#/components/schemas/WabaMessageStatuses"}],"description":"Timestamps of all statuses of the message"},"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"from_us":{"type":"boolean","readOnly":true,"title":"From us?","description":"Allows to easily implement different display for messages sent by us or by customer."},"received":{"type":"boolean","default":false,"description":"Tells if this message was marked as received by you (currently logged in user)"},"sender":{"allOf":[{"$ref":"#/components/schemas/User"}],"description":"Who is talking on our behalf\n\n`null` if this is an incoming message."},"before_time":{"type":"integer"},"since_time":{"type":"integer"},"customer_wa_id":{"type":"string","readOnly":true,"title":"Customer WhatsApp id","description":"**Deprecated**"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to this Message"},"chat_tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to the Chat this Message belongs to"},"sent_by_mba":{"type":"boolean","readOnly":true,"title":"Sent by Meta Business Agent","description":"This message was sent on the business's behalf by Meta Business Agent (the copy arrived on the `standby` webhook field). Only set when `from_us` is `true`; distinguishes AI messages from ones sent by inbox users or automation."}},"required":["contact","customer_wa_id","from_us","id","sent_by_mba","waba_payload","waba_statuses"]},"WabaMessageStatuses":{"type":"object","properties":{"sent":{"type":"number","format":"double","nullable":true},"delivered":{"type":"number","format":"double","nullable":true},"read":{"type":"number","format":"double","nullable":true}}},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Tagging":{"type":"object","properties":{"name":{"type":"string","description":"Tag object name"},"web_inbox_color":{"type":"string","description":"A Web App related setting - which color to show on the Web App frontend"},"tagging_id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a Tagging for example."},"id":{"type":"integer","description":"Tag object unique ID"},"extra":{"description":"Tagging extra payload"}},"required":["id","name","tagging_id","web_inbox_color"]},"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]},"ThreadControllerEnum":{"enum":["mba","inbox"],"type":"string","description":"* `mba` - Meta Business Agent\n* `inbox` - Inbox"},"NullEnum":{"enum":[null]}}}}
```

## The ChatAssignment object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatAssignment":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"assigned_to_user":{"type":"integer","nullable":true},"assigned_group":{"type":"integer","nullable":true}},"required":["bsuid","phone_number","wa_id"]}}}}
```

## The ChatAssignmentEvent object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatAssignmentEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID of the Chat for which the assignment was changed","maxLength":1000},"assigned_to_user_set":{"$ref":"#/components/schemas/User"},"assigned_to_user_was_cleared":{"type":"boolean"},"assigned_group_set":{"$ref":"#/components/schemas/Group"},"assigned_group_was_cleared":{"type":"boolean","title":"Assigned to group was cleared"},"done_by":{"$ref":"#/components/schemas/User"}},"required":["assigned_group_set","assigned_to_user_set","done_by","timestamp"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]}}}}
```

## The ChatAutoAssignment object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatAutoAssignment":{"type":"object","properties":{"wa_id":{"type":"string","readOnly":true,"title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number."},"assigned_to_user":{"type":"integer","readOnly":true,"nullable":true,"description":"ID of the User this Chat is assigned to"}},"required":["assigned_to_user","wa_id"]}}}}
```

## The ChatImportContact object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatImportContact":{"type":"object","properties":{"handle":{"type":"string","description":"Name of message sender as seen in device's contacts and the WhatsApp chat export (text part)"},"phone_number":{"type":"string","description":"Phone number of contact"}},"required":["handle","phone_number"]}}}}
```

## The ChatImportMediaFile object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatImportMediaFile":{"type":"object","properties":{"b64_content":{"type":"string","description":"Content of media file, encoded with base64"},"mime_type":{"type":"string","description":"MIME type of media file"},"file_name":{"type":"string","description":"File name of media file as given to you by WhatsApp"}},"required":["b64_content","file_name","mime_type"]}}}}
```

## The ChatImportRequest object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatImportRequest":{"type":"object","properties":{"chat_text":{"type":"string","description":"The text chat log as given to you by WhatsApp"},"chat_participants":{"type":"array","items":{"$ref":"#/components/schemas/ChatImportContact"},"description":"Required if chat partner is in the device's contacts, supply chat partner's phone number with this. If you cannot tell which contact is incoming and which is outgoing, supply both. Do not supply more than two contacts."},"utc_offset_minutes":{"type":"integer","description":"The device may have had a non-UTC time zone; supply the number of minutes that time zone is ahead of UTC. Supply a negative number if you are in the Americas"},"device_language_code":{"type":"string","description":"Locale code of device's system language, and optionally, country"},"media_files":{"type":"array","items":{"$ref":"#/components/schemas/ChatImportMediaFile"}}},"required":["chat_text","device_language_code","media_files","utc_offset_minutes"]},"ChatImportContact":{"type":"object","properties":{"handle":{"type":"string","description":"Name of message sender as seen in device's contacts and the WhatsApp chat export (text part)"},"phone_number":{"type":"string","description":"Phone number of contact"}},"required":["handle","phone_number"]},"ChatImportMediaFile":{"type":"object","properties":{"b64_content":{"type":"string","description":"Content of media file, encoded with base64"},"mime_type":{"type":"string","description":"MIME type of media file"},"file_name":{"type":"string","description":"File name of media file as given to you by WhatsApp"}},"required":["b64_content","file_name","mime_type"]}}}}
```

## The ChatTagging object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatTagging":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"tag":{"type":"integer","description":"ID of related Tag"},"chat":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number."},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Chat is tagged."}},"required":["chat","id","tag"]}}}}
```

## The ChatTaggingEvent object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ChatTaggingEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"action":{"$ref":"#/components/schemas/ActionEnum"},"tag":{"$ref":"#/components/schemas/Tag"},"chat":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","readOnly":true},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Chat is tagged."},"done_by":{"$ref":"#/components/schemas/User"}},"required":["action","chat","done_by","tag","timestamp"]},"ActionEnum":{"enum":["added","removed"],"type":"string","description":"* `added` - Added\n* `removed` - Removed"},"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The Contact object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Contact":{"type":"object","properties":{"person":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Person related to this contact. Can be `null` if this person wasn't yet contacted via your inbox or related Person data was removed from your inbox."},"contact_provider_results":{"type":"array","items":{"$ref":"#/components/schemas/ContactProviderResult"},"description":"Deprecated, always empty"}},"required":["contact_provider_results"]},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"ContactProviderResult":{"type":"object","properties":{"name":{"type":"string","description":"Name of the person as returned by related Contact Provider"},"initials":{"type":"string","description":"Contact name initials used for display when avatar image is missing"},"avatar":{"type":"string","format":"uri","description":"URL leading to contact miniature avatar or miniature photo, if available"},"large_avatar":{"type":"string","format":"uri","description":"URL leading to contact large avatar or large photo, if available"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/ContactProviderPhoneNumber"},"description":"At least one phone number (that should be equal to `wa_id`). "},"email_addresses":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"},"description":"E-mail addresses of this Person, if provided."},"urls":{"type":"array","items":{"$ref":"#/components/schemas/Url"},"description":"URLs of this Person, if provided."},"contact_provider":{"allOf":[{"$ref":"#/components/schemas/ContactProvider"}],"description":"Contact Provider that provided this object"}},"required":["contact_provider","email_addresses","initials","name","phone_numbers","urls"]},"ContactProviderPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."},"description":{"type":"string","description":"Phone number description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["phone_number"]},"EmailAddress":{"type":"object","properties":{"email_address":{"type":"string","format":"email"},"description":{"type":"string","description":"E-mail address description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["email_address"]},"Url":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"description":{"type":"string","description":"URL description, like \"Homepage\", \"Social\" or \"Shop\", if provided. (Can be any string value)"}},"required":["url"]},"ContactProvider":{"type":"object","properties":{"type":{"allOf":[{"$ref":"#/components/schemas/ContactProviderTypeEnum"}],"description":"Contact Provider type, if known.\n\nAllows you to identify contact provider type programmatically, so that you are able to display it accordingly or provide a valid linking to external app or system.\n\nIf data was returned by a Contact Provider type known to us (for example a Inbox-supported plugin), then this field will allow you to identify the exact source of contact data. In other case (for example external plugin), `\"other\"` is returned.\n\n* `google` - google\n* `hubspot` - hubspot\n* `other` - other"},"name":{"type":"string","description":"Contact Provider human-readable name, if known.\n\nAllows you to identify contact source visually. Should be displayed on the frontend."},"id":{"type":"string","format":"uuid","description":"Unique identifier of this Contact Provider.\n\nAllows you to distinguish different integrations of the same Contact Provider type."}},"required":["id","type"]},"ContactProviderTypeEnum":{"enum":["google","hubspot","other"],"type":"string","description":"* `google` - google\n* `hubspot` - hubspot\n* `other` - other"}}}}
```

## The ContactBlock object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactBlock":{"type":"object","properties":{"reason":{"type":"string","default":"","description":"Optional string with max length 60. Free form block reason. Will be used when another business account is being blocked. ","maxLength":60}}}}}}
```

## The ContactModel object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactModel":{"type":"object","description":"Serializes the Contact model similar to how Contact Providers serialized contacts in the past.","properties":{"name":{"type":"string","readOnly":true,"description":"Name of the person"},"initials":{"type":"string","description":"Contact name initials used for display when avatar image is missing"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/ContactModelPhoneNumber"},"description":"At least one phone number (that should be equal to `wa_id`). "},"email_addresses":{"type":"array","items":{},"description":"Deprecated, always empty"},"urls":{"type":"array","items":{},"description":"Deprecated, always empty"},"contact_provider":{"description":"Deprecated, always a dummy value"}},"required":["contact_provider","email_addresses","initials","name","phone_numbers","urls"]},"ContactModelPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."}},"required":["phone_number"]}}}}
```

## The ContactModelPhoneNumber object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactModelPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."}},"required":["phone_number"]}}}}
```

## The ContactProvider object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactProvider":{"type":"object","properties":{"type":{"allOf":[{"$ref":"#/components/schemas/ContactProviderTypeEnum"}],"description":"Contact Provider type, if known.\n\nAllows you to identify contact provider type programmatically, so that you are able to display it accordingly or provide a valid linking to external app or system.\n\nIf data was returned by a Contact Provider type known to us (for example a Inbox-supported plugin), then this field will allow you to identify the exact source of contact data. In other case (for example external plugin), `\"other\"` is returned.\n\n* `google` - google\n* `hubspot` - hubspot\n* `other` - other"},"name":{"type":"string","description":"Contact Provider human-readable name, if known.\n\nAllows you to identify contact source visually. Should be displayed on the frontend."},"id":{"type":"string","format":"uuid","description":"Unique identifier of this Contact Provider.\n\nAllows you to distinguish different integrations of the same Contact Provider type."}},"required":["id","type"]},"ContactProviderTypeEnum":{"enum":["google","hubspot","other"],"type":"string","description":"* `google` - google\n* `hubspot` - hubspot\n* `other` - other"}}}}
```

## The ContactProviderPhoneNumber object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactProviderPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."},"description":{"type":"string","description":"Phone number description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["phone_number"]}}}}
```

## The ContactProviderResult object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactProviderResult":{"type":"object","properties":{"name":{"type":"string","description":"Name of the person as returned by related Contact Provider"},"initials":{"type":"string","description":"Contact name initials used for display when avatar image is missing"},"avatar":{"type":"string","format":"uri","description":"URL leading to contact miniature avatar or miniature photo, if available"},"large_avatar":{"type":"string","format":"uri","description":"URL leading to contact large avatar or large photo, if available"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/ContactProviderPhoneNumber"},"description":"At least one phone number (that should be equal to `wa_id`). "},"email_addresses":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"},"description":"E-mail addresses of this Person, if provided."},"urls":{"type":"array","items":{"$ref":"#/components/schemas/Url"},"description":"URLs of this Person, if provided."},"contact_provider":{"allOf":[{"$ref":"#/components/schemas/ContactProvider"}],"description":"Contact Provider that provided this object"}},"required":["contact_provider","email_addresses","initials","name","phone_numbers","urls"]},"ContactProviderPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."},"description":{"type":"string","description":"Phone number description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["phone_number"]},"EmailAddress":{"type":"object","properties":{"email_address":{"type":"string","format":"email"},"description":{"type":"string","description":"E-mail address description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["email_address"]},"Url":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"description":{"type":"string","description":"URL description, like \"Homepage\", \"Social\" or \"Shop\", if provided. (Can be any string value)"}},"required":["url"]},"ContactProvider":{"type":"object","properties":{"type":{"allOf":[{"$ref":"#/components/schemas/ContactProviderTypeEnum"}],"description":"Contact Provider type, if known.\n\nAllows you to identify contact provider type programmatically, so that you are able to display it accordingly or provide a valid linking to external app or system.\n\nIf data was returned by a Contact Provider type known to us (for example a Inbox-supported plugin), then this field will allow you to identify the exact source of contact data. In other case (for example external plugin), `\"other\"` is returned.\n\n* `google` - google\n* `hubspot` - hubspot\n* `other` - other"},"name":{"type":"string","description":"Contact Provider human-readable name, if known.\n\nAllows you to identify contact source visually. Should be displayed on the frontend."},"id":{"type":"string","format":"uuid","description":"Unique identifier of this Contact Provider.\n\nAllows you to distinguish different integrations of the same Contact Provider type."}},"required":["id","type"]},"ContactProviderTypeEnum":{"enum":["google","hubspot","other"],"type":"string","description":"* `google` - google\n* `hubspot` - hubspot\n* `other` - other"}}}}
```

## The ContactProviderTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactProviderTypeEnum":{"enum":["google","hubspot","other"],"type":"string","description":"* `google` - google\n* `hubspot` - hubspot\n* `other` - other"}}}}
```

## The ContactReport object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactReport":{"type":"object","properties":{"reason":{"type":"string","default":"","description":"Optional string with max length 60. Free form block reason. Will be used when another business account is being blocked. ","maxLength":60},"block":{"type":"boolean","default":false,"description":"True or false optional boolean with default of false"},"message_id":{"type":"string","description":"Optional reported message id"}}}}}}
```

## The ContactsBlockListResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactsBlockListResponse":{"type":"object","properties":{"contacts":{"type":"array","items":{"$ref":"#/components/schemas/ContactsBlockListWabaContactsResponse"}},"pagination":{"$ref":"#/components/schemas/ContactsBlockListWabaPaginationResponse"}},"required":["contacts","pagination"]},"ContactsBlockListWabaContactsResponse":{"type":"object","properties":{"wa_id":{"type":"string"}},"required":["wa_id"]},"ContactsBlockListWabaPaginationResponse":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"required":["limit","offset","total"]}}}}
```

## The ContactsBlockListWabaContactsResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactsBlockListWabaContactsResponse":{"type":"object","properties":{"wa_id":{"type":"string"}},"required":["wa_id"]}}}}
```

## The ContactsBlockListWabaPaginationResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactsBlockListWabaPaginationResponse":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"required":["limit","offset","total"]}}}}
```

## The ContactsBlockOrReport400ErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactsBlockOrReport400ErrorResponse":{"type":"object","properties":{"code":{"type":"integer"},"title":{"type":"string"},"details":{"type":"string"}},"required":["code","details","title"]}}}}
```

## The ContactsBlockOrReport400Response object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ContactsBlockOrReport400Response":{"type":"object","properties":{"meta":{},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ContactsBlockOrReport400ErrorResponse"}}},"required":["errors","meta"]},"ContactsBlockOrReport400ErrorResponse":{"type":"object","properties":{"code":{"type":"integer"},"title":{"type":"string"},"details":{"type":"string"}},"required":["code","details","title"]}}}}
```

## The CreateMedia object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CreateMedia":{"type":"object","properties":{"file_encoded":{"type":"string","format":"uri","writeOnly":true},"file":{"type":"string","format":"uri","readOnly":true,"description":"An authorization-free link to your media file. This link will contain query params: `mime_type_type` and `mime_type_subtype` that, when combined together, determine for you a content type of retrieved media file: `{mime_type_type}/{mime_type_subtype}`. For example: `mime_type_type=image&mime_type_subtype=jpeg` means Content-Type: image/jpeg. This information is not needed for HTTP client that will ignore file type (for example most of web browsers during file download), but it will be crucial for others (for example web browsers during file display or WhatsApp displaying outgoing message media to end users)"},"id":{"type":"string","format":"uuid","readOnly":true}},"required":["file","file_encoded","id"]}}}}
```

## The CreateMessage object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CreateMessage":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CreateMessageTypeEnum"},"verify_contact":{"type":"boolean","nullable":true,"default":false,"description":"\n**Deprecated parameter**: Will be treated as false regardless of value, as contact verification has been removed from\nWhatsApp side.\n\nSee endpoint description. It has been updated to reflect the new workflow.\n"},"text":{"$ref":"#/components/schemas/MessageText"},"image":{"$ref":"#/components/schemas/CaptionedMedia"},"contacts":{"description":"See [Contact Messages WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/api/messages/others#contacts-messages)"},"document":{"$ref":"#/components/schemas/MessageDocument"},"hsm":{"description":"**Deprecated:** The `hsm` object has been deprecated with v2.39 of the WhatsApp Business API.See [2.39.1 changelog](https://developers.facebook.com/docs/whatsapp/on-premises/changelog#wa239) and [WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/on-premises/reference/messages#hsm-object)."},"location":{"description":"See [Location Messages WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/api/messages/others#locations)"},"sticker":{"$ref":"#/components/schemas/MessageSticker"},"template":{"description":"See [Template Messages WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/message-templates/creation)"},"audio":{"$ref":"#/components/schemas/MessageMedia"},"video":{"$ref":"#/components/schemas/CaptionedMedia"},"interactive":{"description":"See [`interactive` object in WhatsApp Business API Documentation](https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages)"},"reaction":{"$ref":"#/components/schemas/MessageReaction"},"wa_id":{"type":"string","description":"WhatsApp ID of the message recipient — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918).","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$"}},"required":["type","wa_id"]},"CreateMessageTypeEnum":{"enum":["text","image","contacts","document","hsm","location","sticker","template","audio","video","interactive","reaction"],"type":"string","description":"* `text` - text\n* `image` - image\n* `contacts` - contacts\n* `document` - document\n* `hsm` - hsm\n* `location` - location\n* `sticker` - sticker\n* `template` - template\n* `audio` - audio\n* `video` - video\n* `interactive` - interactive\n* `reaction` - reaction"},"MessageText":{"type":"object","properties":{"body":{"type":"string"},"preview_url":{"type":"boolean","description":"Set to true to have the WhatsApp client attempt to render a link preview for the first URL in the body text. URLs must begin with http:// or https://. See: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/text-messages"}},"required":["body"]},"CaptionedMedia":{"type":"object","description":"A media object that has `caption` field\n\nUsed in `document`, `image` and `video` media. Do **not** use with `audio` or `sticker` media.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."},"caption":{"type":"string","description":"Caption of the media file"}},"required":["link"]},"MessageDocument":{"type":"object","description":"A media object that has `caption` field\n\nUsed in `document`, `image` and `video` media. Do **not** use with `audio` or `sticker` media.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."},"caption":{"type":"string","description":"Caption of the media file. WhatsApp does not display caption to end users when sending a document type of message, but WhatsApp uses the caption field as a fallback when filename field is missing."},"filename":{"type":"string","description":"Describes the filename for the specific document. If not provided, caption field will be used as a fallback."}},"required":["link"]},"MessageSticker":{"type":"object","properties":{"link":{"type":"string","description":"HTTPS link to a sticker file"}},"required":["link"]},"MessageMedia":{"type":"object","description":"Media file common fields\n\n`link` is used in `audio`, `document`, `image`, `sticker` and `video` type of messages.\n\nWe're not using Business API's `id` field, so this makes `link` field always required.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages\n\nOptionally we take `mime_type` in addition to what's on Business API side, because incoming messages provide\n`mime_type` in `waba_payload`. This gives consistent payload for applications like inbox frontend, where\nmedia file type can be determined before it is actually downloaded.","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."}},"required":["link"]},"MessageReaction":{"type":"object","properties":{"message_id":{"type":"string","description":"\nWhatsApp message ID of message you want to apply the emoji to.\n\nIf the message you are reacting to is more than 30 days old, doesn't correspond to any message in the conversation, has been deleted, or is itself a reaction message, the reaction message will not be delivered and you will receive a messages webhook with error code 131009.\n","maxLength":300},"emoji":{"type":"string","description":"\nUnicode escape sequence of the emoji, or the emoji itself, to apply to the user message.\nFor example: `\"\\uD83D\\uDE00\"` or `\"😀\"`\n","maxLength":100}},"required":["emoji","message_id"]}}}}
```

## The CreateMessageTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"CreateMessageTypeEnum":{"enum":["text","image","contacts","document","hsm","location","sticker","template","audio","video","interactive","reaction"],"type":"string","description":"* `text` - text\n* `image` - image\n* `contacts` - contacts\n* `document` - document\n* `hsm` - hsm\n* `location` - location\n* `sticker` - sticker\n* `template` - template\n* `audio` - audio\n* `video` - video\n* `interactive` - interactive\n* `reaction` - reaction"}}}}
```

## The EmailAddress object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"EmailAddress":{"type":"object","properties":{"email_address":{"type":"string","format":"email"},"description":{"type":"string","description":"E-mail address description, like \"Work\", \"Home\" or \"Office\", if provided. (Can be any string value)"}},"required":["email_address"]}}}}
```

## The Group object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]}}}}
```

## The GroupMember object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]}}}}
```

## The HealthStatus object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"HealthStatus":{"type":"object","properties":{"check_name":{"type":"string","readOnly":true},"is_ok":{"type":"boolean"},"message":{"type":"string"}},"required":["check_name","is_ok","message"]}}}}
```

## The InstanceStatus object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"InstanceStatus":{"type":"object","properties":{"waba_stack_configured":{"type":"boolean"},"waba_stack_connection_stable":{"type":"boolean"},"last_interaction":{"type":"number","format":"double","nullable":true}},"required":["last_interaction","waba_stack_configured","waba_stack_connection_stable"]}}}}
```

## The MarkAsReceivedMessage452Response object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MarkAsReceivedMessage452Response":{"type":"object","properties":{"reason":{"type":"string"},"timestamp":{"type":"number","format":"double"},"server_timestamp":{"type":"number","format":"double"}},"required":["reason","server_timestamp","timestamp"]}}}}
```

## The MarkAsReceivedMessage453Response object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MarkAsReceivedMessage453Response":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}}}}
```

## The MediaCreateRequest object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MediaCreateRequest":{"type":"object","properties":{"file_encoded":{"type":"string","description":"Encoded in [Base64](https://en.wikipedia.org/wiki/Base64)."}},"required":["file_encoded"]}}}}
```

## The MessageDocument object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageDocument":{"type":"object","description":"A media object that has `caption` field\n\nUsed in `document`, `image` and `video` media. Do **not** use with `audio` or `sticker` media.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."},"caption":{"type":"string","description":"Caption of the media file. WhatsApp does not display caption to end users when sending a document type of message, but WhatsApp uses the caption field as a fallback when filename field is missing."},"filename":{"type":"string","description":"Describes the filename for the specific document. If not provided, caption field will be used as a fallback."}},"required":["link"]}}}}
```

## The MessageMedia object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageMedia":{"type":"object","description":"Media file common fields\n\n`link` is used in `audio`, `document`, `image`, `sticker` and `video` type of messages.\n\nWe're not using Business API's `id` field, so this makes `link` field always required.\n\nSee: https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api#post-version-phone-number-id-messages\n\nOptionally we take `mime_type` in addition to what's on Business API side, because incoming messages provide\n`mime_type` in `waba_payload`. This gives consistent payload for applications like inbox frontend, where\nmedia file type can be determined before it is actually downloaded.","properties":{"link":{"type":"string","description":"This needs to be HTTPS URL to one of media uploaded to our API. See creating a new media file"},"mime_type":{"type":"string","description":"Mimetype of the media file. This parameter is optional, but providing it is recommended. It will be required for applications like inbox frontend, to be able to determine file type before it is actually downloaded from the `link`."}},"required":["link"]}}}}
```

## The MessageReaction object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageReaction":{"type":"object","properties":{"message_id":{"type":"string","description":"\nWhatsApp message ID of message you want to apply the emoji to.\n\nIf the message you are reacting to is more than 30 days old, doesn't correspond to any message in the conversation, has been deleted, or is itself a reaction message, the reaction message will not be delivered and you will receive a messages webhook with error code 131009.\n","maxLength":300},"emoji":{"type":"string","description":"\nUnicode escape sequence of the emoji, or the emoji itself, to apply to the user message.\nFor example: `\"\\uD83D\\uDE00\"` or `\"😀\"`\n","maxLength":100}},"required":["emoji","message_id"]}}}}
```

## The MessageSendSuccessfulResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageSendSuccessfulResponse":{"type":"object","properties":{"reason":{"type":"string"},"id":{"type":"string","description":"Internal Inbox message ID that was generated when adding Message to queue.\n    You will receive this value as `\"getchat_id\"` in `\"statuses\"` events sent to your webhook(s)."}},"required":["id"]}}}}
```

## The MessageSticker object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageSticker":{"type":"object","properties":{"link":{"type":"string","description":"HTTPS link to a sticker file"}},"required":["link"]}}}}
```

## The MessageTagging object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageTagging":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a tagging for example."},"tag":{"type":"integer","description":"ID of related Tag"},"message":{"type":"string","description":"Message ID string known from WABA payload"},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Message is tagged."}},"required":["id","message","tag"]}}}}
```

## The MessageTaggingEvent object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageTaggingEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"action":{"$ref":"#/components/schemas/ActionEnum"},"tag":{"$ref":"#/components/schemas/Tag"},"message":{"type":"string","description":"Message ID string known from WABA payload"},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Message is tagged."},"done_by":{"$ref":"#/components/schemas/User"}},"required":["action","done_by","message","tag","timestamp"]},"ActionEnum":{"enum":["added","removed"],"type":"string","description":"* `added` - Added\n* `removed` - Removed"},"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The MessageText object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageText":{"type":"object","properties":{"body":{"type":"string"},"preview_url":{"type":"boolean","description":"Set to true to have the WhatsApp client attempt to render a link preview for the first URL in the body text. URLs must begin with http:// or https://. See: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/text-messages"}},"required":["body"]}}}}
```

## The MessageWabaErrorInvalidWaIdResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageWabaErrorInvalidWaIdResponse":{"type":"object","properties":{"reason":{"type":"string"},"waba_response":{}},"required":["reason","waba_response"]}}}}
```

## The MessageWabaErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessageWabaErrorResponse":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}}}}
```

## The MessagingProductEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MessagingProductEnum":{"enum":["whatsapp"],"type":"string","description":"* `whatsapp` - whatsapp"}}}}
```

## The MyPassword object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"MyPassword":{"type":"object","properties":{"current_password":{"type":"string","writeOnly":true,"description":"Provide current password for security"},"new_password":{"type":"string","writeOnly":true,"description":"Provide a new password that will be set to your account now"}},"required":["current_password","new_password"]}}}}
```

## The NewUser object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"NewUser":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"activation_url":{"type":"string","format":"uri","readOnly":true,"description":"Success! Your account is now created! Use this link to activate your account and set your password. You can open this link in any way while using this API. See this endpoint description to learn more on how activation URL works."},"activation_email_sent":{"type":"boolean","readOnly":true,"description":"Whether an invitation carrying the `activation_url` was e-mailed to the address in the `email` field.\n\nIt is `false` when no address was given, when the User has the \"app\" role (their activation link answers with an API token, which is not sent by e-mail), when activation e-mails are switched off for this inbox, or when the delivery failed. The account is created either way, so hand the `activation_url` over yourself when this is `false`."},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"}},"required":["activation_email_sent","activation_url","id","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"}}}}
```

## The NullEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"NullEnum":{"enum":[null]}}}}
```

## The PaginatedChatAssignmentEventList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedChatAssignmentEventList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ChatAssignmentEvent"}}}},"ChatAssignmentEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID of the Chat for which the assignment was changed","maxLength":1000},"assigned_to_user_set":{"$ref":"#/components/schemas/User"},"assigned_to_user_was_cleared":{"type":"boolean"},"assigned_group_set":{"$ref":"#/components/schemas/Group"},"assigned_group_was_cleared":{"type":"boolean","title":"Assigned to group was cleared"},"done_by":{"$ref":"#/components/schemas/User"}},"required":["assigned_group_set","assigned_to_user_set","done_by","timestamp"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]}}}}
```

## The PaginatedChatList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedChatList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Chat"}}}},"Chat":{"type":"object","properties":{"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"new_messages":{"type":"integer","description":"The number of messages not received by currently authenticated user"},"wa_id":{"type":"string","description":"**Deprecated**"},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"last_message":{"$ref":"#/components/schemas/RetrieveMessage"},"assigned_to_user":{"$ref":"#/components/schemas/User"},"assigned_group":{"$ref":"#/components/schemas/Group"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"}},"thread_controller":{"readOnly":true,"nullable":true,"description":"Who currently responds in this conversation: `mba` while Meta Business Agent holds control, `inbox` after an agent took over. `null` means Meta Business Agent was never involved in this chat.\n\n* `mba` - Meta Business Agent\n* `inbox` - Inbox","oneOf":[{"$ref":"#/components/schemas/ThreadControllerEnum"},{"$ref":"#/components/schemas/NullEnum"}]}},"required":["assigned_group","assigned_to_user","bsuid","contact","last_message","new_messages","phone_number","tags","thread_controller","wa_id"]},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"RetrieveMessage":{"type":"object","properties":{"id":{"type":"string","description":"Internal Inbox Message ID"},"waba_payload":{"description":"See [Inbound Notifications from WhatsApp Business API](https://developers.facebook.com/docs/whatsapp/api/webhooks/inbound)"},"waba_statuses":{"allOf":[{"$ref":"#/components/schemas/WabaMessageStatuses"}],"description":"Timestamps of all statuses of the message"},"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"from_us":{"type":"boolean","readOnly":true,"title":"From us?","description":"Allows to easily implement different display for messages sent by us or by customer."},"received":{"type":"boolean","default":false,"description":"Tells if this message was marked as received by you (currently logged in user)"},"sender":{"allOf":[{"$ref":"#/components/schemas/User"}],"description":"Who is talking on our behalf\n\n`null` if this is an incoming message."},"before_time":{"type":"integer"},"since_time":{"type":"integer"},"customer_wa_id":{"type":"string","readOnly":true,"title":"Customer WhatsApp id","description":"**Deprecated**"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to this Message"},"chat_tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to the Chat this Message belongs to"},"sent_by_mba":{"type":"boolean","readOnly":true,"title":"Sent by Meta Business Agent","description":"This message was sent on the business's behalf by Meta Business Agent (the copy arrived on the `standby` webhook field). Only set when `from_us` is `true`; distinguishes AI messages from ones sent by inbox users or automation."}},"required":["contact","customer_wa_id","from_us","id","sent_by_mba","waba_payload","waba_statuses"]},"WabaMessageStatuses":{"type":"object","properties":{"sent":{"type":"number","format":"double","nullable":true},"delivered":{"type":"number","format":"double","nullable":true},"read":{"type":"number","format":"double","nullable":true}}},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Tagging":{"type":"object","properties":{"name":{"type":"string","description":"Tag object name"},"web_inbox_color":{"type":"string","description":"A Web App related setting - which color to show on the Web App frontend"},"tagging_id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a Tagging for example."},"id":{"type":"integer","description":"Tag object unique ID"},"extra":{"description":"Tagging extra payload"}},"required":["id","name","tagging_id","web_inbox_color"]},"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]},"ThreadControllerEnum":{"enum":["mba","inbox"],"type":"string","description":"* `mba` - Meta Business Agent\n* `inbox` - Inbox"},"NullEnum":{"enum":[null]}}}}
```

## The PaginatedChatTaggingEventList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedChatTaggingEventList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ChatTaggingEvent"}}}},"ChatTaggingEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"action":{"$ref":"#/components/schemas/ActionEnum"},"tag":{"$ref":"#/components/schemas/Tag"},"chat":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","readOnly":true},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Chat is tagged."},"done_by":{"$ref":"#/components/schemas/User"}},"required":["action","chat","done_by","tag","timestamp"]},"ActionEnum":{"enum":["added","removed"],"type":"string","description":"* `added` - Added\n* `removed` - Removed"},"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The PaginatedContactModelList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedContactModelList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ContactModel"}}}},"ContactModel":{"type":"object","description":"Serializes the Contact model similar to how Contact Providers serialized contacts in the past.","properties":{"name":{"type":"string","readOnly":true,"description":"Name of the person"},"initials":{"type":"string","description":"Contact name initials used for display when avatar image is missing"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/ContactModelPhoneNumber"},"description":"At least one phone number (that should be equal to `wa_id`). "},"email_addresses":{"type":"array","items":{},"description":"Deprecated, always empty"},"urls":{"type":"array","items":{},"description":"Deprecated, always empty"},"contact_provider":{"description":"Deprecated, always a dummy value"}},"required":["contact_provider","email_addresses","initials","name","phone_numbers","urls"]},"ContactModelPhoneNumber":{"type":"object","properties":{"phone_number":{"type":"string","description":"Person's phone number. Should be equal to `wa_id`."}},"required":["phone_number"]}}}}
```

## The PaginatedGroupList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedGroupList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}}},"Group":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000}},"required":["id","name"]}}}}
```

## The PaginatedMessageTaggingEventList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedMessageTaggingEventList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/MessageTaggingEvent"}}}},"MessageTaggingEvent":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"action":{"$ref":"#/components/schemas/ActionEnum"},"tag":{"$ref":"#/components/schemas/Tag"},"message":{"type":"string","description":"Message ID string known from WABA payload"},"extra":{"nullable":true,"description":"Optional additional data. Should not be used on front-end apps. Use only to pass extra data between systems / apps / bots, when Message is tagged."},"done_by":{"$ref":"#/components/schemas/User"}},"required":["action","done_by","message","tag","timestamp"]},"ActionEnum":{"enum":["added","removed"],"type":"string","description":"* `added` - Added\n* `removed` - Removed"},"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The PaginatedPersonList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedPersonList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Person"}}}},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}}
```

## The PaginatedRetrieveMessageList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedRetrieveMessageList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/RetrieveMessage"}}}},"RetrieveMessage":{"type":"object","properties":{"id":{"type":"string","description":"Internal Inbox Message ID"},"waba_payload":{"description":"See [Inbound Notifications from WhatsApp Business API](https://developers.facebook.com/docs/whatsapp/api/webhooks/inbound)"},"waba_statuses":{"allOf":[{"$ref":"#/components/schemas/WabaMessageStatuses"}],"description":"Timestamps of all statuses of the message"},"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"from_us":{"type":"boolean","readOnly":true,"title":"From us?","description":"Allows to easily implement different display for messages sent by us or by customer."},"received":{"type":"boolean","default":false,"description":"Tells if this message was marked as received by you (currently logged in user)"},"sender":{"allOf":[{"$ref":"#/components/schemas/User"}],"description":"Who is talking on our behalf\n\n`null` if this is an incoming message."},"before_time":{"type":"integer"},"since_time":{"type":"integer"},"customer_wa_id":{"type":"string","readOnly":true,"title":"Customer WhatsApp id","description":"**Deprecated**"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to this Message"},"chat_tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to the Chat this Message belongs to"},"sent_by_mba":{"type":"boolean","readOnly":true,"title":"Sent by Meta Business Agent","description":"This message was sent on the business's behalf by Meta Business Agent (the copy arrived on the `standby` webhook field). Only set when `from_us` is `true`; distinguishes AI messages from ones sent by inbox users or automation."}},"required":["contact","customer_wa_id","from_us","id","sent_by_mba","waba_payload","waba_statuses"]},"WabaMessageStatuses":{"type":"object","properties":{"sent":{"type":"number","format":"double","nullable":true},"delivered":{"type":"number","format":"double","nullable":true},"read":{"type":"number","format":"double","nullable":true}}},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Tagging":{"type":"object","properties":{"name":{"type":"string","description":"Tag object name"},"web_inbox_color":{"type":"string","description":"A Web App related setting - which color to show on the Web App frontend"},"tagging_id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a Tagging for example."},"id":{"type":"integer","description":"Tag object unique ID"},"extra":{"description":"Tagging extra payload"}},"required":["id","name","tagging_id","web_inbox_color"]}}}}
```

## The PaginatedSavedResponseList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedSavedResponseList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/SavedResponse"}}}},"SavedResponse":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Primary ID."},"text":{"type":"string"},"created_by":{"type":"integer","readOnly":true,"nullable":true},"timestamp":{"type":"number","format":"double","readOnly":true}},"required":["created_by","id","text","timestamp"]}}}}
```

## The PaginatedTagList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedTagList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}},"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]}}}}
```

## The PaginatedTemplateList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedTemplateList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Template"}}}},"Template":{"type":"object","properties":{"name":{"type":"string","description":"The name of the message template."},"category":{"type":"string","description":"The type of message template.\n    Values: ACCOUNT_UPDATE, PAYMENT_UPDATE, PERSONAL_FINANCE_UPDATE, SHIPPING_UPDATE, RESERVATION_UPDATE,\n    ISSUE_RESOLUTION, APPOINTMENT_UPDATE, TRANSPORTATION_UPDATE, TICKET_UPDATE, ALERT_UPDATE, AUTO_REPLY\n    "},"language":{"type":"string","description":"The language of message template, e.g. `en_US`"},"components":{"type":"array","items":{},"description":"The list of definitions of parts of\n        message template. See\n        [WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates).\n        "},"id":{"type":"string","readOnly":true},"rejected_reason":{"type":"string","readOnly":true},"status":{"type":"string","readOnly":true}},"required":["category","components","id","language","name","rejected_reason","status"]}}}}
```

## The PaginatedUserList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedUserList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The PaginatedWabaErrorList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedWabaErrorList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/WabaError"}}}},"WabaError":{"type":"object","properties":{"waba_payload":{},"timestamp":{"type":"number","format":"double"},"waba_id":{"type":"string","nullable":true,"title":"WhatsApp Message ID","description":"WhatsApp Business API ID of the Message related to this error,if this error comes from an existing WhatsApp Message. Remember that if you're creating a Message and WhatsApp will return an user error (for example invalid template ID), then you will never see `waba_id` here, because Message was not created in WhatsApp. However, in that case you will still receive `getchat_id` for your reference.","maxLength":100},"getchat_id":{"type":"string","nullable":true,"title":"Get.chat Message ID","description":"Inbox internal ID of the Message that is related to this error. This field will be `null` in rare cases, so you should implement that. Examples are: 1. Fresh installation of a new inbox that is receiving error statuses from WhatsApp, but messages related to those errors are not present in the inbox - those messages were sent before user started using the inbox. 2. The inbox reached the quota limit and WhatsApp has sent an error status that is related to a message that was already removed from the inbox.","maxLength":100}},"required":["timestamp","waba_payload"]}}}}
```

## The PaginatedWabaWebhookList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedWabaWebhookList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/WabaWebhook"}}}},"WabaWebhook":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user":{"allOf":[{"$ref":"#/components/schemas/ShortUser"}],"readOnly":true},"url":{"type":"string","format":"uri","description":"Remember to use `https://` URLs for your webhooks!\n\n**Note**: You can validate Webhook events by specifying a shared secret as a query parameter when you set the Webhook URL. Example: https://url?auth={shared_secret}."},"on_incoming_message":{"type":"boolean","description":"Call this Webhook on every new Message coming from WhatsApp to Inbox.<br/>This is how WhatsApp webhooks are called."},"on_outgoing_message":{"type":"boolean","description":"Call this Webhook on every new Message sent from Inbox to WhatsApp.<br/>You should use this setting when integrating a system in which you want to have complete copies of all your conversations."},"on_assigned":{"type":"boolean","description":"Call this Webhook when existing Chat is assigned to this User or a new Message is posted to the Chat already assigned to this User.<br/></br>You should set this when integrating a bot with this Webhook.<br/>This is similar to how human Users are notified by desktop notifications. "},"on_message_echo":{"type":"boolean","description":"Call this Webhook when a message is sent from your WhatsApp Business number via the 360dialog messaging API, outside the Inbox.<br/>The webhook receives the original Cloud API \"message_echoes\" payload, so your integration can keep a complete copy of the conversation. Messages sent through the Inbox API are not echoed here - use \"on outgoing message\" for those."},"headers":{"description":"Additional headers needed when calling a Webhook. Each header needs to be provided as a key-value pair in JSON format.<br/>Useful for things like API keys with Authorization or other headers.<br/><br/>Example: <code>{\"Authorization\": \"Token 1234567890qwertyuiop\"}</code>"}},"required":["id","url","user"]},"ShortUser":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.","pattern":"^[\\w.@+-]+$","maxLength":150},"url":{"type":"string","format":"uri","readOnly":true}},"required":["id","url","username"]}}}}
```

## The PaginatedWhatsAppAccountList object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PaginatedWhatsAppAccountList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":"string","nullable":true,"format":"uri"},"previous":{"type":"string","nullable":true,"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/WhatsAppAccount"}}}},"WhatsAppAccount":{"type":"object","properties":{"phone_number":{"type":"string","maxLength":1000},"this_instance":{"type":"boolean","description":"One customer can have multiple instances. This field denotes that this WA account is connected to this instance. DEPRECATED since MT 1.4: superseded by Tenant.whatsapp_account; kept (and still written by configure.py) for older-image compatibility and the read-only API field until a later cleanup release."}},"required":["phone_number"]}}}}
```

## The Password object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Password":{"type":"object","properties":{"password":{"type":"string","writeOnly":true}},"required":["password"]}}}}
```

## The PatchedAvailability object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedAvailability":{"type":"object","properties":{"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}}}}}
```

## The PatchedBusinessProfileSettings object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedBusinessProfileSettings":{"type":"object","properties":{"address":{"type":"string"},"description":{"type":"string"},"email":{"type":"string","format":"email"},"messaging_product":{"allOf":[{"$ref":"#/components/schemas/MessagingProductEnum"}],"default":"whatsapp"},"vertical":{"$ref":"#/components/schemas/VerticalEnum"},"websites":{"type":"array","items":{}}}},"MessagingProductEnum":{"enum":["whatsapp"],"type":"string","description":"* `whatsapp` - whatsapp"},"VerticalEnum":{"enum":["Automotive","Beauty, Spa and Salon","Clothing and Apparel","Education","Entertainment","Event Planning and Service","Finance and Banking","Food and Grocery","Public Service","Hotel and Lodging","Medical and Health","Non-profit","Professional Services","Shopping and Retail","Travel and Transportation","Restaurant","Other"],"type":"string","description":"* `Automotive` - Automotive\n* `Beauty, Spa and Salon` - Beauty, Spa and Salon\n* `Clothing and Apparel` - Clothing and Apparel\n* `Education` - Education\n* `Entertainment` - Entertainment\n* `Event Planning and Service` - Event Planning and Service\n* `Finance and Banking` - Finance and Banking\n* `Food and Grocery` - Food and Grocery\n* `Public Service` - Public Service\n* `Hotel and Lodging` - Hotel and Lodging\n* `Medical and Health` - Medical and Health\n* `Non-profit` - Non-profit\n* `Professional Services` - Professional Services\n* `Shopping and Retail` - Shopping and Retail\n* `Travel and Transportation` - Travel and Transportation\n* `Restaurant` - Restaurant\n* `Other` - Other"}}}}
```

## The PatchedChatAssignment object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedChatAssignment":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"assigned_to_user":{"type":"integer","nullable":true},"assigned_group":{"type":"integer","nullable":true}}}}}}
```

## The PatchedResolvedChat object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedResolvedChat":{"type":"object","properties":{"wa_id":{"type":"string","readOnly":true,"title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number."},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}}}}}}
```

## The PatchedUser object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedUser":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}}},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The PatchedUserAvailabilitySettings object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"PatchedUserAvailabilitySettings":{"type":"object","properties":{"feature_set_enabled":{"type":"boolean","description":"Only if checked, any settings in this feature set take effect. If not checked, auto-assignment will not happen, and user availability has no effect (and cannot be toggled by users)"}}}}}}
```

## The Permissions object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The Person object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}}
```

## The ProfilePhoto object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ProfilePhoto":{"type":"object","properties":{"file_encoded":{"type":"string","format":"uri","writeOnly":true,"description":"Binary file"}},"required":["file_encoded"]}}}}
```

## The ReceivedMessageMark object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ReceivedMessageMark":{"type":"object","properties":{"timestamp":{"type":"integer","description":"A timestamp of the latest message that was received by the User calling this API.\n\nThis API cannot mark messages as received for timestamps that are in the future. The message must be first stored in the Inbox in order to mark it as received in the Inbox and then mark as read in WhatsApp. Make sure to not use current timestamp from your local clock as it might be off with the Inbox server clock. The best idea is to use only timestamps from incoming message payload. Only then you can avoid race conditions of marking messages as received while not (yet) receiving them."},"customer_wa_id":{"type":"string","description":"WhatsApp ID of the message sender"}},"required":["customer_wa_id","timestamp"]}}}}
```

## The RefreshStatus object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"RefreshStatus":{"type":"object","properties":{"currently_refreshing":{"type":"boolean","default":false}}}}}}
```

## The ResolvedChat object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ResolvedChat":{"type":"object","properties":{"wa_id":{"type":"string","readOnly":true,"title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number."},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","phone_number","wa_id"]}}}}
```

## The RetrieveMessage object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"RetrieveMessage":{"type":"object","properties":{"id":{"type":"string","description":"Internal Inbox Message ID"},"waba_payload":{"description":"See [Inbound Notifications from WhatsApp Business API](https://developers.facebook.com/docs/whatsapp/api/webhooks/inbound)"},"waba_statuses":{"allOf":[{"$ref":"#/components/schemas/WabaMessageStatuses"}],"description":"Timestamps of all statuses of the message"},"contact":{"allOf":[{"$ref":"#/components/schemas/Person"}],"description":"Who are we talking to"},"from_us":{"type":"boolean","readOnly":true,"title":"From us?","description":"Allows to easily implement different display for messages sent by us or by customer."},"received":{"type":"boolean","default":false,"description":"Tells if this message was marked as received by you (currently logged in user)"},"sender":{"allOf":[{"$ref":"#/components/schemas/User"}],"description":"Who is talking on our behalf\n\n`null` if this is an incoming message."},"before_time":{"type":"integer"},"since_time":{"type":"integer"},"customer_wa_id":{"type":"string","readOnly":true,"title":"Customer WhatsApp id","description":"**Deprecated**"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to this Message"},"chat_tags":{"type":"array","items":{"$ref":"#/components/schemas/Tagging"},"default":[],"description":"Tags assigned to the Chat this Message belongs to"},"sent_by_mba":{"type":"boolean","readOnly":true,"title":"Sent by Meta Business Agent","description":"This message was sent on the business's behalf by Meta Business Agent (the copy arrived on the `standby` webhook field). Only set when `from_us` is `true`; distinguishes AI messages from ones sent by inbox users or automation."}},"required":["contact","customer_wa_id","from_us","id","sent_by_mba","waba_payload","waba_statuses"]},"WabaMessageStatuses":{"type":"object","properties":{"sent":{"type":"number","format":"double","nullable":true},"delivered":{"type":"number","format":"double","nullable":true},"read":{"type":"number","format":"double","nullable":true}}},"Person":{"type":"object","properties":{"wa_id":{"type":"string","title":"WhatsApp id","description":"WhatsApp ID — either a phone number in canonical form (e.g. 48123123123) or a Business-Scoped User ID (e.g. US.13491208655302741918) for users who have hidden their phone number.","pattern":"^([A-Z]{2}\\.(ENT\\.)?[a-zA-Z0-9]+|[0-9]+)$","maxLength":200},"bsuid":{"type":"string","readOnly":true,"nullable":true,"title":"Business-Scoped User ID","description":"Business-Scoped User ID for this contact. Populated from the webhook's `user_id` field. Stable across phone number changes for the same user-portfolio pair, so this is the most reliable long-term identifier."},"phone_number":{"type":"string","readOnly":true,"nullable":true,"description":"Phone number when known. Equals `wa_id` for phone-primary contacts. For BSUID-primary contacts (where `wa_id` is a BSUID), populated when WhatsApp shares the phone number — e.g. recent interaction within the last 30 days, or via Contact Book."},"waba_payload":{"$ref":"#/components/schemas/WabaPayloadContact"},"initials":{"type":"string","description":"Contact user name initials used for display when avatar image is missing"},"last_message_timestamp":{"type":"number","format":"double","nullable":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) of last message that was sent by this contact. It is the floor of the customer care messaging window: a non-template message can always be delivered for some time after the customer last wrote to your business, and Meta may keep the window open for longer — see `messaging_window_expires_at`. Read more at WhatsApp Business API docs [Messages Cut-off Control](https://developers.facebook.com/docs/whatsapp/api/messages#cut-off-control)."},"messaging_window_expires_at":{"type":"number","format":"double","readOnly":true,"description":"[POSIX timestamp](https://en.wikipedia.org/wiki/Unix_time) after which a non-template message to this contact is rejected with HTTP 453. Derived from what Meta reported for this conversation, the customer's last message, and — for click-to-WhatsApp chats we have not replied to yet — the ad referral. Never assume a fixed duration: read this value."},"messaging_window_origin":{"type":"string","readOnly":true,"nullable":true,"description":"`conversation.origin.type` reported by Meta alongside `messaging_window_expires_at` — what opened the conversation (e.g. `service`, `marketing`, `utility`, `authentication`, or `referral_conversion` for a click-to-WhatsApp ad)."},"resolved":{"type":"boolean","description":"Whether this chat is considered resolved by the assigned agent. Can automatically be set to false if contact keeps sending messages."}},"required":["bsuid","initials","messaging_window_expires_at","messaging_window_origin","phone_number","wa_id","waba_payload"]},"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"Tagging":{"type":"object","properties":{"name":{"type":"string","description":"Tag object name"},"web_inbox_color":{"type":"string","description":"A Web App related setting - which color to show on the Web App frontend"},"tagging_id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a Tagging for example."},"id":{"type":"integer","description":"Tag object unique ID"},"extra":{"description":"Tagging extra payload"}},"required":["id","name","tagging_id","web_inbox_color"]}}}}
```

## The RoleEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"}}}}
```

## The SavedResponse object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"SavedResponse":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Primary ID."},"text":{"type":"string"},"created_by":{"type":"integer","readOnly":true,"nullable":true},"timestamp":{"type":"number","format":"double","readOnly":true}},"required":["created_by","id","text","timestamp"]}}}}
```

## The ShortUser object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ShortUser":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.","pattern":"^[\\w.@+-]+$","maxLength":150},"url":{"type":"string","format":"uri","readOnly":true}},"required":["id","url","username"]}}}}
```

## The Tag object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Tag":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":1000},"web_inbox_color":{"type":"string","nullable":true,"description":"A Web App related setting - which color to show on the Web App frontend","maxLength":1000}},"required":["id","name"]}}}}
```

## The Tagging object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Tagging":{"type":"object","properties":{"name":{"type":"string","description":"Tag object name"},"web_inbox_color":{"type":"string","description":"A Web App related setting - which color to show on the Web App frontend"},"tagging_id":{"type":"integer","readOnly":true,"description":"This tagging relation ID. Used when deleting a Tagging for example."},"id":{"type":"integer","description":"Tag object unique ID"},"extra":{"description":"Tagging extra payload"}},"required":["id","name","tagging_id","web_inbox_color"]}}}}
```

## The Template object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Template":{"type":"object","properties":{"name":{"type":"string","description":"The name of the message template."},"category":{"type":"string","description":"The type of message template.\n    Values: ACCOUNT_UPDATE, PAYMENT_UPDATE, PERSONAL_FINANCE_UPDATE, SHIPPING_UPDATE, RESERVATION_UPDATE,\n    ISSUE_RESOLUTION, APPOINTMENT_UPDATE, TRANSPORTATION_UPDATE, TICKET_UPDATE, ALERT_UPDATE, AUTO_REPLY\n    "},"language":{"type":"string","description":"The language of message template, e.g. `en_US`"},"components":{"type":"array","items":{},"description":"The list of definitions of parts of\n        message template. See\n        [WhatsApp Business API Documentation](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates).\n        "},"id":{"type":"string","readOnly":true},"rejected_reason":{"type":"string","readOnly":true},"status":{"type":"string","readOnly":true}},"required":["category","components","id","language","name","rejected_reason","status"]}}}}
```

## The ThreadControllerEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"ThreadControllerEnum":{"enum":["mba","inbox"],"type":"string","description":"* `mba` - Meta Business Agent\n* `inbox` - Inbox"}}}}
```

## The Url object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"Url":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"description":{"type":"string","description":"URL description, like \"Homepage\", \"Social\" or \"Shop\", if provided. (Can be any string value)"}},"required":["url"]}}}}
```

## The User object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"User":{"type":"object","properties":{"url":{"type":"string","format":"uri","readOnly":true},"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Username that is used in combination with password during login.\n\nOnly alphanumeric characters are allowed (A-Z, a-z, 0-9)."},"first_name":{"type":"string","maxLength":150},"last_name":{"type":"string","maxLength":150},"email":{"type":"string","format":"email","description":"E-mail address of this new user.\n\n"},"profile":{"allOf":[{"$ref":"#/components/schemas/UserProfile"}],"description":"Optional field used to create app users and additional admin users"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"readOnly":true,"description":"List of group objects the user belongs to (read-only)"},"group_ids":{"type":"array","items":{"type":"integer","writeOnly":true},"writeOnly":true,"description":"List of group IDs to assign to the user (write-only)"},"permissions":{"$ref":"#/components/schemas/Permissions"},"assigned_wa_ids":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["assigned_wa_ids","email","groups","id","permissions","url","username"]},"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"GroupMember":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Permissions":{"type":"object","properties":{"can_use_tags":{"type":"boolean","description":"Uncheck this to disable tagging for related Users completely."},"can_read_chats":{"allOf":[{"$ref":"#/components/schemas/CanReadChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can read from All Chats<br>\n<code>group</code> - User can read from Only Chats assigned to User's Groups<br>\n<code>user</code> - User can read from Only Chats assigned to User directly<br>\n<code>none</code> - User can read from No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"can_write_to_chats":{"allOf":[{"$ref":"#/components/schemas/CanWriteToChatsEnum"}],"description":"<p>Possible values:<br><code>all</code> - User can write to All Chats<br>\n<code>group</code> - User can write to Only Chats assigned to User's Groups<br>\n<code>user</code> - User can write to Only Chats assigned to User directly<br>\n<code>none</code> - User can write to No Chats</p>\n\n* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}},"CanReadChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"},"CanWriteToChatsEnum":{"enum":["all","group","user","none"],"type":"string","description":"* `all` - All Chats\n* `group` - Only Chats assigned to User's Groups\n* `user` - Only Chats assigned to User directly\n* `none` - No Chats"}}}}
```

## The UserAvailabilitySettings object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"UserAvailabilitySettings":{"type":"object","properties":{"feature_set_enabled":{"type":"boolean","description":"Only if checked, any settings in this feature set take effect. If not checked, auto-assignment will not happen, and user availability has no effect (and cannot be toggled by users)"}}}}}}
```

## The UserProfile object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"UserProfile":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/RoleEnum"}],"description":"<p>Possible values:<br>    * <code>user</code> (<strong>User</strong>) - can do everything that isn't marked as admin only in API documentation<br>    * <code>admin</code> (<strong>Admin</strong>) - can use all available API endpoints and has Inbox admin panel access<br>    * <code>app</code> (<strong>App integration</strong>) - can do everything regular users have access too, but has no access to inbox web frontend</p>\n\n* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"},"is_available":{"type":"boolean","description":"Manual status set by the user to indicate availability for communication."}}},"RoleEnum":{"enum":["user","admin","app"],"type":"string","description":"* `user` - Regular user\n* `admin` - Admin\n* `app` - App integration"}}}}
```

## The VerticalEnum object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"VerticalEnum":{"enum":["Automotive","Beauty, Spa and Salon","Clothing and Apparel","Education","Entertainment","Event Planning and Service","Finance and Banking","Food and Grocery","Public Service","Hotel and Lodging","Medical and Health","Non-profit","Professional Services","Shopping and Retail","Travel and Transportation","Restaurant","Other"],"type":"string","description":"* `Automotive` - Automotive\n* `Beauty, Spa and Salon` - Beauty, Spa and Salon\n* `Clothing and Apparel` - Clothing and Apparel\n* `Education` - Education\n* `Entertainment` - Entertainment\n* `Event Planning and Service` - Event Planning and Service\n* `Finance and Banking` - Finance and Banking\n* `Food and Grocery` - Food and Grocery\n* `Public Service` - Public Service\n* `Hotel and Lodging` - Hotel and Lodging\n* `Medical and Health` - Medical and Health\n* `Non-profit` - Non-profit\n* `Professional Services` - Professional Services\n* `Shopping and Retail` - Shopping and Retail\n* `Travel and Transportation` - Travel and Transportation\n* `Restaurant` - Restaurant\n* `Other` - Other"}}}}
```

## The WabaError object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WabaError":{"type":"object","properties":{"waba_payload":{},"timestamp":{"type":"number","format":"double"},"waba_id":{"type":"string","nullable":true,"title":"WhatsApp Message ID","description":"WhatsApp Business API ID of the Message related to this error,if this error comes from an existing WhatsApp Message. Remember that if you're creating a Message and WhatsApp will return an user error (for example invalid template ID), then you will never see `waba_id` here, because Message was not created in WhatsApp. However, in that case you will still receive `getchat_id` for your reference.","maxLength":100},"getchat_id":{"type":"string","nullable":true,"title":"Get.chat Message ID","description":"Inbox internal ID of the Message that is related to this error. This field will be `null` in rare cases, so you should implement that. Examples are: 1. Fresh installation of a new inbox that is receiving error statuses from WhatsApp, but messages related to those errors are not present in the inbox - those messages were sent before user started using the inbox. 2. The inbox reached the quota limit and WhatsApp has sent an error status that is related to a message that was already removed from the inbox.","maxLength":100}},"required":["timestamp","waba_payload"]}}}}
```

## The WabaMessageStatuses object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WabaMessageStatuses":{"type":"object","properties":{"sent":{"type":"number","format":"double","nullable":true},"delivered":{"type":"number","format":"double","nullable":true},"read":{"type":"number","format":"double","nullable":true}}}}}}
```

## The WabaPayloadContact object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WabaPayloadContact":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/WabaPayloadProfile"},"wa_id":{"type":"string"}},"required":["profile","wa_id"]},"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}}
```

## The WabaPayloadProfile object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WabaPayloadProfile":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}}
```

## The WabaWebhook object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WabaWebhook":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"user":{"allOf":[{"$ref":"#/components/schemas/ShortUser"}],"readOnly":true},"url":{"type":"string","format":"uri","description":"Remember to use `https://` URLs for your webhooks!\n\n**Note**: You can validate Webhook events by specifying a shared secret as a query parameter when you set the Webhook URL. Example: https://url?auth={shared_secret}."},"on_incoming_message":{"type":"boolean","description":"Call this Webhook on every new Message coming from WhatsApp to Inbox.<br/>This is how WhatsApp webhooks are called."},"on_outgoing_message":{"type":"boolean","description":"Call this Webhook on every new Message sent from Inbox to WhatsApp.<br/>You should use this setting when integrating a system in which you want to have complete copies of all your conversations."},"on_assigned":{"type":"boolean","description":"Call this Webhook when existing Chat is assigned to this User or a new Message is posted to the Chat already assigned to this User.<br/></br>You should set this when integrating a bot with this Webhook.<br/>This is similar to how human Users are notified by desktop notifications. "},"on_message_echo":{"type":"boolean","description":"Call this Webhook when a message is sent from your WhatsApp Business number via the 360dialog messaging API, outside the Inbox.<br/>The webhook receives the original Cloud API \"message_echoes\" payload, so your integration can keep a complete copy of the conversation. Messages sent through the Inbox API are not echoed here - use \"on outgoing message\" for those."},"headers":{"description":"Additional headers needed when calling a Webhook. Each header needs to be provided as a key-value pair in JSON format.<br/>Useful for things like API keys with Authorization or other headers.<br/><br/>Example: <code>{\"Authorization\": \"Token 1234567890qwertyuiop\"}</code>"}},"required":["id","url","user"]},"ShortUser":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"username":{"type":"string","description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.","pattern":"^[\\w.@+-]+$","maxLength":150},"url":{"type":"string","format":"uri","readOnly":true}},"required":["id","url","username"]}}}}
```

## The WhatsAppAccount object

```json
{"openapi":"3.0.3","info":{"title":"360dialog Inbox API","version":"1.28.0"},"components":{"schemas":{"WhatsAppAccount":{"type":"object","properties":{"phone_number":{"type":"string","maxLength":1000},"this_instance":{"type":"boolean","description":"One customer can have multiple instances. This field denotes that this WA account is connected to this instance. DEPRECATED since MT 1.4: superseded by Tenant.whatsapp_account; kept (and still written by configure.py) for older-image compatibility and the read-only API field until a later cleanup release."}},"required":["phone_number"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.360dialog.com/docs/inbox/inbox-api/api-ref/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
