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 campaign: description: A campaign. properties: createdAt: description: Time at which the resource was created. Date time is in Coordinated Universal Time (UTC). example: '2015-01-23T23:50:07Z' format: date-time nullable: false type: string endedAt: description: Time at which the campaign completed, stopped or errored. Date time is in Coordinated Universal Time (UTC). example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string locations: items: description: Reference to the locations resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object type: array message: description: The message sent to subscribers example: Get 50% off this memorial day weekend! nullable: true type: string name: description: Name of the campaign example: Memorial Day sale nullable: false type: string 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 nullable: true type: string type: object startedAt: description: Time at which the campaign messsages started sending. Date time is in Coordinated Universal Time (UTC). example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string status: description: The current campaign status enum: - ACTIVE - COMPLETED - DRAFT - ERROR - INACTIVE - IN_PROGRESS - SCHEDULED - STOPPED - SUSPENDED - ARCHIVED nullable: false type: string uid: description: Podium unique identifier for campaign. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: false type: string updatedAt: description: Time at which the resource was updated. Date time is in Coordinated Universal Time (UTC). example: '2015-01-23T23:50:07Z' format: date-time nullable: true type: string title: campaign type: object campaign_interaction: description: A campaign interaction event, which is a record of how a user and a campaign interacted (i.e. a user received a campaign message, or a user responded to a campaign message). properties: campaign: description: Reference to the Campaign resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object contact: description: Reference to the Contact resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: object conversation: description: Reference to the Conversation resource. properties: uid: description: Podium unique identifier for the referenced resource. example: 00000000-0000-0000-0000-000000000000 format: uuid nullable: true type: string type: object createdAt: description: When the interaction occurred. example: '2015-01-23T23:50:07Z' format: date-time type: string interactionType: description: The type of campaign interaction this record represents enum: - sent - queued - failed - feedback_left - link_clicked - opt_out - payment_made - response - review_left - resubscribe - skipped 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 uid: description: Podium unique identifier for Campaign interaction uuid. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string updatedAt: description: When the interaction was last updated example: '2015-01-23T23:50:07Z' format: date-time type: string title: campaign_interaction 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: Campaigns version: 2021.04.01 openapi: 3.0.0 paths: /v4/campaign_interactions: get: callbacks: {} description: 'List the campaign interactions that the caller has access to. If the `cursor` parameter is used then all other parameters will be ignored. This is to avoid confusion if passing both a `cursor` and other parameters which would change what data is being returned. Interactions can be filtered by type, uid of the associated resource, or timestamp. Required scope: `read_campaigns`. ' operationId: campaign_interaction.index parameters: - description: '' in: query name: campaignUid required: false schema: description: Campaign UUID example: 00000000-0000-0000-0000-000000000000 format: uuid type: string - description: '' in: query name: contactUid required: false schema: description: Contact UUID 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 - description: The type of interaction this record represents in: query name: interactionType required: false schema: items: enum: - sent - queued - failed - feedback_left - link_clicked - opt_out - payment_made - response - review_left - resubscribe - skipped type: string type: array - description: Max number of items to return per request. Defaults to `10`. in: query name: limit required: false schema: default: 10 example: 10 maximum: 100 minimum: 0 type: integer - description: '' in: query name: locationUid required: false schema: description: Location UUID example: 00000000-0000-0000-0000-000000000000 format: uuid type: string responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/campaign_interaction' 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: List campaign interactions tags: - Campaign Interaction /v4/campaigns: get: callbacks: {} description: 'List of all the campaigns that the caller has access to. The campaigns are sorted by the `updatedAt` date, in descending order Campaigns can be filtered by their status using the `status` query parameter Required scope: `read_campaigns`.' operationId: campaign.index parameters: - description: Status of the campaign in: query name: status required: false schema: type: string responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/campaign' 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 campaigns. tags: - Campaign post: callbacks: {} description: 'Create a campaign. Required scope: `write_campaigns`.' operationId: campaign.create parameters: [] requestBody: content: application/json: schema: additionalProperties: false properties: includeActiveConversations: default: false description: Should this message be sent to subscribers who have an active conversation in the Inbox? type: boolean locations: description: List of location UIDs items: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: array message: description: The message sent to subscribers example: Get 50% off this memorial day weekend! type: string name: description: The name of the campaign example: Memorial Day sale type: string recentlySentSubscriberOverride: default: false description: Should this message be sent to subscribers who have received a campaign in the past 5 days? type: boolean status: description: The current campaign status enum: - ACTIVE - COMPLETED - DRAFT - ERROR - INACTIVE - IN_PROGRESS - SCHEDULED - STOPPED - SUSPENDED - ARCHIVED type: string required: - locations - name - status type: object description: Create campaign params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/campaign' 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 campaign. tags: - Campaign /v4/campaigns/{uid}: delete: callbacks: {} description: 'Delete an existing campaign. Required scope: `write_campaigns`.' operationId: campaign.delete parameters: - description: UID of the campaign 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/campaign' 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 campaign. tags: - Campaign get: callbacks: {} description: "Get a single campaign for the given uid. \n\n\n Required scope: `read_campaigns`." operationId: campaign.get parameters: - description: UID of the campaign 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/campaign' 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: Get a campaign. tags: - Campaign put: callbacks: {} description: 'update a campaign. Required scope: `write_campaigns`.' operationId: campaign.update parameters: - description: Podium unique identifier for a campaign. in: path name: uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string requestBody: content: application/json: schema: additionalProperties: false properties: includeActiveConversations: default: false description: Should this message be sent to subscribers who have an active conversation in the Inbox? type: boolean locations: description: List of location UIDs items: description: Podium unique identifier for location. example: 00000000-0000-0000-0000-000000000000 format: uuid type: string type: array message: description: The message sent to subscribers example: Get 50% off this memorial day weekend! type: string name: description: The name of the campaign example: Memorial Day sale type: string recentlySentSubscriberOverride: default: false description: Should this message be sent to subscribers who have received a campaign in the past 5 days? type: boolean status: description: The current campaign status enum: - ACTIVE - COMPLETED - DRAFT - ERROR - INACTIVE - IN_PROGRESS - SCHEDULED - STOPPED - SUSPENDED - ARCHIVED type: string required: - locations - name - status type: object description: Update campaign params required: true responses: '200': content: application/json: schema: properties: data: $ref: '#/components/schemas/campaign' 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 campaign. tags: - Campaign /v4/campaigns/{uid}/messages: post: callbacks: {} description: 'Send a message through a campaign. Required scope: `write_campaign_messages`.' operationId: message.create_campaign_message parameters: - description: Podium unique identifier for campaign. in: path name: uid required: true schema: example: 00000000-0000-0000-0000-000000000000 format: uuid type: string requestBody: content: application/json: schema: properties: channelIdentifier: 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 required: - channelIdentifier type: object description: Create campaign 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: Create a message for a given campaign tags: - Message security: [] servers: - url: https://api.podium.com variables: {} tags: []