openapi: 3.2.0 info: title: wazo-chatd Messages API description: Control your message and presence from a REST API version: 1.0.0 contact: name: Wazo Dev Team url: https://wazo-platform.org/ email: dev@wazo.community x-logo: url: https://wazo-platform.org/images/logo-black.svg backgroundColor: '#FAFAFA' altText: Wazo Logo servers: - url: /1.0 security: - wazo_auth_token: [] tags: - name: messages paths: /users/me/rooms/messages: get: operationId: list_rooms_messages summary: List rooms messages description: '**Required ACL:** `chatd.users.me.rooms.messages.read`' tags: - messages parameters: - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/search_distinct' - $ref: '#/components/parameters/distinct' responses: '200': description: Messages content: application/json: schema: $ref: '#/components/schemas/Messages' '400': $ref: '#/components/responses/InvalidRequest' /users/me/rooms/{room_uuid}/messages: post: operationId: create_room_message summary: Create room messages description: '**Required ACL:** `chatd.users.me.rooms.{room_uuid}.messages.create`' tags: - messages parameters: - $ref: '#/components/parameters/room_uuid' responses: '201': description: Message created (no outbound delivery) content: application/json: schema: $ref: '#/components/schemas/Message' '202': description: Message created, outbound delivery accepted content: application/json: schema: $ref: '#/components/schemas/Message' '400': $ref: '#/components/responses/InvalidRequest' '404': $ref: '#/components/responses/NotFoundError' '409': description: sender_identity_uuid is required but missing, or identity is not reachable requestBody: content: application/json: schema: $ref: '#/components/schemas/UserMessagePOST' description: message to create required: true get: operationId: list_room_message summary: List room messages description: '**Required ACL:** `chatd.users.me.rooms.{room_uuid}.messages.read`' tags: - messages parameters: - $ref: '#/components/parameters/room_uuid' - $ref: '#/components/parameters/from_date' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/search' responses: '200': description: Messages content: application/json: schema: $ref: '#/components/schemas/Messages' '400': $ref: '#/components/responses/InvalidRequest' '404': $ref: '#/components/responses/NotFoundError' components: schemas: APIError: type: object allOf: - $ref: '#/components/schemas/Error' - properties: resource: description: Resource name of the error type: string Messages: title: UserItems properties: items: type: array items: $ref: '#/components/schemas/Message' filtered: type: integer total: type: integer RoomRelationBase: properties: uuid: type: string description: The UUID of the room readOnly: true UserMessagePOST: properties: content: type: string description: The content of the message alias: type: string description: Alias/nickname of the sender sender_identity_uuid: type: string format: uuid description: The UUID of the sender's identity to use for outbound delivery. Required when the room contains external participants. required: - content Message: properties: uuid: type: string description: The UUID of the message readOnly: true content: type: string description: The content of the message alias: type: string description: Alias/nickname of the sender delivery: $ref: '#/components/schemas/MessageDelivery' readOnly: true user_uuid: type: string description: user uuid of the sender tenant_uuid: type: string description: tenant uuid of the sender wazo_uuid: type: string description: wazo uuid of the sender created_at: type: string description: The date of the message's creation readOnly: true room: $ref: '#/components/schemas/RoomRelationBase' MessageRecipient: properties: identity: type: string description: The recipient's external address (e.g. phone number) readOnly: true status: type: string description: 'Current delivery state for this recipient. One of: pending, retrying, accepted, sent, delivered, failed, dead_letter. ' readOnly: true updated_at: type: string description: Timestamp of the latest status transition for this recipient readOnly: true Error: title: Error description: Error message for the client properties: message: description: Human readable explanation of the error type: string error_id: description: Identifier of the type of error. It is more precise than the HTTP status code. type: string details: description: Additional information about the error. The keys are specific to each error. type: object timestamp: description: Time when the error occured type: number format: timestamp MessageDelivery: description: 'Delivery metadata for the message. Always present on the response. Internal messages report `type=internal`, `backend=null`, and an empty `recipients` array. External messages carry the channel info and one recipient per outbound leg. ' properties: type: type: string description: The messaging type (e.g. 'internal', 'sms') readOnly: true backend: type: string description: The connector backend name (e.g. 'twilio'). Null for internal messages. readOnly: true recipients: type: array description: Per-recipient delivery state. Empty for internal messages. readOnly: true items: $ref: '#/components/schemas/MessageRecipient' responses: NotFoundError: description: The resource requested was not found on the server content: application/json: schema: $ref: '#/components/schemas/APIError' InvalidRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/APIError' parameters: room_uuid: name: room_uuid in: path description: The UUID of the room required: true schema: type: string from_date: name: from_date in: query description: 'The date and time from which to retrieve messages. Example: 2019-06-12T10:00:00.000+00:00' schema: type: string format: date-time offset: required: false name: offset in: query description: Number of items to skip over in the list. Useful for pagination. schema: type: integer order: required: false name: order in: query description: Name of the field to use for sorting the list of items returned. schema: type: string direction: required: false name: direction in: query description: Sort list of items in 'asc' (ascending) or 'desc' (descending) order schema: type: string enum: - asc - desc search: required: false name: search in: query description: Search term for filtering a list of items. Only items with a field containing the search term will be returned. Required if `distinct` is not specified. schema: type: string search_distinct: required: false name: search in: query description: Search term for filtering a list of items. Only items with a field containing the search term will be returned. schema: type: string distinct: required: false name: distinct in: query description: Distinct list results by field. Always picks the latest entry. Required if `search` is not specified. schema: type: string enum: - room_uuid limit: required: false name: limit in: query description: Maximum number of items to return in the list schema: type: integer securitySchemes: wazo_auth_token: type: apiKey name: X-Auth-Token in: header x-xivo-port: 9304 x-xivo-name: chatd x-apievangelist-source: harvested_from: https://github.com/wazo-platform/wazo-chatd assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves at /api/chatd/1.0/api/api.yml (see wazo_chatd/plugins/api/http.py — xivo.chain_map.ChainMap) spec_version: Swagger 2.0 (as published by Wazo) harvested: '2026-08-17'