openapi: 3.0.0 servers: - description: Listmonk Developement Server url: http://localhost:9000/api info: version: "1.0.0" title: Listmonk description: The API collection for listmonk license: name: AGPL-3.0 license url: https://github.com/knadh/listmonk/blob/master/LICENSE tags: - name: Miscellaneous description: Misc API - name: Settings description: Settings API - name: Admin description: Admin API - name: Logs description: Logs API - name: Subscribers description: Subscribers API externalDocs: url: https://listmonk.app/docs/apis/subscribers/ - name: Bounces description: Bounce API - name: Lists description: Subscriber List API externalDocs: url: https://listmonk.app/docs/apis/lists/ - name: Import description: Import API externalDocs: url: https://listmonk.app/docs/apis/lists/ - name: Campaigns description: Campaign API externalDocs: url: https://listmonk.app/docs/apis/campaigns/ - name: Media description: Media API externalDocs: url: https://listmonk.app/docs/apis/media/ - name: Templates description: Templates API externalDocs: url: https://listmonk.app/docs/apis/templates/ - name: Transactional description: Transactional API externalDocs: url: https://listmonk.app/docs/apis/transactional/ - name: Maintenance description: Maintenance API - name: Public description: Listmonk Public API paths: /health: get: tags: - Miscellaneous description: healthcheck endpoint operationId: getHealthCheck responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /config: get: tags: - Miscellaneous description: returns general server config. operationId: getServerConfig responses: "200": description: A server config object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ServerConfig" "/lang/{lang}": get: tags: - Miscellaneous description: returns the JSON language pack given the language code operationId: getI18nLang parameters: - in: path name: lang required: true description: JSON language pack required schema: type: string responses: "200": description: requested language pack content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/LanguagePack" /dashboard/charts: get: tags: - Miscellaneous description: returns chart data points to render on the dashboard. operationId: getDashboardCharts responses: "200": description: chart data points content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/DashboardChart" /dashboard/counts: get: tags: - Miscellaneous description: returns stats counts to show on the dashboard operationId: getDashboardCounts responses: "200": description: stat counts content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/DashboardCount" /settings: get: tags: - Settings description: returns settings from DB operationId: getSettings responses: "200": description: settings object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Settings" put: tags: - Settings description: returns updated settings from the DB. operationId: updateSettings requestBody: description: updated settings field values content: application/json: schema: $ref: "#/components/schemas/Settings" responses: "200": description: updated settings object content: application/json: schema: type: object properties: data: type: boolean /settings/smtp/test: post: tags: - Settings description: test smtp settings operationId: testSMTPSettings requestBody: description: updated SMTP settings field values content: application/json: schema: $ref: "#/components/schemas/SMTPTest" responses: "200": description: updated SMTP test settings content: application/json: schema: type: object properties: data: type: boolean /admin/reload: post: tags: - Admin description: restarts the app operationId: reloadApp responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /logs: get: tags: - Logs description: returns the log entries stored in the log buffer operationId: getLogs responses: "200": description: stored log entries content: application/json: schema: type: object properties: data: type: array items: type: string /subscribers: get: tags: - Subscribers description: returns all subscribers. operationId: getSubscribers parameters: - in: query name: page description: number of records to skip schema: type: integer format: int32 - in: query name: per_page description: max number of records to return per page schema: type: integer format: int32 - in: query name: query description: query subscribers with an SQL expression. schema: type: string responses: "200": description: subscribers list content: application/json: schema: type: object properties: data: type: object properties: results: type: array items: $ref: "#/components/schemas/Subscriber" query: type: string total: type: integer per_page: type: integer page: type: integer post: description: handles creation of new subscriber operationId: createSubscriber tags: - Subscribers requestBody: description: new subscriber info content: application/json: schema: $ref: "#/components/schemas/NewSubscriber" responses: "200": description: subscriber object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Subscriber" delete: description: handles subscribers deletion operationId: deleteSubscriberByList tags: - Subscribers parameters: - in: query name: id required: true description: subscriber id/s to be deleted schema: type: string responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/{id}": get: description: handles the retrieval of a single subscriber by ID. operationId: getSubscriberById tags: - Subscribers parameters: - in: path name: id required: true description: The id value of the subscriber you want to get. schema: type: integer responses: "200": description: gets a single subscriber. content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Subscriber" put: description: modify subscriber data operationId: updateSubscriberById tags: - Subscribers parameters: - in: path name: id required: true description: The id of subscriber to update schema: type: integer requestBody: description: new subscriber info content: application/json: schema: $ref: "#/components/schemas/UpdateSubscriber" responses: "200": description: returns updated subscriber. content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Subscriber" delete: description: handles subscriber deletion based on id operationId: deleteSubscriberById tags: - Subscribers parameters: - in: path name: id required: true description: The id value of the subscriber you want to get. schema: type: integer responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /subscribers/lists: put: description: handles bulk addition or removal of subscribers operationId: manageSubscriberLists tags: - Subscribers requestBody: description: The list of subscribers details to add or remove content: application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/lists/{id}": put: description: handles bulk addition or removal of subscribers for a specified list id operationId: manageSubscriberListById tags: - Subscribers requestBody: description: The list of subscribers to add or remove content: application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" parameters: - in: path name: id required: true description: The id of list you want to update schema: type: integer format: int32 responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/blocklist": put: description: handles blocklisting of subscriber list operationId: manageBlocklistBySubscriberList tags: - Subscribers requestBody: description: The list of subscribers to blocklist content: application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/{id}/blocklist": put: description: handles the blocklisting of one or more subscribers. operationId: manageBlocklistSubscribersById tags: - Subscribers requestBody: description: The id of subscriber to add or remove content: application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" parameters: - in: path name: id required: true description: The id value of the subscriber you want to blocklist. schema: type: integer format: int32 responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/{id}/export": get: description: retrieves a subscriber's profile operationId: exportSubscriberDataByID tags: - Subscribers parameters: - in: path name: id required: true description: The id value of subscriber profile you want to export schema: type: integer responses: "200": headers: Cache-Control: schema: type: string Content-Disposition: schema: type: string example: attachment; filename="data.json" description: subscriber data object content: application/json: schema: $ref: "#/components/schemas/SubscriberData" "/subscribers/{id}/bounces": get: description: retrieves a subscriber's bounce records operationId: getSubscriberBouncesById tags: - Subscribers parameters: - in: path name: id required: true description: subscriber id schema: type: integer responses: "200": description: list of bounce records of a subscriber content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/Bounce" delete: description: deletes a subscriber's bounce records operationId: deleteSubscriberBouncesById tags: - Subscribers parameters: - in: path name: id required: true description: subscriber id schema: type: integer responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/{id}/optin": post: description: sends an optin confirmation e-mail to a subscriber. operationId: subscriberSendOptinById tags: - Subscribers parameters: - in: path name: id required: true description: sends an optin confirmation e-mail to a subscriber schema: type: integer responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/query/delete": post: description: bulk deletes based on an arbitrary SQL expression. operationId: deleteSubscriberByQuery tags: - Subscribers requestBody: description: Arbitrary SQL expression. content: text/plain: schema: type: string application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/query/blocklist": put: description: bulk blocklists subscribers based on an arbitrary SQL expression. operationId: blocklistSubscribersQuery tags: - Subscribers requestBody: description: Arbitrary SQL expression. content: text/plain: schema: type: string application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/subscribers/query/lists": put: description: bulk adds/removes/unsubscribes subscribers from one or more lists based on an arbitrary SQL expression. operationId: manageSubscriberListsByQuery tags: - Subscribers requestBody: description: Arbitrary SQL expression. content: text/plain: schema: type: string application/json: schema: $ref: "#/components/schemas/SubscriberQueryRequest" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /bounces: get: description: handles retrieval of bounce records. operationId: getBounces tags: - Bounces requestBody: description: output parameters form required: true content: application/x-www-form-urlencoded: schema: type: object properties: source: type: string order_by: type: string order: type: string parameters: - in: query name: campaign_id description: bounce record retrieval of particular campaign schema: type: integer - in: query name: page description: total number of pages schema: type: integer - in: query name: per_page description: number of items per page schema: type: integer responses: "200": description: list of bounce records content: application/json: schema: type: object properties: data: type: object properties: results: type: array items: $ref: "#/components/schemas/Bounce" query: type: string total: type: integer per_page: type: integer page: type: integer delete: description: handles retrieval of bounce records. operationId: deleteBounces tags: - Bounces parameters: - in: query name: all description: flag for multiple bounce record deletion schema: type: boolean - in: query name: id description: list of bounce ids to delete schema: type: string responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/bounces/{id}": get: description: handles retrieval of bounce record by id operationId: getBounceById parameters: - in: path name: id required: true description: The id value of the bounce you want to retreive. schema: type: integer tags: - Bounces responses: "200": description: bounce object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Bounce" delete: description: handles bounce deletion, either a single one (ID in the URI), or a list. operationId: deleteBounceById parameters: - in: path name: id required: true description: The id value of the bounce you want to delete. schema: type: integer tags: - Bounces responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /lists: get: description: retrieves lists with additional metadata like subscriber counts. This may be slow. operationId: getLists tags: - Lists parameters: - in: query name: page description: total number of pages schema: type: integer - in: query name: per_page description: number of items per page schema: type: integer requestBody: required: true description: output parameters form content: application/x-www-form-urlencoded: schema: type: object properties: query: description: Optional string to search a list by name. type: string order_by: description: Field to sort results by. name|status|created_at|updated_at type: string order: description: ASC|DESC Sort by ascending or descending order. type: string minimal: type: boolean responses: "200": description: list of metadata content: application/json: schema: type: object properties: data: type: object properties: results: type: array items: $ref: "#/components/schemas/List" total: type: integer per_page: type: integer page: type: integer post: description: handles list creation operationId: createList tags: - Lists requestBody: description: new list info content: application/json: schema: $ref: "#/components/schemas/NewList" responses: "200": description: updated list object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/List" "/lists/{list_id}": get: description: retrieves lists with additional metadata like subscriber counts. This may be slow. operationId: getListById tags: - Lists parameters: - in: path name: list_id required: true description: The id value of the list you want to retreive. schema: type: integer responses: "200": description: list object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/List" put: description: handles list modification operationId: updateListById tags: - Lists parameters: - in: path name: list_id required: true description: The id value of the list you want to update schema: type: integer requestBody: description: updated list field values content: application/json: schema: $ref: "#/components/schemas/List" responses: "200": description: updated list object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/List" delete: description: handles list deletion, either a single one (ID in the URI), or a list. operationId: deleteListById tags: - Lists parameters: - in: path name: list_id required: true description: The id value of the lists you want to delete. schema: type: integer responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /import/subscribers: get: description: returns import status. operationId: getImportSubscribers tags: - Import responses: "200": description: import status content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ImportStatus" post: description: handles the uploading and bulk importing of a ZIP file of one or more CSV files. operationId: importSubscribers tags: - Import requestBody: description: uploads and bulk imports of compressed CSV files content: application/json: schema: type: object properties: params: type: string file: type: string responses: "200": description: updated import status content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ImportStatus" delete: description: sends a stop signal to the importer. operationId: stopImportSubscribers tags: - Import responses: "200": description: response content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ImportStatus" /import/subscribers/logs: get: description: returns import statistics operationId: getImportSubscriberStats tags: - Import responses: "200": description: import statistics content: application/json: schema: type: object properties: data: type: string /campaigns: get: description: handles retrieval of campaigns operationId: getCampaigns parameters: - in: query name: status description: status flag of campaign schema: type: array items: type: string enum: [scheduled, running, paused, cancelled] - in: query name: no_body description: boolean flag for response with/without body schema: type: boolean - in: query name: page description: total number of pages schema: type: integer - in: query name: per_page description: number of items per page schema: type: integer requestBody: required: true description: output parameters form content: application/x-www-form-urlencoded: schema: type: object properties: query: description: Optional string to search a list by name. type: string order_by: description: Field to sort results by. name|status|created_at|updated_at type: string order: description: ASC|DESC Sort by ascending or descending order. type: string tags: - Campaigns responses: "200": description: list of campaigns content: application/json: schema: type: object properties: data: type: object properties: results: type: array items: $ref: "#/components/schemas/Campaign" query: type: string total: type: integer per_page: type: integer page: type: integer post: description: handles campaign creation operationId: createCampaign tags: - Campaigns requestBody: description: new campaign info content: application/json: schema: $ref: "#/components/schemas/CampaignRequest" responses: "200": description: new campaign object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CampaignUpdate" "/campaigns/{id}": get: description: handles retrieval of campaigns. operationId: getCampaignById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get. schema: type: integer - in: query name: no_body required: false description: boolean flag for response with/without body schema: type: boolean responses: "200": description: campaign object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Campaign" put: description: handle updation of campaign operationId: updateCampaignById tags: - Campaigns parameters: - in: path name: id required: true description: the id value of campaign you want to update schema: type: integer requestBody: description: updated campaign fields content: application/json: schema: $ref: "#/components/schemas/CampaignRequest" responses: "200": description: updated campaign object content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CampaignUpdate" delete: description: deletes specified campaign operationId: deleteCampaignById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get. schema: type: integer responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean /campaigns/running/stats: get: description: returns stats of a given set of campaign IDs. operationId: getRunningCampaignStats tags: - Campaigns responses: "200": description: list of stats for given set of campaign ids content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CampaignStats" "/campaigns/analytics/{type}": get: description: retrieves view counts for a campaign. operationId: getCampaignAnalytics tags: - Campaigns parameters: - in: path required: true name: type description: type of stats, either links, view, click or bounce schema: type: string enum: [links, views, clicks, bounces] - in: query required: true name: from description: start value of date range schema: type: string - in: query required: true name: to description: end value of date range schema: type: string - in: query name: id description: campaign id/s to retrive view counts schema: type: string responses: "200": description: list of stats for given set of campaign ids content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CampaignAnalyticsCount" "/campaigns/{id}/preview": get: description: renders the HTML preview of a campaign body operationId: previewCampaignById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get the preview of schema: type: integer requestBody: required: true description: template id content: application/x-www-form-urlencoded: schema: type: object properties: template_id: description: template id type: integer responses: "200": description: HTML Preview of requested campaign content: text/html: schema: type: string example:

Hi John!

This is a e-mail campaign. Your second name is Doe and you are from Bengaluru post: description: renders the HTML preview of a campaign body operationId: updatePreviewCampaignById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get the preview of schema: type: integer requestBody: required: true description: template id, body and content type content: application/x-www-form-urlencoded: schema: type: object properties: template_id: description: template id type: integer content_type: description: content type type: string body: description: template body type: string responses: "200": description: HTML Preview of requested campaign content: text/html: schema: type: string example:

Hi John!

This is a e-mail campaign. Your second name is Doe and you are from Bengaluru "/campaigns/{id}/text": post: description: renders the HTML preview of a campaign body operationId: previewCampaignTextById tags: - Campaigns requestBody: required: true description: template id, content type and campaign body content: application/x-www-form-urlencoded: schema: type: object properties: template_id: description: template id type: integer content_type: description: content type type: string body: description: campaign body type: string parameters: - in: path name: id required: true description: The id value of the campaign you want to get the preview of schema: type: integer responses: "200": description: response content: text/html: schema: type: string example:

Hi John!

This is a test e-mail campaign. Your second name is Doe and you are from Bengaluru

"/campaigns/{id}/status": put: description: handles campaign status modification operationId: updateCampaignStatusById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get the preview of schema: type: integer requestBody: description: campaign status update content: application/json: schema: type: object properties: status: type: string enum: [scheduled, running, paused, cancelled] responses: "200": description: response content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Campaign" "/campaigns/{id}/archive": put: description: handles campaign status modification operationId: updateCampaignArchiveById tags: - Campaigns parameters: - in: path name: id required: true description: The id value of the campaign you want to get the preview of schema: type: integer requestBody: description: archive campaign related parameters content: application/json: schema: type: object properties: archive: type: boolean archive_template_id: type: integer archive_meta: type: object responses: "200": description: response content: application/json: schema: type: object properties: data: type: boolean "/campaigns/{id}/content": post: description: handles campaign content (body) format conversions. operationId: createCampaignContentById tags: - Campaigns requestBody: description: updated campaign content content: application/json: schema: $ref: "#/components/schemas/CampaignContentRequest" parameters: - in: path name: id description: ID of campaign that you choose to create content required: true schema: type: integer responses: "200": description: response content: application/json: schema: type: object properties: data: type: string "/campaigns/{id}/test": post: description: handles sending of campaign message to arbitrary subscribers for testing operationId: testCampaignById tags: - Campaigns parameters: - in: path name: id description: ID of campaign that you want to test required: true schema: type: integer requestBody: required: true description: template id content: application/x-www-form-urlencoded: schema: type: object properties: template_id: description: template id type: integer application/json: schema: $ref: "#/components/schemas/CampaignRequest" responses: "200": description: response content: application/json: schema: type: object properties: data: type: boolean "/media": get: description: handles retrieval of uploaded media. operationId: getMedia tags: - Media responses: "200": description: response content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MediaFileObject" post: description: handles media file uploads. operationId: uploadMedia tags: - Media requestBody: description: upload media file content: multipart/form-data: schema: type: string format: binary responses: "200": description: response content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MediaFileObject" "/media/{id}": get: description: handles retrieval of uploaded media. operationId: getMediaById tags: - Media parameters: - in: path name: id required: true description: media file id schema: type: integer responses: "200": description: response content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MediaFileObject" delete: description: handles deletion of uploaded media. operationId: deleteMediaById tags: - Media parameters: - in: path name: id required: true description: The id value of the list you want to delete. schema: type: integer responses: "200": description: response content: application/json: schema: type: object properties: data: type: boolean /templates: get: description: handles retrieval of templates operationId: getTemplates tags: - Templates parameters: - in: query name: no_body description: boolean flag for response with/without body required: true schema: type: boolean responses: "200": description: response content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/Template" "/templates/{id}": get: description: handles retrieval of templates operationId: getTemplateById tags: - Templates parameters: - in: path name: id required: true schema: type: integer description: The id value of the template you want to get. - in: query name: no_body description: boolean flag for response with/without body required: false schema: type: boolean responses: "200": description: response content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/Template" delete: description: handles deletion of templates operationId: deleteTemplateById tags: - Templates parameters: - in: path name: id required: true description: The id value of the template you want to delete. schema: type: integer responses: "200": description: response content: application/json: schema: type: object properties: data: type: boolean /templates/preview: post: description: get the HTML preview of a template. operationId: previewTemplate tags: - Templates requestBody: required: true description: template parameters content: application/x-www-form-urlencoded: schema: type: object properties: template_type: description: type of template type: string body: description: template body type: string responses: "200": description: response content: text/html: schema: type: string example:

Hi there

"/templates/{id}/preview": get: description: renders the HTML preview of a template. operationId: previewTemplateById tags: - Templates requestBody: description: template parameters required: true content: application/x-www-form-urlencoded: schema: type: object properties: template_type: description: type of template type: string body: description: template body type: string parameters: - in: path name: id required: true schema: type: integer description: The id value of the template you want to get. responses: "200": description: response content: text/html: schema: type: string example:

Hi there

"/templates/{id}/default": put: description: handles template modification. operationId: updateTemplateById tags: - Templates parameters: - in: path name: id required: true description: The id value of the template you want to set to the default template. schema: type: integer responses: "200": description: response content: application/json: schema: $ref: "#/components/schemas/Template" /tx: post: tags: - Transactional description: send message to a subscriber operationId: transactWithSubscriber requestBody: description: email message to a subscriber content: application/json: schema: $ref: "#/components/schemas/TransactionalMessage" responses: "200": description: OK content: application/json: schema: type: object properties: data: type: boolean "/maintenance/subscribers/{type}": delete: description: garbage collects (deletes) orphaned or blocklisted subscribers. operationId: deleteGCSubscribers tags: - Maintenance parameters: - in: path name: type description: type of GC collected subscribers schema: type: string required: true responses: "200": description: response content: application/json: schema: type: object properties: data: type: object properties: count: type: integer "/maintenance/analytics/{type}": delete: description: garbage collects (deletes) campaign analytics. operationId: deleteCampaignAnalyticsByType tags: - Maintenance requestBody: description: date parameter required: true content: application/x-www-form-urlencoded: schema: type: object properties: before_date: type: string format: date parameters: - in: path name: type description: type of GC collected subscribers schema: type: string required: true responses: "200": description: response content: application/json: schema: type: object properties: data: type: boolean "/maintenance/subscriptions/unconfirmed": delete: description: garbage collects (deletes) orphaned or blocklisted subscribers. operationId: deleteUnconfirmedSubscriptions tags: - Maintenance requestBody: required: true description: date parameter content: application/x-www-form-urlencoded: schema: type: object properties: before_date: type: string format: date responses: "200": description: response content: application/json: schema: type: object properties: data: type: object properties: count: type: integer "/public/lists": get: description: returns the list of public lists with minimal fields operationId: getPublicLists tags: - Public responses: "200": description: response content: application/json: schema: type: array items: type: object properties: uuid: type: string name: type: string "/public/subscription": post: description: handles subscription requests coming from public API calls. operationId: handlePublicSubscription tags: - Public requestBody: description: subscription request parameters content: application/json: schema: type: object properties: name: type: string email: type: string list_uuids: type: array items: type: string responses: "200": description: response content: application/json: schema: type: object properties: has_optin: type: boolean components: schemas: LanguagePack: type: object properties: data: type: object properties: _.code: type: string _.name: type: string admin.errorMarshallingConfig: type: string analytics.count: type: string analytics.fromDate: type: string analytics.invalidDates: type: string analytics.isUnique: type: string analytics.links: type: string analytics.nonUnique: type: string analytics.title: type: string analytics.toDate: type: string bounces.source: type: string bounces.unknownService: type: string bounces.view: type: string campaigns.addAltText: type: string campaigns.archive: type: string campaigns.archiveEnable: type: string campaigns.archiveHelp: type: string campaigns.archiveMeta: type: string campaigns.archiveMetaHelp: type: string campaigns.cantUpdate: type: string campaigns.clicks: type: string campaigns.confirmDelete: type: string campaigns.confirmSchedule: type: string campaigns.confirmSwitchFormat: type: string campaigns.content: type: string campaigns.contentHelp: type: string campaigns.continue: type: string campaigns.copyOf: type: string campaigns.customHeadersHelp: type: string campaigns.dateAndTime: type: string campaigns.ended: type: string campaigns.errorSendTest: type: string campaigns.fieldInvalidBody: type: string campaigns.fieldInvalidFromEmail: type: string campaigns.fieldInvalidListIDs: type: string campaigns.fieldInvalidMessenger: type: string campaigns.fieldInvalidName: type: string campaigns.fieldInvalidSendAt: type: string campaigns.fieldInvalidSubject: type: string campaigns.formatHTML: type: string campaigns.fromAddress: type: string campaigns.fromAddressPlaceholder: type: string campaigns.invalid: type: string campaigns.invalidCustomHeaders: type: string campaigns.markdown: type: string campaigns.needsSendAt: type: string campaigns.newCampaign: type: string campaigns.noKnownSubsToTest: type: string campaigns.noOptinLists: type: string campaigns.noSubs: type: string campaigns.noSubsToTest: type: string campaigns.notFound: type: string campaigns.onlyActiveCancel: type: string campaigns.onlyActivePause: type: string campaigns.onlyDraftAsScheduled: type: string campaigns.onlyPausedDraft: type: string campaigns.onlyScheduledAsDraft: type: string campaigns.pause: type: string campaigns.plainText: type: string campaigns.preview: type: string campaigns.progress: type: string campaigns.queryPlaceholder: type: string campaigns.rateMinuteShort: type: string campaigns.rawHTML: type: string campaigns.removeAltText: type: string campaigns.richText: type: string campaigns.schedule: type: string campaigns.scheduled: type: string campaigns.send: type: string campaigns.sendLater: type: string campaigns.sendTest: type: string campaigns.sendTestHelp: type: string campaigns.sendToLists: type: string campaigns.sent: type: string campaigns.start: type: string campaigns.started: type: string campaigns.startedAt: type: string campaigns.stats: type: string campaigns.status.cancelled: type: string campaigns.status.draft: type: string campaigns.status.finished: type: string campaigns.status.paused: type: string campaigns.status.running: type: string campaigns.status.scheduled: type: string campaigns.statusChanged: type: string campaigns.subject: type: string campaigns.testEmails: type: string campaigns.testSent: type: string campaigns.timestamps: type: string campaigns.trackLink: type: string campaigns.views: type: string dashboard.campaignViews: type: string dashboard.linkClicks: type: string dashboard.messagesSent: type: string dashboard.orphanSubs: type: string email.data.info: type: string email.data.title: type: string email.optin.confirmSub: type: string email.optin.confirmSubHelp: type: string email.optin.confirmSubInfo: type: string email.optin.confirmSubTitle: type: string email.optin.confirmSubWelcome: type: string email.optin.privateList: type: string email.status.campaignReason: type: string email.status.campaignSent: type: string email.status.campaignUpdateTitle: type: string email.status.importFile: type: string email.status.importRecords: type: string email.status.importTitle: type: string email.status.status: type: string email.unsub: type: string email.unsubHelp: type: string email.viewInBrowser: type: string forms.formHTML: type: string forms.formHTMLHelp: type: string forms.noPublicLists: type: string forms.publicLists: type: string forms.publicSubPage: type: string forms.selectHelp: type: string forms.title: type: string globals.buttons.add: type: string globals.buttons.addNew: type: string globals.buttons.back: type: string globals.buttons.cancel: type: string globals.buttons.clone: type: string globals.buttons.close: type: string globals.buttons.continue: type: string globals.buttons.delete: type: string globals.buttons.deleteAll: type: string globals.buttons.edit: type: string globals.buttons.enabled: type: string globals.buttons.insert: type: string globals.buttons.learnMore: type: string globals.buttons.more: type: string globals.buttons.new: type: string globals.buttons.ok: type: string globals.buttons.remove: type: string globals.buttons.save: type: string globals.buttons.saveChanges: type: string globals.days.0: type: string globals.days.1: type: string globals.days.2: type: string globals.days.3: type: string globals.days.4: type: string globals.days.5: type: string globals.days.6: type: string globals.days.7: type: string globals.fields.createdAt: type: string globals.fields.description: type: string globals.fields.id: type: string globals.fields.name: type: string globals.fields.status: type: string globals.fields.type: type: string globals.fields.updatedAt: type: string globals.fields.uuid: type: string globals.messages.confirm: type: string globals.messages.confirmDiscard: type: string globals.messages.created: type: string globals.messages.deleted: type: string globals.messages.deletedCount: type: string globals.messages.done: type: string globals.messages.emptyState: type: string globals.messages.errorCreating: type: string globals.messages.errorDeleting: type: string globals.messages.errorFetching: type: string globals.messages.errorInvalidIDs: type: string globals.messages.errorUUID: type: string globals.messages.errorUpdating: type: string globals.messages.internalError: type: string globals.messages.invalidData: type: string globals.messages.invalidID: type: string globals.messages.invalidUUID: type: string globals.messages.missingFields: type: string globals.messages.notFound: type: string globals.messages.passwordChange: type: string globals.messages.updated: type: string globals.months.1: type: string globals.months.10: type: string globals.months.11: type: string globals.months.12: type: string globals.months.2: type: string globals.months.3: type: string globals.months.4: type: string globals.months.5: type: string globals.months.6: type: string globals.months.7: type: string globals.months.8: type: string globals.months.9: type: string globals.states.off: type: string globals.terms.all: type: string globals.terms.analytics: type: string globals.terms.bounce: type: string globals.terms.bounces: type: string globals.terms.campaign: type: string globals.terms.campaigns: type: string globals.terms.dashboard: type: string globals.terms.day: type: string globals.terms.hour: type: string globals.terms.list: type: string globals.terms.lists: type: string globals.terms.media: type: string globals.terms.messenger: type: string globals.terms.messengers: type: string globals.terms.minute: type: string globals.terms.month: type: string globals.terms.second: type: string globals.terms.settings: type: string globals.terms.subscriber: type: string globals.terms.subscribers: type: string globals.terms.subscriptions: type: string globals.terms.tag: type: string globals.terms.tags: type: string globals.terms.template: type: string globals.terms.templates: type: string globals.terms.tx: type: string globals.terms.year: type: string import.alreadyRunning: type: string import.blocklist: type: string import.csvDelim: type: string import.csvDelimHelp: type: string import.csvExample: type: string import.csvFile: type: string import.csvFileHelp: type: string import.errorCopyingFile: type: string import.errorProcessingZIP: type: string import.errorStarting: type: string import.importDone: type: string import.importStarted: type: string import.instructions: type: string import.instructionsHelp: type: string import.invalidDelim: type: string import.invalidFile: type: string import.invalidMode: type: string import.invalidParams: type: string import.invalidSubStatus: type: string import.listSubHelp: type: string import.mode: type: string import.overwrite: type: string import.overwriteHelp: type: string import.recordsCount: type: string import.stopImport: type: string import.subscribe: type: string import.subscribeWarning: type: string import.title: type: string import.upload: type: string lists.confirmDelete: type: string lists.confirmSub: type: string lists.invalidName: type: string lists.newList: type: string lists.optin: type: string lists.optinHelp: type: string lists.optinTo: type: string lists.optins.double: type: string lists.optins.single: type: string lists.sendCampaign: type: string lists.sendOptinCampaign: type: string lists.type: type: string lists.typeHelp: type: string lists.types.private: type: string lists.types.public: type: string logs.title: type: string maintenance.help: type: string maintenance.maintenance.unconfirmedOptins: type: string maintenance.olderThan: type: string maintenance.title: type: string maintenance.unconfirmedSubs: type: string media.errorReadingFile: type: string media.errorResizing: type: string media.errorSavingThumbnail: type: string media.errorUploading: type: string media.invalidFile: type: string media.title: type: string media.unsupportedFileType: type: string media.upload: type: string media.uploadHelp: type: string media.uploadImage: type: string menu.allCampaigns: type: string menu.allLists: type: string menu.allSubscribers: type: string menu.dashboard: type: string menu.forms: type: string menu.import: type: string menu.logs: type: string menu.maintenance: type: string menu.media: type: string menu.newCampaign: type: string menu.settings: type: string public.archiveEmpty: type: string public.archiveTitle: type: string public.blocklisted: type: string public.campaignNotFound: type: string public.confirmOptinSubTitle: type: string public.confirmSub: type: string public.confirmSubInfo: type: string public.confirmSubTitle: type: string public.dataRemoved: type: string public.dataRemovedTitle: type: string public.dataSent: type: string public.dataSentTitle: type: string public.errorFetchingCampaign: type: string public.errorFetchingEmail: type: string public.errorFetchingLists: type: string public.errorProcessingRequest: type: string public.errorTitle: type: string public.invalidFeature: type: string public.invalidLink: type: string public.managePrefs: type: string public.managePrefsUnsub: type: string public.noListsAvailable: type: string public.noListsSelected: type: string public.noSubInfo: type: string public.noSubTitle: type: string public.notFoundTitle: type: string public.prefsSaved: type: string public.privacyConfirmWipe: type: string public.privacyExport: type: string public.privacyExportHelp: type: string public.privacyTitle: type: string public.privacyWipe: type: string public.privacyWipeHelp: type: string public.sub: type: string public.subConfirmed: type: string public.subConfirmedTitle: type: string public.subName: type: string public.subNotFound: type: string public.subOptinPending: type: string public.subPrivateList: type: string public.subTitle: type: string public.unsub: type: string public.unsubFull: type: string public.unsubHelp: type: string public.unsubTitle: type: string public.unsubbedInfo: type: string public.unsubbedTitle: type: string public.unsubscribeTitle: type: string settings.appearance.adminHelp: type: string settings.appearance.adminName: type: string settings.appearance.customCSS: type: string settings.appearance.customJS: type: string settings.appearance.name: type: string settings.appearance.publicHelp: type: string settings.appearance.publicName: type: string settings.bounces.action: type: string settings.bounces.blocklist: type: string settings.bounces.count: type: string settings.bounces.countHelp: type: string settings.bounces.delete: type: string settings.bounces.enable: type: string settings.bounces.enableMailbox: type: string settings.bounces.enableSES: type: string settings.bounces.enableSendgrid: type: string settings.bounces.enablePostmark: type: string settings.bounces.enableWebhooks: type: string settings.bounces.enabled: type: string settings.bounces.folder: type: string settings.bounces.folderHelp: type: string settings.bounces.invalidScanInterval: type: string settings.bounces.name: type: string settings.bounces.scanInterval: type: string settings.bounces.scanIntervalHelp: type: string settings.bounces.sendgridKey: type: string settings.bounces.postmarkUsername: type: string settings.bounces.postmarkUsernameHelp: type: string settings.bounces.postmarkPassword: type: string settings.bounces.type: type: string settings.bounces.username: type: string settings.confirmRestart: type: string settings.duplicateMessengerName: type: string settings.errorEncoding: type: string settings.errorNoSMTP: type: string settings.general.adminNotifEmails: type: string settings.general.adminNotifEmailsHelp: type: string settings.general.checkUpdates: type: string settings.general.checkUpdatesHelp: type: string settings.general.enablePublicArchive: type: string settings.general.enablePublicArchiveHelp: type: string settings.general.enablePublicSubPage: type: string settings.general.enablePublicSubPageHelp: type: string settings.general.faviconURL: type: string settings.general.faviconURLHelp: type: string settings.general.fromEmail: type: string settings.general.fromEmailHelp: type: string settings.general.language: type: string settings.general.logoURL: type: string settings.general.logoURLHelp: type: string settings.general.name: type: string settings.general.rootURL: type: string settings.general.rootURLHelp: type: string settings.general.sendOptinConfirm: type: string settings.general.sendOptinConfirmHelp: type: string settings.general.siteName: type: string settings.invalidMessengerName: type: string settings.mailserver.authProtocol: type: string settings.mailserver.host: type: string settings.mailserver.hostHelp: type: string settings.mailserver.idleTimeout: type: string settings.mailserver.idleTimeoutHelp: type: string settings.mailserver.maxConns: type: string settings.mailserver.maxConnsHelp: type: string settings.mailserver.password: type: string settings.mailserver.passwordHelp: type: string settings.mailserver.port: type: string settings.mailserver.portHelp: type: string settings.mailserver.skipTLS: type: string settings.mailserver.skipTLSHelp: type: string settings.mailserver.tls: type: string settings.mailserver.tlsHelp: type: string settings.mailserver.username: type: string settings.mailserver.waitTimeout: type: string settings.mailserver.waitTimeoutHelp: type: string settings.media.provider: type: string settings.media.s3.bucket: type: string settings.media.s3.bucketPath: type: string settings.media.s3.bucketPathHelp: type: string settings.media.s3.bucketType: type: string settings.media.s3.bucketTypePrivate: type: string settings.media.s3.bucketTypePublic: type: string settings.media.s3.key: type: string settings.media.s3.publicURL: type: string settings.media.s3.publicURLHelp: type: string settings.media.s3.region: type: string settings.media.s3.secret: type: string settings.media.s3.uploadExpiry: type: string settings.media.s3.uploadExpiryHelp: type: string settings.media.s3.url: type: string settings.media.s3.urlHelp: type: string settings.media.title: type: string settings.media.upload.path: type: string settings.media.upload.pathHelp: type: string settings.media.upload.uri: type: string settings.media.upload.uriHelp: type: string settings.messengers.maxConns: type: string settings.messengers.maxConnsHelp: type: string settings.messengers.messageSaved: type: string settings.messengers.name: type: string settings.messengers.nameHelp: type: string settings.messengers.password: type: string settings.messengers.retries: type: string settings.messengers.retriesHelp: type: string settings.messengers.skipTLSHelp: type: string settings.messengers.timeout: type: string settings.messengers.timeoutHelp: type: string settings.messengers.url: type: string settings.messengers.urlHelp: type: string settings.messengers.username: type: string settings.needsRestart: type: string settings.performance.batchSize: type: string settings.performance.batchSizeHelp: type: string settings.performance.concurrency: type: string settings.performance.concurrencyHelp: type: string settings.performance.maxErrThreshold: type: string settings.performance.maxErrThresholdHelp: type: string settings.performance.messageRate: type: string settings.performance.messageRateHelp: type: string settings.performance.name: type: string settings.performance.slidingWindow: type: string settings.performance.slidingWindowDuration: type: string settings.performance.slidingWindowDurationHelp: type: string settings.performance.slidingWindowHelp: type: string settings.performance.slidingWindowRate: type: string settings.performance.slidingWindowRateHelp: type: string settings.privacy.allowBlocklist: type: string settings.privacy.allowBlocklistHelp: type: string settings.privacy.allowExport: type: string settings.privacy.allowExportHelp: type: string settings.privacy.allowPrefs: type: string settings.privacy.allowPrefsHelp: type: string settings.privacy.allowWipe: type: string settings.privacy.allowWipeHelp: type: string settings.privacy.domainBlocklist: type: string settings.privacy.domainBlocklistHelp: type: string settings.privacy.individualSubTracking: type: string settings.privacy.individualSubTrackingHelp: type: string settings.privacy.listUnsubHeader: type: string settings.privacy.listUnsubHeaderHelp: type: string settings.privacy.name: type: string settings.restart: type: string settings.smtp.customHeaders: type: string settings.smtp.customHeadersHelp: type: string settings.smtp.enabled: type: string settings.smtp.heloHost: type: string settings.smtp.heloHostHelp: type: string settings.smtp.name: type: string settings.smtp.retries: type: string settings.smtp.retriesHelp: type: string settings.smtp.sendTest: type: string settings.smtp.setCustomHeaders: type: string settings.smtp.testConnection: type: string settings.smtp.testEnterEmail: type: string settings.smtp.toEmail: type: string settings.title: type: string settings.updateAvailable: type: string subscribers.advancedQuery: type: string subscribers.advancedQueryHelp: type: string subscribers.attribs: type: string subscribers.attribsHelp: type: string subscribers.blocklistedHelp: type: string subscribers.confirmBlocklist: type: string subscribers.confirmDelete: type: string subscribers.confirmExport: type: string subscribers.domainBlocklisted: type: string subscribers.downloadData: type: string subscribers.email: type: string subscribers.emailExists: type: string subscribers.errorBlocklisting: type: string subscribers.errorNoIDs: type: string subscribers.errorNoListsGiven: type: string subscribers.errorPreparingQuery: type: string subscribers.errorSendingOptin: type: string subscribers.export: type: string subscribers.invalidAction: type: string subscribers.invalidEmail: type: string subscribers.invalidJSON: type: string subscribers.invalidName: type: string subscribers.listChangeApplied: type: string subscribers.lists: type: string subscribers.listsHelp: type: string subscribers.listsPlaceholder: type: string subscribers.manageLists: type: string subscribers.markUnsubscribed: type: string subscribers.newSubscriber: type: string subscribers.numSelected: type: string subscribers.optinSubject: type: string subscribers.preconfirm: type: string subscribers.preconfirmHelp: type: string subscribers.query: type: string subscribers.queryPlaceholder: type: string subscribers.reset: type: string subscribers.selectAll: type: string subscribers.sendOptinConfirm: type: string subscribers.sentOptinConfirm: type: string subscribers.status.blocklisted: type: string subscribers.status.confirmed: type: string subscribers.status.enabled: type: string subscribers.status.subscribed: type: string subscribers.status.unconfirmed: type: string subscribers.status.unsubscribed: type: string subscribers.subscribersDeleted: type: string templates.cantDeleteDefault: type: string templates.default: type: string templates.dummyName: type: string templates.dummySubject: type: string templates.errorCompiling: type: string templates.errorRendering: type: string templates.fieldInvalidName: type: string templates.makeDefault: type: string templates.newTemplate: type: string templates.placeholderHelp: type: string templates.preview: type: string templates.rawHTML: type: string templates.subject: type: string users.login: type: string users.logout: type: string ServerConfig: type: object properties: data: type: object properties: messengers: type: array items: type: string langs: type: array items: type: object properties: code: type: string name: type: string lang: type: string update: type: string needs_restart: type: boolean version: type: string DashboardChart: type: object properties: link_clicks: type: array items: type: object properties: count: type: integer date: type: string campaign_views: type: array items: type: object properties: count: type: integer date: type: string DashboardCount: type: object properties: data: type: object properties: subscribers: type: object properties: total: type: integer blocklisted: type: object orphans: type: integer lists: type: object properties: total: type: integer private: type: integer public: type: integer optin_single: type: integer optin_double: type: integer campaigns: type: object properties: total: type: integer by_status: type: object properties: draft: type: integer messages: type: integer SMTPSettings: type: object properties: uuid: type: string enabled: type: boolean host: type: string hello_hostname: type: string port: type: integer auth_protocol: type: string username: type: string email_headers: type: array items: type: object max_conns: type: integer max_msg_retries: type: integer idle_timeout: type: string wait_timeout: type: string tls_type: type: string tls_skip_verify: type: boolean SMTPTest: type: object properties: uuid: type: string enabled: type: boolean host: type: string hello_hostname: type: string port: type: integer auth_protocol: type: string username: type: string email_headers: type: array items: type: object max_conns: type: integer max_msg_retries: type: integer idle_timeout: type: string wait_timeout: type: string tls_type: type: string tls_skip_verify: type: boolean strEmailHeaders: type: string password: type: string email: type: string MailBoxBounces: type: object properties: uuid: type: string enabled: type: boolean type: type: string host: type: string port: type: integer auth_protocol: type: string return_path: type: string username: type: string tls_enabled: type: boolean tls_skip_verify: type: boolean scan_interval: type: string Settings: type: object properties: app.site_name: type: string app.root_url: type: string app.logo_url: type: string app.favicon_url: type: string app.from_email: type: string app.notify_emails: type: array items: type: string app.enable_public_subscription_page: type: boolean app.enable_public_archive: type: boolean app.send_optin_confirmation: type: boolean app.check_updates: type: boolean app.lang: type: string app.batch_size: type: integer app.concurrency: type: integer app.max_send_errors: type: integer app.message_rate: type: integer app.message_sliding_window: type: boolean app.message_sliding_window_duration: type: string app.message_sliding_window_rate: type: integer privacy.individual_tracking: type: boolean privacy.unsubscribe_header: type: boolean privacy.allow_blocklist: type: boolean privacy.allow_preferences: type: boolean privacy.allow_export: type: boolean privacy.allow_wipe: type: boolean privacy.exportable: type: array items: type: string privacy.domain_blocklist: type: array items: type: object upload.provider: type: string upload.filesystem.upload_path: type: string upload.filesystem.upload_uri: type: string upload.s3.url: type: string upload.s3.public_url: type: string upload.s3.aws_access_key_id: type: string upload.s3.aws_default_region: type: string upload.s3.bucket: type: string upload.s3.bucket_domain: type: string upload.s3.bucket_path: type: string upload.s3.bucket_type: type: string upload.s3.expiry: type: string smtp: type: array items: $ref: "#/components/schemas/SMTPSettings" messengers: type: array items: type: object bounce.enabled: type: boolean bounce.webhooks_enabled: type: boolean bounce.count: type: integer bounce.action: type: string bounce.ses_enabled: type: boolean bounce.sendgrid_enabled: type: boolean bounce.sendgrid_key: type: string bounce.postmark_enabled: type: boolean bounce.postmark_username: type: string bounce.postmark_password: type: string bounce.mailboxes: type: array items: $ref: "#/components/schemas/MailBoxBounces" appearance.admin.custom_css: type: string appearance.admin.custom_js: type: string appearance.public.custom_css: type: string appearance.public.custom_js: type: string SubscriberProfile: type: object properties: id: type: integer uuid: type: string email: type: string name: type: string attribs: type: object properties: city: type: string good: type: boolean type: type: string status: type: string created_at: type: string updated_at: type: string Subscriptions: type: object properties: subscription_status: type: string name: type: string type: type: string created_at: type: string SubscriberData: type: object properties: email: type: string profile: type: array items: $ref: "#/components/schemas/SubscriberProfile" subscriptions: type: array items: $ref: "#/components/schemas/Subscriptions" campaign_views: type: array items: type: object link_clicks: type: array items: type: object Subscriber: type: object properties: id: type: integer created_at: type: string updated_at: type: string uuid: type: string email: type: string name: type: string attribs: type: object properties: city: type: string good: type: boolean type: type: string status: type: string lists: type: array items: type: object properties: subscription_status: type: string id: type: integer uuid: type: string name: type: string type: type: string tags: type: array items: type: string created_at: type: string updated_at: type: string NewSubscriber: type: object properties: email: type: string name: type: string status: type: string lists: type: array items: type: integer list_uuids: type: array items: type: string preconfirm_subscriptions: type: boolean attribs: type: object properties: city: type: string projects: type: integer stack: type: object properties: languages: type: array items: type: string UpdateSubscriber: type: object properties: email: type: string name: type: string status: type: string lists: type: array items: type: integer list_uuids: type: array items: type: string preconfirm_subscriptions: type: boolean attribs: type: object properties: city: type: string projects: type: integer stack: type: object properties: languages: type: array items: type: string SubscriberQueryRequest: type: object properties: query: type: string ids: type: array description: The ids of the subscribers to be modified. items: type: integer action: type: string enum: [add, remove, unsubscribe] description: Whether to add, remove, or unsubscribe the users. target_list_ids: type: integer description: The ids of the lists to be modified. items: type: integer status: type: string enum: [confirmed, unconfirmed, unsubscribed] description: confirmed, unconfirmed, or unsubscribed status. Bounce: type: object properties: results: type: array items: type: object properties: id: type: integer type: type: string source: type: string meta: type: object created_at: type: string email: type: string subscriber_uuid: type: string subscriber_id: type: integer campaign: type: object properties: id: type: integer name: type: string campaign_uuid: type: string total: type: integer List: type: object properties: id: type: integer created_at: type: string updated_at: type: string uuid: type: string name: type: string type: type: string optin: type: string tags: type: array items: type: string subscriber_count: type: integer NewList: type: object properties: name: type: string type: type: string enum: [public, private] optin: type: string enum: [single, double] tags: type: array items: type: string ImportStatus: type: object properties: data: type: object properties: name: type: string total: type: integer imported: type: integer status: type: string Campaign: type: object properties: id: type: integer created_at: type: string updated_at: type: string CampaignID: type: integer views: type: integer clicks: type: integer lists: type: array items: type: object properties: id: type: integer name: type: string started_at: type: string to_send: type: integer sent: type: integer uuid: type: string type: type: string enum: [regular, optin] name: type: string subject: type: string from_email: type: string body: type: string send_at: type: string status: type: string content_type: type: string enum: [richtext, html, markdown, plain] tags: type: array items: type: string template_id: type: integer messenger: type: string CampaignContentRequest: type: object properties: id: type: integer created_at: type: string updated_at: type: string CampaignID: type: integer views: type: integer clicks: type: integer lists: type: array items: type: object properties: id: type: integer name: type: string started_at: type: string to_send: type: integer sent: type: integer uuid: type: string type: type: string enum: [regular, optin] name: type: string subject: type: string from_email: type: string body: type: string send_at: type: string status: type: string content_type: type: string enum: [richtext, html, markdown, plain] tags: type: array items: type: string template_id: type: integer messenger: type: string from: type: string to: type: string CampaignRequest: type: object properties: name: type: string subject: type: string lists: type: array items: type: number from_email: type: string content_type: type: string messenger: type: string type: type: string tags: type: array items: type: string send_later: type: boolean send_at: type: object properties: headers: type: array items: type: object template_id: type: number CampaignUpdate: type: object properties: name: type: string subject: type: string lists: type: array items: type: integer from_email: type: string messenger: type: string type: type: string tags: type: array items: type: string send_later: type: boolean send_at: type: object headers: type: array items: type: object template_id: type: integer content_type: type: string body: type: string altbody: type: string archive: type: boolean archive_template_id: type: integer archive_meta: type: object CampaignStats: type: object properties: id: type: integer status: type: string to_send: type: integer sent: type: integer started_at: type: string format: date updated_at: type: string format: date rate: type: integer net_rate: type: integer CampaignAnalyticsCount: type: object properties: campaign_id: type: integer count: type: integer timestamp: type: string format: date-time MediaFileObject: type: object properties: id: type: integer uuid: type: string filename: type: string created_at: type: string thumb_url: type: string uri: type: string Template: type: object properties: id: type: integer created_at: type: string updated_at: type: string name: type: string body: type: string type: type: string is_default: type: boolean TransactionalMessage: type: object properties: subscriber_email: type: string subscriber_id: type: integer template_id: type: integer from_email: type: string data: type: object headers: type: array items: type: object messenger: type: string content_type: type: string