components: responses: {} schemas: Error: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object Template: description: 'Templates save you time and promote consistency in communication with your customers. Instead of typing out a new message each time you try to schedule an appointment or answer a question about billing, simply use a template. ' properties: accessLevel: description: The access level of the template. If `locationUid` is filled, this property will be `LOCATION`. enum: - location - organization example: location nullable: true type: string attachmentUrl: description: URL of template attachment. example: https://www.podium.com/ nullable: true type: string createdAt: description: When the template was created. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string deletedAt: description: When the template was deleted. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string isFavorite: description: Flag that indicates if this template is the favorite. nullable: true type: boolean lastUsedAt: description: When the template was last used. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string location: description: Reference to the Location resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object nonDeletable: description: Flag that indicates if template can be deleted or not. nullable: true type: boolean organization: description: Reference to the Organization resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object subject: description: The subject of the template. nullable: true type: string templateItems: items: description: The template items object. properties: applicationUid: description: Podium unique identifier for The unique identifier for the application of the template item.. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string applicationUrl: description: The application URL of the template item. example: https://www.podium.com/ nullable: true type: string attachmentContentType: description: The application content-type of the template item. nullable: true type: string attachmentUrl: description: The attachment URL of the template item. example: https://www.podium.com/ nullable: true type: string body: description: The body of the template item. nullable: true type: string data: description: The data of the template item. nullable: true type: string iconUrl: description: The icon URL of the template item. example: https://www.podium.com/ nullable: true type: string keys: items: description: The template items object. properties: name: description: The name of the key. nullable: true type: string required: description: Flag to indicate if key is required or not. nullable: true type: boolean type: object nullable: true type: array subtitle: description: The subtitle of the template item. nullable: true type: string title: description: The title of the template item. nullable: true type: string type: description: The type of the template item. nullable: true type: string uid: description: Podium unique identifier for The unique identifier of the template Item.. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object nullable: true type: array text: description: The title of the template. nullable: true type: string title: description: The title of the template nullable: true type: string type: description: The type of the template enum: - custom - review_invite - review_invite_backup example: custom nullable: true type: string uid: description: Podium unique identifier for The unique identifier of the template.. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string updatedAt: description: The date/time the template was last updated. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string user: description: Reference to the User resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object variables: description: The template variables. items: type: string nullable: true type: array title: Template type: object message: description: 'A message from a Podium conversation. Messages include each exchange within a conversation and include conversations for all channels within Podium (Facebook Messenger, SMS text, GMB, etc). ## Deprecations The `contact` and `sender` object fields have been deprecated, they are currently only available in webhook and will be completely removed at some point in the future. ' properties: attachmentUrl: description: URL of message attachment. This field is deprecated, please refer to the attachmentUrl in the items array. example: https://www.podium.com/ nullable: true type: string body: description: Body of the message. example: Hello there. nullable: true type: string contact: deprecated: true description: To whom the message was sent or from whom it was received. properties: externalIdentifier: description: Identifier of the contact that is used external to Podium. example: 123-abc nullable: true type: string name: description: Name of the contact. example: Joe Orange nullable: true type: string uid: description: Podium unique identifier for contact. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object contactName: description: Name of the contact. example: Joe Orange nullable: true type: string conversation: description: The conversation to which the message belongs. properties: assignedUserUid: description: Podium unique identifier for user. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string channel: description: Channel that the conversation is in. properties: identifier: description: Identifies the Messenger channel. Must be a valid email address or a phone number. Non-US/Canada numbers must include the country code (e.g. +61 for AUS) example: email@email.com nullable: true type: string type: description: Messenger channel for the conversation. enum: - apple - car_wars - email - facebook - fallback_email - google - google_brand - iframe - instagram - phone - secure - sms - text - whatsapp example: email nullable: true type: string type: object startedAt: description: When the conversation was started. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string uid: description: Podium unique identifier for conversation. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object createdAt: description: When the message was created. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string failureReason: description: If the message failed to send, this will be the reason. example: Attempted to send SMS to a landline. nullable: true type: string items: items: description: A list of all items associated with the message uid. This includes text bodies and attachments. nullable: true properties: attachmentContentType: description: MIME type of the message attachment. example: image/png nullable: true type: string attachmentUrl: description: 'Public URL of the message attachment. NOTE: There is an expiry of 7 days on this URL.' example: https://www.podium.com/image.png nullable: true type: string body: description: Body of the message. example: https://www.podium.com/image.png nullable: true type: string createdAt: description: When the message item was created. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string deliveryStatus: description: Status of the message item. example: sent nullable: true type: string encryptedAt: description: When the item was encrypted. `null` if the item is not encrypted. example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string sendBody: description: The send body of the message item that the end consumer sees. example: 'null' nullable: true type: string sourceType: description: The source type of the message item. example: outbound nullable: true type: string type: description: The type of the message item. example: attachment nullable: true type: string uid: description: Podium unique identifier for message item. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object type: array location: description: Location from which the message was sent or to where the message was sent. properties: organizationUid: description: Podium unique identifier for organization. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string uid: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object sender: deprecated: true description: If the message was sent from Podium then this will be the Podium user who sent it. properties: uid: description: Podium unique identifier for user. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object senderUid: description: Podium unique identifier for user. If the message was sent from Podium then this will be the Podium user who sent it. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string uid: description: Podium unique identifier for message. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string webchatUrl: description: The page URL where the webchat widget was submitted from. Only present when the message originated from a website widget. example: https://www.example.com/contact nullable: true type: string title: message type: object info: title: Messenger version: 2021.04.01 openapi: 3.0.0 paths: /v4/conversations/{conversation_uid}/messages: get: callbacks: {} description: 'Retrieve limited number of messages from a conversation. Required scope: `read_messages`.' operationId: message.index parameters: - description: Podium unique identifier for conversation. in: path name: conversation_uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string - description: '' in: query name: cursor required: false schema: description: Cursor used to access next or previous page in pagination. example: MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw type: string responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/message' type: array metadata: description: Additional response data. properties: nextCursor: description: Cursor to get next set of items. example: MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw type: string previousCursor: description: Cursor to get previous set of items. example: MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw type: string totalItems: description: Total number of items available. type: integer url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Retrieve messages from a conversation tags: - Message /v4/conversations/{conversation_uid}/messages/{uid}: get: callbacks: {} description: 'Retrieve a message from a conversation. Required scope: `read_messages`.' operationId: message.get parameters: - description: Podium unique identifier for message. in: path name: uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string - description: Podium unique identifier for conversation. in: path name: conversation_uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/message' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Retreive a message from a conversation tags: - Message /v4/import/messages: post: callbacks: {} description: 'Import a message from a different system. NOTE: This does not send a message to number, just imports it into a conversation on Podium''s system. Required scope: `write_messages`. ' operationId: message.import parameters: [] requestBody: content: application/json: schema: properties: body: description: Text of the message. example: Just a reminder that your appointment is today! type: string channel: description: The channel that the message was sent to. properties: identifier: description: Identifies the Messenger channel. Must be a valid email address or a phone number. Non-US/Canada numbers must include the country code (e.g. +61 for AUS) example: email@email.com type: string type: description: Messenger channel for the conversation. enum: - email - phone example: email type: string required: - identifier - type type: object contactName: description: Name of the contact that the message was sent to. example: Joe Orange type: string direction: description: Direction of the message. enum: - inbound - outbound example: inbound type: string locationUid: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string publishedAt: description: When the mesage was originally published. example: '2015-01-23T23:50:07Z' format: date-time type: string subject: description: Subject of the message. example: Appointment reminder type: string required: - body - channel - contactName - direction - locationUid - publishedAt type: object description: Import message body params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/message' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Import a message. tags: - Message /v4/messages: post: callbacks: {} description: 'Send a message. A message can only be sent on behalf of a user if they have the necessary permissions to send messages in: conversations assigned to them, conversations assigned to others, and unassigned conversations. Required scope: `write_messages`. ' operationId: message.send parameters: [] requestBody: content: application/json: schema: properties: body: description: Text of the message. example: Just a reminder that your appointment is today! type: string channel: description: Channel to send the message to. properties: identifier: description: Identifies the Messenger channel. Must be a valid email address or a phone number. Non-US/Canada numbers must include the country code (e.g. +61 for AUS) example: email@email.com type: string type: description: Messenger channel for the conversation. enum: - email - phone example: email type: string required: - identifier - type type: object contactName: description: Name of the contact to send the message to. If a contact already exists for the channel then their name will be updated. example: Joe Orange type: string locationUid: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string senderName: description: The name that will be credited with sending the message. This will appear under the sent message in the Podium app. example: Bot1234 type: string setOpenInbox: default: false description: new conversations will be created in a 'closed' state by default. This will override that setting going to 'open' inbox. example: true type: boolean subject: description: Subject of the message. example: Appointment reminder type: string required: - body - channel - locationUid type: object description: Create message body params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/message' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Send a message. tags: - Message /v4/messages/attachment: post: callbacks: {} description: 'Send a message with an attachment. A message can only be sent on behalf of a user if they have the necessary permissions to send messages in: conversations assigned to them, conversations assigned to others, and unassigned conversations. Required scope: `write_messages`. ' operationId: message.send_with_attachment parameters: [] requestBody: content: multipart/form-data: schema: description: multipart request body properties: attachment: description: The attachment content. format: binary nullable: true type: string data: properties: body: description: Text of the message. example: Just a reminder that your appointment is today! type: string channel: description: Channel to send the message to. properties: identifier: description: Identifies the Messenger channel. Must be a valid email address or a phone number. Non-US/Canada numbers must include the country code (e.g. +61 for AUS) example: email@email.com type: string type: description: Messenger channel for the conversation. enum: - email - phone example: email type: string required: - identifier - type type: object contactName: description: Name of the contact to send the message to. If a contact already exists for the channel then their name will be updated. example: Joe Orange type: string locationUid: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string senderName: description: The name that will be credited with sending the message. This will appear under the sent message in the Podium app. example: Bot1234 type: string subject: description: Subject of the message. example: Appointment reminder type: string required: - body - channel - locationUid type: object required: - data type: object description: Create message with attachment body params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/message' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Send a message with attachment. tags: - Message /v4/templates: get: callbacks: {} description: 'List all templates. Required scope: `read_templates`.' operationId: Template.index parameters: - description: 'Filter by types: "custom", "review_invite", or "review_invite_backup", defaults to "custom" ' in: query name: types required: false schema: items: enum: - custom - review_invite - review_invite_backup type: string type: array - description: Podium unique identifier for location. in: query name: locationUid required: false schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/Template' type: array metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: List all templates tags: - Template post: callbacks: {} description: 'Create a message template. Required scope: `write_templates`. ' operationId: Template.create parameters: [] requestBody: content: application/json: schema: properties: accessLevel: description: The access level of the template. Must be 'location' or 'organization'. enum: - location - organization example: location type: string attachmentUrl: description: URL of template attachment. example: https://www.podium.com/ nullable: true type: string locationUids: description: list of locations or empty list. Required when 'accessLevel' is 'location'. items: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string nullable: true type: array nonDeletable: default: false description: If the template can be deleted. type: boolean subject: description: The template subject. type: string text: description: Text of the template message. type: string title: description: Title of the template. type: string type: description: Type of the template. Must be 'custom, 'review_invite', or 'review_invite_backup' enum: - custom - review_invite - review_invite_backup type: string required: - text - title - type - accessLevel type: object description: Create template params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/Template' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Create a message template. tags: - Template /v4/templates/{uid}: delete: callbacks: {} description: "Deletes a template by the given uid. \n\nRequired scope: `write_templates`" operationId: Template.delete parameters: - description: Podium unique identifier for templates. in: path name: uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/Template' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Delete a template tags: - Template put: callbacks: {} description: 'update a message template. Required scope: `write_templates`. ' operationId: Template.update parameters: - description: Template uid in: path name: uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string requestBody: content: application/json: schema: properties: accessLevel: description: The access level of the template. Must be 'location' or 'organization'. enum: - location - organization example: location type: string attachmentUrl: description: URL of template attachment. example: https://www.podium.com/ nullable: true type: string locationUids: description: list of locations or empty list. Required when 'accessLevel' is 'location'. items: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string nullable: true type: array nonDeletable: default: false description: If the template can be deleted. type: boolean subject: description: The template subject. type: string text: description: Text of the template message. type: string title: description: Title of the template. type: string type: description: Type of the template. Must be 'custom, 'review_invite', or 'review_invite_backup' enum: - custom - review_invite - review_invite_backup type: string uid: description: Podium unique identifier for The unique identifier of the template.. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string required: - text - title - type - accessLevel type: object description: Update template params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/Template' metadata: description: Additional response data. properties: url: description: The resource URL. example: https://www.podium.com/ type: string type: object type: object description: Successful response. default: content: application/json: schema: properties: code: description: Podium code for the error. type: integer message: description: Specific details about the error. nullable: true type: string moreInfo: description: URL providing more information about the error. type: string title: Error type: object description: Error response. summary: Update a message template. tags: - Template security: [] servers: - url: https://api.podium.com variables: {} tags: []