{"info":{"version":"4.4.4","description":"This is the documentation for the DialoX REST API.","title":"DialoX REST API"},"tags":[],"components":{"schemas":{"User":{"type":"object","description":"A user of the bot","title":"User","properties":{"extra":{"type":"object","description":"Extra user data, related to the frontend","nullable":true},"tags":{"type":"array","description":"The list of tags for this user"},"user_data":{"type":"object","description":"All custom fields from the user, as exposed as user.* in Bubblescript"},"locale":{"type":"string","description":"User's locale, e.g. en_US"},"timezone":{"type":"string","description":"User's timezone"},"inserted_at":{"type":"string","description":"Creation timestamp"},"updated_at":{"type":"string","description":"Update timestamp"},"first_name":{"type":"string","description":"First name","nullable":true},"last_name":{"type":"string","description":"Last name","nullable":true},"external_id":{"type":"string","description":"External identifier (e.g. for CRM integration)","nullable":true},"profile_picture":{"type":"string","format":"url","description":"Profile picture URL","nullable":true},"user_uuid":{"type":"string","description":"User UUID"}}},"StudioUserPatchForm":{"type":"object","title":"StudioUserPatchForm","properties":{"user":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"locale":{"type":"string"},"timezone":{"type":"string"},"phone":{"type":"string"},"profile_picture":{"oneOf":[{"type":"string","format":"url"},{"type":"string","format":"binary"}]},"operator_status":{"type":"string","enum":["available","assign_only","unavailable"]},"auto_translate_on_assign":{"$ref":"#/components/schemas/StudioUserAutoTranslation"}},"additionalProperties":false}},"additionalProperties":false},"StudioUserRolesResponse":{"type":"object","title":"StudioUserRolesResponse","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/StudioUserRole"}}},"additionalProperties":false},"WebhookResponse":{"type":"object","title":"WebhookResponse","properties":{"webhook":{"$ref":"#/components/schemas/Webhook"}},"additionalProperties":false},"Webhook":{"type":"object","title":"Webhook","required":["url"],"properties":{"enabled":{"type":"boolean","description":"Whether the webhook is enabled or not","nullable":true},"id":{"type":"string"},"token":{"type":"string","description":"Optional bearer token that will be sent along the request in the Authorization header. The 'Bearer ' prefix of the header value is added automatically. ","nullable":true},"url":{"type":"string","format":"uri","description":"The URL where the webhook will be posted to"},"event":{"type":"string","description":"Optional filter to limit the event set to this webhook to the given event type. Must be one of , action, user_action, operator_action, action_status, note, note_comment, user_changes, conversation_tags, calendar_event, conversation_close, conversation_delete, conversation_status_change, sms_delivery_report, task, or `task. + taskname`, or `task.raw. + taskname` to get a webhook with the 'raw' output without conversation metadata.","nullable":true},"failure_count":{"type":"integer","description":"The number of times the webhook has failed to deliver a message","nullable":true},"last_failure_at":{"type":"string","format":"date-time","description":"The timestamp of the last failure","nullable":true},"last_failure_response":{"type":"string","description":"The last response from the webhook when it failed","nullable":true}},"additionalProperties":false},"NoteResponse":{"type":"object","title":"NoteResponse","properties":{"note":{"$ref":"#/components/schemas/Note"}},"additionalProperties":false},"WhatsappTemplateBroadcastRequest":{"type":"object","title":"WhatsappTemplateBroadcastRequest","required":["users","params","template"],"properties":{"name":{"type":"string","nullable":true},"users":{"type":"array","items":{"type":"object","required":["user_id"],"properties":{"params":{"type":"object"},"user_id":{"type":"string"}},"additionalProperties":false},"maxItems":10000},"params":{"type":"object"},"template":{"type":"object","required":["name","language","components"],"properties":{"name":{"type":"string"},"components":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","parameters"],"properties":{"type":{"type":"string","enum":["header"]},"parameters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["document"]},"document":{"type":"object","properties":{"link":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["video"]},"video":{"type":"object","properties":{"link":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["image"]},"image":{"type":"object","properties":{"link":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}]}}},"additionalProperties":false},{"type":"object","required":["type","parameters"],"properties":{"type":{"type":"string","enum":["body"]},"parameters":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false}]}},"language":{"type":"string"}},"additionalProperties":false},"scheduled_at":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":false},"StudioUserRoleResponse":{"type":"object","title":"StudioUserRoleResponse","properties":{"role":{"$ref":"#/components/schemas/StudioUserRole"}},"additionalProperties":false},"MeetingTranscriptionRequest":{"type":"object","description":"An transcript posted by an external transcription service.","title":"MeetingTranscriptionRequest","required":["meeting","segments"],"properties":{"user":{"type":"object","properties":{"email":{"type":"string","description":"Email of the participant.","nullable":true},"display_name":{"type":"string","description":"Display name of the participant.","nullable":true},"external_id":{"type":"string","description":"Stable and unique ID of the participant","nullable":true}},"additionalProperties":false},"language":{"type":"string","description":"ISO 639-1 language code for the transcript.","nullable":true},"segments":{"type":"array","description":"Ordered list of transcript segments.","items":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"Transcribed text for this segment."},"started_at":{"type":"string","format":"date-time","description":"ISO8601 timestamp marking when the segment started.","nullable":true},"speaker":{"type":"string","description":"Display name of the speaker for this segment.","nullable":true},"duration_ms":{"type":"integer","description":"Duration of the segment in milliseconds.","minimum":0,"nullable":true}},"additionalProperties":false}},"meeting":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Stable identifier of the meeting, used to make ingestion idempotent."},"started_at":{"type":"string","format":"date-time","description":"ISO8601 timestamp marking when the meeting started.","nullable":true},"subject":{"type":"string","description":"The meeting's subject.","nullable":true},"ended_at":{"type":"string","format":"date-time","description":"ISO8601 timestamp marking when the meeting ended.","nullable":true},"join_url":{"type":"string","description":"Meeting join URL.","nullable":true}},"additionalProperties":false},"participants":{"type":"array","description":"Meeting participants.","items":{"type":"object","properties":{"email":{"type":"string","description":"Email of the participant.","nullable":true},"display_name":{"type":"string","description":"Display name of the participant.","nullable":true},"external_id":{"type":"string","description":"Stable and unique ID of the participant","nullable":true}},"additionalProperties":false}}},"additionalProperties":false,"example":{"language":"en","meeting":{"ended_at":"2026-05-27T08:42:11Z","id":"19:meeting_abc@thread.v2","started_at":"2026-05-27T08:00:00Z","subject":"Weekly sync"},"participants":[{"display_name":"Alice","email":"alice@acme.com","external_id":"c5d3b70f-28af-48c1-9a16-75f69922d8b1"},{"display_name":"Bob","email":"bob@acme.com","external_id":"b15c3bd7-6805-4431-a903-ee7aa517f684"}],"segments":[{"duration_ms":1500,"speaker":"Alice","started_at":"2026-05-27T08:00:05Z","text":"Hi everyone."},{"duration_ms":800,"speaker":"Bob","started_at":"2026-05-27T08:00:07Z","text":"Morning."}],"user":{"display_name":"Alice","email":"alice@acme.com","external_id":"0a1b2c3d-4e5f-6789-abcd-ef0123456789"}}},"ConversationsResponse":{"type":"object","title":"ConversationsResponse","properties":{"conversations":{"type":"array","items":{"$ref":"#/components/schemas/Conversation"}}},"additionalProperties":false},"Chat Action":{"type":"object","description":"The request to send to the conversation","title":"Chat Action","properties":{"id":{"type":"string","description":"As response: Automatically generated action ID. Ignored in requests."},"type":{"type":"string","description":"The type of chat action. See https://developer.dialox.ai/dev/message_spec/\n","required":true},"time":{"type":"string","description":"As response: Automatically filled with the time the action was sent. Ignored in requests."},"payload":{"type":"object","description":"The payload for the given action type.\n\nSee the <a href=\"/dev/message_spec/\">chat message specification</a>.\n"}}},"AnalyticsUsersResponse":{"type":"object","title":"AnalyticsUsersResponse","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/User"}}},"additionalProperties":false},"Error":{"type":"object","title":"Error","properties":{"message":{"type":"string","description":"Error message"}}},"Conversations":{"type":"array","description":"List of conversations","title":"Conversations","items":{"$ref":"#/components/schemas/Conversation"}},"Store listing":{"type":"object","description":"A complete overview of the entire store for a given organisation.\n\nThe root object contains customizations for the store view, followed\nby apps for each store tier.\n","title":"Store listing","required":["store_tiers"],"properties":{"theme_color":{"type":"string"},"store_tiers":{"type":"array","items":{"type":"object","required":["name","apps"],"properties":{"name":{"type":"string"},"apps":{"type":"array","items":{"$ref":"#/components/schemas/App"}},"tier":{"type":"string"}}}},"brand_image":{"type":"string","format":"uri"}}},"StudioUserPatch":{"type":"object","title":"StudioUserPatch","properties":{"user":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"locale":{"type":"string"},"timezone":{"type":"string"},"phone":{"type":"string"},"profile_picture":{"type":"string","format":"url"},"operator_status":{"type":"string","enum":["available","assign_only","unavailable"]},"auto_translate_on_assign":{"$ref":"#/components/schemas/StudioUserAutoTranslation"}},"additionalProperties":false}},"additionalProperties":false},"Conversation action body":{"type":"object","title":"Conversation action body","properties":{"action":{"type":"object","description":"The request to send to the conversation","title":"Chat Action","properties":{"id":{"type":"string","description":"As response: Automatically generated action ID. Ignored in requests."},"type":{"type":"string","description":"The type of chat action. See https://developer.dialox.ai/dev/message_spec/\n\nOne of:\n- text\n- typing\n- location\n- media\n- user_message\n- user_event\n- user_location\n- user_attachment\n- stop\n","required":true},"time":{"type":"string","description":"As response: Automatically filled with the time the action was sent. Ignored in requests."},"payload":{"type":"string","description":"The payload for the given action type.\n\nSee the <a href=\"/dev/message_spec/\">chat message specification</a>.\n","required":true}}}}},"JsonErrorResponse":{"type":"object","title":"JsonErrorResponse","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["title","source","detail"],"properties":{"title":{"type":"string","example":"Invalid value"},"source":{"type":"object","required":["pointer"],"properties":{"pointer":{"type":"string","example":"/data/attributes/petName"}}},"detail":{"type":"string","example":"null value where string expected"}}}}},"x-struct":"Elixir.OpenApiSpex.JsonErrorResponse"},"SearchInfo":{"type":"object","title":"SearchInfo","properties":{"filters":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"name":{"type":"string"},"schema":{"type":"object","additionalProperties":true}}}},"search_filters":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"name":{"type":"string"},"schema":{"type":"object","additionalProperties":true}}}},"allowed_sort":{"type":"array","items":{"type":"string","nullable":false}},"default_sort":{"type":"string","nullable":true}},"additionalProperties":false},"Push subscribe request":{"type":"object","title":"Push subscribe request","properties":{"user_id":{"type":"string","description":"User ID, pass in body when not given in URL"},"delegate_token":{"type":"string","description":"When user ID is not known, delegate token can be used as well for saving push information"},"firebase":{"type":"string","description":"Firebase push token"},"subscription":{"type":"string","description":"Web push subscription JSON-encoded payload"}}},"WhatsappTemplateBroadcastResult":{"type":"object","title":"WhatsappTemplateBroadcastResult","properties":{"broadcast":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"statistics":{"type":"object","description":"Aggregated statistics derived from the `statuses` field.\n","properties":{"pending":{"type":"integer"},"total":{"type":"integer"},"cancelled":{"type":"integer","deprecated":true,"description":"Deprecated in favour of more details statuses per user.\n\nWill always be 0.\n","nullable":true},"failed":{"type":"integer"},"sent":{"type":"integer"},"delivered":{"type":"integer"}},"additionalProperties":false},"template":{"type":"object"},"failures":{"type":"array","deprecated":true,"description":"Deprecated in favour of the `statuses` field.\n","items":{"type":"object","properties":{"reason":{"type":"string","nullable":true},"status":{"type":"string"},"details":{"type":"string","nullable":true},"user_id":{"type":"string"},"attempted_at":{"type":"string"}},"additionalProperties":false}},"scheduled_at":{"type":"string","format":"date-time","nullable":true},"statuses":{"type":"array","description":"Status information about the template sending to each indiviual user.\n","items":{"type":"object","properties":{"reason":{"type":"string","description":"A short identifier for the type of error that has occured.\n\nFor example:\n\n- `\"delivery_failure\"`: We've received feedback from WhatsApp that the template\n  failed to deliver. See the `details` field for potentially more information.\n- `\"invalid_user_id\"`: We could not map the given `user_id` to a valid phone number.\n- `\"operator_joined\"`: There is an ongoing conversation where an operator is joined.\n  We don't automatically close these conversations, nor do we interrupt them.\n- `\"await_conversation\"`: There is an active conversation that we tried to close,\n  but it didn't close in time.\n","nullable":true},"status":{"type":"string","description":"- `\"pending\"`: The template has not yet been sent to the user.\n- `\"sent\"`: The template has been sent to the user.\n- `\"delivered\"`: We've received confirmation from WhatsApp\n  that the template has been delivered to the user's device.\n- `\"failure\"`: Template sending failed. Check the `reason`\n  field for the error category, and the `details` field for\n  a human-readable explanation why.\n"},"details":{"type":"string","description":"A human-readable description of why the template sending failed.\n\nIn the case where `reason` is `\"delivery_failure\"`, then this\nfield contains the error from WhatsApp, if any.\n","nullable":true},"user_id":{"type":"string"},"attempted_at":{"type":"string"}},"additionalProperties":false}},"bot_id":{"type":"string","format":"uuid"}}}},"additionalProperties":false},"Conversation":{"type":"object","description":"A conversation is a context in which a user exchanges messages with a bot.","title":"Conversation","properties":{"id":{"type":"string","description":"The conversation identifier"},"status":{"type":"string","enum":["active","closed","passive","studio_archived"],"description":"The status of the conversation"},"tags":{"type":"array","description":"The list of tags","items":{"type":"string"}},"last_message":{"type":"string","description":"The last message that was sent in this conversation. This message is either from the bot or from the user. Certain messages from the bot might be ignored and will not end up in this field.","nullable":true},"uuid":{"type":"string","format":"uuid","description":"The conversation's UUID. Useful for creating studio links."},"message_count":{"type":"integer"},"inserted_at":{"type":"string","description":"Creation timestamp"},"user_id":{"type":"string","description":"The channels-specific id of the user"},"frontend":{"type":"string"},"conversation_data":{"type":"object","description":"All custom fields from the conversation, as exposed as conversation.* in Bubblescript"},"auto_translation":{"type":"array","description":"Array of [operator language, user language] when the auto-translation feature is enabled, or NULL when disabled","items":{"type":"string"},"nullable":true},"user_message_count":{"type":"integer"},"user_uuid":{"type":"string","description":"Internal, channel-independent user UUID"},"last_message_date":{"type":"string","format":"date-time","description":"ISO8601 timestamp of the time of the last message","nullable":true},"operator_uuid":{"type":"string","nullable":true}}},"TTS Synthesize Request":{"type":"object","description":"Request to synthesize text to speech","title":"TTS Synthesize Request","required":["text"],"properties":{"format":{"type":"string","enum":["mp3","wav"],"description":"Output audio format. Defaults to mp3.","example":"mp3"},"text":{"type":"string","description":"The text to synthesize to speech","example":"Hello world! How are you today?"},"locale":{"type":"string","description":"Locale for voice selection (e.g. 'en', 'nl'). If not provided, uses bot's default locale.","example":"en"},"voice_id":{"type":"string","description":"Specific voice ID to use. If not provided, system will select appropriate voice for locale.","example":"en-US-Wavenet-F"}},"example":{"locale":"en","text":"Hello world! How are you today?","voice_id":"en-US-Wavenet-F"}},"TTS Voice":{"type":"object","description":"A text-to-speech voice","title":"TTS Voice","properties":{"id":{"type":"string","description":"Voice identifier"},"name":{"type":"string","description":"Voice name"},"type":{"type":"string","enum":["google","microsoft","amazon","openai"],"description":"Voice provider type"},"features":{"type":"object","description":"Voice capabilities","properties":{"speed":{"type":"boolean","description":"Whether voice supports speed adjustment"},"ssml":{"type":"boolean","description":"Whether voice supports SSML"}}},"locale":{"type":"string","description":"Voice locale (language code)","nullable":true},"gender":{"type":"string","enum":["male","female","neutral"],"description":"Voice gender"}},"example":{"features":{"speed":true,"ssml":true},"gender":"female","id":"en-US-Wavenet-F","locale":"en","name":"en-US-Wavenet-F","type":"google"}},"App":{"type":"object","title":"App","required":["title","purpose","description","icon"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]},"default_locale":{"type":"string"},"title":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]},"icon":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]},"supported_locales":{"type":"array","items":{"type":"string"}},"video_url":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]},"tier":{"type":"string"},"purpose":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]},"demo":{"type":"object","required":["bot_id"],"properties":{"phone":{"type":"string"},"bot_id":{"type":"string"}},"nullable":true},"image_urls":{"description":"An optionally-translated list of strings.\n\nWhen translated, the value is a map with at least `\"$i18n\": true` followed\nby optional/key values for each translated language, where the key is\nthe code of the language and the value a list of strings.\n","oneOf":[{"type":"array","items":{"type":"string"},"nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"array","items":{"type":"string"}}}]},"supported_channels":{"type":"array","items":{"type":"string"}},"video_thumbnail":{"description":"An optionally-translated string.\n\nWhen translated, this becomes a map with at least the key/value of\n`\"$i18n\": true` followed by optional key/values for each translated\nlanguage, where the key is the code of the language.\n","oneOf":[{"type":"string","nullable":true},{"type":"object","required":["$i18n"],"properties":{"$i18n":{"enum":[true]}},"additionalProperties":{"type":"string"}}]}}},"NotesResponse":{"type":"object","title":"NotesResponse","properties":{"notes":{"type":"array","items":{"$ref":"#/components/schemas/Note"}}},"additionalProperties":false},"WebhookEventTypesResponse":{"type":"object","title":"WebhookEventTypesResponse","required":["event_types"],"properties":{"event_types":{"type":"array","items":{"type":"object","required":["event_type","title"],"properties":{"title":{"type":"string"},"event_type":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false},"Bot":{"type":"object","description":"Bot details","title":"Bot","properties":{"id":{"type":"string","description":"Bot UUID"},"title":{"type":"string","description":"Bot title"},"inserted_at":{"type":"string","format":"date-time","description":"Creation timestamp"},"updated_at":{"type":"string","format":"date-time","description":"Update timestamp"},"purpose":{"type":"string","description":"Describes the bot's purpose"},"organisation":{"type":"string","description":"Environment name"},"profile_picture":{"type":"string","format":"url","description":"Profile picture URL"},"pwa":{"type":"object","description":"Contents of pwa.yml"},"widget":{"type":"object","description":"Contents of widget.yml"},"web_pwa":{"type":"object","description":"PWA-related settings"},"web_widget":{"type":"object","description":"Widget-related settings"}}},"Note":{"type":"object","title":"Note","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","done"]},"tags":{"type":"array","items":{"type":"string"},"nullable":true},"inserted_at":{"type":"string","description":"Creation timestamp"},"updated_at":{"type":"string","description":"Update timestamp"},"note":{"type":"string"},"organisation_id":{"type":"string"},"conversation_id":{"type":"string"},"bot_id":{"type":"string"},"actor":{"type":"object","additionalProperties":true,"nullable":true},"conversation_data":{"type":"object","description":"All the conversation data at the time the note was created","additionalProperties":true}},"additionalProperties":false},"Conversation action response":{"type":"object","title":"Conversation action response","properties":{"next":{"type":"string","description":"Pagination token for retrieving the next batch of actions","nullable":true},"actions":{"type":"array","items":{"type":"object","description":"The request to send to the conversation","title":"Chat Action","properties":{"id":{"type":"string","description":"As response: Automatically generated action ID. Ignored in requests."},"type":{"type":"string","description":"The type of chat action. See https://developer.dialox.ai/dev/message_spec/\n","required":true},"time":{"type":"string","description":"As response: Automatically filled with the time the action was sent. Ignored in requests."},"payload":{"type":"object","description":"The payload for the given action type.\n\nSee the <a href=\"/dev/message_spec/\">chat message specification</a>.\n"}}}}}},"WebhookCreateParams":{"type":"object","title":"WebhookCreateParams","required":["url"],"properties":{"enabled":{"type":"boolean","description":"Whether the webhook is enabled or not","nullable":true},"token":{"type":"string","description":"Optional bearer token that will be sent along the request in the Authorization header. The 'Bearer ' prefix of the header value is added automatically. ","nullable":true},"url":{"type":"string","format":"uri","description":"The URL where the webhook will be posted to"},"event":{"type":"string","description":"Optional filter to limit the event set to this webhook to the given event type. Must be one of , action, user_action, operator_action, action_status, note, note_comment, user_changes, conversation_tags, calendar_event, conversation_close, conversation_delete, conversation_status_change, sms_delivery_report, task, or `task. + taskname`, or `task.raw. + taskname` to get a webhook with the 'raw' output without conversation metadata.","nullable":true}},"additionalProperties":false},"ConversationSummaryResponse":{"type":"object","title":"ConversationSummaryResponse","properties":{"conversations":{"type":"array","items":{"type":"object","required":["id","bot_id","user_id","group","start_date","end_date","message_count","user_message_count","tags"],"properties":{"id":{"type":"string"},"group":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"message_count":{"type":"integer"},"user_id":{"type":"string"},"frontend":{"type":"string"},"start_date":{"type":"string","format":"date-time"},"end_date":{"type":"string","format":"date-time","nullable":true},"bot_id":{"type":"string"},"user_message_count":{"type":"integer"}},"additionalProperties":false}}},"additionalProperties":false},"WebhooksResponse":{"type":"object","title":"WebhooksResponse","properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}},"additionalProperties":false},"TranscriptionResponse":{"type":"object","description":"Acknowledgement of a stored transcript.","title":"TranscriptionResponse","required":["conversation_id","meeting_id","segment_count"],"properties":{"conversation_id":{"type":"string","format":"uuid","description":"UUID of the conversation that holds the transcript."},"meeting_id":{"type":"string","description":"The meeting id that was ingested."},"segment_count":{"type":"integer","description":"Number of transcript segments that were stored.","minimum":0}},"additionalProperties":false},"StudioUserAutoTranslation":{"type":"object","description":"Automatically translate conversations that get assigned to this user.","title":"StudioUserAutoTranslation","properties":{"enabled":{"type":"boolean"},"language":{"type":"string","description":"The language to translate to. Defaults to the locale of the user."}},"additionalProperties":false},"TTS Voices Response":{"type":"object","description":"Response containing list of available TTS voices","title":"TTS Voices Response","properties":{"voices":{"type":"array","description":"List of available voices","items":{"type":"object","description":"A text-to-speech voice","title":"TTS Voice","properties":{"id":{"type":"string","description":"Voice identifier"},"name":{"type":"string","description":"Voice name"},"type":{"type":"string","enum":["google","microsoft","amazon","openai"],"description":"Voice provider type"},"features":{"type":"object","description":"Voice capabilities","properties":{"speed":{"type":"boolean","description":"Whether voice supports speed adjustment"},"ssml":{"type":"boolean","description":"Whether voice supports SSML"}}},"locale":{"type":"string","description":"Voice locale (language code)","nullable":true},"gender":{"type":"string","enum":["male","female","neutral"],"description":"Voice gender"}},"example":{"features":{"speed":true,"ssml":true},"gender":"female","id":"en-US-Wavenet-F","locale":"en","name":"en-US-Wavenet-F","type":"google"}}}},"example":{"voices":[{"features":{"speed":true,"ssml":true},"gender":"female","id":"en-US-Wavenet-F","locale":"en","name":"en-US-Wavenet-F","type":"google"},{"features":{"speed":true,"ssml":true},"gender":"female","id":"nl-NL-Wavenet-A","locale":"nl","name":"nl-NL-Wavenet-A","type":"google"}]}},"Update conversation request":{"type":"object","title":"Update conversation request","properties":{"auto_translation":{"type":"array","description":"Controls automatic translation of the conversation. Contains either an array with 2 components: [operator language, bot language], or <tt>null</tt> to disable automatic translation again.","items":{"type":"string"},"nullable":true}},"additionalProperties":false},"TagTimings":{"type":"object","title":"TagTimings","required":["from_tag","to_tag","bot"],"properties":{"bot":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Bot ID"},"conversations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Conversation ID"},"average_time":{"type":"number","description":"Average time for this conversation"},"is_outlier":{"type":"boolean","description":"Is this conversation an outlier?"}}}},"average_time":{"type":"number","description":"Average time for this bot"}}},"to_tag":{"type":"string","description":"To tag"},"from_tag":{"type":"string","description":"From tag"}},"additionalProperties":false,"example":{"bot":{"average_time":19.133778564453127,"conversations":[{"average_time":95.54589282226563,"id":"45b632be-da13-440a-9852-fc252f1c58e1","is_outlier":true},{"average_time":0.024,"id":"acdacdb7-dab6-4d99-83f8-e4d558d3c3c4","is_outlier":false},{"average_time":0.021,"id":"9eb08236-1ebc-4236-84fc-8d802ea3e38c","is_outlier":false},{"average_time":0.053,"id":"3649b6c7-8a95-49c5-b208-c1dba8c22ea3","is_outlier":false},{"average_time":0.025,"id":"e828d613-ef7b-4410-b40b-36257aadc153","is_outlier":false}],"id":"1321db39-4552-4d4e-95b6-9238aa801066"},"from_tag":"start_conversation","to_tag":"end_conversation"}},"User request object":{"type":"object","description":"Request object to create or update a user","title":"User request object","required":["user_id"],"properties":{"user_data":{"type":"object","description":"All custom fields from the user, as exposed as user.* in Bubblescript"},"locale":{"type":"string","description":"User's locale, e.g. en_US"},"timezone":{"type":"string","description":"User's timezone"},"user_id":{"type":"string","description":"User ID"},"first_name":{"type":"string","description":"First name","nullable":true},"last_name":{"type":"string","description":"Last name","nullable":true},"frontend":{"type":"string","description":"The frontend (channel) through which this user is connected, e.g. facebook, whatsapp, etc."},"profile_picture":{"type":"string","format":"url","description":"Profile picture URL","nullable":true}},"example":{"first_name":"Pete","locale":"en_US","timezone":"Europe/Amsterdam","user_data":{"email":"pete@example.com","email_push_status":"ok"},"user_id":"5t2meco6lxtatvd15s2ebp"}},"Create conversation body":{"type":"object","title":"Create conversation body","properties":{"frontend":{"type":"string","description":"The frontend that will be used for this conversation. Must be one of the frontends (channels) that is connected to the given bot; e.g. <tt>whatsapp</tt>."}}},"WebhookUpdateParams":{"type":"object","title":"WebhookUpdateParams","properties":{"enabled":{"type":"boolean","description":"Whether the webhook is enabled or not","nullable":true},"token":{"type":"string","description":"Optional bearer token that will be sent along the request in the Authorization header. The 'Bearer ' prefix of the header value is added automatically. ","nullable":true},"url":{"type":"string","format":"uri","description":"The URL where the webhook will be posted to"},"event":{"type":"string","description":"Optional filter to limit the event set to this webhook to the given event type. Must be one of , action, user_action, operator_action, action_status, note, note_comment, user_changes, conversation_tags, calendar_event, conversation_close, conversation_delete, conversation_status_change, sms_delivery_report, task, or `task. + taskname`, or `task.raw. + taskname` to get a webhook with the 'raw' output without conversation metadata.","nullable":true}},"additionalProperties":false},"StudioUserRole":{"type":"object","title":"StudioUserRole","properties":{"user":{"type":"object","properties":{"alias":{"type":"string","nullable":true},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"email":{"type":"string"},"external_id":{"type":"string","nullable":true},"operator_status":{"type":"string","enum":["available","assign_only","unavailable"]},"auto_translate_on_assign":{"$ref":"#/components/schemas/StudioUserAutoTranslation"}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string"},"nullable":true},"roles":{"type":"array","items":{"type":"string","enum":["agent","operator","editor","planner","analyst","producer","developer","administrator","supervisor"]}}},"additionalProperties":false}},"responses":{},"securitySchemes":{"api_auth":{"scheme":"bearer","type":"http","description":"Authorize the request with the given API key","bearerFormat":"Bearer <API KEY>"}}},"paths":{"/api/bot/{bot_id}/notes/{note_id}":{"delete":{"callbacks":{},"deprecated":false,"tags":["Notes"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"note_id","description":"The note ID to be deleted","required":true,"schema":{"type":"string"},"example":"24690e63-e2d8-4f4a-ab29-28f7b8825c6b"}],"summary":"Delete a note","operationId":"v1.notes.delete","responses":{"200":{"description":"Note deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteResponse"}}}},"404":{"description":"Bot or note not found"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/push_subscribe":{"post":{"callbacks":{},"deprecated":false,"description":"Stores a push token for a user, for a certain type of push notification provider; either web push, firebase, or expo.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Store push token for a user","operationId":"UserController.push_subscribe (2)","requestBody":{"description":"The push subscription","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push subscribe request"}}}},"responses":{"204":{"description":"Subscription succcessful"}}}},"/api/bot/{bot_id}/action/{id}":{"get":{"callbacks":{},"deprecated":false,"description":"Fetch a single action (a message) from a conversation by its ID.\n","tags":["Action operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"action_id","description":"The identifier of the action that is being retrieved.\n","required":true,"schema":{"type":"string"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Show action details","operationId":"ActionController.show","responses":{"200":{"description":"The action's contents","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation action response"}}}},"404":{"description":"Action not found, or mismatch between the action and bot ID from URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/event/{event}":{"post":{"callbacks":{},"deprecated":false,"description":"Send an event to a users's conversation. The request body is passed in as the event.payload property.\n\nThis allows you to send an event to an ongoing chat session, given the\nbot id and the user id. The (JSON) payload of the request is received in\nthe bot as the `event.payload` property.\n\nGiven the following part of bot script:\n\n```\ndialog event: \"message\" do\n  say \"I received a message!\"\n  say event.payload.message\nend\n```\n\nThen, when you post the body `{\"message\": \"hello\"}` to the following URL of the bot:\n\n```\nPOST /api/bot/618c2dc8-25e8-4006-8c22-cb2b770eeec8/userid/event/message\n```\n\nThe `message` event will be triggered and the bot will say \"I received\na message!\", followed by the message from the POST payload.\n\n### Targeting specific conversations\n\nThe event is sent to the user's <tt>main</tt> conversation.\nHowever, it is possible to address different conversations, by\nprepending the conversation's <tt>g</tt> parameter to the user\nID, separated with a ~ character. In the next example, the\n<tt>conv1</tt> conversation is the recipient of the\n<tt>message</tt> event for user <tt>userid</tt>:\n\n```\nPOST /api/bot/…/userid~conv1/event/message\n```\n","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"event","description":"The name of the event. In Bubblescript, you can create a dialog or a task with an <tt>event:</tt> trigger to catch this event.\n","required":true,"schema":{"type":"string"},"example":"message"}],"summary":"Send an event to a user's conversation","operationId":"UserController.event","responses":{"204":{"description":"Event sent successfully"},"404":{"description":"Bot or user not found"}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{id}":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieve details about the given conversation","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Show conversation details","operationId":"conversation.show","responses":{"200":{"description":"The new conversation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation"}}}}}},"put":{"callbacks":{},"deprecated":false,"description":"Set parameters on the given conversation to updated it","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Update an existing conversation","operationId":"conversation.update","requestBody":{"description":"The update request","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Update conversation request"}}}},"responses":{"200":{"description":"The updated conversation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation"}}}}}},"delete":{"callbacks":{},"deprecated":false,"tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Remove a conversation","operationId":"conversation.delete","responses":{"204":{"description":"Conversation was deleted"},"404":{"description":"Conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"callbacks":{},"deprecated":false,"description":"Set parameters on the given conversation to updated it","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Update an existing conversation","operationId":"conversation.update (2)","requestBody":{"description":"The update request","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Update conversation request"}}}},"responses":{"200":{"description":"The updated conversation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation"}}}}}}},"/api/bot/{bot_id}/webhooks/event-types":{"get":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"List available event types","operationId":"webhook.event_types","responses":{"200":{"description":"Event types","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEventTypesResponse"}}}},"404":{"description":"Bot not found"}}}},"/api/bot/{bot_id}/analytics/tags/timings":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieve timing information between two tags in a specific period.  \n\nReturns the conversations with the timing between the tags and mark the conversation as an outlier in case the timing goes over 1.5 times the standard deviation.\n","tags":["Analytics operations"],"parameters":[{"in":"query","name":"from_tag","description":"From tag","required":true,"schema":{"type":"string"}},{"in":"query","name":"to_tag","description":"To tag","required":true,"schema":{"type":"string"}},{"in":"query","name":"start_date","description":"Start date (ISO8601)","required":true,"schema":{"type":"string"}},{"in":"query","name":"end_date","description":"End date (ISO8601)","required":true,"schema":{"type":"string"}},{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"conversation_id","description":"Conversation ID","required":false,"schema":{"type":"string"}}],"summary":"Get the average time spent between two tags in a specific period","operationId":"analytics.tags.timings","responses":{"200":{"description":"Tag timings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagTimings"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/user/{id}":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieve the details of a user of the bot","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Get user details","operationId":"UserController.show","responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"Bot or user not found"}}},"put":{"callbacks":{},"deprecated":false,"description":"Update the details of an existing user. Will return an error when the user does not yet exist.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Update user details","operationId":"UserController.update","requestBody":{"description":"The user data","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User request object"}}}},"responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"Bot or user not found"}}},"delete":{"callbacks":{},"deprecated":false,"description":"Remove an existing user from the bot. All of its conversations will be removed as well. Will return an error when the user does not yet exist.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Remove a user","operationId":"UserController.update (2)","responses":{"204":{"description":"User successfully deleted"},"404":{"description":"Bot or user not found"}}},"patch":{"callbacks":{},"deprecated":false,"description":"Update the details of an existing user. Will return an error when the user does not yet exist.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Update user details","operationId":"UserController.update (3)","requestBody":{"description":"The user data","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User request object"}}}},"responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"Bot or user not found"}}}},"/api/bot/{id}":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieves the bots' public information. This API call does not\nrequire authorization, but is only accessible when either the\nWeb Widget channel, the Web PWA channel or the REST API is\nenabled for a bot.\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Get bot details","operationId":"BotController.show","responses":{"200":{"description":"Bot details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Bot"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/history":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieve the actions from the given user/conversation in reverse chronological order.\nActions are paginated in batches of 200.\n\nPagination can be implemented by chaining the 'next' parameter\nthat is received from this request into the next request.\n\nA text version can be retrieved by sending <tt>Accept: text/plain</tt> as a request header.\n\nThe conversation must exist for the history to be retrieved,\notherwise a 404 is returned.\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Retrieve conversation history","operationId":"conversation.history","responses":{"200":{"description":"Operator history result","content":{"application/json":{"schema":{"type":"object","title":"Conversation action response","properties":{"next":{"type":"string","description":"Pagination token for retrieving the next batch of actions","nullable":true},"actions":{"type":"array","items":{"type":"object","description":"The request to send to the conversation","title":"Chat Action","properties":{"id":{"type":"string","description":"As response: Automatically generated action ID. Ignored in requests."},"type":{"type":"string","description":"The type of chat action. See https://developer.dialox.ai/dev/message_spec/\n","required":true},"time":{"type":"string","description":"As response: Automatically filled with the time the action was sent. Ignored in requests."},"payload":{"type":"object","description":"The payload for the given action type.\n\nSee the <a href=\"/dev/message_spec/\">chat message specification</a>.\n"}}}}}}},"text/plain":{}}},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/whatsapp/templates":{"get":{"callbacks":{},"deprecated":false,"description":"Fetch the list of WhatsApp Business templates. Operation is only supported for Dialog360.\n\nSee: https://docs.360dialog.com/whatsapp-api/whatsapp-api/message-templates-api#get-template-list\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Fetch WhatsApp Business templates","operationId":"WhatsappController.list_templates","responses":{"200":{"description":"List of templates"}}},"post":{"callbacks":{},"deprecated":false,"description":"Create a new WhatsApp Business template. Operation is only supported for Dialog360.\n\nSee: https://docs.360dialog.com/whatsapp-api/whatsapp-api/message-templates-api#create-a-template\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Create a WhatsApp Business template","operationId":"WhatsappController.create_template","responses":{"200":{"description":"The created template"}}}},"/api/bot/{bot_id}/webhooks":{"get":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"List all of the configured webhooks of the bot.","operationId":"webhook.list","responses":{"200":{"description":"Webhook list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksResponse"}}}},"404":{"description":"Bot not found"}}},"post":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Create a new webhook for the bot.","operationId":"webhook.create","requestBody":{"description":"Creation parameters.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreateParams"},"example":{"url":"https://example.com/note","event":"note"}}}},"responses":{"200":{"description":"Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"404":{"description":"Bot not found"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/store/gtm/{gtm}":{"get":{"callbacks":{},"deprecated":false,"tags":["Store operations"],"parameters":[{"in":"path","name":"gtm","description":"The name of the GTM, example: NL","required":true,"schema":{"type":"string"}}],"summary":"Lists GTM's store","operationId":"store.gtm","responses":{"200":{"description":"Store listing for GTM","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Store listing"}}}},"404":{"description":"GTM not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/broadcast/whatsapp-template":{"get":{"callbacks":{},"deprecated":false,"tags":["Broadcast WhatsApp template operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"from","description":"The offset from which to show results","required":false,"schema":{"default":0,"type":"integer","minimum":0},"example":"10"},{"in":"query","name":"size","description":"The number of items to display","required":false,"schema":{"default":20,"type":"integer","minimum":0},"example":"20"},{"in":"query","name":"inserted_at.>=","description":"Only show requests after and equal to this datetime","required":false,"schema":{"type":"string","format":"date-time"}},{"in":"query","name":"inserted_at.<","description":"Only show requests before this datetime","required":false,"schema":{"type":"string","format":"date-time"}},{"in":"query","name":"dryrun","description":"Only show requests that were dryruns or explicitly not dryruns","required":false,"schema":{"type":"string"}}],"summary":"List all Whatsapp template broadcasts","operationId":"BroadcastController.index","responses":{"200":{"description":"Broadcasts","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"statistics":{"type":"object","description":"Aggregated statistics derived from the `statuses` field.\n","properties":{"pending":{"type":"integer"},"total":{"type":"integer"},"cancelled":{"type":"integer","deprecated":true,"description":"Deprecated in favour of more details statuses per user.\n\nWill always be 0.\n","nullable":true},"failed":{"type":"integer"},"sent":{"type":"integer"},"delivered":{"type":"integer"}},"additionalProperties":false},"template":{"type":"object"},"scheduled_at":{"type":"string","format":"date-time","nullable":true},"bot_id":{"type":"string","format":"uuid"}}}},"size":{"type":"integer"},"from":{"type":"integer"},"has_more":{"type":"boolean"}},"additionalProperties":false}}}},"403":{"description":"Invalid token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"callbacks":{},"deprecated":false,"description":"Creates a new broadcast of a Whatsapp template to the given list of users.\n\nThe broadcast is roughly similar to sending operator actions for each user\nin the list. Users will be automatically created if they do not exist yet\n(in the CRM). An attempt is then made to send the message. If this\nsucceeds, then the message is marked as `sent`. **This does not guarantee\ndelivery**.  For example, the phone number to which the message was send\nmight not have Whatsapp. Currently the only way to detect these cases is\nthrough the delivery status webhook events (or by looking in the studio\ninbox).\n\nThe broadcast can be given a `name` (such as a marketing campaign name),\nand can also be scheduled for the future using the `scheduled_at` field.\nBroadcasts that are scheduled for the future can still be cancelled up to\na minute before the `scheduled_at` date.\n\n## Retries\n\nUp to 5 attempts are made to send the message. If it still fails after\nthat, then the message is marked as failed.\n\n## Personalization of messages\n\nA `params` object is allowed at both the top-level and for each individual\nusers. These can be used in the parameters to the template to personalize the\nmessage to the user. For example:\n\n```javascript\n{\n  // Other fields omitted for brevity\n  \"template\": {\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"Hello {{ user.first_name }}\"\n          }\n        ]\n      }\n    ]\n  },\n  \"users\": [\n    {\n      \"user_id\": \"31612345678\",\n      \"params\": {\n        \"user\": {\n          \"first_name\": \"John\"\n        }\n      }\n    }\n  ]\n}\n```\n\nIn the above example, the user's first name is used to personalize the\nmessage for each user.\n\nThe top-level params object and user-level params object are merged with\nthe bot's variables for this user.\n\n## Interaction with Bubble\n\nThe broadcast is also made available in Bubble using a `broadcast` global\nthat contains the template name and the params.\n\nIf there's currently an ongoing conversation between the user and the bot,\nthen that conversation is closed and the template is given priority. However,\nif an operator has joined the conversation, then the template will fail.\n\n## Return value\n\nThe return value will include a broadcast ID which can later be used to\nfetch statistics about the broadcast.\n\n## Dry-run\n\nIf the `?dryrun=true` parameter is given then the broadcast will behave\ndifferently:\n\n1. No actual messages are sent.\n2. If two or more users were provided, then the last one will **always**\nfail with `reason = \"dryrun\"`.\n3. Validation of the request JSON _will_ be performed.\n4. Validation of the template components against the actual template\n_will_ be performed. The WhatsApp channel must therefore still be\nconfigured on the bot.\n","tags":["Broadcast WhatsApp template operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"dryrun","description":"Dry-run the broadcast","required":false,"schema":{"type":"boolean"},"example":"true"}],"summary":"Broadcast a Whatsapp template to a list of users","operationId":"BroadcastController.create","requestBody":{"description":"The broadcast payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappTemplateBroadcastRequest"}}}},"responses":{"200":{"description":"Broadcast summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappTemplateBroadcastResult"}}}},"400":{"description":"Bot error"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/notes":{"get":{"callbacks":{},"deprecated":false,"tags":["Notes"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"from","description":"The offset from which to show results","required":false,"schema":{"default":0,"type":"integer","minimum":0},"example":"10"},{"in":"query","name":"size","description":"The number of items to display","required":false,"schema":{"default":20,"type":"integer","minimum":0},"example":"20"},{"in":"query","name":"sort","description":"The sorting of the notes. The '-' prefix will return results in descending order.","required":false,"schema":{"type":"string","enum":["note","-note","inserted_at","-inserted_at","status","-status","start_at","-start_at","due_at","-due_at"]}},{"in":"query","name":"status","description":"Only show notes that have this status","required":false,"schema":{"type":"string","enum":["new","done"]}}],"summary":"List all the notes for the given bot.","operationId":"notes.list","responses":{"200":{"description":"Notes list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotesResponse"}}}},"404":{"description":"Bot not found"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/user":{"post":{"callbacks":{},"deprecated":false,"description":"Creates a new user with the provided user details. Will return an error when the user already exists.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Create a new user","operationId":"UserController.create","requestBody":{"description":"The user data","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User request object"}}}},"responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"User already exists."}}}},"/api/bot/{bot_id}/user/{user_id}/push_subscribe":{"post":{"callbacks":{},"deprecated":false,"description":"Stores a push token for a user, for a certain type of push notification provider; either web push, firebase, or expo.","tags":["User operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Store push token for a user","operationId":"UserController.push_subscribe","requestBody":{"description":"The push subscription","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push subscribe request"}}}},"responses":{"204":{"description":"Subscription succcessful"}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/operator-action":{"post":{"callbacks":{},"deprecated":false,"description":"Sends an operator action to the given conversation.\n\nThe given action must be one of the valid <b>operator actions</b> as documented in the\n<a href=\"/dev/message_spec/#operator-actions\">Chat Message Specification</a>.\n\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Send an action from the operator's point of view","operationId":"conversation.operator_action","requestBody":{"description":"The chat action payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation action body"}}}},"responses":{"200":{"description":"Operator action result","content":{"application/json":{"schema":{"type":"object","title":"Conversation action response","properties":{"action":{"type":"object","description":"The request to send to the conversation","title":"Chat Action","properties":{"id":{"type":"string","description":"As response: Automatically generated action ID. Ignored in requests."},"type":{"type":"string","description":"The type of chat action. See https://developer.dialox.ai/dev/message_spec/\n\nOne of:\n- text\n- typing\n- location\n- media\n- user_message\n- user_event\n- user_location\n- user_attachment\n- stop\n","required":true},"time":{"type":"string","description":"As response: Automatically filled with the time the action was sent. Ignored in requests."},"payload":{"type":"string","description":"The payload for the given action type.\n\nSee the <a href=\"/dev/message_spec/\">chat message specification</a>.\n","required":true}}},"user_id":{"type":"string","description":"The given user id"},"conversation_id":{"type":"string","description":"The given conversation id"},"bot_id":{"type":"string","description":"The given bot id"}}}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/tts/synthesize":{"post":{"callbacks":{},"deprecated":false,"description":"Converts text to speech using the bot's configured TTS voices and returns raw audio data (MP3 or WAV).\n\nRequires the 'tts-api' feature flag to be enabled for the bot's organization.\n\nThe endpoint supports optional voice selection by locale or specific voice ID. If no voice is specified,\nthe system will automatically select an appropriate voice based on the bot's locale configuration.\n\nOptional `format` selects the response container: `mp3` (default, 24 kHz for phone compatibility) or `wav` (16 kHz).\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"}],"summary":"Synthesize text to speech","operationId":"TTSController.synthesize","requestBody":{"description":"Text to synthesize","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTS Synthesize Request"}}}},"responses":{"200":{"description":"Audio data (MP3 or WAV depending on format parameter)","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}},"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad request (missing text, empty text, or invalid voice)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"TTS API not enabled for organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"TTS synthesis failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/analytics/users":{"get":{"callbacks":{},"deprecated":false,"tags":["Analytics operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"from","description":"The offset from which to show results","required":false,"schema":{"default":0,"type":"integer","minimum":0},"example":"10"},{"in":"query","name":"size","description":"The number of items to display","required":false,"schema":{"default":20,"type":"integer","minimum":0},"example":"20"},{"in":"query","name":"search_query","description":"Full text search https://developer.dialox.ai/customize/user_filters/","required":false,"schema":{"type":"string"}}],"summary":"Fetch a list of CRM users","operationId":"analytics.users","responses":{"200":{"description":"Users","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsUsersResponse"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/event/{name}":{"post":{"callbacks":{},"deprecated":false,"description":"Sends an event to the given conversation.\n\nThis endpoint allows one to post an arbitrary body which is sent\nas the event payload. The event name is encoded as part of the\nURL. This is particularly useful for receiving webhook payloads.\n\nAdditional query string parameters are added to the event\npayload under the <pre>query</pre> key, unless the event body is\nnot an object, in which case query string parameters are ignored.\n\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"event","description":"The name of the event","required":true,"schema":{"type":"string"}}],"summary":"Send an event into the conversation","operationId":"conversation.user_action (2)","requestBody":{"description":"The event payload","required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"204":{"description":"Empty response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/audio-transcribe":{"post":{"callbacks":{},"deprecated":false,"description":"Accepts a WAV audio file or an audio URL of a conversation\nbetween two people where each person has their own channel (L or\nR) and transcribes this conversation.  When a mono file is\npassed in, we assume it is the audio of the caller.\n\nThe transcript is made available in the conversation history.\nAdditionally, a text_transcript event is emitted in the conversation (and\nto anyone subscribed on the webhook).\n\nNormally, a 201 response is returned immediately and the\ntranscribe request is queued. However it is possible to pass\nwait_for_completion=true to have the calling HTTP request wait\nfor the transcription to complete.\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Transcribe and add audio file to conversation","operationId":"conversation.transcribe","requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"extra":{"type":"object","description":"Additional arbitrary data which will be sent along in the $call_transcript event payload"},"provider":{"type":"string","enum":["google","microsoft_openai","deepgram","google_ai","speechmatics","juvoly","reson8"],"description":"The speech-to-text provider. Default: google"},"locale":{"type":"string","description":"The language 2-letter ISO code of the input audio file, or\n`auto`, or `detect`.  `auto` means that we leave the\nlanguage detection up to the backend; `detect` means that\nDialoX performs language detection and sends the detected\nvalue to the transcription backend.\n\nOpenAI / Microsoft OpenAI (whisper): Locale parameter is\nignored, the language is always detected by the Whisper\nmodel itself, therefore `auto`.\n\nGoogle (non-AI): `detect` is supported on all models; `auto`\nis only supported on the Chirp models.\n\nSpeechmatics: both `detect` and `auto` are supported;\nhowever be aware that `auto` does not work on all inputs on\nthe speechmatics side and might fail to transcribe the\nentirely; therefore `detect` is the default.\n\nDeepgram both `detect` and `auto` are supported; `auto` is\nthe default.\n\nJuvoly: Locale parameter is ignored, the language is always\ndetected by the model itself, therefore `auto`.\n"},"frontend":{"type":"string","description":"Channel of the conversation (use: 'phone' normally)"},"extra_locales":{"type":"array","description":"Additional locales to consider, (max 2 in case of Google)","items":{"type":"string"}},"model":{"type":"string","description":"The provider-specific name of the speech-to-text model to use.\n\n * For **deepgram**: one of nova-2, nova, enhanced, base, whisper, whisper-large (default: nova-2)\n * For **google**: one of chirp_2, long, short, telephony, chirp_telephony, chirp, latest_long, latest_short, command_and_search, phone_call, video, default (default: chirp_2)\n * For **google_ai**: one of gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.0-flash, gemini-2.0-flash-lite, gemini-1.5-flash, gemini-1.5-pro, gemini-1.5-flash-8b (default: gemini-3.7-flash)\n * For **juvoly**: one of generic, multilingual, kolibri, radiology (default: generic)\n * For **microsoft_openai**: one of whisper (default: whisper)\n * For **reson8**: one of default (default: default)\n * For **speechmatics**: one of speechmatics (default: speechmatics)\n"},"wait_for_completion":{"type":"boolean","description":"Let the request wait for transcription completion"},"audio_url":{"type":"string","format":"uri"},"callback_url":{"type":"string","format":"uri","description":"The URL to send the transcription result to as a POST request"},"destination_number":{"type":"string"},"origin_number":{"type":"string"},"audio_file":{"type":"string","format":"binary"},"audio_url_auth_header":{"type":"string","description":"Contents of the `Authorization:` header for the retrieval of the `audio_url`. Use this when the audio URL to be transcribed is protected by a token or basic auth."},"call_date":{"type":"string","format":"date-time"},"force_mono":{"default":false,"type":"boolean","description":"If true, forces the input audio to be downmixed to a single mono channel before transcription. This can reduce costs for providers that charge based on the number of channels."},"links_expire":{"type":"boolean","description":"If set, the various urls (text, audio, json) will be returned as temporarily valid signed urls. The current expiration is set to 1 hour."},"no_speech_prob_cutoff":{"type":"number","description":"The cutoff point which removes transcribed text above the maximum of the no-speech probability detection. Must be between 0 and 1, where 1 does not cut off anything. Default is 0.5."}}}}}},"responses":{"200":{"description":"In case of wait_for_completion=true, this will contain the result of the transcription.","content":{"application/json":{"schema":{"properties":{"request":{"type":"object","description":"The input transcribe request"},"audio_url":{"type":"string","format":"uri","description":"URL to the original audio file"},"caller_text":{"type":"string","description":"All text the caller has said on the transcript"},"detected_language":{"type":"string","description":"ISO language code detected by the transcription provider, when available (Speechmatics language identification)"},"json_url":{"type":"string","format":"uri","description":"JSON version of the transcript as chat messages"},"raw_json_url":{"type":"string","format":"uri","description":"Raw JSON as returned from the Google speech API"},"text_url":{"type":"string","format":"uri","description":"Text version transcript"}}}}}},"201":{"description":"The transcription request has been received and will be processed"},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/meeting-transcription":{"post":{"callbacks":{},"deprecated":false,"description":"Stores a meeting transcript posted by an external transcription\nservice on a user conversation.\n\nThe `user_id` and `conversation_id` path parameters identify the\nconversation that receives the transcript. Each segment is recorded as\nan embedded action so that the transcript is reviewable through the\nstandard Studio inbox. The full transcript is also stored in\n`conversation_data.transcript`, which makes it discoverable through the\n`Shomi.get_transcripts/1` BubbleScript builtin.\n\nThe endpoint is idempotent for the given conversation: re-posting to the\nsame `user_id`/`conversation_id` reuses the existing conversation rather\nthan creating a new one. New segments are appended on subsequent calls.\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Ingest a meeting transcript into a conversation","operationId":"conversation.transcription","requestBody":{"description":"External meeting transcript payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTranscriptionRequest"}}}},"responses":{"200":{"description":"Transcript stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionResponse"}}}},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/analytics/conversations":{"get":{"callbacks":{},"deprecated":false,"tags":["Analytics operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"from","description":"The offset from which to show results","required":false,"schema":{"default":0,"type":"integer","minimum":0},"example":"10"},{"in":"query","name":"size","description":"The number of items to display","required":false,"schema":{"default":20,"type":"integer","minimum":0},"example":"20"},{"in":"query","name":"start_date","description":"Only show conversations that started after and equal to this date","required":false,"schema":{"type":"string"}},{"in":"query","name":"end_date","description":"Only show conversations that started before this date.","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","description":"Show conversations with this status","required":false,"schema":{"type":"array"}},{"in":"query","name":"operator_id","description":"Show conversations that were assigned to this operator","required":false,"schema":{"type":"string"}},{"in":"query","name":"channels","description":"Limit the conversations to one of these channels","required":false,"schema":{"type":"array"}},{"in":"query","name":"include_ids","description":"Only return these conversations","required":false,"schema":{"type":"array"}},{"in":"query","name":"include_tags","description":"Match rows that have all of these tags","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"exclude_tags","description":"Match rows that do no have any of these tags","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"include_tag_prefixes","description":"Match rows that have all of these tag prefixes","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"exclude_tag_prefixes","description":"Match rows that do not have any of these tag prefixes","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"search_query","description":"Full text search https://developer.dialox.ai/customize/user_filters/","required":false,"schema":{"type":"string"}}],"summary":"Fetch a list of conversations","operationId":"analytics.conversations","responses":{"200":{"description":"Conversations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationsResponse"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/conversations/summary":{"get":{"callbacks":{},"deprecated":false,"tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"start_date","description":"Only show conversations that started after and equal to this date","required":true,"schema":{"type":"string"}},{"in":"query","name":"end_date","description":"Only show conversations that started before this date.","required":true,"schema":{"type":"string"}}],"summary":"Fetch a summary of the conversations over the given period.","operationId":"BotController.conversations_summary","responses":{"200":{"description":"Conversations summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationSummaryResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/studio-users/{id}":{"get":{"callbacks":{},"deprecated":false,"tags":["Studio user"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the studio user","required":true,"schema":{"type":"string"}}],"summary":"Get a specific user by ID","operationId":"studio_users.show","responses":{"200":{"description":"Studio user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudioUserRoleResponse"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"callbacks":{},"deprecated":false,"tags":["Studio user"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the studio user","required":true,"schema":{"type":"string"}}],"summary":"Update fields of a user by ID","operationId":"studio_users.patch","requestBody":{"description":"The fields to update","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudioUserPatch"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/StudioUserPatchForm"}}}},"responses":{"200":{"description":"Studio user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudioUserRoleResponse"}}}},"404":{"description":"Bot or user not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/store/partner/{partner_id}":{"get":{"callbacks":{},"deprecated":false,"tags":["Store operations"],"parameters":[{"in":"path","name":"partner_id","description":"The partner's ID","required":true,"schema":{"type":"string","format":"uuid"}}],"summary":"Lists the partner's store","operationId":"store.partner","responses":{"200":{"description":"Store listing for partner","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Store listing"}}}},"404":{"description":"Partner not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/{user_id}":{"get":{"callbacks":{},"deprecated":true,"description":"See /api/bot/:bot_id/user/:user_id","tags":["⚠️ Deprecated"],"parameters":[],"summary":"⚠️ Deprecated","operationId":" (2)","responses":{"200":{"description":"result"}}}},"/api/bot/{bot_id}/tts/voices":{"get":{"callbacks":{},"deprecated":false,"description":"Returns a list of all available text-to-speech voices for the bot.\n\nRequires the 'tts-api' feature flag to be enabled for the bot's organization.\n\nThe voices are filtered based on the bot's supported locales and available TTS providers.\nOptional locale filtering allows you to get voices for a specific language.\n\nEach voice includes metadata about its capabilities, such as whether it supports speed adjustment and SSML.\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"locale","description":"Filter voices by locale (e.g. 'en' for English)","required":false,"schema":{"type":"string"}}],"summary":"List available TTS voices","operationId":"TTSController.voices","responses":{"200":{"description":"List of available voices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTS Voices Response"}}}},"403":{"description":"TTS API not enabled for organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/whatsapp/templates/{template}":{"delete":{"callbacks":{},"deprecated":false,"description":"Delete a WhatsApp Business template. Operation is only supported for Dialog360.\n\nSee: https://docs.360dialog.com/whatsapp-api/whatsapp-api/message-templates-api#delete-a-template\n","tags":["Bot operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"template","description":"The name of the WhatsApp Business template.","required":true,"schema":{"type":"string"}}],"summary":"Delete a WhatsApp Business template","operationId":"WhatsappController.delete_template","responses":{"200":{"description":"A deletion confirmation"},"400":{"description":"The request could not be handled due to invalid parameters given by the client."}}}},"/api/bot/{bot_id}/user/{user_id}/conversation/{conversation_id}/user-action":{"post":{"callbacks":{},"deprecated":false,"description":"Sends a user action to the given conversation.\n\nThe given action must be one of the valid <b>user actions</b> as documented in the\n<a href=\"/dev/message_spec/#user-actions\">Chat Message Specification</a>.\n\n","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"},{"in":"path","name":"conversation_id","description":"\nThe identifier of the conversation that is used for this API call.\n\nConversation IDs are unique per user. For channels which only\nhave a single conversation, like Whatsapp, you can use\n<tt>main</tt> as the conversation ID.\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Send an action from the user's point of view","operationId":"conversation.user_action","requestBody":{"description":"The chat action payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation action body"}}}},"responses":{"204":{"description":"Empty response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bot or conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/user/{user_id}/conversation":{"get":{"callbacks":{},"deprecated":false,"description":"Retrieve all active conversations belonging to a user.","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Retrieve a users's conversations","operationId":"conversation.index","responses":{"200":{"description":"Conversation list","content":{"application/json":{"schema":{"type":"array","description":"List of conversations","title":"Conversations","items":{"$ref":"#/components/schemas/Conversation"}}}}}}},"post":{"callbacks":{},"deprecated":false,"description":"Create a new conversation for a user","tags":["Conversation operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"user_id","description":"\nThe identifier of the user that is used for this API call.\n\nThe value and format of the user ID is dependent on the platform\nthat is used. On most platforms, the user id equal to the id\nthat the DialoX platform gets from its channel integration.\n\nFor Whatsapp and phone channels, it is the users's E.164\nnormalized phone number.  For Facebook Messenger, it is the\nPage-Scoped User ID (PSUID).\n","required":true,"schema":{"type":"string"},"example":"fdsf79df68ds9af8"}],"summary":"Create a new conversation","operationId":"conversation.create","requestBody":{"description":"The create request","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Create conversation body"}}}},"responses":{"200":{"description":"The new conversation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation"}}}}}}},"/api/bot/{bot_id}/webhooks/{id}":{"get":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the webhook","required":true,"schema":{"type":"string"},"example":"a2698755-ce49-4f0f-a0b4-79da3b7ca01a"}],"summary":"Fetch a single webhook from the bot.","operationId":"webhook.show","responses":{"200":{"description":"Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"404":{"description":"Bot or webhook not found"}}},"put":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the webhook","required":true,"schema":{"type":"string"},"example":"a2698755-ce49-4f0f-a0b4-79da3b7ca01a"}],"summary":"Update an existing webhook","operationId":"webhook.update","requestBody":{"description":"Update parameters.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdateParams"},"example":{"token":"secret","url":"https://example.com/note","event":"note"}}}},"responses":{"200":{"description":"Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"404":{"description":"Bot or webhook not found"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}},"delete":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the webhook","required":true,"schema":{"type":"string"},"example":"a2698755-ce49-4f0f-a0b4-79da3b7ca01a"}],"summary":"Delete a webhook","operationId":"webhook.delete","responses":{"204":{"description":"Webhook successfully deleted"},"404":{"description":"Bot or webhook not found"}}},"patch":{"callbacks":{},"deprecated":false,"tags":["Webhook"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"id","description":"The ID of the webhook","required":true,"schema":{"type":"string"},"example":"a2698755-ce49-4f0f-a0b4-79da3b7ca01a"}],"summary":"Update an existing webhook","operationId":"webhook.update (2)","requestBody":{"description":"Update parameters.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdateParams"},"example":{"token":"secret","url":"https://example.com/note","event":"note"}}}},"responses":{"200":{"description":"Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"404":{"description":"Bot or webhook not found"},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}},"/api/bot/{bot_id}/broadcast/whatsapp-template/{id}":{"get":{"callbacks":{},"deprecated":false,"tags":["Broadcast WhatsApp template operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"broadcast_id","description":"The broadcast identifier","required":true,"schema":{"type":"string"},"example":"167063e2-a20a-414a-b21a-8c31e0eda245"}],"summary":"Fetch information of a previous broadcast","operationId":"BroadcastController.show","responses":{"200":{"description":"Broadcast summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappTemplateBroadcastResult"}}}},"400":{"description":"Bot error"}}},"delete":{"callbacks":{},"deprecated":false,"description":"It's only possible to deleted scheduled broadcasts, and only more than a\nminute before they're scheduled to be broadcast.\n","tags":["Broadcast WhatsApp template operations"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"path","name":"broadcast_id","description":"The broadcast identifier","required":true,"schema":{"type":"string"},"example":"167063e2-a20a-414a-b21a-8c31e0eda245"}],"summary":"Delete a scheduled broadcast","operationId":"BroadcastController.delete","responses":{"204":{"description":"Broadcast successfully deleted"},"400":{"description":"Not allowed to delete this broadcast"}}}},"/api/bot/{bot_id}/{user_id}/event/{event}":{"post":{"callbacks":{},"deprecated":true,"description":"See /api/bot/:bot_id/user/:user_id/event/:name","tags":["⚠️ Deprecated"],"parameters":[],"summary":"⚠️ Deprecated","responses":{"200":{"description":"result"}}}},"/api/bot/{bot_id}/broadcast/whatsapp-template/search-info":{"get":{"callbacks":{},"deprecated":false,"description":"The available sorting and filtering options may differ based on the\nsettings of the bot. As such, they cannot be fully documented in the\nREST-API. This endpoint returns the full list of available search options\nfor the index endpoint.\n\nThe filters can be given to the index endpoint as query parameters.\nSorting is given as the `sort` query parameter.\nThe search filters are used in the search query. The full syntax can be\nfound [in the documentation](https://developer.dialox.ai/customize/user_filters/).\n","tags":["Broadcast WhatsApp template operations"],"parameters":[],"summary":"Search info","operationId":"BroadcastController.search-info","responses":{"200":{"description":"Search info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchInfo"}}}},"403":{"description":"Invalid token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot/{bot_id}/studio-users":{"get":{"callbacks":{},"deprecated":false,"tags":["Studio user"],"parameters":[{"in":"path","name":"bot_id","description":"The identifier of the bot that is used for this API call. A bot's ID is always a UUID,\nfor example: <tt>2d7da687-37e4-4a0e-a7b2-6eaa8759adf6</tt>. You can find the bot's id by looking in the URL of the DialoX studio.\n","required":true,"schema":{"type":"string","format":"uuid"},"example":"2d7da687-37e4-4a0e-a7b2-6eaa8759adf6"},{"in":"query","name":"sort","description":"The sorting of the returned roles. The '-' prefix will return results in descending order.","required":false,"schema":{"type":"string","enum":["name","-name","inserted_at","-inserted_at","last_active_at","-last_active_at"]}},{"in":"query","name":"search_query","description":"Full text search https://developer.dialox.ai/customize/user_filters/","required":false,"schema":{"type":"string"}},{"in":"query","name":"include_tags","description":"Match rows that have all of these tags","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"exclude_tags","description":"Match rows that do no have any of these tags","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"include_tag_prefixes","description":"Match rows that have all of these tag prefixes","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"exclude_tag_prefixes","description":"Match rows that do not have any of these tag prefixes","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"email","description":"Filter by email. Matches exactly","required":false,"schema":{"type":"string"}},{"in":"query","name":"roles[]","description":"Only match users that have all of these roles","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"summary":"List all the studio user roles for the given bot.","operationId":"studio_users.list","responses":{"200":{"description":"Studio users","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudioUserRolesResponse"}}}},"404":{"description":"Bot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonErrorResponse"}}}}}}}},"servers":[{"url":"https://bsqd.me/"}],"security":[{"api_auth":[]}],"openapi":"3.0.0"}