{"basePath":"/","definitions":{"Action":{"properties":{"data":{"description":"For URL actions, this field is a full URL. For custom actions, it's an empty string.","type":"string"},"type":{"description":"For URL actions, this field is <code>openUrl</code>. For custom actions, it's the full URL of the custom action.","type":"string"}},"type":"object"},"ActionIcon":{"properties":{"iconType":{"$ref":"#/definitions/ActionIconType"},"imageName":{"type":"string"}},"required":["iconType","imageName"],"type":"object"},"ActionIconType":{"type":"object"},"ApiEmailTemplateModel":{"properties":{"bccEmails":{"description":"BCC emails","items":{"type":"string"},"type":"array"},"cacheDataFeed":{"description":"Cache data feed lookups for 1 hour","type":"object"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"ccEmails":{"description":"CC emails","items":{"type":"string"},"type":"array"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"creatorUserId":{"description":"Creator User Id","type":"string"},"dataFeedId":{"description":"[Deprecated - use dataFeedIds instead] Id for data feed used in template rendering","type":"number"},"dataFeedIds":{"description":"Ids for data feeds used in template rendering","items":{"type":"number"},"type":"array"},"fromEmail":{"description":"From email (must be an authorized sender)","type":"string"},"fromName":{"description":"From name","type":"string"},"googleAnalyticsCampaignName":{"description":"Google analytics utm_campaign value","type":"string"},"html":{"description":"HTML contents","type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nIdentifies if the locale associated with the response is the template’s default. If empty or flexible default locales are not enabled for the project, the project’s default locale is assigned.","type":"boolean"},"linkParams":{"description":"Parameters to append to each URL in html contents","items":{"$ref":"#/definitions/LinkParam"},"type":"array"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"mergeDataFeedContext":{"description":"Merge data feed contents into user context, so fields be referenced by {{field}} instead of [[field]]","type":"object"},"messageTypeId":{"description":"Message Type Id","type":"number"},"metadata":{"$ref":"#/definitions/ApiTemplateResponse","description":"Metadata"},"name":{"description":"Name of the template","type":"string"},"plainText":{"description":"Plain text contents","type":"string"},"preheaderText":{"description":"Preheader text","type":"string"},"replyToEmail":{"description":"Reply to email","type":"string"},"subject":{"description":"Subject","type":"string"},"templateId":{"description":"Email Template ID","format":"int64","type":"integer"}},"required":["templateId"],"type":"object"},"ApiEmbeddedMessage":{"properties":{"elements":{"$ref":"#/definitions/ApiEmbeddedMessagingElements","description":"Content to display in the message, and actions to invoke on click or tap."},"metadata":{"$ref":"#/definitions/ApiEmbeddedMessagingMetadata","description":"Identifying information about the embedded message."},"payload":{"description":"Custom JSON data. Use to customize the message display or trigger custom behavior.","type":"object"}},"type":"object"},"ApiEmbeddedMessagingElements":{"properties":{"body":{"description":"Body text of the embedded message.","type":"string"},"buttons":{"description":"Buttons to display with the embedded message.","items":{"$ref":"#/definitions/Button"},"type":"array"},"defaultAction":{"$ref":"#/definitions/Action","description":"Action to invoke when a user taps or clicks on the embedded message (but not on a button or link)."},"mediaUrl":{"description":"Image URL associated with the embedded message.","type":"string"},"mediaUrlCaption":{"description":"Alt text for the image specified by <code>mediaUrl</code>.","type":"string"},"text":{"description":"Text fields (other than title and body) to display with the embedded message.","items":{"$ref":"#/definitions/Text"},"type":"array"},"title":{"description":"Title text of the embedded message.","type":"string"}},"type":"object"},"ApiEmbeddedMessagingMetadata":{"properties":{"campaignId":{"description":"ID of the Iterable campaign associated with the embedded message.","format":"int32","type":"integer"},"isProof":{"description":"Whether or not the campaign is a test message (proof).","type":"boolean"},"messageId":{"description":"ID associated with the specific send of a specific campaign to a specific user.","type":"string"},"placementId":{"description":"ID of the placement to which the embedded message belongs.","format":"int64","type":"integer"},"priorityOrder":{"description":"Numeric priority, as compared to other embedded campaigns in the same placement. Lower numbers mean higher priority. Highest priority is 1.","format":"int64","type":"integer"}},"type":"object"},"ApiEmbeddedPlacement":{"properties":{"embeddedMessages":{"description":"Array of embedded messages associated with <code>placementId</code>. The user specified in the request is eligible for all messages in this array.","items":{"$ref":"#/definitions/ApiEmbeddedMessage"},"type":"array"},"placementId":{"description":"ID of a placement.","format":"int64","type":"integer"}},"type":"object"},"ApiEmbeddedTemplateModel":{"properties":{"body":{"description":"Body text of the embedded message","type":"string"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"campaignId":{"description":"Campaign ID","format":"int32","type":"integer"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"elements":{"$ref":"#/definitions/Elements","description":"Elements (buttons, media, text fields) for the embedded message"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nIdentifies if the locale associated with the response is the template's default. If empty or flexible default locales are not enabled for the project, the project's default locale is assigned.","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable automatically sends the content with a locale that matches a user profile's <code>locale</code> field.","type":"string"},"messageTypeId":{"description":"Message type ID","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"description":"Payload","type":"object"},"placementId":{"description":"Placement ID that this template is associated with","type":"object"},"templateId":{"description":"Embedded message template ID","format":"int64","type":"integer"},"title":{"description":"Title of the embedded message","type":"string"}},"required":["templateId"],"type":"object"},"ApiInAppMessage":{"properties":{"campaignId":{"description":"Campaign ID","type":"number"},"content":{"$ref":"#/definitions/InAppContentApi","description":"The content for the in-app message"},"createdAt":{"description":"Time the In-app message was created","format":"date-time","type":"string"},"customPayload":{"description":"The custom payload for the in-app message","type":"object"},"expiresAt":{"description":"Time the in-app message will expire","format":"date-time","type":"string"},"inboxMetadata":{"$ref":"#/definitions/InboxMetadata","description":"An object containing inbox metadata associated with this in-app message"},"jsonOnly":{"type":"boolean"},"messageId":{"description":"Iterable-generated Message ID","type":"string"},"messageType":{"$ref":"#/definitions/InAppType"},"ottPayload":{"$ref":"#/definitions/RokuContent","description":"The custom Roku payload for the in-app message"},"priorityLevel":{"description":"The priority value of the in-app message","type":"number"},"read":{"description":"Whether or not the message was read by user","type":"boolean"},"saveToInbox":{"description":"Whether or not the message associated with the event was configured to use the inbox","type":"boolean"},"trigger":{"$ref":"#/definitions/InAppTrigger","description":"The trigger type for the in-app message"},"typeOfContent":{"$ref":"#/definitions/InAppTypeOfContent"}},"required":["jsonOnly","messageType","typeOfContent"],"type":"object"},"ApiInAppMessagesResponse":{"properties":{"inAppMessages":{"items":{"$ref":"#/definitions/ApiInAppMessage"},"type":"array"}},"required":["inAppMessages"],"type":"object"},"ApiInAppTemplateModel":{"properties":{"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"campaignId":{"description":"Campaign ID","format":"int32","type":"integer"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"expirationDateTime":{"description":"The in-app message's absolute expiration time. If set to a time before the campaign sends, contacts will never see the message. Format is <code>YYYY-MM-DD HH:MM:SS</code> (UTC timestamp, time zones not allowed). Default expiration is 90 days after send time. For more information, read <a href=\"https://support.iterable.com/hc/articles/360044425951\">Creating In-App Templates</a>.","format":"date-time","type":"string"},"expirationDuration":{"description":"The in-app message's expiration time, relative to its send time. Should be an expression such as <code>now+90d</code>. Default expiration is 90 days after send time. For more information, read <a href=\"https://support.iterable.com/hc/articles/360044425951\">Creating In-App Templates</a>.","type":"string"},"html":{"description":"Html of the in-app notification","type":"string"},"inAppDisplaySettings":{"$ref":"#/definitions/InAppDisplaySettings","description":"Display settings"},"inboxMetadata":{"$ref":"#/definitions/InboxMetadata","description":"Title, subtitle, and thumbnail"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nIdentifies if the locale associated with the response is the template's default. If empty or flexible default locales are not enabled for the project, the project's default locale is assigned.","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable automatically sends the content with a locale that matches a user profile's <code>locale</code> field.","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"description":"Payload","type":"object"},"templateId":{"description":"In-app template ID","format":"int64","type":"integer"},"webInAppDisplaySettings":{"$ref":"#/definitions/WebInAppDisplaySettings","description":"Web In-app Display settings"}},"required":["templateId"],"type":"object"},"ApiPushTemplateModel":{"properties":{"badge":{"description":"Badge to set for push notification","type":"string"},"buttons":{"description":"Array of buttons that appear to respond to the push. Max of 3.","items":{"$ref":"#/definitions/PushActionButton"},"type":"array"},"cacheDataFeed":{"description":"Cache data feed lookups for 1 hour","type":"boolean"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"campaignId":{"description":"Campaign ID","type":"object"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"createdAt":{"description":"Date created [Read only]","format":"date-time","type":"string"},"dataFeedIds":{"description":"Ids for data feeds used in template rendering","items":{"type":"number"},"type":"array"},"deeplink":{"$ref":"#/definitions/DeeplinkURI","description":"Deep Link. A mapping that accepts two optional properties: 'ios' & 'android' and their respective deep link values."},"interruptionLevel":{"description":"An interruption level helps iOS determine when to alert a user about the arrival of a push notification","enum":["passive","active","time-sensitive","critical"],"type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nIdentifies if the locale associated with the response is the template's default. If empty or flexible default locales are not enabled for the project, the project's default locale is assigned.","type":"boolean"},"isSilentPush":{"description":"Whether or not this is a silent push notification template","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"mergeDataFeedContext":{"description":"Merge data feed contents into user context, so fields can be referenced by {{field}} instead of [[field]]","type":"boolean"},"message":{"description":"Push message","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"description":"Payload to send with push notification","type":"object"},"relevanceScore":{"description":"Relevance score for iOS notifications on iOS 15+. Number is clamped between 0 and 1.0","format":"double","type":"number"},"richMedia":{"$ref":"#/definitions/RichMediaURL","description":"Rich Media URL. A mapping that accepts two optional properties: 'ios' & 'android' and their respective rich media url values."},"sound":{"description":"Sound","type":"string"},"templateId":{"description":"Push template ID","format":"int64","type":"integer"},"title":{"description":"Push message title","type":"string"},"updatedAt":{"description":"Date last updated [Read only]","format":"date-time","type":"string"},"wake":{"description":"Set the content-available flag on iOS notifications, which will wake the app in the background","type":"boolean"}},"required":["templateId"],"type":"object"},"ApiResponseUser":{"properties":{"dataFields":{"type":"object"},"email":{"type":"string"},"userId":{"type":"string"}},"required":["email"],"type":"object"},"ApiSMSTemplateModel":{"properties":{"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"campaignId":{"description":"Campaign ID","type":"object"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"createdAt":{"description":"Date created [Read only]","format":"date-time","type":"string"},"googleAnalyticsCampaignName":{"description":"Google analytics utm_campaign value","type":"string"},"imageUrl":{"description":"Image Url","type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nIdentifies if the locale associated with the response is the template's default. If empty or flexible default locales are not enabled for the project, the project's default locale is assigned.","type":"boolean"},"linkParams":{"description":"Parameters to append to each URL in contents","items":{"$ref":"#/definitions/LinkParam"},"type":"array"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"message":{"description":"SMS message","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"templateId":{"description":"SMS template ID","format":"int64","type":"integer"},"trackingDomain":{"description":"Tracking Domain","type":"string"},"updatedAt":{"description":"Date last updated [Read only]","format":"date-time","type":"string"}},"required":["templateId"],"type":"object"},"ApiTemplateEntry":{"properties":{"campaignId":{"description":"ID of campaign using this template","format":"int64","type":"integer"},"locales":{"description":"Locales with content for this template","items":{"$ref":"#/definitions/string"},"type":"array"},"templateId":{"description":"Template ID","format":"int64","type":"integer"}},"required":["templateId"],"type":"object"},"ApiTemplateResponse":{"properties":{"campaignId":{"description":"Campaign ID","format":"int32","type":"integer"},"clientTemplateId":{"description":"Client template ID. Used as a secondary key to reference the template","type":"string"},"createdAt":{"description":"Date created","format":"date-time","type":"string"},"creatorUserId":{"description":"Creator email","type":"string"},"messageTypeId":{"description":"Message type ID","format":"int64","type":"integer"},"name":{"description":"Name of the template","type":"string"},"templateId":{"description":"Template ID","format":"int64","type":"integer"},"updatedAt":{"description":"Date last updated","format":"date-time","type":"string"}},"required":["createdAt","creatorUserId","messageTypeId","name","templateId","updatedAt"],"type":"object"},"ApiUserUpdateRequest":{"properties":{"createNewFields":{"description":"Whether new fields should be ingested and added to the schema. Defaults to project's setting to allow or drop unrecognized fields.","example":false,"type":"boolean"},"dataFields":{"description":"Data to store on the user profile identified by <code>userId</code> or <code>email</code>.","type":"object"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"mergeNestedObjects":{"description":"Merge top-level objects instead of overwriting them. Defaults to <code>false</code>. For example, if a user profile has data <code>{\"mySettings\":{\"mobile\":true}}</code> and the request has data <code>{\"mySettings\":{\"email\":true}}</code>, merging results in <code>{\"mySettings\":{\"mobile\":true,\"email\":true}}</code>.","example":false,"type":"boolean"},"preferUserId":{"description":"Whether or not a new user should be created if the request includes a <code>userId</code> that doesn't yet exist in the Iterable project. Defaults to <code>false</code>. Only respected in API calls for <a href=\"https://support.iterable.com/hc/articles/29156459027348\">email-based projects</a>.","example":false,"type":"boolean"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"ApiWebhookModel":{"properties":{"authToken":{"description":"Auth token","type":"string"},"authType":{"description":"The type of authentication Iterable uses when calling this webhook","enum":["NoAuth","Basic","OAuth2"],"type":"string"},"blastSendEnabled":{"description":"Whether or not Iterable calls this webhook for blast campaigns","type":"boolean"},"enabled":{"description":"Whether or not Iterable will call the webhook when sending campaigns","type":"boolean"},"endpoint":{"description":"The URL associated with the webhook","type":"string"},"headers":{"description":"Headers","items":{"$ref":"#/definitions/LinkParam"},"type":"array"},"id":{"description":"The ID of the webhook in Iterable","format":"int64","type":"integer"},"triggeredSendEnabled":{"description":"Whether or not Iterable calls this webhook for triggered campaigns","type":"boolean"}},"required":["id"],"type":"object"},"ApiWebhookResponse":{"properties":{"authType":{"description":"Auth type","type":"string"},"blastSendEnabled":{"description":"Blast Send Enabled","type":"boolean"},"channelIds":{"description":"Channel IDs","items":{"type":"object"},"type":"array"},"enabled":{"description":"Enabled","type":"boolean"},"endpoint":{"description":"Endpoint","type":"string"},"id":{"description":"Webhook ID","format":"int64","type":"integer"},"messageTypeIds":{"description":"Message Type IDs","items":{"type":"object"},"type":"array"},"triggeredSendEnabled":{"description":"Triggered Send Enabled","type":"boolean"}},"required":["authType","blastSendEnabled","enabled","endpoint","id","triggeredSendEnabled"],"type":"object"},"ArrayMerge":{"properties":{"dedupeBy":{"description":"The name of a top-level field that exists on the objects in the array being merged. The merge operation uses this field for de-duplicating the array merge.<br/><br/>An object in the source array is discarded from the array merge if it contains the field specified by <code>dedupeBy</code>, and if the destination array has an object with the same field and value. (The merge operation considers arrays to be equal if they have the same items, in the same order. Objects are considered equal if they have the same fields and values. Other data types must simply have the same value.)<br/><br/>If you do not provide a <code>dedupeBy</code> field in a given <code>ArrayMerge</code> object, when merging that array Iterable discards source objects that have exact matches in the analogous destination array (same equivalence rules as described above).<br/><br/>Provide this field only when <code>field</code> references an array of objects. Including <code>dedupeBy</code> when merging an array of some other data type (for example, an array of strings), will cause the entire user merge operation to fail.","type":"string"},"field":{"description":"The name of a top-level user profile field that contains an array. During the merge operation, the contents of this array on the source profile are merged with the contents of the same array on the destination profile. For details about de-duplicating array merges, see <code>dedupeBy</code>.<br/><br/>If you specify a <code>field</code> whose value is not an array (for example, a single number like <code>age</code>), the merge operation treats that field as an array with a single value. Because of this, after the merge, the value of that field on the destination user profile will be an array containing both of the original values (except if de-duplication affects the result).","type":"string"}},"type":"object"},"BeginSmsVerificationRequest":{"properties":{"phoneNumber":{"type":"string"},"verificationProfileId":{"format":"int64","type":"integer"}},"required":["phoneNumber","verificationProfileId"],"type":"object"},"BgColor":{"properties":{"alpha":{"description":"The opacity range of the background between 0-1","type":"number"},"hex":{"description":"The hex color of the background. Format: #FFFFFF","type":"string"}},"type":"object"},"BulkArchiveCampaignRequest":{"properties":{"campaignIds":{"description":"Campaign IDs to archive","items":{"type":"number"},"type":"array"}},"required":["campaignIds"],"type":"object"},"BulkArchiveCampaignsResponse":{"properties":{"failed":{"description":"Campaigns that failed to archive (ids)","items":{"type":"object"},"type":"array"},"success":{"description":"Campaigns that were successfully archived (ids)","items":{"type":"object"},"type":"array"}},"type":"object"},"BulkDeleteTemplatesRequest":{"properties":{"ids":{"description":"IDs of templates to be deleted.","items":{"type":"number"},"type":"array"}},"required":["ids"],"type":"object"},"BulkDeleteTemplatesResponse":{"properties":{"failed":{"description":"IDs of templates that failed to delete.","items":{"type":"object"},"type":"array"},"failureReason":{"description":"Reason for failure","type":"string"},"success":{"description":"IDs of templates that were successfully deleted.","items":{"type":"object"},"type":"array"}},"type":"object"},"BulkSubscriptionActionRequest":{"properties":{"users":{"description":"Users to subscribe/unsubscribe, identified by <code>email</code>.","items":{"type":"string"},"type":"array"},"usersByUserId":{"description":"Users to subscribe/unsubscribe, identified by <code>userId</code>.","items":{"type":"string"},"type":"array"}},"type":"object"},"BulkTrackRequest":{"properties":{"events":{"items":{"$ref":"#/definitions/TrackRequest"},"type":"array"}},"required":["events"],"type":"object"},"BulkTrackResponse":{"properties":{"createdFields":{"description":"Fields that were created because <code>createNewFields</code> was <code>true</code> or <code>createNewFields</code> was not set and the project is configured to add unrecognized event fields.","items":{"type":"string"},"type":"array","uniqueItems":true},"disallowedEventNames":{"items":{"type":"string"},"type":"array"},"failCount":{"description":"Number of events that could not be updated. See <code>failedUpdates</code> for more details.","format":"int32","type":"integer"},"failedUpdates":{"$ref":"#/definitions/FailedEventUpdates","description":"Details about failed event updates."},"filteredOutFields":{"description":"Fields that were dropped because <code>createNewFields</code> was <code>false</code> or <code>createNewFields</code> was not set and the project is configured to drop unrecognized event fields.","items":{"type":"string"},"type":"array","uniqueItems":true},"invalidEmails":{"description":"Malformed <code>email</code> addresses. This field is deprecated — use <code>failedUpdates</code> instead.","items":{"type":"string"},"type":"array"},"invalidUserIds":{"description":"<code>userId</code> values that were not found. This field is deprecated — use <code>failedUpdates</code> instead.","items":{"type":"string"},"type":"array"},"successCount":{"description":"Number of events that were updated in response to the request.","format":"int32","type":"integer"}},"required":["failCount","successCount"],"type":"object"},"BulkUpdateSubscriptionsRequest":{"properties":{"updateSubscriptionsRequests":{"description":"List of UpdateSubscriptionsRequests to process","items":{"$ref":"#/definitions/UpdateSubscriptionsRequest"},"type":"array"}},"required":["updateSubscriptionsRequests"],"type":"object"},"BulkUpdateSubscriptionsResponse":{"properties":{"failCount":{"description":"Number of users that weren't updated (due to invalid email or internal error)","format":"int64","type":"integer"},"invalidEmails":{"description":"A list of emails that weren't updated because they are invalid","items":{"type":"string"},"type":"array"},"invalidUserIds":{"description":"A list of userIds that weren't updated because they are invalid","items":{"type":"string"},"type":"array"},"successCount":{"description":"Number of users successfully updated","format":"int64","type":"integer"},"validEmailFailures":{"description":"A list of emails that weren't updated due to internal error","items":{"type":"string"},"type":"array"},"validUserIdFailures":{"description":"A list of userIds that weren't updated due to internal error","items":{"type":"string"},"type":"array"}},"required":["failCount","invalidEmails","invalidUserIds","successCount","validEmailFailures","validUserIdFailures"],"type":"object"},"BulkUpdateUsersRequest":{"properties":{"createNewFields":{"description":"Whether new fields should be ingested and added to the schema. Defaults to project's setting to allow or drop unrecognized fields. Added fields will be included in the response's <code>createdFields</code>. Dropped fields will be included in <code>filteredOutFields</code> and not added to user profiles.","example":false,"type":"boolean"},"users":{"items":{"$ref":"#/definitions/OptionalApiUser"},"type":"array"}},"required":["users"],"type":"object"},"Button":{"properties":{"action":{"$ref":"#/definitions/Action","description":"Action to invoke when a user taps the button."},"id":{"description":"ID of the button.","type":"string"},"title":{"description":"Text to display on the button.","type":"string"}},"type":"object"},"CampaignDetails":{"properties":{"campaignState":{"enum":["Draft","Ready","Scheduled","Running","Finished","Starting","Aborted","Recurring","Archived"],"type":"string"},"createdAt":{"description":"Creation timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"createdByUserId":{"type":"string"},"endedAt":{"description":"Ended timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"id":{"type":"number"},"labelIds":{"description":"Label IDs associated with this campaign.","items":{"format":"int64","type":"integer"},"type":"array"},"labels":{"description":"Label names associated with this campaign.","items":{"type":"string"},"type":"array"},"listIds":{"items":{"format":"int64","type":"integer"},"type":"array"},"messageMedium":{"type":"string"},"name":{"type":"string"},"recurringCampaignId":{"type":"number"},"sendSize":{"type":"number"},"startAt":{"description":"Start timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"suppressionListIds":{"items":{"format":"int64","type":"integer"},"type":"array"},"templateId":{"type":"number"},"type":{"enum":["Blast","Triggered"],"type":"string"},"updatedAt":{"description":"Last update timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"updatedByUserId":{"type":"string"},"workflowId":{"type":"number"}},"required":["campaignState","createdAt","createdByUserId","id","messageMedium","name","type","updatedAt"],"type":"object"},"CampaignIdRequest":{"properties":{"campaignId":{"type":"number"}},"required":["campaignId"],"type":"object"},"CampaignsResponse":{"properties":{"campaigns":{"items":{"$ref":"#/definitions/CampaignDetails"},"type":"array"},"nextPageUrl":{"description":"The URL to the next page of campaigns, if applicable.","type":"string"},"previousPageUrl":{"description":"The URL to the previous page of campaigns, if applicable.","type":"string"},"totalCampaignsCount":{"description":"The total count of campaigns across all pages for the supplied query. Only present when using pagination.","type":"object"}},"required":["campaigns"],"type":"object"},"CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required":{"properties":{"campaignId":{"description":"The ID of the campaign associated with the scheduled message you'd like to cancel. If you provide a <code>campaignId</code>, you must also provide an <code>email</code> or <code>userId</code>, depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"number"},"email":{"description":"An email address that identifies a user profile in Iterable. If you provide a <code>campaignId</code>, you must also provide an <code>email</code> or a <code>userId</code>, depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"scheduledMessageId":{"type":"number"},"userId":{"description":"A user ID that identifies a user profile in Iterable. If you provide a <code>campaignId</code>, you must also provide an <code>email</code> or a <code>userId</code>, depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"CatalogBulkDeleteRequest":{"properties":{"itemIds":{"items":{"type":"string"},"type":"array"}},"required":["itemIds"],"type":"object"},"CatalogBulkUploadRequest":{"properties":{"documents":{"description":"Json map of id to values. Max number of pairs in list is 1000. Max size of each json value is is 30kb.","type":"object"},"replaceUploadedFieldsOnly":{"description":"Whether to replace only the upload fields within each document, not each entire document","type":"boolean"}},"required":["documents","replaceUploadedFieldsOnly"],"type":"object"},"CatalogFieldDefinitionSerializedModel":{"properties":{"children":{"items":{"$ref":"#/definitions/CatalogFieldDefinitionSerializedModel"},"type":"array"},"fieldName":{"type":"string"},"fieldType":{"type":"string"}},"required":["fieldName","fieldType"],"type":"object"},"CatalogFieldMappingsResponse":{"properties":{"definedMappings":{"additionalProperties":{"type":"string"},"type":"object"},"undefinedFields":{"items":{"type":"string"},"type":"array"}},"required":["definedMappings","undefinedFields"],"type":"object"},"CatalogIndexItemRequest":{"properties":{"value":{"description":"JSON representation of the catalog item. Max size is is 30kb.","type":"object"}},"required":["value"],"type":"object"},"CatalogItemWithProperties":{"properties":{"catalogName":{"type":"string"},"itemId":{"type":"string"},"lastModified":{"format":"date-time","type":"string"},"size":{"format":"int64","type":"integer"},"value":{"$ref":"#/definitions/JsObject"}},"required":["catalogName","itemId","lastModified","size","value"],"type":"object"},"CatalogMappingsUpdateRequest":{"properties":{"mappingsUpdates":{"description":"mappingsUpdates","items":{"$ref":"#/definitions/CatalogFieldDefinitionSerializedModel"},"type":"array"}},"required":["mappingsUpdates"],"type":"object"},"CatalogName":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"CatalogUpdateItemRequest":{"properties":{"update":{"description":"JSON representation of the catalog item fields to update.  Max size is is 30kb.","type":"object"}},"required":["update"],"type":"object"},"ChannelDetails":{"properties":{"channelType":{"description":"Channel type","enum":["Marketing","Transactional"],"type":"string"},"id":{"format":"int64","type":"integer"},"messageMedium":{"description":"Medium of this channel","enum":["Email","Push","SMS"],"type":"string"},"name":{"type":"string"}},"required":["channelType","id","messageMedium","name"],"type":"object"},"ChannelsResponse":{"properties":{"channels":{"items":{"$ref":"#/definitions/ChannelDetails"},"type":"array"}},"required":["channels"],"type":"object"},"CheckSmsVerificationRequest":{"properties":{"code":{"type":"string"},"phoneNumber":{"type":"string"},"verificationProfileId":{"format":"int64","type":"integer"}},"required":["code","phoneNumber","verificationProfileId"],"type":"object"},"ClientDataType":{"properties":{"send":{"type":"boolean"},"updatable":{"type":"boolean"}},"required":["send","updatable"],"type":"object"},"ClientTemplateIdResponse":{"properties":{"templates":{"description":"Templates that match client template id","items":{"$ref":"#/definitions/ApiTemplateEntry"},"type":"array"}},"required":["templates"],"type":"object"},"CommerceItem":{"properties":{"categories":{"description":"Categories this product belongs to. It can belong to multiple categories. Each category is a breadcrumb in list form.","items":{"type":"string"},"type":"array"},"dataFields":{"description":"Additional item properties","type":"object"},"description":{"type":"string"},"id":{"description":"Unique product identifier","type":"string"},"imageUrl":{"description":"URL to an image of the item.","type":"string"},"name":{"type":"string"},"price":{"format":"double","type":"number"},"quantity":{"format":"int64","type":"integer"},"sku":{"type":"string"},"url":{"description":"URL to the item.","type":"string"}},"required":["id","name","price","quantity"],"type":"object"},"Cookie":{"properties":{"asJava":{"$ref":"#/definitions/Cookie"},"domain":{"type":"string"},"httpOnly":{"type":"boolean"},"maxAge":{"type":"object"},"name":{"type":"string"},"path":{"type":"string"},"sameSite":{"$ref":"#/definitions/SameSite"},"secure":{"type":"boolean"},"value":{"type":"string"}},"required":["asJava","httpOnly","name","path","secure","value"],"type":"object"},"CreateCampaignRequest":{"properties":{"campaignDataFields":{"description":"A JSON object containing campaign-level data fields that are available as merge parameters (for example, <code>{{field}}</code>) during message rendering. These fields are available in templates, data feed URLs, and all other contexts where merge parameters are supported. Campaign-level fields are overridden by user and event data fields of the same name.","type":"object"},"dataFields":{"description":"A JSON object containing data to be statically rendered into the base template at creation time using double square brackets (for example, <code>[[field]]</code>). These values replace the placeholders in the base template and are baked into the campaign template, and cannot be changed later. Supported by email campaigns only.","type":"object"},"defaultTimeZone":{"description":"For a scheduled blast campaign, when <code>sendMode</code> is <code>RecipientTimeZone</code>, <code>defaultTimeZone</code> specifies the time zone to use when sending to recipients without a known time zone. IANA format (for example, <code>America/Los_Angeles</code>). For more details, see our <a href=\"https://support.iterable.com/hc/articles/204780579#post-api-campaigns-create\">API Overview</a>.","type":"string"},"labelIds":{"description":"An optional array of label IDs to associate with the new campaign. Labels must exist in the project. Maximum 50 labels allowed.","items":{"format":"int64","type":"integer"},"type":"array"},"listIds":{"description":"To create a blast campaign, set <code>listIds</code> to a non-empty array of list IDs to which the campaign should be sent. To create a triggered campaign, omit <code>listIds</code> from the request body.","items":{"format":"int64","type":"integer"},"type":"array"},"name":{"description":"The name to use in Iterable for the new campaign.","type":"string"},"scheduleSend":{"description":"Whether to immediately schedule the blast campaign for sending. Defaults to <code>true</code>. Set to <code>false</code> to create the campaign without scheduling it (the campaign can be scheduled later using <code>POST /api/campaigns/{campaignId}/schedule</code>). Only applies to blast campaigns.","example":false,"type":"boolean"},"sendAt":{"description":"A scheduled send time for a new blast campaign, up to 21 days in the future. Format: <code>YYYY-MM-DD HH:MM:SS</code> (UTC). For more details, see our <a href=\"https://support.iterable.com/hc/articles/204780579#post-api-campaigns-create\">API Overview</a>.","type":"string"},"sendMode":{"description":"When creating a blast campaign, set <code>sendMode</code> to <code>RecipientTimeZone</code> to have Iterable send the campaign to each recipient at a given local time in their own time zone — the same local time associated with <code>sendAt</code> (UTC) in <code>startTimeZone</code>. Or set <code>sendMode</code> to <code>ProjectTimeZone</code> (default value) to have Iterable send the campaign to all recipients at the UTC time specified by <code>sendAt</code>, regardless of local time zone. For more details, see our <a href=\"https://support.iterable.com/hc/articles/204780579#post-api-campaigns-create\">API Overview</a>.","enum":["ProjectTimeZone","RecipientTimeZone"],"type":"string"},"startTimeZone":{"description":"For a scheduled blast campaign, when <code>sendMode</code> is <code>RecipientTimeZone</code>, Iterable sends the campaign at the same local time in all recipient time zones — starting with <code>startTimeZone</code>. Recipients in time zones to the east of <code>startTimeZone</code> receive the campaign simultaneously with recipients in <code>startTimeZone</code>, and recipients in time zones to the west of <code>startTimeZone</code> receive the campaign when the same local time arrives in their own time zone. IANA format (for example, <code>America/New_York</code>). For more details, see our <a href=\"https://support.iterable.com/hc/articles/204780579#post-api-campaigns-create\">API Overview</a>.","type":"string"},"suppressionListIds":{"description":"An array of suppression list IDs to associate with a new blast campaign.","items":{"format":"int64","type":"integer"},"type":"array"},"templateId":{"description":"The ID of a template to associate with the new campaign. The new campaign receives a copy of this template.","type":"number"}},"required":["listIds","name","templateId"],"type":"object"},"CreateCampaignResponse":{"properties":{"campaignId":{"type":"number"}},"required":["campaignId"],"type":"object"},"CreateListRequest":{"properties":{"description":{"type":"string"},"name":{"type":"string"}},"required":["name"],"type":"object"},"CreateListResponse":{"properties":{"listId":{"format":"int64","type":"integer"}},"required":["listId"],"type":"object"},"CreateSnippetRequest":{"description":"Request model for creating a snippet","properties":{"content":{"description":"Content of the snippet. Handlebars must be valid. Disallowed content: script tags with JS sources or non-JSON content, inline JS event handlers (e.g., <code>onload=&quot;...&quot;</code>), and <code>javascript:</code> in <code>href</code> or <code>src</code> attributes (anchors and iframes).","type":"string"},"createdByUserId":{"description":"User ID (email) of the creator. If not provided, defaults to the project creator.","type":"string"},"description":{"description":"Description of the snippet.","type":"string"},"name":{"description":"Name of the snippet. Must be unique within the project, up to 100 characters (a-z, A-Z, 0-9, hyphens (-), underscores (_), and spaces). Cannot be changed after snippet is created.","type":"string"},"variables":{"description":"A list of variable names used in the content with a Handlebars expression such as <code>{{#if (eq myVariable \"someValue\")}}</code>. Variable names are case-sensitive and should be simple identifiers (letters, numbers, underscores). To learn more about using variables in Snippets, see <a href=\\\"https://support.iterable.com/hc/articles/4414796078868\\\">Customizing Snippets with Variables</a>.","items":{"type":"string"},"type":"array"}},"required":["content","name"],"type":"object"},"CreateSnippetResponse":{"description":"Response model for creating a snippet","properties":{"snippetId":{"description":"ID of the created snippet.","format":"int64","type":"integer"}},"type":"object"},"DeeplinkURI":{"properties":{"android":{"type":"string"},"ios":{"type":"string"}},"type":"object"},"DeleteSnippetResponse":{"description":"Response model for deleting a snippet","properties":{"snippetId":{"description":"ID of the deleted snippet.","format":"int64","type":"integer"}},"type":"object"},"Device":{"properties":{"applicationName":{"description":"The Iterable push integration to associate with the device token. Usually matches the package name (or bundle ID) of the relevant mobile app. To check, navigate to <strong>Settings > Mobile Apps</strong>, open the mobile app, look at the <strong>Push</strong> section and find the <strong>Name</strong> column for the relevant push integration.","type":"string"},"dataFields":{"type":"object"},"platform":{"description":"The device platform","enum":["APNS","APNS_SANDBOX","GCM"],"type":"string"},"token":{"type":"string"}},"required":["applicationName","platform","token"],"type":"object"},"DeviceInfo":{"properties":{"appPackageName":{"description":"Package name of the app.","type":"string"},"deviceId":{"description":"Device unique identifier.","type":"string"},"platform":{"description":"Device platform (case-sensitive).","enum":["iOS","Android","Web"],"type":"string"}},"required":["appPackageName","deviceId","platform"],"type":"object"},"DisableDeviceRequest":{"properties":{"email":{"description":"Specific email this device belongs to disable. Will disable device under all users with this device by default.","type":"string"},"token":{"description":"The device token","type":"string"},"userId":{"description":"Specific userId this device belongs to disable. Will disable device under all users with this device by default.","type":"string"}},"required":["token"],"type":"object"},"DoubleOptInSubscriptionsRequest":{"properties":{"brandName":{"description":"To provide context, every double opt-in confirmation message includes a brand name. The value to use for this brand name is determined by (in priority order): the <code>brandName</code> included in the request body (if specified), the default brand name associated with the specified message types (if those message types all have the same default brand name), or a comma-separated, de-duplicated list of default brand names associated with the specified message types (if those message types have different default brand names).","type":"string"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageTypeIds":{"description":"List of SMS, double opt-in message type IDs to which the user should be subscribed.","items":{"type":"object"},"type":"array"},"phoneNumber":{"description":"The <code>phoneNumber</code> to set on the specified user's profile.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageTypeIds"],"type":"object"},"Elements":{"properties":{"buttons":{"description":"Buttons to display with the embedded message. Each template may have up to two buttons with associated open URLs or custom actions.","items":{"$ref":"#/definitions/Button"},"type":"array"},"defaultAction":{"$ref":"#/definitions/Action","description":"The open action that occurs when a user clicks on the embedded message itself."},"mediaUrl":{"description":"URL for image or video content to display in the embedded message.","type":"string"},"mediaUrlCaption":{"description":"Alt text for the media specified by <code>mediaUrl</code>.","type":"string"},"text":{"description":"Custom text fields for the template. Each custom text field has a <code>label</code> key that is predefined by the template's associated placement, and a configurable <code>text</code> value.","items":{"$ref":"#/definitions/Text"},"type":"array"}},"type":"object"},"EmbeddedClickRequest":{"properties":{"buttonIdentifier":{"description":"ID of the button that was clicked (button IDs are defined in Iterable, as part of the template / campaign).","type":"string"},"createdAt":{"description":"The time of the click's occurrence (Unix timestamp). If unspecified, gets set to the time Iterable received the event.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the click."},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageId":{"description":"ID of the message on which the click occurred.","type":"string"},"targetUrl":{"description":"URL associated with the click.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"EmbeddedMessagesResponse":{"properties":{"placements":{"description":"Array of objects, each with a <code>placementId</code> and an associated list of embedded messages for which the specified user is eligible.","items":{"$ref":"#/definitions/ApiEmbeddedPlacement"},"type":"array"}},"type":"object"},"EmbeddedReceivedRequest":{"properties":{"createdAt":{"description":"The time of the event's occurrence (Unix timestamp). If unspecified, gets set to the time Iterable received the event.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the message receipt."},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageId":{"description":"ID of the message that was retrieved by a device.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"EmbeddedSession":{"properties":{"end":{"description":"Session end time (Unix timestamp).","format":"int64","type":"integer"},"id":{"description":"Unique identifier (such as a UUID) to associate with the session.","type":"string"},"start":{"description":"Session start time (Unix timestamp).","format":"int64","type":"integer"}},"type":"object"},"EmbeddedSessionRequest":{"properties":{"createdAt":{"description":"The time of the event's occurrence (Unix timestamp). If unspecified, gets set to the time Iterable received the event.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the session."},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"impressions":{"description":"Impressions associated with the session.","items":{"$ref":"#/definitions/Impression"},"type":"array"},"session":{"$ref":"#/definitions/EmbeddedSession","description":"Information about the session (period of time when a user was viewing a screen or page that displays embedded messages, in one or many placements)."},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"ErrorHttpResponse":{"properties":{"code":{"type":"string"},"data":{"$ref":"#/definitions/JsObject"},"error":{"$ref":"#/definitions/ErrorWithStatus"},"message":{"type":"string"}},"required":["code","data","error","message"],"type":"object"},"ErrorWithStatus":{"properties":{"status":{"$ref":"#/definitions/Status"}},"required":["status"],"type":"object"},"ExperimentMetricsResponse":{"properties":{"headers":{"type":"string"},"rows":{"description":"Rows of the report.","items":{"type":"string"},"type":"array"}},"type":"object"},"ExperimentConstraints":{"description":"Experiment constraints/targeting","properties":{"suppressionListIds":{"description":"List IDs to suppress","items":{"format":"int64","type":"integer"},"type":"array"},"targetSegment":{"description":"Target segment description","type":"string"}},"type":"object"},"ExperimentListItem":{"description":"Summary of an experiment for list responses","properties":{"author":{"description":"Email of the experiment creator","type":"string"},"channelType":{"description":"Channel type for this experiment.","type":"string","enum":["email","push","sms","in_app","web_push"]},"finishDate":{"description":"Finish date of the experiment","format":"date-time","type":"string"},"id":{"description":"Experiment ID","format":"int64","type":"integer"},"name":{"description":"Experiment name","type":"string"},"startDate":{"description":"Start date of the experiment","format":"date-time","type":"string"},"status":{"description":"Experiment status","type":"string","enum":["draft","ready","running","finished","winner_found"]}},"required":["author","channelType","id","name","status"],"type":"object"},"ExperimentListResponse":{"description":"Response for listing experiments","properties":{"experiments":{"description":"List of experiments","items":{"$ref":"#/definitions/ExperimentListItem"},"type":"array"},"pagination":{"$ref":"#/definitions/PaginationResponse","description":"Pagination information"}},"required":["experiments","pagination"],"type":"object"},"ExperimentMeta":{"description":"Experiment metadata","properties":{"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"conversionMetrics":{"description":"Conversion metrics being tracked","items":{"type":"string"},"type":"array"},"name":{"description":"Experiment name","type":"string"},"orgId":{"description":"Organization ID","format":"int64","type":"integer"},"projectId":{"description":"Project ID","format":"int64","type":"integer"}},"required":["conversionMetrics","name","orgId","projectId"],"type":"object"},"ExperimentResponse":{"description":"Full experiment details","properties":{"allocationMode":{"description":"Traffic allocation mode","type":"string"},"channelType":{"description":"Channel type for the experiment.","type":"string","enum":["email","push","sms","in_app","web_push"]},"constraints":{"$ref":"#/definitions/ExperimentConstraints","description":"Experiment constraints/targeting"},"creationDate":{"description":"Date the experiment was created","format":"date-time","type":"string"},"experimentType":{"description":"Experiment type","type":"string"},"finishDate":{"description":"End date of the experiment","format":"date-time","type":"string"},"id":{"description":"Experiment ID","format":"int64","type":"integer"},"meta":{"$ref":"#/definitions/ExperimentMeta","description":"Experiment metadata"},"sizing":{"$ref":"#/definitions/ExperimentSizingResponse","description":"Traffic allocation sizing details"},"startDate":{"description":"Start date of the experiment","format":"date-time","type":"string"},"status":{"description":"Experiment status","type":"string","enum":["draft","ready","running","finished","winner_found"]},"variants":{"description":"Experiment variants","items":{"$ref":"#/definitions/ExperimentVariantSummary"},"type":"array"}},"required":["allocationMode","channelType","experimentType","id","meta","sizing","status","variants"],"type":"object"},"ExperimentSizingResponse":{"description":"Experiment traffic allocation","properties":{"holdoutPercentage":{"description":"Percentage of total audience reserved as a holdout group that does not receive any experiment traffic. Null if the experiment has no holdout group configured.","format":"double","type":"number"},"perVariantPercentage":{"description":"Percentage of total audience distributed evenly to each variant for experiments with a blast campaign that include all users. Null for other experiment types.","format":"double","type":"number"},"testGroupPercentage":{"description":"Percentage of total audience used as the test group, split evenly among variants (defaults to 20%). During the test phase, Iterable sends to this group to determine which variant performs best.","format":"double","type":"number"},"winnerGroupPercentage":{"description":"Percentage of total audience (minus the holdout group) that receives the winning variant after the test phase completes (the optimized group). Users who already received a non-winning variant during the test phase do not receive the winner again.","format":"double","type":"number"},"testDurationMinutes":{"description":"How long the test phase runs before Iterable selects a winner, in minutes. Defaults to 120 minutes. Applies only to experiments with blast campaigns that are not based on a specified send time.","format":"int32","type":"integer"},"sendsPerVariant":{"description":"Minimum number of sends each variant must receive before the test phase ends and a winner can be selected. Defaults to 1000. Applies only to triggered campaign experiments.","format":"int32","type":"integer"}},"type":"object"},"ExperimentVariantSummary":{"description":"Variant summary for experiment response","properties":{"currentPercentage":{"description":"Percentage of total audience distributed to this variant, allocated based on the type of experiment you're running.","format":"double","type":"number"},"id":{"description":"Variant ID","format":"int64","type":"integer"},"isControl":{"description":"Whether this variant is the control variant","type":"boolean"},"isWinner":{"description":"Whether this variant is the winner","type":"boolean"},"name":{"description":"Variant name","type":"string"},"value":{"$ref":"#/definitions/ExperimentVariantValue","description":"Typed variant value object (e.g., templateId/sendTime/stoGroup)"}},"required":["currentPercentage","id","isControl","isWinner","name","value"],"type":"object"},"ExperimentVariantValue":{"description":"Typed variant value payload. Only present fields are serialized.","properties":{"sendTime":{"description":"Send time for send-time variants (ISO-8601 string)","type":"string"},"stoGroup":{"description":"STO group identifier for STO variants","type":"string"},"templateId":{"description":"Template ID for template-based variants","format":"int64","type":"integer"}},"type":"object"},"ExperimentVariantsResponse":{"description":"Response for experiment variants with content","properties":{"experimentId":{"description":"Experiment ID","format":"int64","type":"integer"},"variants":{"description":"List of variants with content","items":{"$ref":"#/definitions/VariantContentResponse"},"type":"array"}},"required":["experimentId","variants"],"type":"object"},"PaginationResponse":{"description":"Pagination information for list responses","properties":{"limit":{"description":"Number of items per page","format":"int32","type":"integer"},"offset":{"description":"Current offset","format":"int32","type":"integer"},"total":{"description":"Total number of items","format":"int64","type":"integer"}},"required":["limit","offset","total"],"type":"object"},"TemplateContentResponse":{"description":"Template content for a variant","properties":{"htmlSource":{"description":"HTML source of the template","type":"string"},"plainText":{"description":"Plain text version of the template","type":"string"},"preheader":{"description":"Email preheader text","type":"string"},"subject":{"description":"Email subject line","type":"string"}},"type":"object"},"VariantContentResponse":{"description":"Variant with content details","properties":{"content":{"$ref":"#/definitions/TemplateContentResponse","description":"Template content"},"currentPercentage":{"description":"Percentage of total audience distributed to this variant, allocated based on the type of experiment you're running.","format":"double","type":"number"},"name":{"description":"Variant name","type":"string"},"value":{"$ref":"#/definitions/ExperimentVariantValue","description":"Typed variant value object (e.g., templateId/sendTime/stoGroup)"},"variantId":{"description":"Variant ID","format":"int64","type":"integer"}},"required":["currentPercentage","name","value","variantId"],"type":"object"},"ExportFileAndUrl":{"properties":{"file":{"description":"The name of the file.","example":"file-1679086247925.csv","type":"string"},"url":{"description":"A URL that can be used to download the file. Expires after 30 minutes.","type":"string"}},"required":["file","url"],"type":"object"},"ExportJobStatusAndFiles":{"properties":{"exportTruncated":{"description":"Whether the export was truncated because it exceeded the max allowed export size","type":"boolean"},"files":{"description":"The current page of files","items":{"$ref":"#/definitions/ExportFileAndUrl"},"type":"array"},"jobId":{"description":"The ID of the export job","example":3562,"format":"int64","type":"integer"},"jobState":{"description":"The state of the export job","enum":["Enqueued","Running","Completed","Failed"],"example":"Running","type":"string"}},"required":["exportTruncated","files","jobId","jobState"],"type":"object"},"FailedEventUpdates":{"properties":{"forgottenEmails":{"description":"<code>email</code> addresses of users that were not updated because they've been GDPR forgotten.","items":{"type":"string"},"type":"array"},"forgottenUserIds":{"description":"<code>userId</code> values of users that were not updated because they've been GDPR forgotten.","items":{"type":"string"},"type":"array"},"invalidEmails":{"description":"Malformed <code>email</code> addresses.","items":{"type":"string"},"type":"array"},"invalidUserIds":{"description":"Malformed <code>userId</code> values (e.g. empty, too long, or containing non-ASCII or non-printable characters or a trailing space).","items":{"type":"string"},"type":"array"},"notFoundEmails":{"description":"<code>email</code> addresses that were not found.","items":{"type":"string"},"type":"array"},"notFoundUserIds":{"description":"<code>userId</code> values that were not found.","items":{"type":"string"},"type":"array"}},"type":"object"},"FailedUserUpdates":{"properties":{"conflictEmails":{"description":"Existing <code>email</code> addresses that prevented identity updates for users in the request.","items":{"type":"string"},"type":"array"},"conflictUserIds":{"description":"Existing <code>userId</code> values that prevented identity updates for users in the request.","items":{"type":"string"},"type":"array"},"forgottenEmails":{"description":"<code>email</code> addresses of users that were not updated because they've been GDPR forgotten.","items":{"type":"string"},"type":"array"},"forgottenUserIds":{"description":"<code>userId</code> values of users that were not updated because they've been GDPR forgotten.","items":{"type":"string"},"type":"array"},"invalidDataEmails":{"description":"<code>email</code> addresses of users that were not updated because of invalid data in <code>dataFields</code> other than an invalid <code>email</code> or <code>userId</code>.","items":{"type":"string"},"type":"array"},"invalidDataUserIds":{"description":"<code>userId</code> values of users that were not updated because of invalid data in <code>dataFields</code> other than an invalid <code>email</code> or <code>userId</code>.","items":{"type":"string"},"type":"array"},"invalidEmails":{"description":"Malformed <code>email</code> addresses found either at the top level of a passed-in user object, or in <code>dataFields</code>.","items":{"type":"string"},"type":"array"},"invalidUserIds":{"description":"Malformed <code>userId</code> values (e.g. empty, too long, or containing non-ASCII or non-printable characters or a trailing space) found either at the top level of a passed-in user object, or in <code>dataFields</code>. ","items":{"type":"string"},"type":"array"},"notFoundEmails":{"description":"<code>email</code> addresses that were not found (for subscribe/unsubscribe only).","items":{"type":"string"},"type":"array"},"notFoundUserIds":{"description":"<code>userId</code> values that were not found (for subscribe/unsubscribe only).","items":{"type":"string"},"type":"array"}},"type":"object"},"Flash":{"properties":{"asJava":{"$ref":"#/definitions/Flash"},"data":{"additionalProperties":{"type":"string"},"type":"object"},"empty":{"type":"boolean"}},"required":["asJava","data","empty"],"type":"object"},"FrequencyCap":{"properties":{"days":{"format":"int32","type":"integer"},"messages":{"format":"int32","type":"integer"}},"required":["days","messages"],"type":"object"},"GetCatalogItemsResponse":{"properties":{"catalogItemsWithProperties":{"items":{"$ref":"#/definitions/CatalogItemWithProperties"},"type":"array"},"nextPageUrl":{"type":"string"},"previousPageUrl":{"type":"string"},"totalItemsCount":{"format":"int64","type":"integer"}},"required":["catalogItemsWithProperties","totalItemsCount"],"type":"object"},"GetCatalogsResponse":{"properties":{"catalogNames":{"items":{"$ref":"#/definitions/CatalogName"},"type":"array"},"nextPageUrl":{"type":"string"},"previousPageUrl":{"type":"string"},"totalCatalogsCount":{"format":"int64","type":"integer"}},"required":["catalogNames","totalCatalogsCount"],"type":"object"},"GetEventsResponse":{"properties":{"events":{"items":{"type":"object"},"type":"array"}},"required":["events"],"type":"object"},"GetForgottenUserEmailsResponse":{"properties":{"hashedEmails":{"items":{"type":"string"},"type":"array"}},"required":["hashedEmails"],"type":"object"},"GetForgottenUserIdsResponse":{"properties":{"hashedUserIds":{"items":{"type":"string"},"type":"array"}},"required":["hashedUserIds"],"type":"object"},"GetJourneysResponse":{"properties":{"journeys":{"description":"The current page of journeys.","items":{"$ref":"#/definitions/JourneyDetails"},"type":"array"},"nextPageUrl":{"description":"The URL to the next page of journeys, if applicable.","type":"string"},"previousPageUrl":{"description":"The URL to the previous page of journeys, if applicable.","type":"string"},"totalJourneysCount":{"description":"The total count of journeys across all pages for the supplied query.","format":"int64","type":"integer"}},"required":["journeys","totalJourneysCount"],"type":"object"},"GetListsResponse":{"properties":{"lists":{"items":{"$ref":"#/definitions/ListDetails"},"type":"array"}},"required":["lists"],"type":"object"},"GetSentMessagesResponse":{"properties":{"messages":{"items":{"$ref":"#/definitions/SentMessage"},"type":"array"}},"required":["messages"],"type":"object"},"GetSnippetResponse":{"description":"Response model for getting a snippet","properties":{"snippet":{"$ref":"#/definitions/SnippetResponse","description":"Details of the retrieved snippet."}},"type":"object"},"GetSnippetsResponse":{"description":"Response model for getting all snippets","properties":{"snippets":{"description":"List of snippets.","items":{"$ref":"#/definitions/SnippetResponse"},"type":"array"}},"type":"object"},"GetTemplatesResponse":{"properties":{"nextPageUrl":{"description":"The URL to the next page of templates, if applicable.","type":"string"},"previousPageUrl":{"description":"The URL to the previous page of templates, if applicable.","type":"string"},"templates":{"items":{"$ref":"#/definitions/ApiTemplateResponse"},"type":"array"},"totalTemplatesCount":{"description":"The total count of templates across all pages for the supplied query. Only present when using pagination.","type":"object"}},"required":["templates"],"type":"object"},"GetUserFieldsResponse":{"properties":{"fields":{"type":"object"}},"required":["fields"],"type":"object"},"GetWebhooksResponse":{"properties":{"webhooks":{"items":{"$ref":"#/definitions/ApiWebhookResponse"},"type":"array"}},"required":["webhooks"],"type":"object"},"HttpEntity":{"properties":{"knownEmpty":{"type":"boolean"}},"required":["knownEmpty"],"type":"object"},"Impression":{"properties":{"displayCount":{"description":"Total number of times the message identified by <code>messageId</code> was visible during the session.","format":"int32","type":"integer"},"displayDuration":{"description":"Total amount of time (in seconds) the message identified by <code>messageId</code> was visible during the session, across all its appearances.","format":"double","type":"number"},"messageId":{"description":"ID of a message that appeared during the session.","type":"string"},"placementId":{"description":"ID of the placement where the impression took place.","format":"int32","type":"integer"}},"type":"object"},"InAppClickRequest":{"properties":{"clickedUrl":{"description":"The URL of the clicked link/button","type":"string"},"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the event"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageContext":{"$ref":"#/definitions/InboxMessageContext","description":"An object containing various fields that describe the message associated with the event"},"messageId":{"description":"The ID of the message associated with the event","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"InAppCloseRequest":{"properties":{"clickedUrl":{"description":"url used to close the in-app","type":"string"},"closeAction":{"description":"The type of action that initiated the close (for example, <code>link</code>, <code>back</code>, or a custom value).","type":"string"},"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the event."},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"inboxSessionId":{"description":"Inbox SessionId","type":"string"},"messageContext":{"$ref":"#/definitions/InboxMessageContext","description":"An object containing various fields that describe the message associated with the event."},"messageId":{"description":"The ID of the message associated with the event","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"InAppConsumeRequest":{"properties":{"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"deleteAction":{"description":"How the message was deleted (for example, <code>inbox-swipe</code>, <code>delete-action</code>, or a custom value).","type":"string"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the event."},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageContext":{"$ref":"#/definitions/InboxMessageContext","description":"An object containing various fields that describe the message associated with the event."},"messageId":{"description":"The ID of the message associated with the event","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"InAppContentApi":{"properties":{"html":{"description":"The html to be displayed","type":"string"},"inAppDisplaySettings":{"$ref":"#/definitions/InAppDisplaySettings","description":"The in-app message display settings"},"ottPayload":{"$ref":"#/definitions/RokuContent"},"webInAppDisplaySettings":{"$ref":"#/definitions/WebInAppDisplaySettings"}},"required":["webInAppDisplaySettings"],"type":"object"},"InAppDeliveryRequest":{"properties":{"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the event"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageContext":{"$ref":"#/definitions/MessageContext","description":"An object containing various fields that describe the message associated with the event"},"messageId":{"description":"The ID of the message associated with the event","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"InAppDisplaySetting":{"type":"object"},"InAppDisplaySettings":{"properties":{"bgColor":{"$ref":"#/definitions/BgColor","description":"The background color values"},"bottom":{"$ref":"#/definitions/InAppDisplaySetting","description":"Padding percentage for the bottom of the notification, or -1 to autoexpand"},"left":{"$ref":"#/definitions/InAppDisplaySetting","description":"Padding percentage for the left of the notification, or -1 to autoexpand"},"right":{"$ref":"#/definitions/InAppDisplaySetting","description":"Padding percentage for the right of the notification, or -1 to autoexpand"},"shouldAnimate":{"description":"Enables In App Animations","type":"boolean"},"top":{"$ref":"#/definitions/InAppDisplaySetting","description":"Padding percentage for the top of the notification, or -1 to autoexpand"}},"type":"object"},"InAppOpenRequest":{"properties":{"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"deviceInfo":{"$ref":"#/definitions/DeviceInfo","description":"An object containing various fields that describe the device and app associated with the event"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageContext":{"$ref":"#/definitions/InboxMessageContext","description":"An object containing various fields that describe the message associated with the event"},"messageId":{"description":"The ID of the message associated with the event","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"InAppTrigger":{"properties":{"type":{"$ref":"#/definitions/Value","description":"How the in-app message was triggered"}},"type":"object"},"InAppType":{"type":"object"},"InAppTypeOfContent":{"type":"object"},"InboxMessageContext":{"properties":{"location":{"description":"Where the event occurred: <code>in-app</code>, <code>inbox</code>, or a custom value (string).","type":"string"},"saveToInbox":{"description":"Whether or not the message associated with the event was configured to be stored in the inbox","type":"boolean"},"silentInbox":{"description":"Whether or not the message associated with the event was configured to send directly to the inbox","type":"boolean"}},"type":"object"},"InboxMetadata":{"properties":{"icon":{"description":"The icon to display in the inbox","type":"string"},"subtitle":{"description":"The subtitle to display in the inbox","type":"string"},"title":{"description":"The title to display in the inbox","type":"string"}},"type":"object"},"InvalidateJwtRequest":{"properties":{"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"issuedBefore":{"description":"Timestamp to invalidate JWTs before as epoch time in milliseconds. Defaults to the current time.","format":"int32","type":"integer"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"IterableApiResponse":{"properties":{"code":{"enum":["Success","BadApiKey","BadAuthorizationHeader","BadJsonBody","BadParams","BatchTooLarge","DatabaseError","EmailAlreadyExists","ExternalKeyConflict","Forbidden","ForbiddenParamsError","ForgottenUserError","GenericError","InvalidEmailAddressError","InvalidJwtPayload","InvalidUserIdError","JwtUserIdentifiersMismatched","NotFound","QueueEmailError","RateLimitExceeded","RequestFieldsTypesMismatched","Unauthorized","UniqueFieldsLimitExceeded","UnknownEmailError","UnknownUserIdError","UserIdAlreadyExists"],"type":"string"},"msg":{"description":"Response description","type":"string"},"params":{"description":"Additional info","type":"object"}},"required":["code","msg"],"type":"object"},"JobModel":{"properties":{"bytesExported":{"description":"Number of bytes exported","example":2453629,"format":"int64","type":"integer"},"dataTypeName":{"$ref":"#/definitions/ClientDataType","description":"Data type name.","example":"user"},"endTime":{"description":"The time at which the job completed or failed","example":"2023-12-19T10:12:28.214-06:00","format":"date-time","type":"string"},"id":{"description":"The ID of the job","example":3562,"format":"int64","type":"integer"},"jobState":{"$ref":"#/definitions/JobState","description":"The state of the job","example":"Running"},"scheduledStartTime":{"description":"The earliest time the job can start","example":"2023-12-19T10:12:27.732-06:00","format":"date-time","type":"string"}},"required":["jobState"],"type":"object"},"JobState":{"properties":{"final":{"type":"boolean"}},"required":["final"],"type":"object"},"JobsResponse":{"properties":{"jobs":{"description":"The list of jobs","items":{"$ref":"#/definitions/JobModel"},"type":"array"}},"type":"object"},"JourneyDetails":{"properties":{"createdAt":{"description":"Creation timestamp as epoch time in milliseconds.","format":"int32","type":"integer"},"creatorUserId":{"description":"The email address of the user who created the draft journey.","type":"string"},"description":{"description":"A description of the journey.","type":"string"},"draft":{"$ref":"#/definitions/JourneyDraftDetails","description":"If a published journey has an active draft, this object will describe that draft."},"enabled":{"description":"<code>true</code> if the journey is currently accepting new user entrances.","type":"boolean"},"id":{"type":"number"},"isArchived":{"description":"<code>true</code> if the journey is archived.","type":"boolean"},"journeyType":{"description":"Whether the journey is published or a draft.","type":"string"},"lifetimeLimit":{"description":"The number of times a user can enter a journey in their lifetime.","format":"int32","type":"integer"},"name":{"description":"The name of the journey.","type":"string"},"simultaneousLimit":{"description":"The number of times a user can be in a journey simultaneously.","format":"int32","type":"integer"},"startTileId":{"description":"The ID of the start tile of the journey.","format":"int32","type":"integer"},"triggerEventNames":{"description":"The names of the events responsible for triggering users into the journey, if applicable.","items":{"type":"string"},"type":"array"},"updatedAt":{"description":"Last update timestamp as epoch time in milliseconds.","format":"int32","type":"integer"}},"type":"object"},"JourneyDraftDetails":{"properties":{"createdAt":{"description":"Creation timestamp as epoch time in milliseconds.","format":"int32","type":"integer"},"creatorUserId":{"description":"The email address of the user who created the draft journey.","type":"string"},"id":{"description":"The unique identifier for the draft journey.","type":"number"},"name":{"description":"The name of the draft journey.","type":"string"},"updatedAt":{"description":"Last update timestamp as epoch time in milliseconds.","format":"int32","type":"integer"}},"required":["createdAt","creatorUserId","id","name","updatedAt"],"type":"object"},"JsObject":{"properties":{"underlying":{"additionalProperties":{"$ref":"#/definitions/JsValue"},"type":"object"}},"required":["underlying"],"type":"object"},"JsValue":{"type":"object"},"LinkParam":{"properties":{"key":{"description":"Link parameter key","type":"string"},"value":{"description":"Link parameter value","type":"string"}},"required":["key","value"],"type":"object"},"ListDetails":{"properties":{"createdAt":{"description":"Creation timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"description":{"type":"string"},"id":{"format":"int64","type":"integer"},"isGlobalSuppressionEnabled":{"description":"Indicates if the suppression list is global. This field is only present for lists where <code>listType</code> is <code>Suppression</code>. <code>true</code> indicates a global suppression list; <code>false</code> indicates a standard suppression list.","type":"boolean"},"listType":{"enum":["Standard","Dynamic","Suppression","Internal"],"type":"string"},"name":{"type":"string"}},"required":["createdAt","id","listType","name"],"type":"object"},"ListMetadataTablesResponse":{"properties":{"results":{"items":{"$ref":"#/definitions/Table"},"type":"array"}},"required":["results"],"type":"object"},"Listing":{"properties":{"nextMarker":{"type":"string"},"results":{"items":{"$ref":"#/definitions/MetadataProperties"},"type":"array"}},"required":["results"],"type":"object"},"MergeUsersRequest":{"properties":{"arrayMerge":{"description":"An array of objects, each of which specifies an array field whose contents should be merged during the user merge operation. The objects in this <code>arrayMerge</code> array should only reference custom arrays, not Iterable-managed arrays such as <code>devices</code>.","items":{"$ref":"#/definitions/ArrayMerge"},"type":"array"},"destinationEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>destinationEmail</code> or a <code>destinationUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"destinationUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>destinationEmail</code> or a <code>destinationUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sourceEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>sourceEmail</code> or a <code>sourceUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sourceUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>sourceEmail</code> or a <code>sourceUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"MessageContext":{"properties":{"saveToInbox":{"description":"Whether or not the message associated with the event was configured to use the inbox","type":"boolean"},"silentInbox":{"description":"Whether or not the message associated with the event was configured to send directly to the inbox","type":"boolean"}},"type":"object"},"MessageTypeDetails":{"properties":{"channelId":{"description":"Channel that this message type belongs to","format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp as epoch time in milliseconds","format":"int32","type":"integer"},"frequencyCap":{"$ref":"#/definitions/FrequencyCap","description":"The frequency cap configured for this message type, expressed as a period and max number of messages allowed in that period"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"rateLimitPerMinute":{"description":"Maximum number of message sends allowed on this message type, per minute","format":"int32","type":"integer"},"subscriptionPolicy":{"description":"Subscription policy for this message type","enum":["OptIn","OptOut"],"type":"string"},"updatedAt":{"description":"Last update timestamp as epoch time in milliseconds","format":"int32","type":"integer"}},"required":["channelId","createdAt","id","name","subscriptionPolicy","updatedAt"],"type":"object"},"MessageTypesResponse":{"properties":{"messageTypes":{"items":{"$ref":"#/definitions/MessageTypeDetails"},"type":"array"}},"required":["messageTypes"],"type":"object"},"MetadataProperties":{"properties":{"key":{"type":"string"},"lastModified":{"format":"int64","type":"integer"},"size":{"format":"int64","type":"integer"},"table":{"type":"string"}},"required":["key","lastModified","size","table"],"type":"object"},"MetadataWithProperties":{"properties":{"key":{"type":"string"},"lastModified":{"format":"int64","type":"integer"},"size":{"format":"int64","type":"integer"},"table":{"type":"string"},"value":{"type":"object"}},"required":["key","lastModified","size","table","value"],"type":"object"},"OptionalApiUser":{"properties":{"dataFields":{"type":"object"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"mergeNestedObjects":{"description":"Merge top-level objects instead of overwriting them. Defaults to <code>false</code>. For example, if a user profile has data <code>{\"mySettings\":{\"mobile\":true}}</code> and the request has data <code>{\"mySettings\":{\"email\":true}}</code>, merging results in <code>{\"mySettings\":{\"mobile\":true,\"email\":true}}</code>.","example":false,"type":"boolean"},"preferUserId":{"description":"Whether or not a new user should be created if the request includes a <code>userId</code> that doesn't yet exist in the Iterable project. Defaults to <code>false</code>. Only respected in API calls for <a href=\"https://support.iterable.com/hc/articles/29156459027348\">email-based projects</a>.","example":false,"type":"boolean"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"PositionOption":{"type":"object"},"PushAction":{"properties":{"data":{"description":"The URL to open if the type is 'openUrl'","type":"string"},"type":{"description":"The type of action. Leave empty to open the app, use 'openUrl' to open the url specified in the 'data' field, or enter a custom action handler defined in your app","type":"string"}},"type":"object"},"PushActionButton":{"properties":{"action":{"$ref":"#/definitions/PushAction","description":"Action to execute on button push"},"actionIcon":{"$ref":"#/definitions/ActionIcon"},"buttonType":{"description":"Type of button","enum":["default","destructive","textInput"],"type":"string"},"identifier":{"description":"Used to identify the button for event tracking","type":"string"},"inputPlaceholder":{"description":"The input placeholder in the text box if this is a Text Input button","type":"string"},"inputTitle":{"description":"The submit button text for the text box if this is a Text Input button","type":"string"},"openApp":{"description":"Open the app if the button uses a customAction","type":"boolean"},"requiresUnlock":{"description":"Whether the button requires the phone to be unlocked","type":"boolean"},"title":{"description":"Title that will appear on the button","type":"string"}},"required":["identifier","openApp","title"],"type":"object"},"PutMetadataRequest":{"properties":{"value":{"description":"The JSON metadata value.  Max size is is 30kb.","type":"object"}},"required":["value"],"type":"object"},"RecipientTimeZoneRequest":{"properties":{"defaultTimeZone":{"description":"The fallback time zone if the recipient does not have time zone set in IANA timezone format (e.g. America/New_York, America/Los_Angeles, etc)","type":"string"},"startTimeZone":{"description":"The starting time zone in IANA timezone format (e.g. America/New_York, America/Los_Angeles, etc)","type":"string"}},"required":["defaultTimeZone","startTimeZone"],"type":"object"},"RegisterBrowserTokenRequest":{"properties":{"browserToken":{"description":"This is provided by Firebase Messaging javascript API.","type":"string"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["browserToken"],"type":"object"},"RegisterDeviceTokenRequest":{"properties":{"device":{"$ref":"#/definitions/Device"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"preferUserId":{"description":"Whether or not a new user should be created if the request includes a <code>userId</code> that doesn't yet exist in the Iterable project. Defaults to <code>false</code>. Only respected in API calls for <a href=\"https://support.iterable.com/hc/articles/29156459027348\">email-based projects</a>.","example":false,"type":"boolean"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["device"],"type":"object"},"ResponseHeader":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"reasonPhrase":{"type":"string"},"status":{"format":"int32","type":"integer"}},"required":["headers","status"],"type":"object"},"RichMediaURL":{"properties":{"android":{"type":"string"},"ios":{"type":"string"}},"type":"object"},"RokuButtonContent":{"properties":{"buttonBorderColor":{"type":"string"},"buttonColorFocused":{"type":"string"},"buttonColorUnFocused":{"type":"string"},"buttonDeeplink":{"type":"string"},"buttonText":{"type":"string"},"buttonTextColorFocused":{"type":"string"},"buttonTextColorUnFocused":{"type":"string"}},"required":["buttonBorderColor","buttonColorFocused","buttonColorUnFocused","buttonDeeplink","buttonText","buttonTextColorFocused","buttonTextColorUnFocused"],"type":"object"},"RokuContent":{"properties":{"backgroundColor":{"type":"string"},"buttons":{"items":{"$ref":"#/definitions/RokuButtonContent"},"type":"array"},"dialogBodyFont":{"type":"string"},"dialogButtonFont":{"type":"string"},"dialogHeader":{"type":"string"},"dialogHeaderFont":{"type":"string"},"dialogText":{"type":"string"},"fhd_image":{"type":"string"},"textColor":{"type":"string"}},"type":"object"},"SameSite":{"properties":{"value":{"type":"string"}},"required":["value"],"type":"object"},"ScheduleCampaignRequest":{"properties":{"recipientTimeZone":{"$ref":"#/definitions/RecipientTimeZoneRequest","description":"If provided, send campaign based on recipient time zone. If not, default to the project time zone."},"sendAt":{"description":"When to send up to 7 days in the future. ISO-8601 date time format (e.g. 2007-12-03T10:15:30.00Z)","type":"string"}},"required":["sendAt"],"type":"object"},"SentMessage":{"properties":{"campaignId":{"format":"int64","type":"integer"},"createdAt":{"type":"string"},"messageId":{"type":"string"},"templateId":{"format":"int64","type":"integer"}},"required":["campaignId","createdAt","messageId","templateId"],"type":"object"},"Session":{"properties":{"asJava":{"$ref":"#/definitions/Session"},"data":{"additionalProperties":{"type":"string"},"type":"object"},"empty":{"type":"boolean"}},"required":["asJava","data","empty"],"type":"object"},"SnippetResponse":{"description":"Snippet response model","properties":{"content":{"description":"Snippet content.","type":"string"},"createdAt":{"description":"Creation timestamp in ISO-8601 format.","type":"string"},"createdBy":{"description":"User who created the snippet.","type":"string"},"description":{"description":"Snippet description.","type":"string"},"id":{"description":"Snippet ID.","type":"object"},"name":{"description":"Snippet name.","type":"string"},"projectId":{"description":"Project ID.","format":"int64","type":"integer"},"updatedAt":{"description":"Last update timestamp in ISO-8601 format.","type":"string"},"updatedBy":{"description":"User who last updated the snippet.","type":"string"},"variables":{"description":"List of variable names used in the content with a Handlebars expression such as {{myField}}.","items":{"type":"string"},"type":"array"}},"type":"object"},"StartExportRequest":{"properties":{"campaignId":{"description":"Only export data from this campaign","format":"int64","type":"integer"},"dataTypeName":{"description":"Data type name.","enum":["emailSend","emailOpen","emailClick","hostedUnsubscribeClick","emailComplaint","emailBounce","emailSendSkip","pushSend","pushOpen","pushUninstall","pushBounce","pushSendSkip","inAppSend","inAppOpen","inAppClick","inAppClose","inAppDelete","inAppDelivery","inAppSendSkip","inAppRecall","inboxSession","inboxMessageImpression","smsSend","smsBounce","smsClick","smsReceived","smsSendSkip","webPushSend","webPushClick","webPushSendSkip","emailSubscribe","emailUnSubscribe","purchase","customEvent","user","smsUsageInfo","embeddedSend","embeddedSendSkip","embeddedClick","embeddedReceived","embeddedImpression","embeddedSession","unknownSession","journeyExit","whatsAppBounce","whatsAppClick","whatsAppReceived","whatsAppSeen","whatsAppSend","whatsAppSendSkip","whatsAppUsageInfo"],"type":"string"},"delimiter":{"description":"CSV file delimiter","example":",","type":"string"},"endDateTime":{"description":"Export events occurring or users updated before date and time exclusive (yyyy-MM-dd HH:mm:ss [ZZ])","type":"string"},"omitFields":{"description":"Fields to omit from the export (comma separated)","type":"string"},"onlyFields":{"description":"Only include these fields in the export (comma separated)","type":"string"},"outputFormat":{"description":"Output format","enum":["text/csv","application/x-json-stream"],"type":"string"},"startDateTime":{"description":"Export events occurring or users updated after date and time inclusive (yyyy-MM-dd HH:mm:ss [ZZ])","type":"string"}},"required":["dataTypeName","outputFormat"],"type":"object"},"StartExportResponse":{"properties":{"jobId":{"description":"The ID of the export job","example":3562,"format":"int64","type":"integer"}},"required":["jobId"],"type":"object"},"Status":{"properties":{"attrs":{"$ref":"#/definitions/TypedMap"},"body":{"$ref":"#/definitions/HttpEntity"},"header":{"$ref":"#/definitions/ResponseHeader"},"newCookies":{"items":{"$ref":"#/definitions/Cookie"},"type":"array"},"newFlash":{"$ref":"#/definitions/Flash"},"newSession":{"$ref":"#/definitions/Session"}},"required":["attrs","body","header","newCookies"],"type":"object"},"SubscribeRequest":{"properties":{"listId":{"format":"int64","type":"integer"},"subscribers":{"items":{"$ref":"#/definitions/OptionalApiUser"},"type":"array"},"updateExistingUsersOnly":{"description":"Whether to skip operation when the request includes a <code>userId</code> or <code>email</code> that doesn't yet exist in the Iterable project. When <code>true</code>, Iterable ignores requests with unknown userIds and email addresses. When <code>false</code>, Iterable creates new users. Defaults to <code>false</code>. Only respected in API calls for <a href=\"https://support.iterable.com/hc/articles/29156459027348\">userID-based and hybrid projects</a>.","example":false,"type":"boolean"}},"required":["listId","subscribers"],"type":"object"},"Table":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"TargetEmailRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"dataFields":{"description":"Fields to merge into email template","type":"object"},"metadata":{"description":"Metadata to pass back via webhooks. Not used for rendering","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, email is sent immediately. Format is <code>YYYY-MM-DD HH:MM:SS</code> in UTC","type":"string"}},"required":["campaignId"],"type":"object"},"TargetInAppRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"dataFields":{"description":"Fields to merge into email template","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, message is sent immediately. Format is YYYY-MM-DD HH:MM:SS in UTC","type":"string"}},"required":["campaignId"],"type":"object"},"TargetPushRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"dataFields":{"description":"JSON object containing fields to merge into template","type":"object"},"metadata":{"description":"Metadata to pass back via system webhooks. Not used for rendering","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, message is sent immediately. Format is YYYY-MM-DD HH:MM:SS in UTC","type":"string"}},"required":["campaignId"],"type":"object"},"TargetSMSRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"dataFields":{"description":"Fields to merge into template","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, message is sent immediately. Format is YYYY-MM-DD HH:MM:SS in UTC","type":"string"}},"required":["campaignId"],"type":"object"},"TargetWebPushRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"format":"int64","type":"integer"},"dataFields":{"description":"Fields to merge into template","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, message is sent immediately. Format is YYYY-MM-DD HH:MM:SS in UTC","type":"string"}},"required":["campaignId"],"type":"object"},"TargetWhatsAppRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"description":"Campaign ID","format":"int64","type":"integer"},"dataFields":{"description":"Data fields that can be referenced in the template or campaign content","type":"object"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"sendAt":{"description":"Schedule the message for up to 365 days in the future. If set in the past, message is sent immediately. Format is <code>YYYY-MM-DD HH:MM:SS</code> (UTC).","type":"string"}},"required":["campaignId"],"type":"object"},"TemplatePreviewRequest":{"properties":{"dataFeed":{"description":"Data feed content for template rendering. Provide key-value pairs for any data feed fields that your template references. Note: Data feed fields are accessible as <code>[[fieldName]]</code> when template's <code>mergeDataFeedContext=false</code>, or as <code>{{fieldName}}</code> when <code>mergeDataFeedContext=true</code>. The <code>mergeDataFeedContext</code> setting is configured when creating/updating templates. If <code>fetchDataFeeds</code> is true, this will be merged with (or overridden by) the fetched data feed data.","type":"object"},"dataFields":{"description":"Data fields for template rendering. Provide key-value pairs for any user profile, event, or custom fields that your template references. Note: Fields are accessible as <code>{{fieldName}}</code> in templates.","type":"object"},"fetchDataFeeds":{"description":"Whether to fetch and use actual data feeds configured in the template. If true, the data feeds associated with the template will be fetched and used for rendering. Data from <code>dataFields</code> will be used to render dynamic URLs in the data feed configuration. If <code>dataFeed</code> is also provided, it will be merged with (or override) the fetched data feed data. Defaults to false.","type":"boolean"}},"type":"object"},"TemplateProofRequest":{"description":"Template proof request","properties":{"dataFields":{"description":"Fields to merge into template for proof","type":"object"},"locale":{"description":"Locale for the proof message. If provided, must be a valid locale for the project. If not provided, falls back to the user's locale, then to the project's default locale.","type":"string"},"recipientEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"recipientUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"templateId":{"description":"Template ID to send proof for","format":"int64","type":"integer"}},"required":["templateId"],"type":"object"},"Text":{"properties":{"label":{"description":"Identifier for the text field, specified by the user who created its associated placement. This field is a key, not content. Do not display it.","type":"string"},"text":{"description":"Text to display.","type":"string"}},"type":"object"},"TrackPurchaseRequest":{"properties":{"campaignId":{"format":"int32","type":"integer"},"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"dataFields":{"description":"Additional fields to be tracked.","type":"object"},"id":{"description":"Optional purchase id. If a purchase exists with that id, the purchase will be updated. If none is specified, a new id will automatically be generated and returned. Note that this ID cannot be longer than 512 bytes.","type":"string"},"items":{"items":{"$ref":"#/definitions/CommerceItem"},"type":"array"},"templateId":{"description":"Used in AB testing attribution","format":"int32","type":"integer"},"total":{"description":"Total order dollar amount","format":"double","type":"number"},"user":{"$ref":"#/definitions/ApiUserUpdateRequest"}},"required":["items","total","user"],"type":"object"},"TrackPushOpenRequest":{"properties":{"campaignId":{"description":"Campaign tied to open","format":"int64","type":"integer"},"createdAt":{"description":"Timestamp of the open event. If unspecified, set to the time event was received  Expects a unix timestamp.","format":"int64","type":"integer"},"dataFields":{"description":"Additional data associated with event","type":"object"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageId":{"description":"Iterable-generated Message ID","type":"string"},"templateId":{"description":"Used in AB testing attribution","format":"int64","type":"integer"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["campaignId","messageId"],"type":"object"},"TrackRequest":{"properties":{"campaignId":{"description":"Campaign tied to conversion","format":"int64","type":"integer"},"createNewFields":{"description":"Whether new fields should be ingested and added to the schema. Defaults to project's setting to allow or drop unrecognized fields.","example":false,"type":"boolean"},"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a unix timestamp.","format":"int64","type":"integer"},"dataFields":{"description":"Additional data associated with event (i.e. item amount, item quantity). For events of the same name, identically named data fields must be of the same type.","type":"object"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"eventName":{"description":"Name of event","type":"string"},"id":{"description":"Optional event id. If an event exists with that id, the event will be updated. If none is specified, a new id will automatically be generated and returned. Note that this ID cannot be longer than 512 bytes.","type":"string"},"templateId":{"description":"Template id","format":"int64","type":"integer"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["eventName"],"type":"object"},"TriggerCampaignRequest":{"properties":{"allowRepeatMarketingSends":{"description":"Allow repeat marketing sends? Defaults to true.","type":"boolean"},"campaignId":{"format":"int64","type":"integer"},"dataFields":{"description":"Fields to merge into handlebars context","type":"object"},"listIds":{"description":"A non-empty array of list IDs to send to","items":{"format":"int64","type":"integer"},"type":"array"},"suppressionListIds":{"description":"Lists to suppress","items":{"format":"int64","type":"integer"},"type":"array"}},"required":["campaignId","listIds"],"type":"object"},"TriggerWorkflowRequest":{"properties":{"dataFields":{"description":"Additional data associated triggering event","type":"object"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"listId":{"description":"(Optional) Trigger the journey for all users in a list (standard or dynamic)","format":"int32","type":"integer"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"workflowId":{"description":"ID of journey (workflow) to trigger","format":"int64","type":"integer"}},"required":["workflowId"],"type":"object"},"TypedMap":{"type":"object"},"UnsubscribeRequest":{"properties":{"campaignId":{"description":"attribute unsubscribe to a campaign","format":"int64","type":"integer"},"channelUnsubscribe":{"description":"Unsubscribe email from list's associated channel - essentially a global unsubscribe. (default: false)","type":"boolean"},"listId":{"format":"int64","type":"integer"},"subscribers":{"items":{"$ref":"#/definitions/Unsubscriber"},"type":"array"}},"required":["listId","subscribers"],"type":"object"},"Unsubscriber":{"properties":{"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"UpdateCartRequest":{"properties":{"items":{"items":{"$ref":"#/definitions/CommerceItem"},"type":"array"},"user":{"$ref":"#/definitions/ApiUserUpdateRequest"}},"required":["items","user"],"type":"object"},"UpdateEmailRequest":{"properties":{"currentEmail":{"description":"An email address that identifies a user profile in Iterable. Provide a <code>currentEmail</code> or a <code>currentUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"currentUserId":{"description":"A user ID that identifies a user profile in Iterable. Provide a <code>currentEmail</code> or a <code>currentUserId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"newEmail":{"description":"The new email address to assign to the specified user.","type":"string"}},"required":["newEmail"],"type":"object"},"UpdateSnippetRequest":{"description":"Request model for updating a snippet","properties":{"content":{"description":"Content of the snippet. Handlebars must be valid. Disallowed content: script tags with JS sources or non-JSON content, inline JS event handlers (e.g., <code>onload=&quot;...&quot;</code>), and <code>javascript:</code> in <code>href</code> or <code>src</code> attributes (anchors and iframes).","type":"string"},"createdByUserId":{"description":"User ID (email) of the updater. If not provided, defaults to the project creator.","type":"string"},"description":{"description":"Description of the snippet.","type":"string"},"variables":{"description":"List of variable names used in the content with a Handlebars expression such as {{myField}}. Variable names are case-sensitive and should be simple identifiers (letters, numbers, underscores). To learn more about using Handlebars in Snippets, see <a href=\\\"https://support.iterable.com/hc/articles/4414796078868\\\">Customizing Snippets with Variables</a>.","items":{"type":"string"},"type":"array"}},"required":["content"],"type":"object"},"UpdateSnippetResponse":{"description":"Response model for updating a snippet","properties":{"snippetId":{"description":"ID of the updated snippet.","format":"int64","type":"integer"}},"type":"object"},"UpdateSubscriptionsRequest":{"properties":{"campaignId":{"description":"Campaign to attribute unsubscribes","format":"int64","type":"integer"},"email":{"description":"An email address that identifies a user profile in Iterable. For each user in your request, provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"emailListIds":{"description":"Lists that a user is subscribed to","items":{"format":"int64","type":"integer"},"type":"array"},"subscribedMessageTypeIds":{"description":"Individual message type IDs to subscribe (does not impact channel subscriptions). To set a value for this field, first have your CSM enable the opt-in message types feature. Otherwise, attempting to set this field causes an error.","items":{"format":"int64","type":"integer"},"type":"array"},"templateId":{"description":"Template to attribute unsubscribes","format":"int64","type":"integer"},"unsubscribedChannelIds":{"description":"Email channel ids to unsubscribe from","items":{"format":"int64","type":"integer"},"type":"array"},"unsubscribedMessageTypeIds":{"description":"Individual message type IDs to unsubscribe (does not impact channel subscriptions).","items":{"format":"int64","type":"integer"},"type":"array"},"userId":{"description":"A user ID that identifies a user profile in Iterable. For each user in your request, provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"validateChannelAlignment":{"description":"Defaults to <code>true</code> (validation enabled). When <code>false</code>, allows subscribing users to message types that belong to unsubscribed channels. By default, Iterable validates that subscribed message types belong to subscribed channels. Setting this to <code>false</code> bypasses this validation, allowing you to save message type preferences even when the parent channel is unsubscribed. Users won't receive messages from these types while the channel remains unsubscribed, but their preferences are preserved for when the channel becomes subscribed.","type":"boolean"}},"type":"object"},"UpsertEmailTemplateModel":{"properties":{"bccEmails":{"description":"BCC emails","items":{"type":"string"},"type":"array"},"cacheDataFeed":{"description":"Cache data feed lookups for 1 hour","type":"object"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"ccEmails":{"description":"CC emails","items":{"type":"string"},"type":"array"},"clientTemplateId":{"description":"ID used by the client to identify a template. If multiple templates exist with the ID, all will be updated","type":"string"},"creatorUserId":{"description":"Specify a specific creator user id (email). The email must be an existing member of the project. Defaults to the organization creator.","type":"string"},"dataFeedId":{"description":"[Deprecated - use dataFeedIds instead] Id for data feed used in template rendering","format":"int32","type":"integer"},"dataFeedIds":{"description":"Ids for data feeds used in template rendering","items":{"type":"number"},"type":"array"},"fromEmail":{"description":"From email (must be an authorized sender)","type":"string"},"fromName":{"description":"From name","type":"string"},"googleAnalyticsCampaignName":{"description":"Google analytics utm_campaign value","type":"string"},"html":{"description":"HTML contents","type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nSets the locale associated with the request content as the template’s default. If empty or flexible default locales are not enabled for the project, the project’s default locale is assigned.","type":"boolean"},"linkParams":{"description":"Parameters to append to each URL in html contents","items":{"$ref":"#/definitions/LinkParam"},"type":"array"},"locale":{"description":"The locale for the content in this request. Iterable will automatically pick the content with locale that matches a 'locale' field in the user profile.","type":"string"},"mergeDataFeedContext":{"description":"Merge data feed contents into user context, so fields be referenced by {{field}} instead of [[field]]","type":"boolean"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"plainText":{"description":"Plain text contents","type":"string"},"preheaderText":{"description":"Preheader text","type":"string"},"replyToEmail":{"description":"Reply to email","type":"string"},"subject":{"description":"Subject","type":"string"}},"required":["clientTemplateId"],"type":"object"},"UpsertEmbeddedTemplateModel":{"properties":{"body":{"description":"Body text of the embedded message","type":"string"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"clientTemplateId":{"description":"ID used by the client to identify a template. If multiple templates exist with the ID, all will be updated","type":"string"},"creatorUserId":{"description":"Specify a specific creator user ID (email). The email must be an existing member of the project. Defaults to the organization creator.","type":"string"},"elements":{"$ref":"#/definitions/Elements","description":"Elements (buttons, media, text fields) for the embedded message"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nSets the locale associated with the request content as the template's default. If empty or flexible default locales are not enabled for the project, the project's default locale is assigned.","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"messageTypeId":{"description":"Message type ID","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"$ref":"#/definitions/JsObject","description":"Payload"},"placementId":{"description":"Placement ID that this template is associated with","type":"object"},"title":{"description":"Title of the embedded message","type":"string"}},"required":["clientTemplateId"],"type":"object"},"UpsertInAppTemplateModel":{"properties":{"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"clientTemplateId":{"description":"ID used by the client to identify a template. If multiple templates exist with the ID, all will be updated","type":"string"},"creatorUserId":{"description":"Specify a specific creator user id (email). The email must be an existing member of the project. Defaults to the organization creator.","type":"string"},"expirationDateTime":{"description":"Absolute expiration of message","format":"date-time","type":"string"},"expirationDuration":{"description":"Relative expiration of message","type":"string"},"html":{"description":"Html of the in-app notification","type":"string"},"inAppDisplaySettings":{"$ref":"#/definitions/InAppDisplaySettings","description":"Display settings"},"inboxMetadata":{"$ref":"#/definitions/InboxMetadata","description":"Title, subtitle, and thumbnail"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nSets the locale associated with the request content as the template’s default. If empty or flexible default locales are not enabled for the project, the project’s default locale is assigned.","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"$ref":"#/definitions/JsObject","description":"Payload"},"webInAppDisplaySettings":{"$ref":"#/definitions/WebInAppDisplaySettings","description":"Web In-app display settings"}},"required":["clientTemplateId"],"type":"object"},"UpsertPushTemplateModel":{"properties":{"badge":{"description":"Badge to set for push notification","type":"string"},"buttons":{"description":"Array of buttons that appear to respond to the push. Max of 3.","items":{"$ref":"#/definitions/PushActionButton"},"type":"array"},"cacheDataFeed":{"description":"Cache data feed lookups for 1 hour","type":"boolean"},"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"clientTemplateId":{"description":"ID used by the client to identify a template. If multiple templates exist with the ID, all will be updated","type":"string"},"creatorUserId":{"description":"Specify a specific creator user id (email). The email must be an existing member of the project. Defaults to the organization creator.","type":"string"},"dataFeedIds":{"description":"Ids for data feeds used in template rendering","items":{"type":"number"},"type":"array"},"deeplink":{"$ref":"#/definitions/DeeplinkURI","description":"Deep Link. A mapping that accepts two optional properties: 'ios' & 'android' and their respective deep link values."},"interruptionLevel":{"description":"An interruption level helps iOS determine when to alert a user about the arrival of a push notification","enum":["passive","active","time-sensitive","critical"],"type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nSets the locale associated with the request content as the template’s default. If empty or flexible default locales are not enabled for the project, the project’s default locale is assigned.","type":"boolean"},"isSilentPush":{"description":"Whether or not this is a silent push notification template","type":"boolean"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale.Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"mergeDataFeedContext":{"description":"Merge data feed contents into user context, so fields can be referenced by {{field}} instead of [[field]]","type":"boolean"},"message":{"description":"Push message","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"},"payload":{"$ref":"#/definitions/JsObject","description":"Payload to send with push notification"},"relevanceScore":{"description":"Relevance score for iOS notifications on iOS 15+. Number is clamped between 0 and 1.0","format":"double","type":"number"},"richMedia":{"$ref":"#/definitions/RichMediaURL","description":"Rich Media URL. A mapping that accepts two optional properties: 'ios' & 'android' and their respective rich media url values."},"sound":{"description":"Sound","type":"string"},"title":{"description":"Push message title","type":"string"},"wake":{"description":"Set the content-available flag on iOS notifications, which will wake the app in the background","type":"boolean"}},"required":["clientTemplateId"],"type":"object"},"UpsertSMSTemplateModel":{"properties":{"campaignDataFields":{"description":"Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.","type":"object"},"clientTemplateId":{"description":"ID used by the client to identify a template. If multiple templates exist with the ID, all will be updated","type":"string"},"creatorUserId":{"description":"Specify a specific creator user id (email). The email must be an existing member of the project. Defaults to the organization creator.","type":"string"},"googleAnalyticsCampaignName":{"description":"Google analytics utm_campaign value","type":"string"},"imageUrl":{"description":"Image Url","type":"string"},"isDefaultLocale":{"description":"Ask your Iterable CSM to enroll you in the beta for this feature.\n\nSets the locale associated with the request content as the template’s default. If empty or flexible default locales are not enabled for the project, the project’s default locale is assigned.","type":"boolean"},"linkParams":{"description":"Parameters to append to each URL in html contents","items":{"$ref":"#/definitions/LinkParam"},"type":"array"},"locale":{"description":"The locale for the content in this request. Leave empty for default locale. Iterable will automatically send the content with locale that matches a 'locale' field in the user profile.","type":"string"},"message":{"description":"SMS message","type":"string"},"messageTypeId":{"description":"Message Type Id","format":"int32","type":"integer"},"name":{"description":"Name of the template","type":"string"}},"required":["clientTemplateId"],"type":"object"},"UserBulkUpdateListResponse":{"properties":{"createdFields":{"description":"Fields that were created because <code>createNewFields</code> was <code>true</code> or <code>createNewFields</code> was not set and the project is configured to add unrecognized user profile fields.","items":{"type":"string"},"type":"array","uniqueItems":true},"failCount":{"description":"Number of user profiles that could not be updated. See <code>failedUpdates</code> for more details.","format":"int32","type":"integer"},"failedUpdates":{"$ref":"#/definitions/FailedUserUpdates","description":"Details about failed updates."},"filteredOutFields":{"description":"Fields that were dropped because <code>createNewFields</code> was <code>false</code> or <code>createNewFields</code> was not set and the project is configured to drop unrecognized user profile fields.","items":{"type":"string"},"type":"array","uniqueItems":true},"invalidEmails":{"description":"<code>email</code> addresses of users that failed to update. This field is deprecated — use <code>failedUpdates</code> instead.","items":{"type":"string"},"type":"array"},"invalidUserIds":{"description":"<code>userId</code> values of users that failed to update. This field is deprecated — use <code>failedUpdates</code> instead.","items":{"type":"string"},"type":"array"},"successCount":{"description":"Number of user profiles that were updated in response to the request.","format":"int32","type":"integer"}},"required":["failCount","successCount"],"type":"object"},"UserRequest":{"properties":{"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"type":"object"},"UserResponse":{"properties":{"user":{"$ref":"#/definitions/ApiResponseUser"}},"type":"object"},"Value":{"type":"object"},"WebInAppDisplaySettings":{"properties":{"position":{"$ref":"#/definitions/PositionOption","description":"The position of the message on the screen"}},"type":"object"},"WebPushClickEventRequest":{"properties":{"campaignId":{"format":"int64","type":"integer"},"createdAt":{"description":"Time event happened. Set to the time event was received if unspecified. Expects a Unix timestamp.","format":"int64","type":"integer"},"email":{"description":"An email address that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"},"messageId":{"type":"string"},"templateId":{"format":"int64","type":"integer"},"userId":{"description":"A user ID that identifies a user profile in Iterable. Provide an <code>email</code> or a <code>userId</code> (but not both), depending on <a href=\"https://support.iterable.com/hc/articles/29156459027348\">how your project identifies users</a>.","type":"string"}},"required":["messageId"],"type":"object"},"string":{"properties":{"displayLanguage":{"type":"string"},"languageTag":{"type":"string"}},"required":["displayLanguage","languageTag"],"type":"object"}},"host":"api.iterable.com","info":{"termsOfService":"https://iterable.com/terms/","title":"Iterable API","version":"1.8"},"paths":{"/api/auth/jwts/invalidate":{"post":{"description":"Invalidates all JWTs issued for a given user before the current time or a specified time.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"Invalidate JWT","parameters":[{"description":"Invalid JWT request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InvalidateJwtRequest"}}],"responses":{"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Invalidate all JWTs issued for a user","tags":["users"]}},"/api/campaigns":{"get":{"description":"Get metadata about campaigns in a project. Use <code>page</code> and <code>pageSize</code> parameters to paginate results. If the unpaginated campaigns API is allowed for your project, then all campaigns are returned if no pagination parameters are provided. The unpaginated behavior is deprecated and may be removed in the future. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"campaigns","parameters":[{"description":"Page number (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"description":"Number of results to return per page (defaults to 20, maximum of 1000).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":25},{"default":"id","description":"Field to sort campaigns by, with optional direction prefix. Use - for descending, + or no prefix for ascending. Campaigns can be sorted by id, name, createdAt, updatedAt, or startAt. Examples: -createdAt, +name, id","in":"query","name":"sort","required":false,"type":"string","x-example":"id"},{"collectionFormat":"multi","description":"Filter campaigns by state. Can be specified multiple times to filter by multiple states. Valid states: Draft, Ready, Scheduled, Running, Finished, Starting, Aborted, Recurring, Archived. Example: ?campaignState=Ready&campaignState=Running","in":"query","items":{"type":"string"},"name":"campaignState","required":false,"type":"array"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CampaignsResponse"}},"401":{"description":"Invalid API key"}},"summary":"List campaign metadata","tags":["campaigns"]}},"/api/campaigns/abort":{"post":{"description":"Abort a campaign given a campaign ID","operationId":"abort campaign","parameters":[{"description":"Abort campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CampaignIdRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Abort a campaign","tags":["campaigns"]}},"/api/campaigns/activateTriggered":{"post":{"description":"Activate a triggered campaign given a campaign ID","operationId":"activate triggered campaign","parameters":[{"description":"Activate triggered campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CampaignIdRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"403":{"description":"API triggered campaign activation is not enabled for your project"}},"summary":"Activate a triggered campaign","tags":["campaigns"]}},"/api/campaigns/archive":{"post":{"description":"Archives one or more campaigns. This endpoint behaves the same as the archive feature in the UI. Scheduled or recurring campaigns will be cancelled, and running campaigns will be aborted.Archived campaigns will be hidden from the Campaigns page, but can still be viewed in the Archived tab.<b>Rate limit</b>: 5 requests/second, per API key.","operationId":"archive campaigns","parameters":[{"description":"Campaign IDs to archive","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkArchiveCampaignRequest"}}],"responses":{"200":{"description":"Campaigns archived successfully"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"summary":"Archive campaigns","tags":["campaigns"]}},"/api/campaigns/cancel":{"post":{"description":"Cancel a campaign given a campaign ID","operationId":"cancel campaign","parameters":[{"description":"Cancel campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CampaignIdRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel a scheduled or recurring campaign","tags":["campaigns"]}},"/api/campaigns/create":{"post":{"description":"Creates a new blast or triggered campaign from an existing template. This endpoint can create email, push notification, web push notification, SMS, in-app message, and embedded message campaigns. <strong>Important note</strong>: Global suppression lists are <strong>not</strong> automatically added to campaigns created from this endpoint. To include a global suppression list, include it in the <code>suppressionListIds</code> request parameter. To learn more about creating a campaign with this API, see our <a href=\"https://support.iterable.com/hc/articles/204780579#post-api-campaigns-create\">API Overview</a>.","operationId":"create campaign","parameters":[{"description":"Create campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CreateCampaignRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CreateCampaignResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create a campaign","tags":["campaigns"]}},"/api/campaigns/deactivateTriggered":{"post":{"description":"Deactivate a triggered campaign given a campaign ID","operationId":"Deactivate triggered campaign","parameters":[{"description":"Deactivate triggered campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CampaignIdRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"403":{"description":"API triggered campaign deactivation is not enabled for your project"}},"summary":"Deactivate a triggered campaign","tags":["campaigns"]}},"/api/campaigns/metrics":{"get":{"description":"Get metrics for a single campaign or multiple campaigns. <b>Rate limit</b>: 10 requests/minute, per project.","operationId":"metrics","parameters":[{"collectionFormat":"multi","description":"Campaign(s) to export","in":"query","items":{"type":"object"},"name":"campaignId","required":true,"type":"array"},{"allowEmptyValue":true,"default":"2018-06-25","description":"Export starting from (>=).  Accepted formats include YYYY-MM-DD and other ISO 8601 formats.","format":"date-time","in":"query","name":"startDateTime","required":false,"type":"string"},{"allowEmptyValue":true,"default":"2018-07-25","description":"Export ending at (<).  Accepted formats include YYYY-MM-DD and other ISO 8601 formats.","format":"date-time","in":"query","name":"endDateTime","required":false,"type":"string"}],"produces":["text/plain"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get metrics for campaigns","tags":["campaigns"]}},"/api/campaigns/recurring/{id}/childCampaigns":{"get":{"description":"Get child campaigns generated by a recurring campaign. Use <code>page</code> and <code>pageSize</code> parameters to paginate results. If the unpaginated campaigns API is allowed for your project, then all child campaigns are returned if no pagination parameters are provided. The unpaginated behavior is deprecated and may be removed in the future. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"child campaigns","parameters":[{"format":"int64","in":"path","name":"id","required":true,"type":"integer"},{"description":"Page number (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"description":"Number of results to return per page (defaults to 20, maximum of 1000).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":25},{"default":"id","description":"Field to sort campaigns by, with optional direction prefix. Use - for descending, + or no prefix for ascending. Campaigns can be sorted by id, name, createdAt, updatedAt, or startAt. Examples: -createdAt, +name, id","in":"query","name":"sort","required":false,"type":"string","x-example":"id"},{"collectionFormat":"multi","description":"Filter campaigns by state. Can be specified multiple times to filter by multiple states. Valid states: Draft, Ready, Scheduled, Running, Finished, Starting, Aborted, Recurring, Archived. Example: ?campaignState=Ready&campaignState=Running","in":"query","items":{"type":"string"},"name":"campaignState","required":false,"type":"array"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CampaignsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get child campaigns of a recurring campaign","tags":["campaigns"]}},"/api/campaigns/trigger":{"post":{"description":"Trigger a campaign given lists","operationId":"trigger campaign","parameters":[{"description":"Trigger campaign","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TriggerCampaignRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"429":{"description":"Rate limit exceeded"}},"summary":"Trigger a campaign","tags":["campaigns"]}},"/api/campaigns/{campaignId}/schedule":{"post":{"description":"","operationId":"schedule campaign","parameters":[{"format":"int64","in":"path","name":"campaignId","required":true,"type":"integer"},{"description":"Schedule existing campaign request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ScheduleCampaignRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"403":{"description":"API scheduling campaigns is not enabled for your project"}},"summary":"Schedule existing campaign to be sent","tags":["campaigns"]}},"/api/campaigns/{campaignId}/send":{"post":{"description":"","operationId":"send campaign","parameters":[{"format":"int64","in":"path","name":"campaignId","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send existing campaign now","tags":["campaigns"]}},"/api/campaigns/{id}":{"get":{"description":"Get a campaign by ID. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"getCampaign","parameters":[{"description":"Campaign ID","format":"int64","in":"path","name":"id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CampaignDetails"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Campaign not found"}},"summary":"Get a campaign","tags":["campaigns"]}},"/api/catalogs":{"get":{"description":"Get catalog names. <br/><br/><b>Rate limit</b>: 100 requests/second, per API key.","operationId":"listCatalogs","parameters":[{"description":"Page number to list (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"description":"Number of results to display per page (defaults to 10).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":10}],"responses":{"200":{"description":"List of catalogs","schema":{"$ref":"#/definitions/GetCatalogsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get catalog names","tags":["catalogs"]}},"/api/catalogs/{catalogName}":{"delete":{"description":"Delete the catalog with the specified name. Also deletes all collections that reference the specified catalog.","operationId":"deleteCatalog","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"}],"responses":{"200":{"description":"Catalog deleted","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete a catalog","tags":["catalogs"]},"post":{"description":"Create a catalog. Each catalog in a project must have a unique name. Catalog names can be no longer than 255 characters and must contain only alphanumeric characters and dashes.","operationId":"createCatalog","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"201":{"description":"Catalog created"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"500":{"description":"Internal server error"}},"summary":"Create a catalog","tags":["catalogs"]}},"/api/catalogs/{catalogName}/fieldMappings":{"get":{"description":"Field mappings (field to data types) and undefined fields of a catalog","operationId":"getFieldMappings","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"}],"responses":{"200":{"description":"Field mappings for catalog.","schema":{"$ref":"#/definitions/CatalogFieldMappingsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Catalog not found"}},"summary":"Get field mappings for a catalog","tags":["catalogs"]},"put":{"description":"Set a catalog's field mappings (data types). After being set, a given field's data type may not be changed. Valid types: boolean, date, geo_location, long, double, object, and string.","operationId":"updateFieldTypes","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog Field Types","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CatalogMappingsUpdateRequest"}}],"responses":{"200":{"description":"Catalog field mappings updated"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Set a catalog's field mappings (data types)","tags":["catalogs"]}},"/api/catalogs/{catalogName}/items":{"delete":{"description":"Asynchronous. Delete the specified catalog items from the catalog.","operationId":"bulkDeleteCatalogItems","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog bulk delete request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CatalogBulkDeleteRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Bulk delete catalog items request received."},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Bulk delete catalog items","tags":["catalogs"]},"get":{"description":"Get the catalog items for a catalog. <br/><br/><b>Rate limit</b>: 100 requests/second, per API key.","operationId":"listCatalogItems","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Page number to list (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"description":"Number of results to display per page (defaults to 10).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":10},{"description":"Field by which results should be ordered. To also use the sortAscending parameter, this field must have a defined type.","in":"query","name":"orderBy","required":false,"type":"string","x-example":"myField"},{"description":"Sort results by ascending (Defaults to false).","in":"query","name":"sortAscending","required":false,"type":"boolean","x-example":false}],"responses":{"200":{"description":"Items in the catalog that satisfy the request restraints","schema":{"$ref":"#/definitions/GetCatalogItemsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Catalog not found"},"500":{"description":"Internal server error"}},"summary":"Get the catalog items for a catalog","tags":["catalogs"]},"post":{"description":"Asynchronous. Create up to 1000 catalog items with a single request. Each of a catalog's items must have a unique ID that contains only alphanumeric characters and dashes and has a maximum length of 255 characters. If the catalog already contains an item with the same ID as one provided in the request body, the item in the catalog will be completely overwritten, unless replaceUploadedFieldsOnly is set to true. Do not use periods in field names.<br/><br/><b>Rate limit</b>: 100 requests/second, per API key.","operationId":"bulkUpdateCatalogItems","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog bulk update request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CatalogBulkUploadRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Request to bulk upload items received"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Catalog not found"},"500":{"description":"Internal server error"}},"summary":"Bulk create catalog items","tags":["catalogs"]}},"/api/catalogs/{catalogName}/items/{itemId}":{"delete":{"description":"Asynchronous. Deletes the specified item from the catalog. Data may not be deleted immediately.","operationId":"deleteCatalogItem","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog item id [Alphanumeric, dashes, case sensitive, 255 characters max]","in":"path","name":"itemId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Received request to deleted item. Use GET /api/catalogs/{catalogName}/items/{itemId} to verify completion."},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete a catalog item","tags":["catalogs"]},"get":{"description":"Get a specific catalog item from the given catalog.","operationId":"getCatalogItem","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog item id [Alphanumeric, dashes, case sensitive, 255 characters max]","in":"path","name":"itemId","required":true,"type":"string"}],"responses":{"200":{"description":"Catalog Item","schema":{"$ref":"#/definitions/CatalogItemWithProperties"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"No catalog item at specified location"}},"summary":"Get a specific catalog item","tags":["catalogs"]},"patch":{"description":"Asynchronous. Create or update the specified catalog item in the given catalog. A catalog item's ID must be unique, contain only alphanumeric characters and dashes, and have a maximum length of 255 characters. If the catalog item already exists, its fields will be updated with the values provided in the request body. Previously existing fields not included in the request body will remain as is. Do not use periods in field names.","operationId":"partialUpdateCatalogItem","parameters":[{"in":"path","name":"catalogName","required":true,"type":"string"},{"in":"path","name":"itemId","required":true,"type":"string"},{"description":"Catalog item contents","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CatalogUpdateItemRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Catalog item update request received. Use GET /api/catalogs/{catalogName}/items/{itemId} to verify completion."},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create or update a catalog item","tags":["catalogs"]},"put":{"description":"Asynchronous. Create or replace the specified catalog item in the given catalog. A catalog item's ID must be unique, contain only alphanumeric characters and dashes, and have a maximum length of 255 characters. If the catalog item already exists, it will be replaced by the value provided in the request body. Do not use periods in field names.<br/><br/><b>Rate limit</b>: 1000 requests/second, per API key.","operationId":"indexCatalogItem","parameters":[{"description":"Catalog name [Alphanumeric, dashes, case insensitive, 255 characters max]","in":"path","name":"catalogName","required":true,"type":"string"},{"description":"Catalog item id [Alphanumeric, dashes, case sensitive, 255 characters max]","in":"path","name":"itemId","required":true,"type":"string"},{"description":"Catalog item value","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CatalogIndexItemRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Catalog item update request received. Use GET /api/catalogs/{catalogName}/items/{itemId} to verify completion."},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"500":{"description":"Internal server error"}},"summary":"Create or replace a catalog item","tags":["catalogs"]}},"/api/channels":{"get":{"description":"Get all message channels within the project. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"channels","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ChannelsResponse"}},"401":{"description":"Invalid API key"}},"summary":"Get channels","tags":["channels"]}},"/api/commerce/trackPurchase":{"post":{"description":"Track purchase events. <code>shoppingCartItems</code> field on the user profile is cleared. User profile is also updated if it already exists (created otherwise) using the user request field. Also, note that there is a soft limit on the number of unique fields a user can have (default is 1,000). Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackPurchase","parameters":[{"description":"purchase data","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TrackPurchaseRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Track a purchase","tags":["commerce"]}},"/api/commerce/updateCart":{"post":{"description":"Update the <code>shoppingCartItems</code> field on the user profile with shopping cart items. User profile is updated if it already exists (created otherwise) via the user field. Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"updateCart","parameters":[{"description":"state of the cart","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpdateCartRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Update a user's shopping cart items","tags":["commerce"]}},"/api/email/cancel":{"post":{"description":"Cancels an email to a specific user. Request must include a <code>campaignId</code> and an <code>email</code> or <code>userId</code>, or just a <code>scheduledMessageId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel an email to a user","tags":["email"]}},"/api/email/target":{"post":{"description":"Send an email to a specific email address. Request data fields will override user profile data fields. A reference to the user profile is provided via the <code>profile</code> field, to help resolve field collisions.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email id","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetEmailRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send an email to an email address","tags":["email"]}},"/api/email/viewInBrowser":{"get":{"description":"View a rendered version of a previously sent email.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"viewInBrowser","parameters":[{"description":"user's email","in":"query","name":"email","required":false,"type":"string"},{"description":"user's userId","in":"query","name":"userId","required":false,"type":"string"},{"description":"id of sent message","in":"query","name":"messageId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Data feed error encountered"},"422":{"description":"Empty catalog collection encountered"}},"summary":"View a previously sent email","tags":["email"]}},"/api/embedded-messaging/events/click":{"post":{"description":"This endpoint tracks a click on an embedded message. It creates an <code>embeddedClick</code> event.<br/><br/>For test messages (proofs), no events are created.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"embedded-track-click","parameters":[{"description":"Track an embedded message click","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/EmbeddedClickRequest"}}],"responses":{"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an embedded message click","tags":["events"]}},"/api/embedded-messaging/events/received":{"post":{"description":"This endpoint tracks that a given embedded message was received on a device. It creates an <code>embeddedReceived</code> event in Iterable. <br/><br/>An <code>embeddedReceived</code> event indicates that a device has retrieved a message. It does not mean that the message has been displayed.<br/><br/>Iterable's SDKs automatically call this endpoint for each embedded message they retrieve. If you're not using an SDK, call this endpoint once per embedded message you retrieve from Iterable's API.<br/><br/>For test messages (proofs), no events are created.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"embedded-track-received","parameters":[{"description":"Track an embedded message received event","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/EmbeddedReceivedRequest"}}],"responses":{"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an embedded message received event","tags":["events"]}},"/api/embedded-messaging/events/session":{"post":{"description":"This endpoint tracks a single <code>embeddedSession</code> event, and one <code>embeddedImpression</code> event for each of the session's impressions. <br/><br/>An <code>embeddedSession</code> event represents a period of time when a user is viewing a page or a screen where embedded messages can be displayed (in one or many placements).<br/><br/>An <code>embeddedImpression</code> event represents the number of times a given embedded message was visible during the session, and the total amount of time the message was visible (in seconds) across all those appearances.<br/><br/>This endpoint does not create events for test messages (proofs).<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"embedded-track-impression","parameters":[{"description":"Track an embedded message session and related impressions","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/EmbeddedSessionRequest"}}],"responses":{"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an embedded message session and related impressions","tags":["events"]}},"/api/embedded-messaging/messages":{"get":{"description":"This endpoint returns embedded messages for which the specified user is eligible, grouped by <code>placementId</code>.<br/><br/>By default, it returns data for all placements that have messages for the user. To constrain the response to specific placements, provide one or more <code>placementIds</code> query parameters.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"messages","parameters":[{"description":"User identifier. Provide an email or a userId, but not both.","in":"query","name":"email","required":false,"type":"string"},{"description":"User identifier. Provide a userId or an email, but not both.","in":"query","name":"userId","required":false,"type":"string"},{"description":"The platform of the app for which to retrieve embedded messages: iOS, Android, or Web (case-sensitive).","in":"query","name":"platform","required":false,"type":"string"},{"default":"None","description":"Iterable SDK version (e.g., 6.5.0).","in":"query","name":"sdkVersion","required":false,"type":"string"},{"default":"None","description":"The package name of the app for which to retrieve embedded messages.","in":"query","name":"packageName","required":false,"type":"string"},{"collectionFormat":"multi","description":"Placements to include in the response, even if they don't have embedded messages for the user. When no placementIds are specified, the response includes all embedded messages for which the user is eligible.","in":"query","items":{"type":"object"},"name":"placementIds","required":false,"type":"array"},{"collectionFormat":"multi","description":"IDs of embedded messages already retrieved by the device making the request. If the user is no longer eligible for a specified message, that message will be omitted from the API response. Otherwise, it will be present, but without an elements field.","in":"query","items":{"type":"string"},"name":"currentMessageIds","required":false,"type":"array"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/EmbeddedMessagesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user's embedded messages","tags":["Embedded Messaging"]}},"/api/events/byUserId/{userId}":{"get":{"description":"Get events for a specific user, by <code>userId</code>.<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>userId</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"User events by userId","parameters":[{"description":"UserId of the user whose events you are retrieving.","in":"path","name":"userId","required":true,"type":"string"},{"default":30,"description":"The number of events to retrieve.  (Max is 200)","format":"int32","in":"query","maximum":200,"minimum":1,"name":"limit","required":false,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetEventsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get user events by userId","tags":["events"]}},"/api/events/inAppConsume":{"post":{"description":"Consumes or deletes an in-app message from the server. Use this API if your app does not use one of Iterable’s mobile SDKs, since they call it automatically. If an incoming in-app message is not configured to use the mobile inbox, use this API to \"consume\" it from the server queue after the user sees it. Otherwise, call this API when the user explicitly deletes an inbox-enabled message (by clicking a delete button in its content, swiping it in the inbox, etc.). If you pass a deleteAction value to this endpoint, Iterable generates an inAppDelete event; otherwise, it does not.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"inAppConsume","parameters":[{"description":"In-app notification to consume","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InAppConsumeRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Consume or delete an in-app message","tags":["events"]}},"/api/events/track":{"post":{"description":"Events are created asynchronously and <b>processed separately from single event (non-bulk) endpoint</b>. To make sure events are tracked in order, send them all to the same endpoint (either bulk or non-bulk). <br/><br/>There is a soft limit (default is 8,000) on the number of unique fields a custom event can have. For events of the same name, identically named data fields must be of the same type.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 2000 requests/second, per project.<br/><br/>","operationId":"track","parameters":[{"description":"Event to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TrackRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an event","tags":["events"]}},"/api/events/trackBulk":{"post":{"description":"Events are created asynchronously and <b>processed separately from single event (non-bulk) endpoint</b>. To make sure events are tracked in order, send them all to the same endpoint (either bulk or non-bulk). <br/><br/>There is a soft limit (default is 8,000) on the number of unique fields a custom event can have. For events of the same name, identically named data fields must be of the same type.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 10 requests/second, per project.","operationId":"trackBulk","parameters":[{"description":"Events to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkTrackRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/BulkTrackResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Bulk track events","tags":["events"]}},"/api/events/trackInAppClick":{"post":{"description":"Creates an inAppClick event for the specified user, message, and URL. When not using one of Iterable’s mobile SDKs, call this endpoint when a user taps on a button or link in an in-app message.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackInAppClick","parameters":[{"description":"In-app click to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InAppClickRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an in-app message click","tags":["events"]}},"/api/events/trackInAppClose":{"post":{"description":"Creates an inAppClose event for a specific user and in-app message. When not using Iterable's mobile SDKs, call this endpoint to indicate that the user tapped a close button, link or back button to close a particular in app-message.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackInAppClose","parameters":[{"description":"In-app close to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InAppCloseRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track the closing of an in-app message","tags":["events"]}},"/api/events/trackInAppDelivery":{"post":{"description":"Creates an inAppDelivery event for a specific user, device, and message. When not using Iterable's mobile SDKs, call this endpoint to indicate that a particular message has been delivered to a particular device for a particular user. Take care not to call this endpoint multiple times for the same message/device/user combination.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackInAppDelivery","parameters":[{"description":"In-app delivery to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InAppDeliveryRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track the delivery of an in-app message","tags":["events"]}},"/api/events/trackInAppOpen":{"post":{"description":"Creates an inAppOpen event for the specified user and message, and marks the message as having been read. When not using one of Iterable’s mobile SDKs, call this endpoint when a mobile app displays an in-app message to a user.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackInAppOpen","parameters":[{"description":"In-app open to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InAppOpenRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track an in-app message open","tags":["events"]}},"/api/events/trackPushOpen":{"post":{"description":"Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackPushOpen","parameters":[{"description":"Push open to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TrackPushOpenRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track a mobile push open","tags":["events"]}},"/api/events/trackWebPushClick":{"post":{"description":"Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"trackWebPushClick","parameters":[{"description":"Web Push click to track","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/WebPushClickEventRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Track a web push click","tags":["events"]}},"/api/events/{email}":{"get":{"description":"Get events for a specific user, by <code>email</code>.<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>email</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"User events","parameters":[{"description":"Email of the user whose events you are retrieving.","in":"path","name":"email","required":true,"type":"string"},{"default":30,"description":"The number of events to retrieve.  (Max is 200)","format":"int32","in":"query","maximum":200,"minimum":1,"name":"limit","required":false,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetEventsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get user events","tags":["events"]}},"/api/experiments/metrics":{"get":{"description":"Get metrics for a single experiment or for multiple experiments. Note that we currently only support exporting email experiment metrics.","operationId":"metrics","parameters":[{"collectionFormat":"multi","description":"Experiment to export. Specify multiple experimentId query parameters to export multiple experiments.","in":"query","items":{"type":"object"},"name":"experimentId","required":false,"type":"array"},{"collectionFormat":"multi","description":"Campaign whose experiments you want to export. Specify multiple campaignId query parameters to export multiple campaigns.","in":"query","items":{"type":"object"},"name":"campaignId","required":false,"type":"array"},{"default":"2018-06-25","description":"export starting from (>=)","format":"date-time","in":"query","name":"startDateTime","required":false,"type":"string"},{"default":"2018-07-25","description":"export ending at (<=)","format":"date-time","in":"query","name":"endDateTime","required":false,"type":"string"}],"produces":["text/csv"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExperimentMetricsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get metrics for experiments","tags":["experiments"]}},"/api/experiments":{"get":{"description":"Get a list of experiments with optional filtering by campaign, state, and date range.","operationId":"list","parameters":[{"description":"Filter by campaign ID","format":"int64","in":"query","name":"campaignId","required":false,"type":"integer"},{"description":"Filter by experiment state. Valid values: draft, ready, running, finished, winner_found","enum":["draft","ready","running","finished","winner_found"],"in":"query","name":"state","required":false,"type":"string"},{"description":"Filter by start date (>=)","format":"date-time","in":"query","name":"startDateTime","required":false,"type":"string"},{"description":"Filter by end date (<=)","format":"date-time","in":"query","name":"endDateTime","required":false,"type":"string"},{"default":20,"description":"Maximum number of results to return (default: 20, max: 100)","format":"int32","in":"query","name":"limit","required":false,"type":"integer"},{"default":0,"description":"Number of results to skip (default: 0)","format":"int32","in":"query","name":"offset","required":false,"type":"integer"}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExperimentListResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"List experiments","tags":["experiments"]}},"/api/experiments/{experimentId}":{"get":{"description":"Get a single experiment by ID.","operationId":"get","parameters":[{"description":"Experiment ID","format":"int64","in":"path","name":"experimentId","required":true,"type":"integer"}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExperimentResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Experiment not found"}},"summary":"Get experiment","tags":["experiments"]}},"/api/experiments/{experimentId}/variants":{"get":{"description":"Get all variants for an experiment.","operationId":"variants","parameters":[{"description":"Experiment ID","format":"int64","in":"path","name":"experimentId","required":true,"type":"integer"}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExperimentVariantsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Experiment not found"}},"summary":"Get experiment variants","tags":["experiments"]}},"/api/export/data.csv":{"get":{"description":"Export campaign analytics data in CSV format. Use of either 'range' or 'startDateTime' and 'endDateTime' is required.<br/><b>Rate limit</b>: 4 requests/minute, per project.","operationId":"exportDataCsv","parameters":[{"description":"Data type name.","enum":["emailSend","emailOpen","emailClick","hostedUnsubscribeClick","emailComplaint","emailBounce","emailSendSkip","pushSend","pushOpen","pushUninstall","pushBounce","pushSendSkip","inAppSend","inAppOpen","inAppClick","inAppClose","inAppDelete","inAppDelivery","inAppSendSkip","inAppRecall","inboxSession","inboxMessageImpression","smsSend","smsBounce","smsClick","smsReceived","smsSendSkip","webPushSend","webPushClick","webPushSendSkip","emailSubscribe","emailUnSubscribe","purchase","customEvent","user","smsUsageInfo","embeddedSend","embeddedSendSkip","embeddedClick","embeddedReceived","embeddedImpression","embeddedSession","unknownSession","journeyExit","whatsAppBounce","whatsAppClick","whatsAppReceived","whatsAppSeen","whatsAppSend","whatsAppSendSkip","whatsAppUsageInfo"],"in":"query","name":"dataTypeName","required":true,"type":"string"},{"default":"Today","description":"date range, uses UTC time","enum":["Today","Yesterday","BeforeToday","All"],"in":"query","name":"range","required":false,"type":"string"},{"default":",","description":"CSV file delimiter","in":"query","name":"delimiter","required":false,"type":"string"},{"description":"Export starting from (>=) (yyyy-MM-dd HH:mm:ss [ZZ])","in":"query","name":"startDateTime","required":false,"type":"string"},{"description":"Export ending at (<) (yyyy-MM-dd HH:mm:ss [ZZ])","in":"query","name":"endDateTime","required":false,"type":"string"},{"description":"Fields to omit (comma separated)","in":"query","name":"omitFields","required":false,"type":"string"},{"collectionFormat":"multi","description":"Only export these fields (comma separated)","in":"query","items":{"type":"string"},"name":"onlyFields","required":false,"type":"array"},{"description":"Only export data from this campaign","format":"int64","in":"query","name":"campaignId","required":false,"type":"integer"}],"produces":["text/csv"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"429":{"description":"Rate limit exceeded"}},"summary":"Export data to CSV","tags":["export"]}},"/api/export/data.json":{"get":{"description":"Export campaign analytics data in JSON format, one entry per line. Use of either 'range' or 'startDateTime' and 'endDateTime' is required.<br/><b>Rate limit</b>: 4 requests/minute, per project.","operationId":"exportDataJson","parameters":[{"description":"Data type name.","enum":["emailSend","emailOpen","emailClick","hostedUnsubscribeClick","emailComplaint","emailBounce","emailSendSkip","pushSend","pushOpen","pushUninstall","pushBounce","pushSendSkip","inAppSend","inAppOpen","inAppClick","inAppClose","inAppDelete","inAppDelivery","inAppSendSkip","inAppRecall","inboxSession","inboxMessageImpression","smsSend","smsBounce","smsClick","smsReceived","smsSendSkip","webPushSend","webPushClick","webPushSendSkip","emailSubscribe","emailUnSubscribe","purchase","customEvent","user","smsUsageInfo","embeddedSend","embeddedSendSkip","embeddedClick","embeddedReceived","embeddedImpression","embeddedSession","unknownSession","journeyExit","whatsAppBounce","whatsAppClick","whatsAppReceived","whatsAppSeen","whatsAppSend","whatsAppSendSkip","whatsAppUsageInfo"],"in":"query","name":"dataTypeName","required":true,"type":"string"},{"default":"Today","description":"date range, uses UTC time","enum":["Today","Yesterday","BeforeToday","All"],"in":"query","name":"range","required":false,"type":"string"},{"description":"Export starting from (>=) (yyyy-MM-dd HH:mm:ss [ZZ])","in":"query","name":"startDateTime","required":false,"type":"string"},{"description":"Export ending at (<) (yyyy-MM-dd HH:mm:ss [ZZ])","in":"query","name":"endDateTime","required":false,"type":"string"},{"description":"Fields to omit (comma separated)","in":"query","name":"omitFields","required":false,"type":"string"},{"collectionFormat":"multi","description":"Only export these fields (comma separated)","in":"query","items":{"type":"string"},"name":"onlyFields","required":false,"type":"array"},{"description":"Only export data from this campaign","format":"int64","in":"query","name":"campaignId","required":false,"type":"integer"}],"produces":["application/x-json-stream"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"429":{"description":"Rate limit exceeded"}},"summary":"Export data to JSON","tags":["export"]}},"/api/export/jobs":{"get":{"description":"Return a list of recent export jobs. Only includes jobs for the current project and not other projects.","operationId":"getExportJobs","parameters":[{"description":"Filter results to only include jobs in the specified state","in":"query","name":"jobState","required":false,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/JobsResponse"}}},"summary":"Get export jobs","tags":["export"]}},"/api/export/start":{"post":{"description":"Start a data export. The export processes as a background job. Use the \"Get export files\" endpoint to check export status by <code>jobId</code> and obtain file download links.<br/><br/><b>Rate limit</b>: 1 request/second, per organization. <br/><b>Concurrent request limit</b>: Up to 4 exports process at a time, per organization. Additional requests are queued.","operationId":"startExport","parameters":[{"description":"Start export request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StartExportRequest"}}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/StartExportResponse"}}},"summary":"Start export","tags":["export"]}},"/api/export/userEvents":{"get":{"description":"Export all events (in JSON) for the user specified by <code>email</code> or <code>userId</code>. One event per line.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"exportUserEvents","parameters":[{"description":"Export by user's email","in":"query","name":"email","required":false,"type":"string"},{"description":"Export by user's ID","in":"query","name":"userId","required":false,"type":"string"},{"default":false,"description":"Include Custom Events","in":"query","name":"includeCustomEvents","required":false,"type":"boolean"}],"produces":["application/x-json-stream"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"429":{"description":"Rate limit exceeded"}},"summary":"Export user events","tags":["export"]}},"/api/export/{jobId}":{"delete":{"description":"Cancel a queued or running export created with the \"Start export\" endpoint. <br/><b>Rate limit</b>: 1 request/second, per project.","operationId":"cancelExport","parameters":[{"description":"The ID of the export job. Use the jobId returned from the \"Start export\" endpoint.","format":"int64","in":"path","name":"jobId","required":true,"type":"integer"}],"produces":["application/json"],"responses":{"default":{"description":"successful operation"}},"summary":"Cancel export","tags":["export"]}},"/api/export/{jobId}/files":{"get":{"description":"Get the job status and files for an export started with the \"Start export\" endpoint. <br/><br/>Occasionally, a job status may change from running to enqueued because it had to restart. When this happens, the job maintains progress and begins where it previously stopped. Iterable uses exponential backoff for retries.<br/><br/>Files are added to the list as the export job is running. Paginate through the files by using the last file name in the response as the <code>startAfter</code> value for the next request.  Each file is up to 10MB. Exports are limited to 100GB in total size. <br/><br/><b>Rate limit</b>: 1 request/second, per organization. <br/><b>Concurrent request limit</b>: Up to 4 exports process at a time, per organization. Additional requests are queued.","operationId":"getExportFiles","parameters":[{"description":"The ID of the export job. Use the jobId returned from the \"Start export\" endpoint.","format":"int64","in":"path","name":"jobId","required":true,"type":"integer"},{"default":"None","description":"Skip file names up to and including this value. Use for paginating over the files in the export.","in":"query","name":"startAfter","required":false,"type":"string","x-example":"file-1679086247925.csv"}],"produces":["application/json"],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExportJobStatusAndFiles"}}},"summary":"Get export files","tags":["export"]}},"/api/inApp/cancel":{"post":{"description":"Cancels the sending of a scheduled in-app message to a specific user.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel a scheduled in-app message","tags":["In-app"]}},"/api/inApp/getMessages":{"get":{"description":"Get a user's in-app messages. This endpoint always returns the user's non-selective (not app-specific) in-app messages; to also fetch app-specific in-app messages, include a <code>packageName</code> and <code>platform</code> in the request. This endpoint returns new messages and messages that have already been saved to a mobile inbox, and each message has a <code>read</code> field to indicate whether or not it has already been seen.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"getMessages","parameters":[{"description":"The email address of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"email","required":false,"type":"string"},{"description":"The userId of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"userId","required":false,"type":"string"},{"description":"The number of in-app messages to fetch.","format":"int32","in":"query","name":"count","required":true,"type":"integer"},{"default":"None","description":"The platform of the app for which to retrieve selective in-app messages: iOS, Android, Web, or OTT (case-sensitive).","enum":["iOS","Android","Web","OTT"],"in":"query","name":"platform","required":false,"type":"string"},{"default":"None","description":"Iterable SDK version (e.g., 6.2.17)","in":"query","name":"SDKVersion","required":false,"type":"string"},{"default":"None","description":"The package name of the app for which to retrieve selective in-app messages.","in":"query","name":"packageName","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiInAppMessagesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user's in-app messages","tags":["In-app"]}},"/api/inApp/getPriorityMessage":{"get":{"description":"Get a user's most relevant in-app message.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"getPriorityMessage","parameters":[{"description":"The email address of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"email","required":false,"type":"string"},{"description":"The userId of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"userId","required":false,"type":"string"},{"default":"None","description":"The platform of the app for which to retrieve selective in-app messages: iOS, Android, Web, or OTT (case-sensitive).","enum":["iOS","Android","Web","OTT"],"in":"query","name":"platform","required":false,"type":"string"},{"default":"None","description":"Iterable SDK version (e.g., 6.2.17)","in":"query","name":"SDKVersion","required":false,"type":"string"},{"default":"None","description":"The package name of the app for which to retrieve selective in-app messages.","in":"query","name":"packageName","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiInAppMessagesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user's most relevant in-app message","tags":["In-app"]}},"/api/inApp/target":{"post":{"description":"Send an in-app notification to a specific user. Request data fields will override user profile data fields. A reference to the user profile is provided via the <code>profile</code> field, to help resolve field collisions.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email id","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetInAppRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send an in-app notification to a user","tags":["In-app"]}},"/api/inApp/web/getMessages":{"get":{"description":"Get a user's web in-app messages. This endpoint always returns the user's non-selective (not app-specific) web in-app messages; to also fetch web app-specific in-app messages, include a <code>packageName</code> in the request. This endpoint returns new messages and messages that have already been saved to a mobile inbox, and each message has a <code>read</code> field to indicate whether or not it has already been seen.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"getMessages","parameters":[{"description":"The email address of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"email","required":false,"type":"string"},{"description":"The userId of the user for which to fetch in-app messages. Specify either an email or a userId.","in":"query","name":"userId","required":false,"type":"string"},{"description":"The number of web in-app messages to fetch.","format":"int32","in":"query","name":"count","required":true,"type":"integer"},{"default":"None","description":"Iterable SDK version (e.g., 6.2.17)","in":"query","name":"SDKVersion","required":false,"type":"string"},{"default":"None","description":"The package name of the app for which to retrieve selective web in-app messages.","in":"query","name":"packageName","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiInAppMessagesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user's web in-app messages","tags":["In-app-web"]}},"/api/journeys":{"get":{"description":"Get a list of the journeys within your project.","operationId":"getJourneys","parameters":[{"description":"Page number (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"description":"Number of results to return per page (defaults to 10, maximum of 50).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":25},{"default":"id","description":"Sort field with optional direction prefix. Use - for descending, + or no prefix for ascending. Examples: -createdAt, +name, id","in":"query","name":"sort","required":false,"type":"string","x-example":"id"},{"collectionFormat":"multi","description":"Without this parameter, the endpoint returns all non-archived journeys. With state set to Archived, the endpoint only returns archived journeys.","in":"query","items":{"type":"string"},"name":"state","required":false,"type":"array","x-example":"Archived"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetJourneysResponse"}},"400":{"description":"Invalid parameters."},"401":{"description":"Invalid API key."}},"summary":"Get journeys (workflows)","tags":["workflows"]}},"/api/lists":{"get":{"description":"Get all lists within a project. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"getLists","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetListsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get lists","tags":["lists"]},"post":{"description":"Create a new static list.","operationId":"create","parameters":[{"description":"name and optional description","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CreateListRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CreateListResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create a static list","tags":["lists"]}},"/api/lists/getUsers":{"get":{"description":"Get all users within a list. <b>Rate limit</b>: 5 requests/minute, per project.","operationId":"getUsers","parameters":[{"description":"list id","format":"int64","in":"query","name":"listId","required":true,"type":"integer"},{"default":false,"description":"If true, will return the userId instead of email if both exists in a user profile for a hybrid project.","in":"query","name":"preferUserId","required":false,"type":"boolean"}],"produces":["text/plain"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"503":{"description":"Request timeout.  Try again later."}},"summary":"Get users in a list","tags":["lists"]}},"/api/lists/previewUsers":{"get":{"description":"Get a random sample of up to 5000 users within a list. <b>Rate limit</b>: 5 requests/minute, per project.","operationId":"getUsersPreview","parameters":[{"description":"list id","format":"int64","in":"query","name":"listId","required":true,"type":"integer"},{"default":false,"description":"If true, will return the userId instead of email if both exists in a user profile for a hybrid project.","in":"query","name":"preferUserId","required":false,"type":"boolean"},{"description":"Number of users the response will return, up to 5000. Defaults to 1000.","format":"int32","in":"query","name":"size","required":false,"type":"integer"}],"produces":["text/plain"],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"503":{"description":"Request timeout.  Try again later."}},"summary":"Preview users in a list","tags":["lists"]}},"/api/lists/subscribe":{"post":{"description":"Add specific subscribers to a list.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"subscribe","parameters":[{"description":"email list id and list of emails","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SubscribeRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserBulkUpdateListResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Add subscribers to list","tags":["lists"]}},"/api/lists/unsubscribe":{"post":{"description":"Remove specific users from a list.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"unsubscribe","parameters":[{"description":"email list id and list of emails","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UnsubscribeRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserBulkUpdateListResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Remove users from a list","tags":["lists"]}},"/api/lists/{listId}":{"delete":{"description":"Delete a list by listId.","operationId":"delete","parameters":[{"description":"list id","format":"int64","in":"path","name":"listId","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"List is in use"}},"summary":"Delete a list","tags":["lists"]}},"/api/lists/{listId}/size":{"get":{"description":"Get the number of users within a list. <b>Rate limit</b>: 5 requests/minute, per project.","operationId":"getListCount","parameters":[{"description":"list id","format":"int64","in":"path","name":"listId","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"503":{"description":"Request timeout.  Try again later."}},"summary":"Get count of users in list","tags":["lists"]}},"/api/messageTypes":{"get":{"description":"List all message types within a project. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"messageTypes","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/MessageTypesResponse"}},"401":{"description":"Invalid API key"}},"summary":"List message types","tags":["messageTypes"]}},"/api/metadata":{"get":{"description":"","operationId":"list tables","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ListMetadataTablesResponse"}},"401":{"description":"Invalid API key"}},"summary":"List available tables","tags":["metadata"]}},"/api/metadata/{table}":{"delete":{"description":"Asynchronous. Deletes the table. 200 response indicates a valid request that will be processed; table may not be deleted immediately. Use GET /api/metadata/{table} to verify completion.","operationId":"delete","parameters":[{"description":"Table name [Alphanumeric, case insensitive]","in":"path","name":"table","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete a table","tags":["metadata"]},"get":{"description":"","operationId":"list","parameters":[{"description":"Table name [Alphanumeric, case insensitive]","in":"path","name":"table","required":true,"type":"string"},{"default":"None","description":"next result set id; returned by previous search if more hits exist","in":"query","name":"nextMarker","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/Listing"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"List keys in a table","tags":["metadata"]}},"/api/metadata/{table}/{key}":{"delete":{"description":"Asynchronous. Deletes the specified item from the table. 200 response indicates a valid request that will be processed; data may not be deleted immediately. Use GET /api/metadata/{table}/{key} to verify completion.","operationId":"delete","parameters":[{"description":"Table name [Alphanumeric, case insensitive]","in":"path","name":"table","required":true,"type":"string"},{"description":"Metadata key [Alphanumeric, case sensitive]","in":"path","name":"key","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete a single metadata key/value","tags":["metadata"]},"get":{"description":"","operationId":"get","parameters":[{"description":"Table name [Alphanumeric, case insensitive]","in":"path","name":"table","required":true,"type":"string"},{"description":"Metadata key [Alphanumeric, case sensitive]","in":"path","name":"key","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/MetadataWithProperties"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"No metadata at specified location"}},"summary":"Get the metadata value of a single key","tags":["metadata"]},"put":{"description":"Asynchronous. Creates or replaces the item associated with the specified key. 200 response indicates a valid request that will be processed; updates may not be made immediately. Use GET /api/metadata/{table}/{key} to verify completion.","operationId":"put","parameters":[{"description":"Table name [Alphanumeric, case insensitive]","in":"path","name":"table","required":true,"type":"string"},{"description":"Metadata key [Alphanumeric, case sensitive]","in":"path","name":"key","required":true,"type":"string"},{"description":"Metadata properties","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PutMetadataRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create or replace metadata","tags":["metadata"]}},"/api/push/cancel":{"post":{"description":"Cancels a push notification to a specific user. Request must include a <code>campaignId</code> and an <code>email</code> or <code>userId</code>, or just a <code>scheduledMessageId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel a push notification to a user","tags":["push"]}},"/api/push/target":{"post":{"description":"Send a push notification to a specific user. Request data fields will override user profile data fields. A reference to the user profile is provided via the <code>profile</code> field, to help resolve field collisions.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email id","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetPushRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send push notification to user","tags":["push"]}},"/api/sms/cancel":{"post":{"description":"Cancels an SMS to a specific user. Request must include a <code>campaignId</code> and an <code>email</code> or <code>userId</code>, or just a <code>scheduledMessageId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel an SMS to a user","tags":["SMS"]}},"/api/sms/target":{"post":{"description":"Send an SMS notification to a specific user. Note that this API is typically used for transactional messaging. Request data fields will override user profile data fields. A reference to the user profile is provided via the <code>profile</code> field, to help resolve field collisions.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetSMSRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send SMS notification to user","tags":["SMS"]}},"/api/snippets":{"get":{"description":"Get all snippets for the current project.","operationId":"getSnippets","parameters":[],"responses":{"200":{"description":"Retrieved snippets successfully","schema":{"$ref":"#/definitions/GetSnippetsResponse"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"summary":"Get all snippets","tags":["snippets"]},"post":{"description":"Create a new snippet.","operationId":"createSnippet","parameters":[{"description":"Snippet to create","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CreateSnippetRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CreateSnippetResponse"}},"201":{"description":"Snippet created successfully","schema":{"$ref":"#/definitions/CreateSnippetResponse"}},"400":{"description":"Invalid request parameters"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"summary":"Create a snippet","tags":["snippets"]}},"/api/snippets/{identifier}":{"delete":{"description":"Delete a snippet by ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names.","operationId":"deleteSnippet","parameters":[{"description":"Snippet ID (numeric) or name (string)","in":"path","name":"identifier","required":true,"type":"string"}],"responses":{"200":{"description":"Snippet deleted successfully","schema":{"$ref":"#/definitions/DeleteSnippetResponse"}},"400":{"description":"Invalid snippet identifier"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Snippet not found"},"500":{"description":"Internal server error"}},"summary":"Delete a snippet","tags":["snippets"]},"get":{"description":"Retrieve a snippet by its ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names.","operationId":"getSnippet","parameters":[{"description":"Snippet ID (numeric) or name (string)","in":"path","name":"identifier","required":true,"type":"string"}],"responses":{"200":{"description":"Retrieved snippet successfully","schema":{"$ref":"#/definitions/GetSnippetResponse"}},"400":{"description":"Invalid snippet identifier"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Snippet not found"},"500":{"description":"Internal server error"}},"summary":"Get snippet by ID or name","tags":["snippets"]},"put":{"description":"Create or update a snippet by ID (numeric) or name (string). For names, creates the snippet if it doesn't exist. For IDs, only updates existing snippets. Numeric identifiers are treated as IDs, string identifiers as names.","operationId":"updateSnippet","parameters":[{"description":"Snippet ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names. For name-based identifiers, creates the snippet if it doesn't exist.","in":"path","name":"identifier","required":true,"type":"string"},{"description":"Snippet to create or update","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpdateSnippetRequest"}}],"responses":{"200":{"description":"Snippet updated successfully","schema":{"$ref":"#/definitions/UpdateSnippetResponse"}},"201":{"description":"Snippet created successfully","schema":{"$ref":"#/definitions/UpdateSnippetResponse"}},"400":{"description":"Invalid request parameters"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Snippet not found (for ID-based identifiers)"},"500":{"description":"Internal server error"}},"summary":"Create or update a snippet","tags":["snippets"]}},"/api/subscriptions/subscribeToDoubleOptIn":{"post":{"description":"This endpoint triggers a double opt-in subscription for a user. <br/><br/>Once the user responds to the subscription confirmation message, they will be subscribed to the message types specified in the request body. <br/><br/>This endpoint can only be used with SMS, double opt-in message types. To enable it, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Response Format Notes:</b><ul><li>202 Accepted: Plain text (e.g., 'Request for double opt-in subscription accepted')</li><li>204 No Content: Returned when user is already subscribed to all requested message types (no body)</li><li>400 Bad Request (JSON parsing error): JSON <code>{error, message, code, data}</code></li><li>400 Bad Request (validation error): Plain text (e.g., 'User not found for userId: X or email: Y')</li><li>404 Not Found: JSON <code>{msg, code, params}</code> (returned when feature is not enabled)</li><li>500 Internal Server Error: Plain text</li></ul>","operationId":"subscribeSingleUserToDoubleOptIn","parameters":[{"description":"Create a double opt-in subscription request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DoubleOptInSubscriptionsRequest"}}],"responses":{"202":{"description":"Request accepted (plain text: 'Request for double opt-in subscription accepted')"},"204":{"description":"No content - user is already subscribed to all requested message types"},"400":{"description":"Invalid parameters - returns EITHER JSON {error, message, code, data} for request parsing errors OR plain text for validation errors (e.g., 'User not found for userId: X or email: Y')","schema":{"$ref":"#/definitions/ErrorHttpResponse"}},"401":{"description":"Invalid API key (JSON: {msg, code, params})","schema":{"$ref":"#/definitions/IterableApiResponse"}},"404":{"description":"Endpoint not found (JSON: {msg, code, params})","schema":{"$ref":"#/definitions/IterableApiResponse"}},"500":{"description":"Internal server error (plain text)"}},"summary":"Trigger a double opt-in subscription flow","tags":["subscriptions"]}},"/api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}":{"put":{"description":"Subscribes or unsubscribes multiple users to the specified subscription group. In <code>users</code>, list <code>email</code> addresses. In <code>usersByUserId</code>, list <code>userId</code> values. A single request can include both <code>users</code> and <code>usersByUserId</code>. To enable this API, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"Bulk subscription action","parameters":[{"description":"Subscription group (i.e.: emailList, messageType, messageChannel) [Alphanumeric, case insensitive]","in":"path","name":"subscriptionGroup","required":true,"type":"string"},{"description":"Subscription Group Id [Numeric]","format":"int64","in":"path","name":"subscriptionGroupId","required":true,"type":"integer"},{"default":"subscribe","description":"subscribe or unsubscribe","in":"query","name":"action","required":true,"type":"string"},{"description":"user email","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkSubscriptionActionRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Accepted a request for bulk subscription actions"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Endpoint not found"},"409":{"description":"Email/userId conflict"}},"summary":"Bulk subscription action on a list of users","tags":["subscriptions"]}},"/api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}/byUserId/{userId}":{"delete":{"description":"Unsubscribes a user from the specified subscription group. To enable this API, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"unsubscribeSingleUserByUserId","parameters":[{"description":"Subscription group (i.e.: emailList, messageType, messageChannel) [Alphanumeric, case insensitive]","in":"path","name":"subscriptionGroup","required":true,"type":"string"},{"description":"Subscription Group Id [Numeric]","format":"int64","in":"path","name":"subscriptionGroupId","required":true,"type":"integer"},{"description":"User's userId","in":"path","name":"userId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Accepted a request to unsubscribe"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Endpoint not found"},"409":{"description":"Email/userId conflict"}},"summary":"Unsubscribe a single user by userId","tags":["subscriptions"]},"patch":{"description":"Subscribes a user to the specified subscription group. To enable this API, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"subscribeSingleUserByUserId","parameters":[{"description":"Subscription group (i.e.: emailList, messageType, messageChannel) [Alphanumeric, case insensitive]","in":"path","name":"subscriptionGroup","required":true,"type":"string"},{"description":"Subscription Group Id [Numeric]","format":"int64","in":"path","name":"subscriptionGroupId","required":true,"type":"integer"},{"description":"User's userId","in":"path","name":"userId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Accepted a request to subscribe"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Endpoint not found"},"409":{"description":"Email/userId conflict"}},"summary":"Subscribe a single user by their userId","tags":["subscriptions"]}},"/api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}/user/{userEmail}":{"delete":{"description":"Unsubscribes a user from the specified subscription group. To enable this API, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"unsubscribeSingleUser","parameters":[{"description":"Subscription group (i.e.: emailList, messageType, messageChannel) [Alphanumeric, case insensitive]","in":"path","name":"subscriptionGroup","required":true,"type":"string"},{"description":"Subscription Group Id [Numeric]","format":"int64","in":"path","name":"subscriptionGroupId","required":true,"type":"integer"},{"description":"User's Email [Alphanumeric]","in":"path","name":"userEmail","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Accepted a request to unsubscribe"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Endpoint not found"},"409":{"description":"Email/userId conflict"}},"summary":"Unsubscribe a single user","tags":["subscriptions"]},"patch":{"description":"Subscribes a user to the specified subscription group. To enable this API, contact your customer success manager.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"subscribeSingleUser","parameters":[{"description":"Subscription group (i.e.: emailList, messageType, messageChannel) [Alphanumeric, case insensitive]","in":"path","name":"subscriptionGroup","required":true,"type":"string"},{"description":"Subscription Group Id [Numeric]","format":"int64","in":"path","name":"subscriptionGroupId","required":true,"type":"integer"},{"description":"User's Email [Alphanumeric]","in":"path","name":"userEmail","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"202":{"description":"Accepted a request to subscribe"},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Endpoint not found"},"409":{"description":"Email/userId conflict"}},"summary":"Subscribe a single user","tags":["subscriptions"]}},"/api/templates":{"get":{"description":"Get templates for a project. Use <code>page</code> and <code>pageSize</code> parameters to paginate results. If the unpaginated templates API is allowed for your project, then all templates are returned if no pagination parameters are provided. The unpaginated behavior is deprecated and may be removed in the future. <b>Rate limit</b>: 100 requests/second, per project.","operationId":"getTemplates","parameters":[{"default":"None","description":"Only retrieve templates associated with this template type","enum":["Base","Blast","Triggered","Workflow"],"in":"query","name":"templateType","required":false,"type":"string"},{"default":"None","description":"Only retrieve templates associated with this message medium","enum":["Email","Push","InApp","SMS"],"in":"query","name":"messageMedium","required":false,"type":"string"},{"description":"Get templates created at or after this date time (yyyy-MM-dd HH:mm:ss [ZZ])","format":"date-time","in":"query","name":"startDateTime","required":false,"type":"string"},{"description":"Get templates created before this date time (yyyy-MM-dd HH:mm:ss [ZZ])","format":"date-time","in":"query","name":"endDateTime","required":false,"type":"string"},{"default":1,"description":"Page number (starting at 1).","format":"int32","in":"query","name":"page","required":false,"type":"integer","x-example":1},{"default":20,"description":"Number of results to return per page (defaults to 20, maximum of 1000).","format":"int32","in":"query","name":"pageSize","required":false,"type":"integer","x-example":25},{"default":"id","description":"Field to sort templates by, with optional direction prefix. Use - for descending, + or no prefix for ascending. Templates can be sorted by id, name, createdAt, or updatedAt. Examples: -createdAt, +name, id","in":"query","name":"sort","required":false,"type":"string","x-example":"id"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetTemplatesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get project templates","tags":["templates"]}},"/api/templates/bulkDelete":{"post":{"description":"This endpoint deletes one or more base templates. Templates which are associated with a campaign will not be deleted. ","operationId":"bulk delete templates","parameters":[{"description":"IDs of templates to delete","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkDeleteTemplatesRequest"}}],"responses":{"200":{"description":"Templates deleted successfully"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"summary":"Bulk delete templates","tags":["templates"]}},"/api/templates/email/get":{"get":{"description":"<b>Rate limit</b>: 100 requests/second, per project.","operationId":"getEmailTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiEmailTemplateModel"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Content does not exist for specified locale"}},"summary":"Get an email template by templateId","tags":["templates"]}},"/api/templates/email/preview":{"post":{"description":"Generate a fully rendered HTML preview of an email template using custom data. This endpoint simulates how a template would appear when sent to a user, allowing you to test template rendering with specific data fields and/or data feed data. Use this to preview templates before sending campaigns or to test template logic with different data scenarios. <br/><br/>Note: If a template references a field that is not provided in the request data, that field will be rendered as an empty string, matching the behavior of actual email sends.<br/><br/><b>Rate limit</b>: 10 requests/second, per project.","operationId":"previewEmailTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"default":"None","description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"},{"description":"Data to use for template rendering","in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/TemplatePreviewRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters. This may occur if the <code>templateId</code> is invalid, if required template data is missing, or if the request body contains malformed JSON."},"401":{"description":"Invalid API key"},"404":{"description":"Template not found"}},"summary":"Preview email template with custom data","tags":["templates"]}},"/api/templates/email/proof":{"post":{"description":"Send a proof of an email template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.","operationId":"emailProof","parameters":[{"description":"Template proof request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TemplateProofRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send a proof of an email template","tags":["templates"]}},"/api/templates/email/update":{"post":{"description":"","operationId":"updateEmailTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiEmailTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update email template","tags":["templates"]}},"/api/templates/email/upsert":{"post":{"description":"Create email template if it doesn't exist already, otherwise update all email templates that match the name provided.","operationId":"upsertEmailTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpsertEmailTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create email template","tags":["templates"]}},"/api/templates/embedded/get":{"get":{"description":"<b>Rate limit</b>: 100 requests/second, per project.","operationId":"getEmbeddedTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiEmbeddedTemplateModel"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Content does not exist for specified locale"}},"summary":"Get an embedded message template","tags":["templates"]}},"/api/templates/embedded/update":{"post":{"description":"","operationId":"updateEmbeddedTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiEmbeddedTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update embedded message template","tags":["templates"]}},"/api/templates/embedded/upsert":{"post":{"description":"Create an embedded message template if it doesn't exist yet, otherwise update all embedded message templates that match the name provided.","operationId":"upsertEmbeddedTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpsertEmbeddedTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create an embedded message template","tags":["templates"]}},"/api/templates/getByClientTemplateId":{"get":{"description":"<b>Rate limit</b>: 100 requests/second, per project.","operationId":"getByClientTemplateId","parameters":[{"description":"Client Template Id","in":"query","name":"clientTemplateId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ClientTemplateIdResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get an email template by clientTemplateId","tags":["templates"]}},"/api/templates/inapp/get":{"get":{"description":"","operationId":"getInAppTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiInAppTemplateModel"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Content does not exit for specified locale"}},"summary":"Get an in-app template","tags":["templates"]}},"/api/templates/inapp/preview":{"post":{"description":"Generate a fully rendered HTML preview of an in-app template using custom data. This endpoint simulates how a template would appear when sent to a user, allowing you to test template rendering with specific data fields and/or data feed data. Use this to preview templates before sending campaigns or to test template logic with different data scenarios. <br/><br/>Note: If a template references a field that is not provided in the request data, that field will be rendered as an empty string, matching the behavior of actual email sends.<br/><br/><b>Rate limit</b>: 10 requests/second, per project.","operationId":"previewInAppTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"default":"None","description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"},{"description":"Data to use for template rendering","in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/TemplatePreviewRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"Invalid parameters. This may occur if the <code>templateId</code> is invalid, if required template data is missing, or if the request body contains malformed JSON."},"401":{"description":"Invalid API key"},"404":{"description":"Template not found"}},"summary":"Preview in-app template with custom data","tags":["templates"]}},"/api/templates/inapp/proof":{"post":{"description":"Send a proof of an in-app template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.","operationId":"inappProof","parameters":[{"description":"Template proof request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TemplateProofRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send a proof of an in-app template","tags":["templates"]}},"/api/templates/inapp/update":{"post":{"description":"","operationId":"updateInAppTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiInAppTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update in-app template","tags":["templates"]}},"/api/templates/inapp/upsert":{"post":{"description":"Create an in-app template if it doesn't exist yet, otherwise update all in-app templates that match the name provided.","operationId":"upsertInAppTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpsertInAppTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create an in-app template","tags":["templates"]}},"/api/templates/push/get":{"get":{"description":"<b>Rate limit</b>: 100 requests/second, per project.","operationId":"getPushTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiPushTemplateModel"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Content does not exit for specified locale"}},"summary":"Get a push template","tags":["templates"]}},"/api/templates/push/proof":{"post":{"description":"Send a proof of a push template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.","operationId":"pushProof","parameters":[{"description":"Template proof request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TemplateProofRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send a proof of a push template","tags":["templates"]}},"/api/templates/push/update":{"post":{"description":"","operationId":"updatePushTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiPushTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update push template","tags":["templates"]}},"/api/templates/push/upsert":{"post":{"description":"Create a push template if it doesn't exist, otherwise update all push templates that match the name provided.","operationId":"upsertPushTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpsertPushTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create a push template","tags":["templates"]}},"/api/templates/sms/get":{"get":{"description":"<b>Rate limit</b>: 100 requests/second, per project.","operationId":"getSMSTemplate","parameters":[{"description":"Template ID","format":"int64","in":"query","name":"templateId","required":true,"type":"integer"},{"description":"Locale of content to get","in":"query","name":"locale","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiSMSTemplateModel"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"404":{"description":"Content does not exit for specified locale"}},"summary":"Get an SMS template","tags":["templates"]}},"/api/templates/sms/proof":{"post":{"description":"Send a proof of an SMS template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.","operationId":"smsProof","parameters":[{"description":"Template proof request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TemplateProofRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send a proof of an SMS template","tags":["templates"]}},"/api/templates/sms/update":{"post":{"description":"","operationId":"updateSMSTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiSMSTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update SMS template","tags":["templates"]}},"/api/templates/sms/upsert":{"post":{"description":"Create an SMS template if it doesn't exist yet, otherwise update all SMS templates that match the name provided.","operationId":"upsertSMSTemplate","parameters":[{"description":"Only the fields specified will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpsertSMSTemplateModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Create an SMS template","tags":["templates"]}},"/api/users/bulkUpdate":{"post":{"description":"Bulk updates user data. This endpoint adds and overwrites user profile fields as needed. It does not modify top-level fields omitted from the request body. <br/><br/>If you'd like to merge (rather than overwrite) a user profile's top-level objects with the values provided for them in the request body, set <code>mergeNestedObjects</code> to <code>true</code>.<br/><br/>When updating an existing field, you cannot change its data type (the new value must have the same data type as the old value).<br/><br/>When adding a new field, remember that each project has a soft limit of 1,000 unique user profile fields (across all its users, with a field's uniqueness determined by its name and position on the user profile). <br/><br/>Iterable handles requests to this endpoint separately from requests to single-user endpoints (<code>update</code>, <code>updateEmail</code>, <code>updateSubscriptions</code>, etc.). For a given user, in a short period of time, only use single-user calls or bulk update calls. Otherwise, results may be inconsistent.<br/><br/>When updating the <code>emailListIds</code> field, this endpoint does not generate subscribe or unsubscribe events. The same is true for updates to <code>unsubscribedChannelIds</code> and <code>unsubscribedMessageTypeIds</code> (but these can only be updated by this endpoint in projects where the opt-in message types feature is not enabled).<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Max size of request body</b>: 4MB<br/><b>Rate limit</b>: 5 requests/second, per project","operationId":"bulkUpdateUser","parameters":[{"description":"Users to update","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkUpdateUsersRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserBulkUpdateListResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Bulk update user data","tags":["users"]}},"/api/users/bulkUpdateSubscriptions":{"post":{"description":"<b>IMPORTANT</b>: This endpoint overwrites (does not merge) existing data for any non-<code>null</code> fields specified in the request.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"bulkUpdateSubscriptions","parameters":[{"description":"Bulk subscriptions to update","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BulkUpdateSubscriptionsRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/BulkUpdateSubscriptionsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Bulk update user subscriptions","tags":["users"]}},"/api/users/byUserId":{"get":{"description":"Get a user by userId (passed as a query parameter).<br/><br/>Returns the same data as <code>GET /api/users/byUserId/{userId}</code>. However, when making calls from Iterable's API Documentation page, this endpoint provides better support for special characters.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"getUserById","parameters":[{"in":"query","name":"userId","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user by userId (query parameter)","tags":["users"]}},"/api/users/byUserId/{userId}":{"delete":{"description":"Asynchronous. Deletes a specific user by <code>userId</code>. Does not prevent future data collection about the user. If multiple users share the same <code>userId</code>, they'll all be deleted. This endpoint can be used to delete users from email-based projects, userID-based projects, and hybrid projects.<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>userId</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"delete","parameters":[{"in":"path","name":"userId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete user by userId","tags":["users"]},"get":{"description":"Get a user by <code>userId</code> (passed as a path parameter).<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>userId</code> values that contain a <code>/</code> character. In such cases, you can use <code>GET /api/users/byUserId</code>, or you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"getUserById","parameters":[{"description":"userId","in":"path","name":"userId","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user by userId (path parameter)","tags":["users"]}},"/api/users/disableDevice":{"post":{"description":"Disables push notifications to a given device.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"disableDevice","parameters":[{"description":"Request to disable device","in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/DisableDeviceRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Disable pushes to a mobile device","tags":["users"]}},"/api/users/forget":{"post":{"description":"Deletes the specified user's data from the Iterable project and prevents future data collection about them. In email-based projects, you must forget users by <code>email</code>. In userID-based projects, you must forget users by <code>userId</code>. In hybrid projects, you can forget users by either <code>email</code> or <code>userId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.<br/><br/><b>Daily Cap</b>: 1000 requests per 24 hour period, per project.","operationId":"forget","parameters":[{"description":"user's email to be added to blacklist.","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UserRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Forget a user in compliance with GDPR","tags":["users"]}},"/api/users/forgotten":{"get":{"description":"Returns a hash for each <code>email</code> addresses currently forgotten by your project. Each forgotten <code>email</code> is lowercased, trimmed, and hashed using SHA-256. This endpoint only works for email-based and hybrid projects. For userID-based projects, it returns an error.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.","operationId":"exportProjectForgottenUsers","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetForgottenUserEmailsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get hashed forgotten users in compliance with GDPR","tags":["users"]}},"/api/users/forgottenUserIds":{"get":{"description":"Returns a hash for each <code>userId</code> currently forgotten by your project. Each forgotten <code>userId</code> is lowercased, trimmed, and hashed using SHA-256. This endpoint only works for userID-based and hybrid projects. For email-based projects, it returns an error.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.","operationId":"exportProjectForgottenUserIds","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetForgottenUserIdsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get hashed forgotten userIds in compliance with GDPR","tags":["users"]}},"/api/users/getByEmail":{"get":{"description":"Get a user by email address (passed as a query parameter).<br/><br/>Returns the same data as <code>GET /api/users/{email}</code>. However, when making calls from Iterable's API Documentation page, this endpoint provides better support for special characters.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"getUser","parameters":[{"in":"query","name":"email","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user by email (query parameter)","tags":["users"]}},"/api/users/getFields":{"get":{"description":"Get all user fields within a project.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.","operationId":"getUserFields","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetUserFieldsResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get all user fields","tags":["users"]}},"/api/users/getSentMessages":{"get":{"description":"Gets messages sent to a user, by <code>email</code> address or <code>userId</code>. Returns 10 by default, up to 1,000.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.","operationId":"getSentMessages","parameters":[{"description":"user's email, either email or userId must be specified","in":"query","name":"email","required":false,"type":"string"},{"description":"user's userId, either email or userId must be specified","in":"query","name":"userId","required":false,"type":"string"},{"default":10,"description":"max number of messages to return (default: 10, max limit: 1000)","format":"int32","in":"query","name":"limit","required":false,"type":"integer"},{"collectionFormat":"multi","description":"only include messages from these campaigns","in":"query","items":{"type":"object"},"name":"campaignIds","required":false,"type":"array"},{"description":"start date time (yyyy-MM-dd HH:mm:ss ZZ)","format":"date-time","in":"query","name":"startDateTime","required":false,"type":"string"},{"description":"end date time (yyyy-MM-dd HH:mm:ss ZZ)","format":"date-time","in":"query","name":"endDateTime","required":false,"type":"string"},{"default":false,"description":"exclude results coming from blast campaigns (ignored if campaignId is set)","in":"query","name":"excludeBlastCampaigns","required":false,"type":"boolean"},{"description":"only include messages of this type","enum":["Email","Push","InApp","SMS"],"in":"query","name":"messageMedium","required":false,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetSentMessagesResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get messages sent to a user","tags":["users"]}},"/api/users/merge":{"post":{"description":"Merge two users.<br/><br/>In the request body, specify <code>sourceEmail</code> or <code>sourceUserId</code> (but not both), and <code>destinationEmail</code> or <code>destinationUserId</code> (but not both).<br/><br/>Returns an error if source user does not exist in Iterable. Will update source user if destination user is not found.<br/><br/><b>Rate limit</b>: 50 requests/second, per API key.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"mergeUsers","parameters":[{"description":"Merge users. All profile data and events will be migrated.","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/MergeUsersRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"403":{"description":"Merging known user profiles is forbidden with specific API key type. Please use a server-side key."},"409":{"description":"Source or destination user forgotten"}},"summary":"Merge users","tags":["users"]}},"/api/users/registerBrowserToken":{"post":{"description":"Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Token limit</b>: Maximum of 500 browser tokens per user profile. Returns a 400 response code when this limit has been exceeded.","operationId":"registerBrowserToken","parameters":[{"description":"Request to register browser","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RegisterBrowserTokenRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Register a browser token for web push","tags":["users"]}},"/api/users/registerDeviceToken":{"post":{"description":"Registers a device token for push. This will add the data if it doesn't exist yet. It will also update data fields on the device. Data will be merged; missing fields are not deleted. Also, note that there is a soft limit on the number of unique fields a user can have (default is 1,000). Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Device limit</b>: Maximum of 500 devices per user profile. Endpoint returns a 400 response code when this limit has been exceeded.<br/><b>Rate limit</b>: 500 requests/second, per project.","operationId":"registerDeviceToken","parameters":[{"description":"Request to register device","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RegisterDeviceTokenRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Register a device token for push","tags":["users"]}},"/api/users/unforget":{"post":{"description":"Allows the Iterable project to resume collecting data about a previously forgotten user. Deleted data cannot be recovered. In email-based projects, you must unforget users by <code>email</code>. In userID-based projects, you must unforget users by <code>userId</code>. In hybrid projects and in projects that migrated from being email-based to being userID-based, you can unforget users by either <code>email</code> or <code>userId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.<br/><br/><b>Daily Cap</b>: 1000 requests per 24 hour period, per project.","operationId":"unforget","parameters":[{"description":"user's email to be removed from blacklist.","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UserRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Unforget a user in compliance with GDPR","tags":["users"]}},"/api/users/update":{"post":{"description":"Updates user data or adds a user if none exists. Data is merged - missing fields are not deleted. Please note there is a soft limit (default: 1,000) on the number of unique fields users can have. Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/>Processing time varies based on the current load for Iterable's back-end services. To avoid race conditions, provide a buffer of at least 60 seconds between this request and subsequent dependent requests, such as <code>POST /api/email/target.</code><br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 500 requests/second, per project.","operationId":"updateUser","parameters":[{"description":"user object","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiUserUpdateRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Contact is GDPR forgotten<br/>Email/userId conflict"}},"summary":"Update user data","tags":["users"]}},"/api/users/updateEmail":{"post":{"description":"Updates a user's <code>email</code>. <br/><br/>Use this endpoint with <a href=\"https://support.iterable.com/hc/articles/9216719179796\">email-based projects.</a> To update an <code>email</code> in a userID-based or hybrid project, use <a href=\"#users_updateUser\"><code>POST /api/users/update</code></a>. <br/><br/>In the request body, specify <code>currentEmail</code> or <code>currentUserId</code>, but not both. If you include both, <code>currentEmail</code> takes precedence.<br/><br/>Returns an error if the new email already exists in Iterable, or if the new email has been forgotten via a GDPR request.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"updateEmail","parameters":[{"description":"Update a user's email. All profile data and events will be migrated.","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpdateEmailRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Contact is GDPR forgotten<br/>Email/userId conflict"}},"summary":"Update user email","tags":["users"]}},"/api/users/updateSubscriptions":{"post":{"description":"Updates user subscriptions. <b>IMPORTANT</b>: This endpoint overwrites (does not merge) existing data for any non-<code>null</code> fields specified in the request.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"updateSubscriptions","parameters":[{"description":"Subscriptions to update","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UpdateSubscriptionsRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"},"409":{"description":"Email/userId conflict"}},"summary":"Update user subscriptions","tags":["users"]}},"/api/users/{email}":{"delete":{"description":"Asynchronous. Deletes a specific user by <code>email</code>. Does not prevent future data collection about the user. This endpoint can be used to delete users from email-based projects and hybrid projects, but not userID-based projects.<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>email</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"delete","parameters":[{"description":"email","in":"path","name":"email","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Delete a user by email","tags":["users"]},"get":{"description":"Get a user by email address (passed as a path parameter).<br/><br/>On Iterable's API Documentation page, this endpoint does not work for <code>email</code> values that contain a <code>/</code> character. In such cases, you can use <code>GET /api/users/getByEmail</code> instead, or you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href=\"https://support.iterable.com/hc/articles/360043464871#using-api-keys\">Using API keys</a>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.","operationId":"getUser","parameters":[{"description":"email","in":"path","name":"email","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Get a user by email (path parameter)","tags":["users"]}},"/api/verify/sms/begin":{"post":{"description":"Sends an SMS verification code to <code>phoneNumber</code>, using the specified <code>verificationProfileId</code>. Verification codes are sent from a pool of sender IDs reserved for this use, not from your sender IDs. Because of this, you don't need to worry about competing message priority or throughput.<br/><br/>Call this endpoint only for projects that use Iterable SMS to send SMS messages. If you use your own Twilio or Telnyx account, call their verification endpoints directly.<br/><br/>To use this endpoint, first ask your Iterable customer success manager to add SMS phone verification to your project. To learn more, read <a href=\"https://support.iterable.com/hc/articles/11559421803796\">SMS Phone Verification</a>.","operationId":"beginSmsVerification","parameters":[{"description":"The number to authenticate","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BeginSmsVerificationRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Begin SMS Verification","tags":["Verify"]}},"/api/verify/sms/check":{"post":{"description":"Checks whether the <code>code</code> included in the request body matches the most recent, non-expired, not-yet-verified SMS verification code sent to <code>phoneNumber</code> by the specified <code>verificationProfileId</code>.<br/><br/>If <code>code</code> is correct, the endpoint returns a <code>200</code> response with a JSON body that has a <code>params</code> object with <code>status</code> set to <code>verified</code>.<br/><br/>If <code>code</code> is incorrect, the endpoint returns a <code>200</code> response with a JSON body that has a <code>params</code> object with <code>status</code> set to <code>rejected</code>.<br/><br/>Call this endpoint only for projects that use Iterable SMS to send SMS messages. If you use your own Twilio or Telnyx account, call their verification endpoints directly.<br/><br/>To use this endpoint, first ask your Iterable customer success manager to add SMS phone verification to your project. To learn more, read <a href=\"https://support.iterable.com/hc/articles/11559421803796\">SMS Phone Verification</a>.","operationId":"checkSmsVerification","parameters":[{"description":"The number to authenticate","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CheckSmsVerificationRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Check SMS Verification Code","tags":["Verify"]}},"/api/webPush/cancel":{"post":{"description":"Cancels a web push notification to a specific user. Request must include a <code>campaignId</code> and an <code>email</code> or <code>userId</code>, or just a <code>scheduledMessageId</code>.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel a web push notification to a user","tags":["webPush"]}},"/api/webPush/target":{"post":{"description":"Sends a web push notification to a specific user. Request data fields override user profile data fields. A reference to the user profile is provided via the <code>profile</code> field, to help resolve field collisions.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email id","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetWebPushRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send web push notification to user","tags":["webPush"]}},"/api/webhooks":{"get":{"description":"Get webhooks for a project.","operationId":"getWebhooks","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/GetWebhooksResponse"}},"401":{"description":"Invalid API key"}},"summary":"Get webhooks","tags":["webhooks"]},"post":{"description":"","operationId":"updateWebhook","parameters":[{"description":"Only the specified fields will be updated","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApiWebhookModel"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ApiWebhookResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Update webhook","tags":["webhooks"]}},"/api/whatsApp/cancel":{"post":{"description":"Cancels the sending of a scheduled WhatsApp message to a specific user.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"cancel","parameters":[{"description":"Email and Campaign ID","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CancelScheduledMessageRequest - campaignId OR scheduledMessageId are required"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Cancel a scheduled WhatsApp message","tags":["WhatsApp"]}},"/api/whatsApp/target":{"post":{"description":"Send a WhatsApp message to a user. Request data fields will override user profile data fields. <br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"target","parameters":[{"description":"Recipient and email id","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TargetWhatsAppRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Send a WhatsApp message to a user","tags":["WhatsApp"]}},"/api/workflows/triggerWorkflow":{"post":{"description":"Triggers a journey (formerly known as workflow). Triggering with a list is asynchronous. If a list trigger is in progress, it must finish before the same list can be triggered again for a particular journey. The journey stats may take several minutes to update if other journeys are running. If the journey's start tile has a suppression list, that will apply.<br/><br/>Learn about <a href=\"https://support.iterable.com/hc/articles/29156459027348\">identifying users by <code>userId</code> and <code>email</code></a>.","operationId":"triggerWorkflow","parameters":[{"description":"Trigger workflow request","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TriggerWorkflowRequest"}}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/IterableApiResponse"}},"400":{"description":"Invalid parameters"},"401":{"description":"Invalid API key"}},"summary":"Trigger a journey (workflow)","tags":["workflows"]}}},"security":[{"api_key":[]}],"securityDefinitions":{"api_key":{"in":"header","name":"Api-Key","type":"apiKey"}},"swagger":"2.0","tags":[{"name":"Embedded Messaging"},{"name":"In-app"},{"name":"In-app-web"},{"name":"SMS"},{"name":"Verify"},{"name":"WhatsApp"},{"name":"campaigns"},{"name":"catalogs"},{"name":"channels"},{"name":"commerce"},{"name":"email"},{"name":"events"},{"name":"experiments"},{"name":"export"},{"name":"lists"},{"name":"messageTypes"},{"name":"metadata"},{"name":"push"},{"name":"snippets"},{"name":"subscriptions"},{"name":"templates"},{"name":"users"},{"name":"webPush"},{"name":"webhooks"},{"name":"workflows"}]}