openapi: 3.1.0 info: title: Webhooks version: 1.0.0 paths: {} webhooks: subscribed: post: operationId: subscribed summary: Newsletter List Subscription Subscribed responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_newsletter_list_subscription:NewsletterListSubscription' unsubscribed: post: operationId: unsubscribed summary: Newsletter List Subscription Unsubscribed responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_newsletter_list_subscription:NewsletterListSubscription' paused: post: operationId: paused summary: Subscription Paused responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' resumed: post: operationId: resumed summary: Subscription Resumed responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' episode-published: post: operationId: episode-published summary: Podcast Episode Published responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_podcasts:PodcastEpisode' episode-updated: post: operationId: episode-updated summary: Podcast Episode Updated responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_podcasts:PodcastEpisode' episode-archived: post: operationId: episode-archived summary: Podcast Episode Archived responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_podcasts:PodcastEpisode' episode-deleted: post: operationId: episode-deleted summary: Podcast Episode Deleted responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_podcasts:PodcastEpisode' private-feed-activated: post: operationId: private-feed-activated summary: Podcast Private Feed Activated responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_podcasts:PodcastPrivateFeed' sent: post: operationId: sent summary: Post Sent responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_post:Post' updated: post: operationId: updated summary: Post Updated responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_post:Post' scheduled: post: operationId: scheduled summary: Post Scheduled responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_post:Post' created: post: operationId: created summary: Subscription Created responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' confirmed: post: operationId: confirmed summary: Subscription Confirmed responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' deleted: post: operationId: deleted summary: Subscription Deleted responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' upgraded: post: operationId: upgraded summary: Subscription Upgraded responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' downgraded: post: operationId: downgraded summary: Subscription Downgraded responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' tier-paused: post: operationId: tier-paused summary: Subscription Tier Paused responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' tier-resumed: post: operationId: tier-resumed summary: Subscription Tier Resumed responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' tier-added: post: operationId: tier-added summary: Subscription Tier Created responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' tier-deleted: post: operationId: tier-deleted summary: Subscription Tier Deleted responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_subscription:Subscription' submitted: post: operationId: submitted summary: Survey Response Submitted responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: $ref: '#/components/schemas/type_survey:SurveyResponse' components: schemas: type_newsletter_list_subscription:NewsletterListSubscriptionStatus: type: string enum: - pending - active - inactive - paused description: The status of the newsletter list subscription. title: NewsletterListSubscriptionStatus type_newsletter_list_subscription:NewsletterListSubscriptionData: type: object properties: id: type: string description: The prefixed ID of the newsletter list subscription. list_name: type: string description: The name of the newsletter list. subscription_id: type: string description: The prefixed ID of the subscription. email: type: string description: The email address of the subscriber. status: $ref: '#/components/schemas/type_newsletter_list_subscription:NewsletterListSubscriptionStatus' description: The status of the newsletter list subscription. subscribed_at: type: integer description: The time the subscriber was added to the list. Measured in seconds since the Unix epoch. unsubscribed_at: type: integer description: The time the subscriber was removed from the list. Measured in seconds since the Unix epoch. created: type: integer description: The time the newsletter list subscription was created. Measured in seconds since the Unix epoch. updated: type: integer description: The time the newsletter list subscription was last updated. Measured in seconds since the Unix epoch. required: - id - list_name - subscription_id - email - status - created - updated title: NewsletterListSubscriptionData type_newsletter_list_subscription:NewsletterListSubscription: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_newsletter_list_subscription:NewsletterListSubscriptionData' title: NewsletterListSubscription type_podcasts:PodcastEpisodeStatus: type: string enum: - draft - scheduled - published - archived description: The status of the episode.
`draft` - Not yet published.
`scheduled` - Scheduled for future publication.
`published` - Available via web and RSS.
`archived` - No longer available via web or RSS. title: PodcastEpisodeStatus type_podcasts:PodcastShowStatus: type: string enum: - draft - live - archived description: The status of the podcast.
`draft` - No episodes have been published.
`live` - Published and active.
`archived` - The podcast is no longer active. title: PodcastShowStatus type_podcasts:PodcastShowType: type: string enum: - episodic - serial description: The type of the podcast.
`episodic` - Episodes can be consumed in any order.
`serial` - Episodes are intended to be consumed in order. title: PodcastShowType type_podcasts:PodcastShowData: type: object properties: id: type: string description: The prefixed ID of the podcast. created: type: integer description: The time the podcast was created. Measured in seconds since the Unix epoch. slug: type: string description: The URL slug of the podcast. description: type: string description: The description of the podcast. categories: type: array items: type: string description: Selected categories for the podcast, ordered by display position. artwork_url: type: string description: The URL of the podcast artwork. Empty string when no artwork is set. status: $ref: '#/components/schemas/type_podcasts:PodcastShowStatus' description: The status of the podcast. language: type: string description: The ISO 639-1 two-letter language code for the podcast. title: type: string description: The title of the podcast. author: type: string description: The author of the podcast. type: $ref: '#/components/schemas/type_podcasts:PodcastShowType' description: The type of the podcast. imported: type: boolean description: Whether the podcast was created via an import. copyright: type: string description: The copyright text for the podcast. publishing_frequency: type: integer description: The most common interval, in whole days, between consecutive published episodes. website_url: type: string description: The website URL associated with the podcast. explicit: type: boolean description: Whether the podcast is marked as explicit. platform_links: type: object additionalProperties: type: string description: Platform distribution URLs keyed by platform name. Present only for public podcasts. required: - id - created - slug - description - categories - artwork_url - status - language - title - author - type - imported - copyright - explicit title: PodcastShowData type_podcasts:PodcastEpisodeData: type: object properties: id: type: string description: The prefixed ID of the episode. created: type: integer description: The time the episode was created. Measured in seconds since the Unix epoch. updated: type: integer description: The time the episode was last updated. Measured in seconds since the Unix epoch. title: type: string description: The title of the episode. slug: type: string description: The web slug where this episode can be accessed. publish_date: type: integer description: The exact time the system published the episode (when it went live), not the scheduled time the user set for publication. Measured in seconds since the Unix epoch. Null when the episode has not been published. displayed_date: type: integer description: The time displayed in place of the `publish_date`. Measured in seconds since the Unix epoch. duration: type: integer description: The duration of the episode audio in seconds. Null when no completed audio file is available. description: type: string description: A plain-text, truncated version of the episode show notes (max 255 characters). show_notes: type: string description: The full HTML show notes for the episode. artwork_url: type: string description: The URL of the episode artwork. Falls back to the podcast artwork when the episode has none. Empty string when no artwork is set. status: $ref: '#/components/schemas/type_podcasts:PodcastEpisodeStatus' description: The status of the episode. season_number: type: integer description: The season number for the episode, if set. episode_number: type: integer description: The episode number within the season, if set. audio_url: type: string description: The public streaming URL for the episode audio. Null when no completed audio file is available. transcript_url: type: string description: The WebVTT transcript URL for the episode. Null when transcripts are disabled or no completed transcript is available. show: $ref: '#/components/schemas/type_podcasts:PodcastShowData' description: The podcast this episode belongs to. required: - id - created - updated - title - slug - displayed_date - description - show_notes - artwork_url - status - show title: PodcastEpisodeData type_podcasts:PodcastEpisode: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_podcasts:PodcastEpisodeData' title: PodcastEpisode type_subscription:SubscriptionDataStatus: type: string enum: - validating - invalid - pending - active - inactive - needs_attention description: The status of the subscription. title: SubscriptionDataStatus type_subscription:CustomFieldKind: type: string enum: - string - integer - number - boolean - date - datetime - list description: The type of the custom field. title: CustomFieldKind type_subscription:CustomFieldValue: type: object properties: name: type: string description: The display name of the custom field. kind: $ref: '#/components/schemas/type_subscription:CustomFieldKind' description: The type of the custom field. value: type: string description: 'The formatted value of the custom field. The actual JSON type depends on the kind: - string: the value as a string - integer, number: the value as a number (JSON number type) - boolean: true or false (JSON boolean type) - date: formatted date string (e.g., "Jan 15, 2024") - datetime: formatted date and time string (e.g., "Jan 15, 2024 3:45 PM") - list: comma-separated values as a string' required: - name - kind title: CustomFieldValue type_subscription:SubscriptionData: type: object properties: created: type: integer description: The time the subscription was created. Measured in seconds since the Unix epoch. email: type: string description: The email address of the subscription. id: type: string description: The prefixed ID of the subscription. referral_code: type: string description: The code associated to this subscriber to refer others. When a new subscription is created with this referral code, credit for the referral goes to this subscription. referring_site: type: string description: The website that the subscriber was referred from. status: $ref: '#/components/schemas/type_subscription:SubscriptionDataStatus' description: The status of the subscription. subscription_tier: type: string description: The tier of the subscription. subscription_premium_tier_names: type: array items: type: string description: The names of the premium tiers associated with the subscription. stripe_customer_id: type: string description: The Stripe customer ID associated with the subscription. utm_campaign: type: string description: The acquisition campaign that the subscriber was acquired from. utm_channel: type: string description: The channel that the subscriber was acquired from. utm_medium: type: string description: The medium that the subscriber was acquired from. utm_source: type: string description: The source that the subscriber was acquired from. custom_fields: type: array items: $ref: '#/components/schemas/type_subscription:CustomFieldValue' description: An array of custom field values that have been set on the subscription. Each custom field value includes the field name, kind (type), and formatted value. tags: type: array items: type: string description: An array of tag names that have been applied to the subscription. title: SubscriptionData type_podcasts:PodcastPrivateFeedData: type: object properties: id: type: string description: The prefixed ID of the private feed token. url: type: string description: The personalized private RSS feed URL. created: type: integer description: The time the private feed token was created. Measured in seconds since the Unix epoch. activated: type: integer description: The time the private feed was first fetched by a recognized podcast app. Measured in seconds since the Unix epoch. Null when the feed has not been activated. revoked: type: integer description: The time the private feed token was revoked. Measured in seconds since the Unix epoch. Null when the token has not been revoked. expires: type: integer description: The time the private feed token expires. Measured in seconds since the Unix epoch. Null when the token does not expire. subscription: $ref: '#/components/schemas/type_subscription:SubscriptionData' description: The subscription associated with the private feed token. show: $ref: '#/components/schemas/type_podcasts:PodcastShowData' description: The podcast associated with the private feed token. required: - id - url - created - subscription - show title: PodcastPrivateFeedData type_podcasts:PodcastPrivateFeed: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_podcasts:PodcastPrivateFeedData' title: PodcastPrivateFeed type_post:PostStatus: type: string enum: - draft - confirmed - archived description: The status of the post.
`draft` - not been scheduled.
`confirmed` - The post will be active after the `scheduled_at`.
`archived` - The post is no longer active. title: PostStatus type_post:PostData: type: object properties: audience: type: string description: The audience that the post is available to on the web. Only applicable if the platform is `web` or `both`. authors: type: array items: type: string description: An array of author names content_tags: type: array items: type: string description: All content tags that were associated with the post. created: type: integer description: The time the post was created. Measured in seconds since the Unix epoch displayed_date: type: integer description: The time displayed in place of the `publish_date`. Measured in seconds since the Unix epoch id: type: string description: The prefixed post id preview_text: type: string description: The email preview text publish_date: type: integer description: The time the post was set to be published. Measured in seconds since the Unix epoch slug: type: string description: The web slug where this post can be accessed. split_tested: type: boolean description: A flag to indicate if a split test was done. Only applicable to email posts. status: $ref: '#/components/schemas/type_post:PostStatus' description: The status of the post.
`draft` - not been scheduled.
`confirmed` - The post will be active after the `scheduled_at`.
`archived` - The post is no longer active. subject_line: type: string description: The email subject line. In cases of A/B Testing, this will be adjusted to the winning subject line. subtitle: type: string description: The subtitle displayed in web views thumbnail_url: type: string description: The URL of the thumbnail. Defaults to the Publication logo if not set. title: type: string description: The title displayed in web views web_url: type: string description: The full URL where this post can be accessed on the web. Only applicable if the platform is `web` or `both`. platform: type: string description: The platform that the post is or will be published to. meta_default_description: type: string description: Meta tag description for the post, called SEO Description in the admin UI meta_default_title: type: string description: Meta tag title for the post, called SEO Title in the admin UI hidden_from_feed: type: boolean description: A flag to indicate if the post is hidden from the website feed. enforce_gated_content: type: boolean description: A flag to indicate if the post enforces gated content for non-subscribers. email_capture_popup: type: boolean description: A flag to indicate if popup email capture is enabled for this post. required: - audience - authors - content_tags - created - id - preview_text - slug - split_tested - status - subject_line - subtitle - thumbnail_url - title - platform - hidden_from_feed - enforce_gated_content - email_capture_popup title: PostData type_post:Post: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_post:PostData' title: Post type_subscription:Subscription: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_subscription:SubscriptionData' title: Subscription type_survey:SurveyResponseQuestion: type: object properties: answer: type: string description: The answer provided to the question. prompt: type: string description: The question that was asked. type: type: string description: The type of question asked (e.g. multiple choice). title: SurveyResponseQuestion type_survey:SurveyResponseAnswer: type: object properties: answer: type: string description: The answer provided to the question. created: type: integer description: The time the answer was created. Measured in seconds since the Unix epoch. id: type: integer description: The ID of the answer. question_data: $ref: '#/components/schemas/type_survey:SurveyResponseQuestion' updated: type: integer description: The date the answer was updated. Measured in seconds since the Unix epoch. title: SurveyResponseAnswer type_survey:SurveyResponseData: type: object properties: answers: type: array items: $ref: '#/components/schemas/type_survey:SurveyResponseAnswer' description: An array of answers from the survey response. created: type: integer description: The time the survey response was created. Measured in seconds since the Unix epoch. id: type: string description: The response ID. This is unique to the individual submission. survey_id: type: string description: The ID of the survey that the response was submitted to. subscription: $ref: '#/components/schemas/type_subscription:SubscriptionData' updated: type: integer description: The date the survey response was updated. Measured in seconds since the Unix epoch. title: SurveyResponseData type_survey:SurveyResponse: type: object properties: uid: type: string description: The prefixed event ID, unique to each webhook event. event_timestamp: type: integer description: The date the event was created. Measured in seconds since the Unix epoch. event_type: type: string description: The event type. data: $ref: '#/components/schemas/type_survey:SurveyResponseData' title: SurveyResponse