openapi: 3.2.0 info: title: RentalReady Messages API version: 1.0.0 (api) description: 'This API enables you to access and update resources from RentalReady (GuestReady PMS) ### Throttling Our API supports up to 400 requests per minute ' servers: - url: https://pms.rentalready.io/api/v3/ description: Base URL declared by the provider in apis.yml (roadmap#122). tags: - name: Messages paths: /api/v3/messages/: get: operationId: messages_list description: Retrieve a list of messages accessible to the current user. summary: List messages parameters: - in: query name: channel schema: type: - string - 'null' enum: - airbnb - booking - booking-com - booking-qa - email - guestspace - homeaway - internal - sms - support - vrbo - vrbo_qa - whatsapp description: '* `airbnb` - Airbnb * `homeaway` - HomeAway * `vrbo` - VRBO * `vrbo_qa` - VRBO (QA) * `email` - Email * `sms` - SMS * `booking` - Booking.com (Channel-Manager) * `booking-com` - Booking.com * `booking-qa` - Booking.com QA * `internal` - Internal * `whatsapp` - WhatsApp * `guestspace` - Guest space * `support` - Support' - in: query name: conversation_id schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: sender schema: type: string - in: query name: sent_after schema: type: string format: date-time - in: query name: sent_before schema: type: string format: date-time tags: - Messages security: - oauth2: - messages:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMessageList' description: '' post: operationId: messages_create description: 'Create a new message in a conversation. **Accepted `channel` values:** - `internal` (default): Internal note, not visible to the guest. - `guestspace`: Sent via the guest portal. - `airbnb`: Sent via the Airbnb messaging thread. Requires a channel manager link. Note: Airbnb enforces a 72-hour reply window. - `booking-com`: Sent via the Booking.com messaging thread. Requires a channel manager link. Note: no HTML, limited length. - `homeaway`: Sent via the HomeAway messaging thread. Requires a channel manager link. - `vrbo`: Sent via the VRBO messaging thread. Requires a channel manager link. - `email`: Sent via email to the guest. - `sms`: Sent by SMS. Requires the guest to have a phone number, and the caller to hold the `can_send_twilio_sms` permission (`403` otherwise). - `whatsapp`: Sent via WhatsApp. Requires a WhatsApp number on the property manager and an open Meta customer-service window, i.e. the guest sent a WhatsApp message within the last 24 hours. A `400` error is returned when an OTA channel (`airbnb`, `booking-com`, `homeaway`, `vrbo`) is requested but the conversation has no active channel manager connection, and when `sms` or `whatsapp` is requested but the conversation cannot reach the guest that way. The error lists the channels the conversation can actually use.' summary: Create message tags: - Messages requestBody: content: application/json: schema: $ref: '#/components/schemas/MessageCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MessageCreate' multipart/form-data: schema: $ref: '#/components/schemas/MessageCreate' required: true security: - oauth2: - messages:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/MessageCreate' description: '' /api/v3/messages/{id}/: get: operationId: messages_retrieve description: Retrieve a specific message by ID. summary: Retrieve message parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this message. required: true tags: - Messages security: - oauth2: - messages:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Message' description: '' components: schemas: Message: type: object properties: id: type: integer readOnly: true conversation_id: type: integer readOnly: true sender: allOf: - $ref: '#/components/schemas/SenderEnum' readOnly: true content: type: - string - 'null' readOnly: true channel: readOnly: true oneOf: - $ref: '#/components/schemas/ChannelEnum' - $ref: '#/components/schemas/NullEnum' sent_at: type: string format: date-time readOnly: true required: - channel - content - conversation_id - id - sender - sent_at MessageCreate: type: object properties: conversation_id: type: integer content: type: string channel: allOf: - $ref: '#/components/schemas/ChannelEnum' default: internal required: - content - conversation_id NullEnum: enum: - null SenderEnum: enum: - guest - staff type: string description: '* `guest` - Guest * `staff` - Staff' ChannelEnum: enum: - airbnb - homeaway - vrbo - vrbo_qa - email - sms - booking - booking-com - booking-qa - internal - whatsapp - guestspace - support type: string description: '* `airbnb` - Airbnb * `homeaway` - HomeAway * `vrbo` - VRBO * `vrbo_qa` - VRBO (QA) * `email` - Email * `sms` - SMS * `booking` - Booking.com (Channel-Manager) * `booking-com` - Booking.com * `booking-qa` - Booking.com QA * `internal` - Internal * `whatsapp` - WhatsApp * `guestspace` - Guest space * `support` - Support' PaginatedMessageList: type: object required: - count - results properties: count: type: integer example: 123 next: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Message' limit: type: integer example: 50 securitySchemes: basicAuth: type: http scheme: basic cookieAuth: type: apiKey in: cookie name: sessionid oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: /o/authorize/ tokenUrl: /o/token/ refreshUrl: /o/token/ scopes: read: Read scope write: Write scope amenities:read: Read amenities amenities:write: Create, update and delete amenities photos:write: Create, update and delete photos reservations:read: Read reservations reservations:write: Create, update and cancel reservations reservation_platform:read: Read reservation platform reviews:read: Read reviews reviews:write: Write reviews owners:read: Read owners owners:write: Write owners hosts:read: Read hosts (deprecated) hosts:write: Write hosts (deprecated) offices:read: Read offices property_managers:read: Read property managers onboarding_requests:read: Read onboarding requests listing_requests:read: Read listing requests pricing:read: Read pricing pricing:write: Create, update and delete pricing users:read: Read user data calendar:read: Read calendar calendar:write: Write calendar rentals:read: Read rentals rentals:write: Create, update and delete rentals issues:read: Read issues issues:write: Write issues incidents:read: Read incidents incidents:write: Write incidents missions:read: Read missions missions:write: Write missions agents:read: Read agents smart_schedulers:read: Read smart schedulers smart_schedulers:write: Write smart schedulers neighbourhoods:read: Read neighbourhoods payment_links:read: Read payment links swikly_deposits:read: Read swikly deposits payout_adjustments:read: Read payout adjustments payout_adjustments:write: Write payout adjustments payment_acceptance_transactions:read: Read payment acceptance transactions payment_acceptance_transactions:write: Write payment acceptance transactions accounting_invoice:read: Read accounting invoices accounting_invoice:write: Write accounting invoices guest_registration:read: Read guest registration data conversations:read: Read conversations conversations:write: Write conversations messages:read: Read messages messages:write: Write messages inquiries:read: Read inquiries city_tax_rules:read: Read city tax rules custom_fields:read: Read custom fields custom_fields:write: Write custom fields tokenAuth: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"