---
swagger: "2.0"
info:
description: "The Constant Contact, Inc. V3 public API, for building integrations\
\ with Constant Contact, the leading small-business email marketing platform."
version: "3.0.149"
title: "AppConnect V3"
contact:
name: "webservices@constantcontact.com"
license:
name: "Private"
url: "https://www.constantcontact.com/legal/terms-of-use"
host: "api.cc.email"
basePath: "/v3"
tags:
- name: "Account Services"
description: "Use the account endpoints and methods to get account information."
- name: "Bulk Activities"
description: "Bulk activities endpoints are used to manage large numbers of contacts,\
\ lists, and tags."
- name: "Contacts"
description: "Endpoints and methods to get, create, delete, and update one or more\
\ contacts."
- name: "Contact Lists"
description: "Endpoints and methods to get, create, delete, and update one or more\
\ contact lists."
- name: "Contact Tags"
description: "Endpoints and methods to get, create, delete, and update one or more\
\ contact tags."
- name: "Contacts Reporting"
description: "Contact reporting endpoints are used to gather activity reports for\
\ campaigns sent to a contact."
- name: "Contacts Custom Fields"
description: "Endpoints and methods to get, create, delete, and update on one or\
\ more custom fields."
- name: "Email Campaigns"
description: "Use email campaign endpoints and methods to get, create, and update\
\ email campaigns."
- name: "Email Campaigns AB Tests"
description: "Use email campaigns A/B Test endpoints and methods to get, create,\
\ delete and update A/B tests."
- name: "Email Reporting"
description: "Use the email reporting endpoints and methods to get reporting data\
\ for email campaigns you sent to contacts."
- name: "Email Scheduling"
description: "Use email scheduling endpoints and methods to schedule an email campaign\
\ activity, unschedule an email campaign activity, and GET schedule information."
- name: "Events"
description: "Endpoints and methods used to create and manage events."
- name: "Segments"
description: "Use segments to target a subset of your contacts that are most likely\
\ to engage with a particular campaign."
- name: "Landing Pages Reporting"
description: "Use landing pages reporting endpoints and methods to get reporting\
\ data about how a contact interacted with a campaign activity."
- name: "SMS Reporting"
description: "Use SMS reporting endpoints and methods to get reporting data about\
\ SMS campaigns."
- name: "Technology Partners"
description: "Use partner endpoints to manage client Constant Contact accounts under\
\ your partner account."
- name: "Technology Partners Webhooks"
description: "Use partner webhooks to subscribe to billing event notifications from\
\ Constant Contact."
schemes:
- "https"
consumes:
- "application/json"
produces:
- "application/json"
paths:
/account/user/privileges:
get:
tags:
- "Account Services"
summary: "GET User Privileges"
description: "Use this method to return the user privileges associated with\
\ your access token as an array of objects. This method returns all user privileges,\
\ including privileges the V3 API does not currently use. Constant Contact\
\ requires specific user privileges to make requests using the V3 API. For\
\ more information, see the [User Privileges and Roles Overview](/api_guide/user_privileges.html)."
operationId: "getUserPrivileges"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/UserPrivilegesResource"
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. Your application is deactivated."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit: []
- oauth2_access_code: []
/account/summary:
get:
tags:
- "Account Services"
summary: "GET a Summary of Account Details"
description: "Get account related details for a Constant Contact user account.\
\ Use the `extra_fields` query parameter to include the `company_logo` and/or\
\ `physical_address` details in the response body. For more details, see [Get\
\ Account Summary Details](/api_guide/account_details_get.html)."
operationId: "getAccountById"
produces:
- "application/json"
parameters:
- name: "extra_fields"
in: "query"
description: "Use the `extra_fields` query parameter to include the `physical_address`\
\ and/or `company_logo` details in the response body. Use a comma separated\
\ list to include both (physical_address, company logo)."
required: false
type: "string"
format: "csv"
enum:
- "physical_address"
- "company_logo"
x-example: "company_logo"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/Customer"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_read"
- oauth2_access_code:
- "account_read"
x-authorization-privileges:
- "account:read"
x-sdk-methodName: "getAccountDetails"
put:
tags:
- "Account Services"
summary: "PUT (update) Account Details"
description: "Use this method to update account details for a Constant Contact\
\ account, such as the email address or phone number. This PUT method provides\
\ a partial update where only valid properties that you include in the request\
\ body are updated and excluded properties are not overwritten. For more details,\
\ see [Put (update) Account Summary Details](/api_guide/account_details_put.html)."
operationId: "putCustomerById"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "In the request body, specify changes to account details by including\
\ and modifying all or select `CustomerPut` properties. Changes to read-only\
\ fields (`encoded_account_id`) are ignored."
required: true
schema:
$ref: "#/definitions/CustomerPut"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/CustomerPut"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_update"
- oauth2_access_code:
- "account_update"
x-authorization-privileges:
- "account:update"
x-sdk-methodName: "updateAccount"
/account/summary/physical_address:
get:
tags:
- "Account Services"
summary: "GET the Physical Address for the Account"
description: "Use this method to get the address where the account's organization\
\ physically resides. The physical address is required to send emails and\
\ displays on the footer of every email that is sent from the account."
operationId: "getPhysicalAddress"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/AccountPhysicalAddress"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_read"
- oauth2_access_code:
- "account_read"
x-authorization-privileges:
- "account:read"
x-ctctmcp-allow: true
x-sdk-methodName: "getAccountPhysicalAddress"
post:
tags:
- "Account Services"
summary: "POST the Physical Address for the Account"
description: "Use this method to add the address where the account's organization\
\ physically resides. The physical address is required to send emails and\
\ displays on the footer of every email that is sent from the account. The\
\ country (country_code) where the account organization resides\
\ determines whether you use the state_code to specify United\
\ States (US) and Canada (CA) addresses, or use\
\ the state_name to specify all other countries."
operationId: "addPhysicalAddress"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Include all `AccountPhysicalAddress` properties required for\
\ the specified `country_code`. If a required property is not included or\
\ incorrectly formatted, a 400 error message is returned. If the address\
\ already exists, a 409 error message is returned."
required: true
schema:
$ref: "#/definitions/AccountPhysicalAddress"
responses:
"201":
description: "Request successful"
schema:
$ref: "#/definitions/AccountPhysicalAddress"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"409":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_update"
- oauth2_access_code:
- "account_update"
x-authorization-privileges:
- "account:update"
x-ctctmcp-allow: true
put:
tags:
- "Account Services"
summary: "PUT (update) the Physical Address for an Account"
description: "Use this method to update the organization's physical address\
\ for the Constant Contact user account. The physical address is required\
\ to send emails and displays on the footer of every email that is sent from\
\ the account. To get the current physical address, make a GET call to `/account/summary/physical_address`.\
\ The country (country_code) where the account organization resides\
\ determines whether you use the state_code to specify United\
\ States (US) and Canada (CA) addresses, or use\
\ the state_name to specify all other countries. For more details,\
\ see [Put (update) the Physical Address for the Account](/api_guide/account_address_put.html).\
\ You must have the role of Account Owner assigned to update account level\
\ details. "
operationId: "putPhysicalAddress"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Include all `AccountPhysicalAddress` properties required for\
\ the specified `country_code` and then update only those properties that\
\ you want to change. Excluding a non-read only field from the request body\
\ removes it from the physical address."
required: true
schema:
$ref: "#/definitions/AccountPhysicalAddress"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/AccountPhysicalAddress"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_update"
- oauth2_access_code:
- "account_update"
x-authorization-privileges:
- "account:update"
x-ctctmcp-allow: true
x-sdk-methodName: "updateAccountPhysicalAddress"
/account/emails:
get:
tags:
- "Account Services"
summary: "GET a Collection of Account Email Addresses"
description: "Use this method to return a collection of email addresses for\
\ the account associated with your access token. When you Create an Email Campaign, you must use an account\
\ email address with a `CONFIRMED` status in the email campaign `from_email`\
\ and `reply_to_email` headers.\n \n\nUse the query parameters to filter\
\ results. You can filter using `confirm_status`, `role_code`, or `email_address`.\
\ For example, searching with `confirm_status=CONFIRMED` returns all confirmed\
\ email addresses in the account. This method only supports one query parameter\
\ at a time.\n"
operationId: "retrieveEmailAddresses"
produces:
- "application/json"
parameters:
- name: "confirm_status"
in: "query"
description: "Use the `confirm_status` query parameter to search for account\
\ emails using the email status. Possible values are `CONFIRMED` or `UNCONFIRMED`.\
\ You can also abbreviate the values of this query parameter and use `C`\
\ or `U`.\n"
required: false
type: "string"
enum:
- "CONFIRMED"
- "C"
- "UNCONFIRMED"
- "U"
- name: "role_code"
in: "query"
description: "Use the `role_code` query parameter to search for account emails\
\ that have a specific role. Each each email address in an account can have\
\ multiple roles or no role. Possible values are `CONTACT`, `BILLING`, `REPLY_TO`,\
\ `JOURNALING`, or `OTHER`. You can also abbreviate the value of this query\
\ parameter and use `C`,`B`,`R`,`J`, or `O`."
required: false
type: "string"
enum:
- "CONTACT"
- "C"
- "BILLING"
- "B"
- "JOURNALING"
- "J"
- "REPLY_TO"
- "R"
- "OTHER"
- "O"
- name: "email_address"
in: "query"
description: "Use the `email_address` query parameter to search for a specific\
\ account email address."
required: false
type: "string"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/AccountEmails"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_read"
- oauth2_access_code:
- "account_read"
x-authorization-privileges:
- "account:read"
x-sdk-methodName: "getAllAccountEmailAddresses"
x-ctctmcp-allow: true
post:
tags:
- "Account Services"
summary: "POST Add an Account Email Address"
description: "Use this method to add a new email address to a Constant Contact\
\ account. If the email address you are adding already exists in the account\
\ the API will return a 409 conflict error. \n\nWhen you add a new email address\
\ to an account, Constant Contact automatically sends an email to that address\
\ with a link to confirm it. After a user clicks that link, the account email\
\ status changes from `UNCONFIRMED` to `CONFIRMED`. You can use confirmed\
\ account email addresses in the email campaign `from_email` and `reply_to_email`\
\ headers. For more use case information, see [Add an Account Email Address](/api_guide/account_post_emails.html)\
\ in the API guide. \n"
operationId: "addAccountEmailAddress"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "A JSON request payload containing the new email address you\
\ want to add to the Constant Contact account."
required: true
schema:
$ref: "#/definitions/AccountEmailInput"
responses:
"201":
description: "Request successful."
schema:
$ref: "#/definitions/AccountEmailCreateResponse"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "account_update"
- oauth2_access_code:
- "account_update"
x-authorization-privileges:
- "account:update"
x-ctctmcp-allow: true
/activities:
get:
tags:
- "Bulk Activities"
summary: "GET Activity Status Collection"
description: "This endpoint returns a collection of activities. Use the state\
\ query parameter to include only activities with a specific status (processing,\
\ completed, cancelled, failed, or time_out). Use the limit query parameter\
\ to define the number of activities returned per page. Learn [more](/api_guide/activity_status.html)."
operationId: "getActivityStatusCollection"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "limit"
in: "query"
description: "Specifies the number of results displayed per page of output,\
\ from 1 - 500, default = 50."
required: false
type: "integer"
default: 50
maximum: 500
minimum: 1
x-example: 25
- name: "state"
in: "query"
description: "Use this parameter to filter the response to include only activities\
\ in one of the following states: cancelled, completed, failed, processing,\
\ or timed_out."
required: false
type: "string"
enum:
- "processing"
- "completed"
- "cancelled"
- "failed"
- "timed_out"
x-example: "processing"
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/Activities"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "getAllActivities"
/activities/{activity_id}:
get:
tags:
- "Bulk Activities"
summary: "GET an Activity Status"
description: "This endpoint returns an activity status report."
operationId: "getActivity"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "activity_id"
in: "path"
description: "The unique ID of the activity to GET"
required: true
type: "string"
x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a"
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/Activity"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "Resource not found for the activity_id provided"
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "getActivityById"
/activities/contact_exports:
post:
tags:
- "Bulk Activities"
summary: "Export Contacts to a File"
description: "Use this method to create an activity that exports contacts and\
\ contact details to a CSV file. You can choose to export all contacts in\
\ your account (default) or you can use parameters to filter on which contacts\
\ to export. After Constant Contact finishes processing the activity, use\
\ the `results` link in the response body to retrieve the CSV file."
operationId: "postContactsExport"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "A JSON payload that specifies the contacts (rows in the CSV\
\ file) and contact properties (columns in the CSV file) you want to export."
required: true
schema:
$ref: "#/definitions/ContactsExport"
responses:
"201":
description: "Request successful, queued for processing."
schema:
$ref: "#/definitions/ActivityExportStatus"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createExportActivity"
/contact_exports/{file_export_id}:
get:
tags:
- "Bulk Activities"
summary: "Retrieve Exported Contacts File"
description: "Use this endpoint to retrieve (GET) a CSV file containing exported\
\ contacts by providing the `activity_id` of a completed CSV export activity.\
\ \n"
operationId: "getContactsExport"
consumes:
- "application/json"
produces:
- "text/csv"
parameters:
- name: "file_export_id"
in: "path"
description: "The unique ID of the exported file provided in the results:\
\ section of the export contacts activity response."
required: true
type: "string"
x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a"
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/ActivityGetExport"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "getCSVExportFile"
/activities/contact_delete:
post:
tags:
- "Bulk Activities"
summary: "Delete Contacts in Bulk"
description: "Use this endpoint to bulk delete contacts in an account. Contacts\
\ to delete are specified by contact_id (up to 500), or by list_id (up to\
\ 50 lists); all contacts that are members of the list_ids are deleted. Deleted\
\ contacts won’t receive email from you, and they don’t count as active contacts.\
\ Unlike unsubscribed contacts, deleted contacts can be added back to an account.\
\ [Learn how to revive deleted contacts](/api_guide/contacts_delete.html#revive)."
operationId: "postContactDelete"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The request body contains an array of contact_ids or\
\ list_ids. All contact_ids provided are deleted, or all members of each\
\ specified list_id are deleted."
required: true
schema:
$ref: "#/definitions/ContactDelete"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityDeleteStatus"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createDeleteActivity"
/activities/contacts_file_import:
post:
tags:
- "Bulk Activities"
summary: "Import Contacts using a CSV File"
description: "This multipart method creates an asynchronous background job that\
\ adds or updates contacts by importing a CSV file containing contact information.\
\ Do not use a Content-Type header value with this method.\n\nImporting a\
\ new contact email address automatically sets the contact's `permission_to_send`\
\ property as `implicit` and the `opt_in_source` property as `Account`. Importing\
\ an existing contact only updates the contact properties you include in the\
\ request.\nImporting contacts with `sms_number`s requires using the `sms_permission_to_send`\
\ parameter to specify permissions for all contacts being imported. Set to\
\ `explicit` to specify that all contacts either provided explicit permission.\
\ Set to `not_set` if permission was not provided. If `explicit`, you must\
\ also include the `sms_consent_date` as a column header to include the date\
\ the contact consented to receiving SMS messages.\nContacts must have either\
\ an email address or an SMS number defined.\n \nThe CSV file has a maximum\
\ of 40,000 lines including the header row (39,999 contacts) and a maximum\
\ file size of 4 megabytes (MB). Lines above the 40,000 line maximum are\
\ not processed. If the request body exceeds 4 MB, only the contacts contained\
\ in the first 4 MB are imported and the remaining data is dropped."
operationId: "contactsCSVImport"
consumes:
- "multipart/form-data"
produces:
- "application/json"
parameters:
- name: "file"
in: "formData"
description: "The CSV file you are importing must include either `email`\
\ or `sms_number` as a column heading. Other properties you can include\
\ using column headings are: `first_name`. `last_name`, `phone`, `job_title`,\
\ `anniversary`, `birthday_day`, `birthday_month`, `company_name`, `street`,\
\ `street2`, `city`, `state`, `zip`, `country`, and `sms_consent_date`.\
\ \n\nIf adding an `sms_number`, you must also include the `sms_permission_to_send`\
\ parameter and set it to either `not_set` or `explicit`. If `explicit`,\
\ requires including `sms_consent_date` as a column header to specify the\
\ date the contact consented to receiving SMS messages. \n\nYou can also\
\ use custom fields as column headings. Enter the custom field name prefixed\
\ with `cf:` as the column heading. For example, use `cf:first_name` as\
\ the header name if you have a custom field named \"first_name\". The custom\
\ field must already exist in the Constant Contact account you are using.\
\ Depending on the custom field data type, you can enter dates or strings\
\ as the value of the custom field. Each contact can contain up to 25 different\
\ custom fields."
required: true
type: "file"
x-example: "new_contacts_import.csv"
- name: "list_ids"
in: "formData"
description: "Specify which contact lists you are adding all imported contacts\
\ to as an array of up to 50 contact `list_id` values."
required: true
type: "string"
items:
type: "string"
maxItems: 50
format: "csv"
x-example: "8c077f20-1586-11e4-bcb3-00163e56be7c"
- name: "sms_permission_to_send"
in: "formData"
description: "If importing contact `sms_number`s, use this parameter to specify\
\ how SMS consent was provided. If all contacts in the file provided their\
\ consent, set to `explicit` and include each contact's `sms_consent_date`.\
\ If all contacts in the file have not yet provided consent, set to `not_set`\
\ (`sms_consent_date` is not required). You cannot message a contact that\
\ does not have a sms consent date set."
required: false
type: "string"
enum:
- "not_set"
- "explicit"
x-example: "not_set"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityImport"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "1. This endpoint requires that Content-Type be unspecified\
\ 2. Wrong file format, upload file must be of type .csv"
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createCSVImportActivity"
/activities/contacts_json_import:
post:
tags:
- "Bulk Activities"
summary: "Import Contacts using a JSON Payload"
description: "Use this method to create an asynchronous background job that\
\ adds new contacts or updates existing contacts by importing a JSON payload.\
\ This method requires a request body that contains the contact data you are\
\ importing and the contact lists to which you want to add the imported contacts.\
\ A contact's data must include an `email` address and/or `sms_number`. The\
\ `sms_number` must be a US phone number to associate with the contact's SMS-enabled\
\ phone. Valid formats are 1231231234 or 123-123-1234\
\ (the country code must be valid).\n\nImporting a new contact using this\
\ method automatically sets the contact's email `permission_to_send` property\
\ to `implicit` and the `opt_in_source` property as `Account`. Importing an\
\ existing contact only updates the contact properties you include in the\
\ request. For each contact, you can import up to three addresses and three\
\ phone numbers. International phone numbers are currently not supported.\
\ \n\nTo import custom fields, prefix the custom field name with `cf:`\
\ and add it as a contact property. For example, use the property name `cf:first_name`\
\ if you have a custom field named `first_name`. The custom field must already\
\ exist in the Constant Contact account you are using. Each contact can contain\
\ up to 25 custom fields.\n\nTo include a contact's `sms_number`, if the contact\
\ provided explicit permission to receive SMS messages, you must set the `sms_permission_to_send`\
\ property to `explicit` and specify the date of consent using the `sms_consent_date`\
\ column header. If explicit permission was not provided, set `sms_permission_to_send`\
\ to `not_set` (the `sms_consent_date` is not required). If the `sms_consent_date`\
\ is not set, SMS messages cannot be sent to contacts and `sms_permission_to_send`\
\ defaults to `not_set`. Valid value formats for `sms_consent_date` include\
\ MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD, YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY,\
\ or M-DD-YYYY. \n\nThe request body payload has a maximum size of 4 megabytes\
\ (MB). If the request body exceeds 4 MB, this method only imports the first\
\ 4 MB and drops the remaining data. Use the activity URL to check the status\
\ of the import activity request."
operationId: "bulkImportContactsJSON"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The JSON request payload that contains the contact data and\
\ contact lists for the import."
required: true
schema:
$ref: "#/definitions/ContactsJsonImport"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityImport"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-ctctmcp-allow: true
x-sdk-methodName: "createImportJSONActivity"
/activities/remove_list_memberships:
post:
tags:
- "Bulk Activities"
summary: "Remove Contacts from Lists"
description: "Use this method to create an activity that removes contacts from\
\ one or more contact lists. Use the properties in the `source` object to\
\ remove specific contacts from your lists. Use the `list_ids` array to specify\
\ the target lists from which contacts are removed. Optionally, if the source\
\ is `all_active_contacts` (billable) or `list_ids`, use the `exclude` object\
\ to exclude specific contacts from being removed from the destination lists."
operationId: "postListRemoveContact"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The JSON payload used to create the Remove Contacts from Lists'\
\ activity"
required: true
schema:
$ref: "#/definitions/ListActivityRemoveContacts"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityListsMembership"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createListRemoveActivity"
/activities/add_list_memberships:
post:
tags:
- "Bulk Activities"
summary: "Add Contacts to Lists"
description: "Use this method to create an activity that adds contacts to one\
\ or more lists. Each contact can be a member of up to 50 lists. Use the properties\
\ in the `source` object to specify the contacts you want to add to lists.\
\ Use the `list_ids` array to specify which lists you want to add your source\
\ contacts to."
operationId: "postListAddContact"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The JSON payload used to create the 'add contacts to lists'\
\ activity"
required: true
schema:
$ref: "#/definitions/ListActivityAddContacts"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityListsMembership"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createListAddActivity"
/activities/list_delete:
post:
tags:
- "Bulk Activities"
summary: "Delete Contact Lists"
description: "Use this endpoint to delete up to 100 contact lists in an account. "
operationId: "postListDelete"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "An array of `list_id`'s to delete."
required: true
schema:
$ref: "#/definitions/ListIdList100"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityDeleteListsResponse"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createListDeleteActivity"
/activities/contacts_taggings_remove:
post:
tags:
- "Bulk Activities"
summary: "Remove Tags from Contacts"
description: "Use this method to create an asynchronous activity that removes\
\ one or more tags from all contacts meeting your contact filtering criteria.\
\ Filtering criteria must include the `source` type used to identify contacts\
\ from which the specified tags (`tag_id`) are removed.\nSource types are\
\ mutually exclusive. If the specified source is either `all_active_contacts`\
\ or `list_ids`, you can optionally choose to `exclude` specified contacts\
\ by `contact_id`. Use the activity link in the results to check the status\
\ of your request.\"\nFor more use case information, see \"[Remove Tags from\
\ Contacts](/api_guide/remove_tagging_activity.html)"
operationId: "postTagRemoveContact"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The JSON payload used to create an asynchronous activity that\
\ removes tags from contacts meeting your specified contact filtering criteria."
required: true
schema:
$ref: "#/definitions/TagAddRemoveContacts"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityTagging"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createTagRemoveActivity"
/activities/contacts_taggings_add:
post:
tags:
- "Bulk Activities"
summary: "Add Tags to Contacts"
description: "Use this method to create an asynchronous activity that adds one\
\ or more tags to all contacts meeting your contact filtering criteria. Use\
\ the `source` type to identify contacts from which the specified tags (`tag_id`)\
\ are added.\nSource criteria are mutually exclusive. If the source is `all_active_contacts`\
\ or `list_ids`, you can optionally choose to `exclude` contacts by `contact_id`.\
\ Use the activity link in the results to check the status of your request.\n\
For more use case information, see \"[Add Tags to Contacts](/api_guide/add_tagging_activity.html)"
operationId: "postTagAddContact"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The JSON payload used to create an asynchronous activity that\
\ adds tags to contacts that meet your specified contact filtering criteria."
required: true
schema:
$ref: "#/definitions/TagAddRemoveContacts"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityTagging"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createTagAddContactActivity"
/activities/contacts_tags_delete:
post:
tags:
- "Bulk Activities"
summary: "Delete Tags"
description: "Use this method to create an asynchronous activity that deletes\
\ up to 500 tags. Deleted tags are automatically removed from tagged contacts.\
\ Use the `tag_ids` array of string values in the request body to specify\
\ which tags to delete."
operationId: "postTagDelete"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "An array of string values (`tag_id`s) to delete."
required: true
schema:
$ref: "#/definitions/TagIdList500Limit"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityTagging"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
x-sdk-methodName: "createTagDeleteActivity"
/activities/custom_fields_delete:
post:
tags:
- "Bulk Activities"
summary: "Delete Custom Fields"
description: "Use this endpoint to delete up to 100 custom fields for an account. "
operationId: "postCustomFieldDelete"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "An array of `custom_field_id`'s to delete."
required: true
schema:
$ref: "#/definitions/CustomFieldId100"
responses:
"201":
description: "Request successful. Activity queued for processing."
schema:
$ref: "#/definitions/ActivityDeleteCustomFields"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"429":
description: "Too many requests. You exceeded 1,000 queued activities for\
\ this user account."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:write"
/events:
get:
tags:
- "Events"
summary: "GET a collection of events."
description: "Retrieve a collection of events with event details."
operationId: "findEvents"
produces:
- "application/json"
parameters:
- name: "event_status"
in: "query"
description: "Use to return only events that meet the specified status. Acceptable\
\ values include `ACTIVE`,`DRAFT`, `COMPLETE`, `DELETED`,`CANCELLED`, and\
\ `ERROR`."
required: false
type: "string"
x-example: "DRAFT"
- name: "search_text"
in: "query"
description: "Use to return only events that include the specified text."
required: false
type: "string"
x-example: "reunion"
- name: "sort_by"
in: "query"
description: "Use to sort resulting events by one of the following properties:\
\ `name`, `start_time`, `end_time`, `created_time`, or `updated_time`."
required: false
type: "string"
x-example: "created_time"
- name: "sort_order"
in: "query"
description: "Sort order for the `sort_by parameter`. Accepted values include\
\ `ASC` (ascending) or `DESC` (descending). Defaults to `ASC` if `sort_by`\
\ is provided."
required: false
type: "string"
x-example: "DESC"
- name: "limit"
in: "query"
description: "Limit the number of results to return per page. Default and\
\ maximum is `100`."
required: false
type: "string"
x-example: "5"
- name: "prev"
in: "query"
description: "Cursor for retrieving the previous page of results. This value\
\ is obtained from the `prev_cursor` field in a previous response."
required: false
type: "string"
x-example: "7zDEe3DhD5gUiwRFsvWKKZlZO1j6-YihH2hyVWD8GaW7JnzXbHFP8Tou212KoU20mOjvM6pdWwycDWC3X-Hb_xY-RK1eBwYp_pc4X2CvLxo."
- name: "next"
in: "query"
description: "Cursor for retrieving the next page of results. This value is\
\ obtained from the `next_cursor` field in a previous response."
required: false
type: "string"
x-example: "7zDEe3DhD5gUiwRFsvWKKZlZO1j6-YihH2hyVWD8GaW7JnzXbHFP8Tou212KoU20mOjvM6pdWwycDWC3X-Hb_xY-RK1eBwYp_pc4X2CvLxo"
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/PaginationDtoEventListingDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:read"
/events/default:
post:
tags:
- "Events"
summary: "POST (create) a new event."
description: "Creates a new event with default settings, registration form,\
\ and landing page. The event will be created in DRAFT status."
operationId: "addDefaultEvent"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "name"
in: "query"
description: "Name for the new event. If not provided, a default name will\
\ be generated."
required: false
type: "string"
x-example: "My Event"
- name: "start_time"
in: "query"
description: "Event start time in ISO 8601 format. If not provided, defaults\
\ to a future date."
required: false
type: "string"
x-example: "2024-01-15T10:00:00Z"
- name: "end_time"
in: "query"
description: "Event end time in ISO 8601 format. If not provided, defaults\
\ to one hour after start time."
required: false
type: "string"
x-example: "2024-01-15T18:00:00Z"
- name: "placeholder_campaign_id"
in: "query"
description: "Placeholder campaign ID for the event."
required: false
type: "string"
x-example: "campaign-123"
responses:
"201":
description: "Event created successfully"
schema:
$ref: "#/definitions/EventDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
x-sdk-methodName: "createEvent"
/events/{event_id}:
get:
tags:
- "Events"
summary: "GET details for a single event."
description: "Specify the `event_id` path parameter to retrieve the event's\
\ details."
operationId: "getEvent_2"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "1697732a-8664-4675-8415-c4aabaa17dae"
- name: "include"
in: "query"
description: "Use to include (`true`) or exclude (`false`) event setting properties\
\ in the results."
required: false
type: "boolean"
x-example: true
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/EventDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:read"
patch:
tags:
- "Events"
summary: "PATCH (update) an event."
description: "Partially updates an event with the provided fields. Only the\
\ specified fields will be updated. This endpoint only works for events in\
\ DRAFT or ACTIVE status. Events in COMPLETE, CANCELED, or DELETED status\
\ cannot be updated."
operationId: "patchEvent"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event to update."
required: true
type: "string"
x-example: "1697732a-8664-4675-8415-c4aabaa17dae"
- in: "body"
name: "body"
description: "A JSON request body containing the event fields to update."
required: true
schema:
$ref: "#/definitions/EventDto"
responses:
"204":
description: "Event updated successfully"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
x-sdk-methodName: "updateEvent"
/events/{event_id}/copy:
post:
tags:
- "Events"
summary: "POST (copy) an existing event."
description: "Creates a deep copy of an existing event with all its settings,\
\ registration forms, and landing pages. The copied event is created in DRAFT\
\ status. Events in DRAFT, ACTIVE, COMPLETE, or CANCELED status can be copied.\
\ DELETED events cannot be copied."
operationId: "copyEvent"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID of the event to copy."
required: true
type: "string"
x-example: "1697732a-8664-4675-8415-c4aabaa17dae"
- in: "body"
name: "body"
description: "A JSON request body containing the copy options."
required: true
schema:
$ref: "#/definitions/EventCopyRequestDto"
responses:
"200":
description: "Event copied successfully"
schema:
$ref: "#/definitions/EventDto"
"207":
description: "Event copied with some failures"
schema:
$ref: "#/definitions/EventDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
x-sdk-methodName: "copyEvent"
/events/{event_id}/check_in/tickets:
post:
tags:
- "Events"
summary: "Check in event tickets."
description: "Use this endpoint to mark one or more tickets as checked in. The\
\ event must be in `ACTIVE` or `COMPLETE` status. Tickets with `CANCELLED`\
\ status cannot be checked in (returns HTTP 400)."
operationId: "checkInTickets"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "07216444-4e3b-41ea-a3b8-5a418fce41f4"
- in: "body"
name: "body"
description: "Set of order ticket keys to mark as checked in."
required: true
schema:
$ref: "#/definitions/OrderTicketKeysRequestDto"
responses:
"204":
description: "Successfully checked in order tickets."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
/events/{event_id}/undo_check_in/tickets:
post:
tags:
- "Events"
summary: "Undo event ticket check-in."
description: "Use this endpoint to undo check-in for one or more tickets, marking\
\ them as not checked in. The event must be in `ACTIVE` or `COMPLETE` status."
operationId: "undoCheckInTickets"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "07216444-4e3b-41ea-a3b8-5a418fce41f4"
- in: "body"
name: "body"
description: "Set of order ticket keys to mark as not checked in."
required: true
schema:
$ref: "#/definitions/OrderTicketKeysRequestDto"
responses:
"204":
description: "Successfully undone check-in for order tickets."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
/events/{event_id}/tracks/{track_id}/registrations/{registration_id}:
get:
tags:
- "Events"
summary: "Get registration details for an event."
description: "Use the `event_id`, `registration_id`, and `track_id` path parameters\
\ to get registration details."
operationId: "getRegistrationInfo"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "1697732a-8664-4675-8415-c4aabaa17dae"
- name: "track_id"
in: "path"
description: "The track key that uniquely identifies the event track."
required: true
type: "string"
x-example: "s8zabc"
- name: "registration_id"
in: "path"
description: "The ID that uniquely identifies the registration."
required: true
type: "string"
x-example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
responses:
"200":
description: "Request Successful"
schema:
$ref: "#/definitions/DetailedRegistrationDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:read"
/events/{event_id}/tracks/{track_id}/registrations:
get:
tags:
- "Events"
summary: "Get a list of registrations for an event."
description: "Use the `event_id` and `track_id` path parameters to get a list\
\ of registrations for an event. Use optional query parameters to limit the\
\ number of results returned per page, the sort order, or to filter results\
\ by specific criteria; such as registration `status`."
operationId: "findRegistrationsUsingGET"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "1697732a-8664-4675-8415-c4aabaa17dae"
- name: "track_id"
in: "path"
description: "The track ID that uniquely identifies the event track."
required: true
type: "string"
x-example: "s8zabc"
- name: "registration_status"
in: "query"
description: "Filter registration results by status."
required: false
type: "string"
enum:
- "PENDING"
- "REGISTERED"
- "CANCELED"
- "EXPIRED"
- "IN_PROGRESS, FAILED"
x-example: "REGISTERED"
- name: "payment_status"
in: "query"
description: "Filter registration results by payment status."
required: false
type: "string"
enum:
- "PENDING"
- "PAID"
- "REFUNDED"
- "CANCELLED"
- "FAILED"
- "CHARGED_BACK"
x-example: "PAID"
- name: "search_text"
in: "query"
description: "Filter registration results by first name, last name, or email\
\ address."
required: false
type: "string"
x-example: "john.doe@example.com"
- name: "sort_by"
in: "query"
description: "Specify the field to use to sort the results."
required: false
type: "string"
enum:
- "first_name"
- "last_name"
- "email_address"
- "registration_status"
- "payment_status"
- "tickets"
- "total"
x-example: "email_address"
- name: "sort_order"
in: "query"
description: "Use to specify how you want the results sorted."
required: false
type: "string"
enum:
- "ASC"
- "DESC"
x-example: "ASC"
- name: "page_size"
in: "query"
description: "Alternative to the limit parameter to limit the\
\ number of results returned per page. If specifying both the limit\
\ and page_size query parameters, they must be the same value."
required: false
type: "string"
x-example: "50"
- name: "limit"
in: "query"
description: "Limit the number of results returned per page. If specifying\
\ both the limit and page_size query parameters,\
\ they must be the same value."
required: false
type: "string"
x-example: "50"
- name: "prev"
in: "query"
description: "Cursor for pagination used to get the previous page of results\
\ (mutually exclusive with next)."
required: false
type: "string"
x-example: "bSzsyWkkq95R44vIFEpY62gr8_xSeRXsEQkhnhltPgiT"
- name: "next"
in: "query"
description: "Cursor for pagination used to get the next page of results (mutually\
\ exclusive with prev)."
required: false
type: "string"
x-example: "cTk9xLmmr06S55wJGfQ73hs9_yTfSYtFRlimimQhjUj"
responses:
"200":
description: "Successfully retrieved registrations"
schema:
$ref: "#/definitions/PaginatedRegistrations"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:read"
put:
tags:
- "Events"
summary: "Update status for event registrations."
description: "Use this endpoint to update the registration status for one or\
\ more registrations within an event track."
operationId: "updateRegistrationStatusUsingPUT"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "07216444-4e3b-41ea-a3b8-5a418fce41f4"
- name: "track_id"
in: "path"
description: "The track key that uniquely identifies the event track."
required: true
type: "string"
x-example: "gqz1gb"
- name: "increase_count"
in: "query"
description: "Override count flag."
required: false
type: "boolean"
- name: "increase_item_count"
in: "query"
description: "Override item count flag."
required: false
type: "boolean"
- name: "return_items_to_inventory"
in: "query"
description: "Return items to inventory flag. Defaults to `true`."
required: false
type: "boolean"
- in: "body"
name: "body"
description: "Registration status update request data."
required: true
schema:
$ref: "#/definitions/RegistrationStatusUpdateRequestDto"
responses:
"200":
description: "Successfully updated registration status."
"207":
description: "Some registrations failed to update."
schema:
$ref: "#/definitions/RegistrationStatusUpdateResponseDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
/events/{event_id}/tracks/{track_id}/registrations/payment_status:
put:
tags:
- "Events"
summary: "Update payment status for event registrations."
description: "Use this endpoint to update the payment status for one or more\
\ registrations. This endpoint only processes registrations with a payment\
\ method (PAYPAL, WEPAY, STRIPE, DOOR, or CHECK). Free registrations without\
\ a payment method are silently excluded."
operationId: "updateRegistrationPaymentStatusUsingPUT"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "event_id"
in: "path"
description: "The ID that uniquely identifies the event."
required: true
type: "string"
x-example: "c5da3665-88f9-4b15-82bc-cd6593c32537"
- name: "track_id"
in: "path"
description: "The track key that uniquely identifies the event track."
required: true
type: "string"
x-example: "2unzqq"
- in: "body"
name: "body"
description: "Payment status update request data."
required: true
schema:
$ref: "#/definitions/PaymentStatusUpdateRequestDto"
responses:
"200":
description: "Successfully updated payment status."
"207":
description: "Some registrations failed to update."
schema:
$ref: "#/definitions/RegistrationStatusUpdateResponseDto"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "campaign:write"
/segments:
get:
tags:
- "Segments"
summary: "GET all Segments"
description: "Use this method to get a list of all segments associated with\
\ the account. You can sort segment results and limit the number of segments\
\ that display per page. Deleted segments are excluded from the results. For\
\ more use case information, see [Get All Segments](/api_guide/segment_get_all.html)\
\ in the API guide."
operationId: "getAccountSegments"
produces:
- "application/json"
parameters:
- name: "limit"
in: "query"
description: "The number of segments to return on a page."
required: false
type: "string"
default: "1000"
x-example: "1000"
- name: "sort_by"
in: "query"
description: "Specify the segment sort order to use. Sort by name (`sort_by=name`)\
\ in ascending order, or sort by date (`sort_by=date`) in descending order\
\ with the most recently updated segments listed first."
required: false
type: "string"
default: "date"
x-example: "sort_by=date"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/SegmentsDTO"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"429":
description: "Too many requests. You exceeded the request rate limit."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:read"
x-sdk-methodName: "getAllSegments"
post:
tags:
- "Segments"
summary: "POST (create) a Segment"
description: "Use this method to create a new segment. You create segments to\
\ target a subset of your contacts that meet your specific criteria for a\
\ marketing campaign. The segment `name` must be unique. The `segment_criteria`\
\ requires single-string escaped JSON. Constant Contact uses the contact data\
\ that you specify in the `segment_criteria` to evaluate and identify the\
\ contacts you want to target. Contact data can be grouped from different\
\ data sources, including:\n\n - **`tracking`**: Supports **or** and **and**\
\ groups.\n\n\n - **`contact`**: Supports **or** and **and** groups.\n\n\
\n - **`list_membership`**: Supports **or** groups.\n\n - **`tags`**:\
\ Supports **or** groups.\n\nIf you do not specify `list_membership` as criteria,\
\ Constant Contact evaluates all contacts in your account. To avoid returning\
\ a 400 error response, when specifying the `segment_criteria` do not request\
\ more than 500 email campaigns or a date range greater than 1825 days (5\
\ years) be evaluated.\n\nFor more use case information, see the [Segments\
\ Overview](/api_guide/segments_overview.html) in the API guide."
operationId: "createSegment"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "The segment `name` and `segment_criteria` (requires single-string\
\ escaped JSON)."
required: true
schema:
$ref: "#/definitions/SegmentData"
x-example: "test"
responses:
"201":
description: "Segment successfully created."
schema:
$ref: "#/definitions/SegmentDetail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:write"
/segments/{segment_id}:
get:
tags:
- "Segments"
summary: "GET a Segment's Details"
description: "Use this method to get details about a segment, including the\
\ segment criteria. If you know the `segment_id` You can also use this method\
\ to get details about a deleted segment. For more use case information, see\
\ [Get a Segment's Details](/api_guide/segment_get.html) in the API guide."
operationId: "getSegmentDetail"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "segment_id"
in: "path"
description: "The system-generated unique ID that identifies a segment."
required: true
type: "integer"
format: "int32"
x-example: 14
responses:
"200":
description: "The segment was successfully returned."
schema:
$ref: "#/definitions/SegmentDetail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:read"
x-sdk-methodName: "getSegmentById"
put:
tags:
- "Segments"
summary: "PUT (update) a Segment"
description: "Use this method to update an existing segment's name (`name`)\
\ and/or contact selection criteria (`segment_criteria`). You must specify\
\ both the `name` and the `segment_criteria` in the request body, even if\
\ you don't plan to update both. The segment's name must be unique and the\
\ JSON must be valid (requires single-string escaped JSON). To avoid returning\
\ a 400 error response, when specifying the `segment_criteria` do not request\
\ more than 500 email campaigns or a date range greater than 1825 days (5\
\ years) be evaluated. For more use case information, see [Update Segment\
\ Details](/api_guide/segment_update.html) in the API guide."
operationId: "updateSegment"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "segment_id"
in: "path"
description: "The system generated ID that uniquely identifies the segment\
\ that you want to modify."
required: true
type: "integer"
format: "int32"
x-example: 14
- in: "body"
name: "body"
description: "Include both the `name` and `segment_criteria` (single-string\
\ escaped JSON) in the body request, then make updates to either or both."
required: true
schema:
$ref: "#/definitions/SegmentData"
responses:
"200":
description: "The segment was successfully updated."
schema:
$ref: "#/definitions/SegmentDetail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:write"
delete:
tags:
- "Segments"
summary: "DELETE a Segment"
description: "Use this method to delete a segment from your account. Before\
\ deleting a segment, verify that the segment is not associated with a scheduled\
\ campaign.\n\nDeleted segments do not display in the results when using the\
\ `GET /segments` endpoint. If you know the `segment_id`, you can use the\
\ `GET /segments/{segment_id}` endpoint to view the deleted segment's details.\
\ A segment's details are preserved for external reference purposes, such\
\ as displaying the segment name in a campaign's history. For more use case\
\ information, see [Delete a Segment](/api_guide/segment_delete.html) in the\
\ API guide."
operationId: "deleteSegment"
produces:
- "application/json"
parameters:
- name: "segment_id"
in: "path"
description: "The system generated ID that uniquely identifies the segment."
required: true
type: "integer"
format: "int32"
x-example: 14
responses:
"204":
description: "The segment was successfully deleted."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:write"
/segments/{segment_id}/name:
patch:
tags:
- "Segments"
summary: "PATCH (rename) a Segment"
description: "Use this method to update an existing segment `name` with a new\
\ unique name in the request body. For more use case information, see [Rename\
\ a Segment](/api_guide/segment_rename.html) in the API guide."
operationId: "updateSegmentName"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "segment_id"
in: "path"
description: "The system generated ID that uniquely identifies the segment\
\ that you want to modify."
required: true
type: "integer"
format: "int32"
x-example: 14
- in: "body"
name: "body"
description: "Include the existing segment `name` in the body request, then\
\ rename the segment using a unique new name."
required: true
schema:
$ref: "#/definitions/SegmentName"
responses:
"200":
description: "The segment name was successfully updated."
schema:
$ref: "#/definitions/SegmentDetail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:lists:write"
/contacts/{contact_id}:
get:
tags:
- "Contacts"
summary: "GET a Contact"
description: "This endpoint GETs a specific contact resource (contact_id). Use\
\ the `include` query parameter to add any of the available contact sub-resources\
\ to the response payload."
operationId: "getContact"
produces:
- "application/json"
parameters:
- name: "contact_id"
in: "path"
description: "Unique ID of contact to GET"
required: true
type: "string"
x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a"
- name: "include"
in: "query"
description: "Use `include` to specify which contact sub-resources to include\
\ in the response. Use a comma to separate multiple sub-resources. Valid\
\ values: `custom_fields`, `list_memberships`, `phone_numbers`, `street_addresses`,\
\ `notes`, and `taggings`."
required: false
type: "string"
format: "csv"
enum:
- "custom_fields"
- "list_memberships"
- "phone_numbers"
- "street_addresses"
- "taggings"
- "notes"
x-example: "custom_fields,list_memberships"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/ContactResource"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- oauth2_implicit:
- "contact_data"
- oauth2_access_code:
- "contact_data"
x-authorization-privileges:
- "contacts:read"
x-sdk-methodName: "getContactById"
put:
tags:
- "Contacts"
summary: "PUT (update) a Contact"
description: "The PUT method updates an existing contact. You must include the\
\ `update_source` property in the PUT request payload. To restore a deleted\
\ contact you must specify the `update_source` as `Account`. When updating\
\ any resource using PUT, all properties are updated, overwriting all previous\
\ values. Any properties left blank or not included in the request are overwritten\
\ with null value - however this does not apply to contact subresources. \n\
\nAdd or change any of the subresources by including them in the PUT request\
\ payload. Omitted subresources are not overwritten with null. If the contact\
\ being updated is deleted, the contact will be revived.\nIf `email_address`\
\ is specified:
**Only use this\ \ method when a contact gives you their explicit permission to send them an\ \ email. It is a violation of anti-spam and telemarketing laws, as well as\ \ a serious violation of the Constant Contact Terms of Service to use the\ \ Opt-in features of the API to opt a contact back in without his or her own\ \ action and consent.
Only use this method when a contact gives you\ \ their explicit permission to send them an SMS. It is a violation of anti-spam\ \ and telemarketing laws, as well as a serious violation of the Constant Contact\ \ Terms of Service to use the Opt-in features of the API to opt a contact\ \ back in without his or her own action and consent.
If `email_address` is specified:\ \ **Only use this method when a contact gives you their explicit permission\ \ to send them an email. It is a violation of anti-spam and telemarketing\ \ laws, as well as a serious violation of the Constant Contact Terms of Service\ \ to use the Opt-in features of the API to opt a contact back in without his\ \ or her own action and consent.
Only use this method when a contact\ \ gives you their explicit permission to send them an SMS. It is a violation\ \ of anti-spam and telemarketing laws, as well as a serious violation of the\ \ Constant Contact Terms of Service to use the Opt-in features of the API\ \ to opt a contact back in without his or her own action and consent.
Only use this method when a contact gives you their explicit permission\ \ to send them an email. It is a violation of anti-spam and telemarketing\ \ laws, as well as a serious violation of the Constant Contact Terms of Service\ \ to use the Opt-in features of the API to opt a contact back in without his\ \ or her own action and consent.
Only use this method when a contact\ \ gives you their explicit permission to send them an SMS. It is a violation\ \ of anti-spam and telemarketing laws, as well as a serious violation of the\ \ Constant Contact Terms of Service to use the Opt-in features of the API\ \ to opt a contact back in without his or her own action and consent.
Use this\ \ endpoint to migrate your locally stored V2 contact ids to the new V3 format.\ \ Developers are expected to use this endpoint sparingly. This endpoint is\ \ NOT intended for regular or repeated use. Constant Contact will eventually\ \ deprecate and remove this endpoint.
This method does not currently support filtering\ \ results using the custom field update date.
This method does\ \ not currently support filtering results using the contact list update date.
Use this\ \ endpoint to migrate your locally stored V2 contact list data to the new\ \ V3 format. Developers are expected to use this endpoint sparingly. This\ \ endpoint is NOT intended for regular or repeated use. Constant Contact will\ \ eventually deprecate and remove this endpoint.
include_count query parameter to include the total\
\ number of contacts assigned each tag. Use the limit query parameter\
\ to limit the number of tag results returned per page. To get the next page\
\ of results, copy the cursor={the cursor ID} from the resulting\
\ href link and add it (&) to the URL. For example:\n\n/v3/contact_tags?limit=1&cursor=
bGltaXQ9MSZuZXh0PTJjZDgwMjdhLTc4YzAtMTFlOS1iZmQwLWZhMTYzZTZiMDFjMQ=
This method does not currently support filtering results using\ \ the email campaign creation date.
|
Use this\ \ endpoint to migrate your locally stored V2 email campaign data to the new\ \ V3 format. Developers are expected to use this endpoint sparingly. This\ \ endpoint is NOT intended for regular or repeated use. Constant Contact will\ \ eventually deprecate and remove this endpoint.
Gets the tracking activity data for a single contact, sorted\ \ in descending activity date order.
You must chose either the `tracking_activities_list`\ \ query parameter and or the `tracking_activity_type` query parameter to specify\ \ one or more tracking activity types In the request. The `tracking_activities_list`\ \ and `tracking_activities_type` query parameters are mutually exclusive.
\n\ \| Valid tracking activity types | |
| em_sends | Send activities |
| em_opens | Email open tracking activities |
| em_clicks | Link click-through tracking activities |
| em_bounces | Bounce tracking activities |
| em_optouts | Opt-out tracking activities |
| em_forwards | Forward to a friend tracking activities |
| p_contact_open | Landing page opens |
| p_contact_click | Landing page clicks |
| p_contact_add | Landing page adds |
| p_contact_update | Landing page updates |
Gets the average open and click rate for a given account and\ \ contact.
Looks at all tracking activities for bulk emails from a given\ \ contact over the given date range. Range cannot exceed 5 years.
Returns\ \ the rates and the number of campaign activities that were included in the\ \ calculation.
If no activities fall into the given date range, all\ \ rates will return 0 and the number of included activities will be 0.
" operationId: "getContactOpenClickRate" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "The contact id which is requesting tracking activity data (e.g.\ \ aa9ff7b0-478d-11e6-8059-00163e3c8e19)" required: true type: "string" x-example: "aa9ff7b0-478d-11e6-8059-00163e3c8e19" - name: "start" in: "query" description: "The starting date, in ISO 8601 format, to use to get campaigns.\ \ For example: 2019-01-01T00:00:00-0500." required: true type: "string" - name: "end" in: "query" description: "The ending date, in ISO 8601 format, to use to get campaigns.\ \ For example: 2019-12-01T00:00:00-0500." required: true type: "string" responses: "200": description: "Request Successful" schema: $ref: "#/definitions/ContactOpenAndClickRates" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getContactOpenClickRateReport" /reports/contact_reports/{contact_id}/activity_summary: get: tags: - "Contacts Reporting" summary: "GET Contact Action Summary" description: "Get a list of the recent emails (aka, campaign activities) sent\ \ to a specific contact and a summary of the actions the contact took on that\ \ email for the most recent 200 campaigns." operationId: "getContactTrackingCount" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "The contact id which is requesting tracking activity data (e.g.\ \ aa9ff7b0-478d-11e6-8059-00163e3c8e19)" required: true type: "string" x-example: "aa9ff7b0-478d-11e6-8059-00163e3c8e19" - name: "start" in: "query" description: "The starting date, in ISO 8601 format, to use to get campaigns.\ \ For example: 2019-01-01T00:00:00-0500." required: true type: "string" - name: "end" in: "query" description: "The ending date, in ISO 8601 format, to use to get campaigns.\ \ For example: 2019-12-01T00:00:00-0500." required: true type: "string" responses: "200": description: "successful operation" schema: $ref: "#/definitions/ContactCampaignActivitiesSummary" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getContactTrackingCountReport" /reports/email_reports/{campaign_activity_id}/links: get: tags: - "Email Reporting" summary: "GET an Email Links Report" description: "Use this method to return link details, including the number of\ \ unique contacts that clicked each link in an email campaign activity, and\ \ the type of action associated with clicking each link. To include link details\ \ for links that were not clicked, set the `no_clicks` query parameter to\ \ `true`.\n\nYou can return reporting data for `primary_email` and `resend`\ \ role email campaign activities. For more use case information, see [Get\ \ an Email Links Report](/api_guide/email_links_report.html) in the API guide." operationId: "getCampaignActivityLinkStats" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity." required: true type: "string" format: "uuid" x-example: "8892baf9-970a-4de6-8400-fa4ec461987c" - name: "no_clicks" in: "query" description: "Set this query parameter to `true` to return details for links\ \ that were not clicked in the response results." required: false type: "boolean" default: false x-example: "true" responses: "200": description: "Request was successful" schema: $ref: "#/definitions/EmailLinks" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getCampaignActivityLinkReport" /reports/email_reports/{campaign_activity_id}/tracking/sends: get: tags: - "Email Reporting" summary: "GET an Email Sends Report" description: "Use this method to get each contact that was sent a specific email\ \ campaign activity. This sends report includes general contact data such\ \ as the date and time that the email campaign activity was sent to a contact's\ \ email address, the contact's first and last name, and unique ID. This report\ \ lists the most recent activity first. For more use case information, see\ \ [Get an Sends report for an Email Campaign Activity](/api_guide/email_summary_sends_report.html)\ \ in the API guide." operationId: "getSends" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity to use for this\ \ report." required: true type: "string" format: "uuid" x-example: "8892baf9-970a-4de6-8400-fa4ec461987c" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/SendsTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getEmailSendsReport" /reports/email_reports/{campaign_activity_id}/tracking/opens: get: tags: - "Email Reporting" summary: "GET an Email Opens Report" description: "Use this method to get each time a contact opened a specific email\ \ campaign activity. This report includes general contact information such\ \ as the contact's email address and unique ID, the date and time they opened\ \ the email campaign activity, and the type of device they used to open it.\ \ This report lists the most recent activity first. For more use case information,\ \ see [Get an Opens report for an Email Campaign Activity](/api_guide/email_summary_opens_report.html)\ \ in the API guide." operationId: "getOpens" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity to use for this\ \ report." required: true type: "string" format: "uuid" x-example: "8892baf9-970a-4de6-8400-fa4ec461987c" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/OpensTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getEmailOpensReport" /reports/email_reports/{campaign_activity_id}/tracking/unique_opens: get: tags: - "Email Reporting" summary: "GET an Email Unique Opens Report" description: "Use this method to get a unique opens report that provides details\ \ about the last time that each contact opened the specified email campaign\ \ activity. This report includes general contact information such as the contact's\ \ email address and unique ID, the date and time they opened the email campaign\ \ activity, and the type of device they used to open it. This report lists\ \ the most recent activity first. For more use case information, see [Get\ \ an Unique Opens Report for an Email Campaign Activity](/api_guide/email_summary_unique_opens_report.html)\ \ in the API guide." operationId: "getUniqueOpens" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The ID that uniquely identifies the email campaign activity\ \ to use for this report." required: true type: "string" format: "uuid" x-example: "8892baf9-970a-4de6-8400-fa4ec461987c" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/OpensTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getUniqueOpensReport" /reports/email_reports/{campaign_activity_id}/tracking/didnotopens: get: tags: - "Email Reporting" summary: "GET an Email Did Not Opens Report" description: "Use this method to get a report listing each contact that was\ \ sent, but did not open the specified email campaign activity. This report\ \ lists contact information such as the contact's email address and unique\ \ ID, and the date and time that the email campaign activity was sent. This\ \ report lists the most recent activity first. For more use case information,\ \ see [Get a Did Not Opens Report for an Email Campaign Activity](/api_guide/email_summary_non_opens_report.html)\ \ in the API guide." operationId: "getDidNotOpens" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The ID that uniquely identifies the email campaign activity\ \ to use for this report." required: true type: "string" format: "uuid" x-example: "8892baf9-970a-4de6-8400-fa4ec461987c" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/DidNotOpensTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getDidNotOpensReport" /reports/email_reports/{campaign_activity_id}/tracking/clicks: get: tags: - "Email Reporting" summary: "GET an Email Clicks Report" description: "Use this method to get each time a contact clicked a link, the\ \ click date and time, and the device type they used. Use the `url_id` query\ \ parameter to get a clicks report for a specific link URL. Clicks report\ \ data is sorted with most recent activity listed first." operationId: "getClicks" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The ID that uniquely identifies the email campaign activity\ \ to use for this report." required: true type: "string" format: "uuid" x-example: "c8cdf384-15ca-4dcc-9b6f-4c91121fdc23" - name: "url_id" in: "query" description: "The ID that uniquely identifies a single link URL for which\ \ you want to get a clicks report." required: false type: "integer" format: "int64" x-example: "49920742166" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/ClicksTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getClicksReport" /reports/email_reports/{campaign_activity_id}/tracking/forwards: get: tags: - "Email Reporting" summary: "GET an Email Forwards Report" description: "Use this method to get a report listing each time a contact forwarded\ \ the email campaign activity using the forwarding link in the email footer.\ \ The report includes general contact information, such as the contact's email\ \ address and unique ID, and the date and time that the email campaign activity\ \ was forwarded. Forwards report data is sorted with the most recent activity\ \ listed first. For more use case information, see [Get an Email Forwards\ \ Report](/api_guide/email_summary_forwards_report.html) in the API guide." operationId: "getForwards" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The ID that uniquely identifies the email campaign activity\ \ to use for this report." required: true type: "string" format: "uuid" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/ForwardsTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getForwardsReport" /reports/email_reports/{campaign_activity_id}/tracking/optouts: get: tags: - "Email Reporting" summary: "GET an Email Opt-outs Report" description: "Use this method to get a report listing each contact that clicked\ \ the unsubscribe link in the email campaign activity to opt-out from receiving\ \ emails sent from your Constant Contact account. This report includes contact\ \ information, such as the contact's email address, unique ID, and the opt-out\ \ date and time. Opt-out report data is sorted with the most recent activity\ \ listed first. For more use case information, see [Get an Email Opt-outs\ \ Report](/api_guide/email_summary_optouts_report.html) in the API guide." operationId: "getOptouts" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The ID that uniquely identifies the email campaign activity\ \ to use for this report." required: true type: "string" format: "uuid" - name: "limit" in: "query" description: "The number of tracking activities to return on a page." required: false type: "string" default: "500" maximum: 500 minimum: 1 responses: "200": description: "Request was successful" schema: $ref: "#/definitions/OptoutsTrackingActivitiesPage" "400": description: "Bad request. Either the JSON was malformed or there was a\ \ data validation error." "401": description: "The Access Token used is invalid." "403": description: "Forbidden request. You lack the necessary scopes, you lack\ \ the necessary user privileges, or the application is deactivated." "404": description: "The requested resource was not found." "415": description: "Unsupported Media Type." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "ui:campaign:metrics" x-sdk-methodName: "getOptoutsReport" /reports/email_reports/{campaign_activity_id}/tracking/bounces: get: tags: - "Email Reporting" summary: "GET an Email Bounces Report" description: "Use this method to get a report listing contact bounce data for\ \ the specified email campaign activity. This report lists the most recent\ \ bounce data first and includes contact information, such as the contact's\ \ email address, unique ID, and the email bounce date and time.\nUse thebounce_code\
\ query parameter to limit the type of bounce data to return.\n\nFor more\
\ use case information, see [Get a Bounces Report for an Email Campaign Activity](/api_guide/email_summary_bounces_report.html)\
\ in the API guide."
operationId: "getBounces"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The ID that uniquely identifies the email campaign activity\
\ to use for this report."
required: true
type: "string"
format: "uuid"
- name: "bounce_code"
in: "query"
description: "To return results for a specific bounce code, select the `bounce_code`\
\ from the drop-down list. To return results for multiple codes, repeat\
\ the bounce code parameter for each. For example, to return results for\
\ bounce codes `B` and `D` use `bounce_code=B&bounce_code=D`."
required: false
type: "array"
items:
type: "string"
enum:
- "B"
- "D"
- "F"
- "S"
- "V"
- "X"
- "Z"
collectionFormat: "multi"
- name: "limit"
in: "query"
description: "The number of tracking activities to return on a page."
required: false
type: "string"
default: "500"
maximum: 500
minimum: 1
responses:
"200":
description: "Request was successful"
schema:
$ref: "#/definitions/BouncesTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
x-sdk-methodName: "getBouncesReport"
/reports/summary_reports/email_campaign_summaries:
get:
tags:
- "Email Reporting"
summary: "GET an Email Campaigns Summary Report"
description: "Use this method to get aggregate email campaign statistics for\
\ up to five hundred email campaigns. The response results include the total\
\ number of times that each contact uniquely interacted with each tracked\
\ campaign activity.\n\nResults are sorted in descending order by the date\
\ that the email was last sent (last_sent_date). Use the limit\
\ query parameter to limit the number of email campaign summary reports listed\
\ on each page.\n\n\n\n For more use case information, see \"[Get an Email\
\ Campaign Summary Report](/api_guide/email_bulk_campaign_summary_report.html)\""
operationId: "getAllBulkEmailCampaignSummaries"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "limit"
in: "query"
description: "Use the `limit` query parameter to limit the number of email\
\ campaign summaries to return on a single page. The default is `50` and\
\ the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/BulkEmailCampaignSummariesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
x-sdk-methodName: "getEmailCampaignReport"
/reports/stats/email_campaigns/{campaign_ids}:
get:
tags:
- "Email Reporting"
summary: "GET an Email Campaign Stats Report"
description: "Use this method to get email campaign performance tracking statistics\
\ for one or more campaigns, including the total number of times contacts\
\ interacted with your campaigns and how.\n\nFor each `campaign_id`, this\
\ method returns lists that include total counts (`stats`) for each type of\
\ tracked email and relevant campaign-related percentages (`percents`). It\
\ also returns the date and time at which the campaign stats were last refreshed.\n\
If any specified `campaign_id` is invalid, a 404 error response is returned\
\ for all campaigns."
operationId: "getEmailSummary"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_ids"
in: "path"
description: "A comma-separated list of `campaign_id`s (UUID's)."
required: true
type: "string"
maximum: 150
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/CampaignStatsQueryResultEmail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
x-sdk-methodName: "getEmailStatsReport"
/reports/stats/email_campaign_activities/{campaign_activity_ids}:
get:
tags:
- "Email Reporting"
summary: "GET an Email Campaign Activity Stats Report"
description: "Use this method to get performance tracking statistics for up\
\ to ten email campaign activities. Statistics include the total number of\
\ times contacts interacted with your campaigns and how.\n\nFor each `campaign_activity_id`,\
\ this method returns the `campaign_id`, the total counts (`stats`) for each\
\ type of tracked email activity, and the date and time that Constant Contact\
\ last refreshed (`last_refresh_time`) the `stats`.\n\nWhen requesting statistics\
\ for multiple email campaign activities, if one or more of the `campaign_activity_ids`\
\ do not exist, were deleted, or do not have any stats associated with it,\
\ the `campaign_activity_ids` and error details display under `errors`. If\
\ any single specified `campaign_activity_id` is invalid (malformed), a 404\
\ error response is returned for all campaign activities."
operationId: "getEmailCampaignActivitySummary"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_ids"
in: "path"
description: "A comma-separated list of `campaign_activity_id`s (UUID's)."
required: true
type: "string"
maximum: 10
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/CampaignActivityStatsQueryResultEmail"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
x-sdk-methodName: "getEmailCampaignActivityReport"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_unique_contact_clicks:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Unique Contacts Clicks Landing Page Report"
description: "Use this method get details about each contact that clicked a\
\ link on a landing page campaign activity. Unique contact clicks are identified\
\ by both the `contact_id` and `url_id`. The same contact may appear more\
\ than once in the results, if they clicked more than one link on the landing\
\ page. The resulting contact data is listed with most recent activity first."
operationId: "getUniqueContactClicks"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact click results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to return only contacts that match\
\ a contacts full or partial first or last name, or email. For example:\
\ Josie or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactClickTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_unique_contact_opens:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Unique Contacts Opens Landing Page Report"
description: "Use this method get details about each contact that opens a link\
\ on a landing page. Contacts are uniquely identified by `contact_id`. The\
\ resulting contact data is listed with most recent activity first."
operationId: "getUniqueContactOpens"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact open results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to only include contacts that contain\
\ a certain value. This parameter does full and partial matches and applies\
\ to the contact first name, last name, and email fields. For example: Josie\
\ or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactOpensTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_contact_opens:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Contacts Opens Landing Page Report"
description: "Use this method get contact details for each time a contact opens\
\ a link on a landing page. The resulting contact data is listed with most\
\ recent activity first."
operationId: "getContactOpens"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact open results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to only include contacts that contain\
\ a certain value. This parameter does full and partial matches and applies\
\ to the contact first name, last name, and email fields. For example: Josie\
\ or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactOpensTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_unique_contact_updates:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Unique Contacts Updates Landing Page Report"
description: "Use this method to get contact details for each contact that updated\
\ their contact data from a landing page. Contacts are uniquely identified\
\ by `contact_id`. The resulting contact data is listed with most recent\
\ activity first."
operationId: "getUniqueContactUpdates"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact open results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to only include contacts that contain\
\ a certain value. This parameter does full and partial matches and applies\
\ to the contact first name, last name, and email fields. For example: Josie\
\ or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactUpdateTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_unique_contact_adds:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Unique Contacts Adds Landing Page Report"
description: "Use this method to get details about each contact added to the\
\ account from a specified landing page. Contacts are identified by `contact_id`.\
\ The resulting contact data is listed with most recent activity first."
operationId: "getContactAdds"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to only include contacts that contain\
\ a certain value. This parameter does full and partial matches and applies\
\ to the contact first name, last name, and email fields. For example: Josie\
\ or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactAddTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/landing_pages/campaign_details/{campaign_activity_id}/p_unique_contact_sms_optins:
get:
tags:
- "Landing Pages Reporting"
summary: "GET a Unique Contacts SMS Opt-In Landing Page Report"
description: "Use this method get details about unique contacts that click a\
\ link on a landing page to opt in to receiving SMS text messages. Contacts\
\ are uniquely identified by `contact_id``. The resulting contact data is\
\ listed with most recent activity first."
operationId: "getUniqueContactSMSOptIns"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "campaign_activity_id"
in: "path"
description: "The landing page `campaign_activity_id` (UUID's) to use to get\
\ unique contact click results."
required: true
type: "string"
format: "uuid"
x-example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
- name: "limit"
in: "query"
description: "Use to limit the number of contact tracking activities to return\
\ on a single page. The default is `50` and the maximum is `500` per page."
required: false
type: "string"
default: "50"
x-example: "100"
- name: "contacts_filter"
in: "query"
description: "Use to filter the results to return only contacts that match\
\ a contacts full or partial first or last name, or email. For example:\
\ Josie or Jo."
required: false
type: "string"
x-example: "Jo"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/PContactSMSOptInTrackingActivitiesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/reports/summary_reports/sms_campaign_summaries:
get:
tags:
- "SMS Reporting"
summary: "GET an SMS Campaigns Summary Report"
description: "Use this method to get SMS campaign summary details, including\
\ the total number of times that each contact uniquely interacted with each\
\ tracked campaign activity and aggregate tracking statistics. Results are\
\ sorted in descending order by the date the SMS was last sent (`last_sent_date`).\n\
The `start_at` date is required. Use both the `start_at` and `end_at` date\
\ query parameters to return only SMS campaign summary details that occurred\
\ within a specified date range.\nUse the `limit` query parameter to limit\
\ the number of results returned per page. "
operationId: "getAllBulkSmsCampaignSummaries"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "limit"
in: "query"
description: "Use to limit the number of results to return on a single page\
\ (from 1 to 50). The default setting is 50."
required: false
type: "string"
default: "50"
x-example: "15"
- name: "start_at"
in: "query"
description: "Use to limit the results to include SMS campaign summary details\
\ for SMS campaigns sent on or after the required `start_at` date you specify.\
\ ISO 8601 format."
required: true
type: "string"
x-example: "2023-01-27T21:56:37.011Z"
- name: "end_at"
in: "query"
description: "Use to limit the results to include SMS campaign summary details\
\ for SMS campaigns sent on or before the `end_at` date you specify. ISO\
\ 8601 format."
required: false
type: "string"
x-example: "2024-01-27T21:56:37.011Z"
responses:
"200":
description: "Request was successful."
schema:
$ref: "#/definitions/SmsCampaignSummariesPage"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- oauth2_implicit:
- "campaign_data"
- oauth2_access_code:
- "campaign_data"
x-authorization-privileges:
- "ui:campaign:metrics"
/partner/accounts:
get:
tags:
- "Technology Partners"
summary: "GET Partner Client Accounts"
description: "Get all Constant Contact client accounts managed under your technology\
\ partner account. Use the `limit` query parameter to set the number of accounts\
\ to return on each results page. Use the `account_type` query parameter to\
\ filter client account results by type: `all` (default), `managed`, or `unmanaged`.\n\
Only technology partners can access partner endpoints and partner endpoints\
\ cannot be tested using the API reference tester.\nFor more use case information,\
\ see [Get all Partner Client Accounts](/api_guide/partners_accts_get.html)\
\ in the API guide."
operationId: "getPartnerSiteOwners"
produces:
- "application/json"
parameters:
- name: "offset"
in: "query"
description: "Depending on the `limit` you specify, the system determines\
\ the `offset` parameter to use (number of records to skip) and includes\
\ it in the link used to get the next page of results"
required: false
type: "string"
- name: "limit"
in: "query"
description: "The number of client accounts to return on each page of results.\
\ The default value is `50`. Entering a `limit` value less than the minimum\
\ (`10`) or greater than the maximum (`50`) is ignored and the system uses\
\ the default values. Depending on the `limit` you specify, the system determines\
\ the `offset` parameter to use (number of records to skip) and includes\
\ it in the link used to get the next page of results."
required: false
type: "string"
default: "50"
maximum: 50
minimum: 10
format: "int32"
x-example: "50"
- name: "account_type"
in: "query"
description: "Filters client account results by account type: `all` (default),\
\ `managed`, or `unmanaged`. Excluding the `account_type` query parameter\
\ returns all client accounts for the partner."
required: false
type: "string"
default: "all"
enum:
- "all"
- "managed"
- "unmanaged"
x-example: "managed"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/PartnerAccount"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "getAccounts"
post:
tags:
- "Technology Partners"
summary: "POST (create) a Partner Client Account"
description: "Use this POST method to create a new Constant Contact client account\
\ under your partner account, set up the billing plan for the account, and\
\ to add the new client to the default contact list.\n\nNewly created accounts\
\ are free trials which give the user up to 60 days to try Constant Contact\
\ before buying. Trial accounts have limits depending on the services that\
\ are included.\n\nIf a field validation error occurs, a 400 response message\
\ is returned.\n\nIf provisioning does not complete successfully due to unavailable\
\ dependencies, such as database or dependent services, a 503 response message\
\ is returned. By default, the client account provision data is stored and\
\ processed when provisioning becomes available.\n\nIf the partner client\
\ account has the Single Sign On (SSO) for all users feature enabled, all\
\ users in the client account can sign into the account using SSO. This feature\
\ must be set up through the Constant Contact Partner team. For feature details,\
\ see [Configuring Identity Provider Initiated SSO](/api_guide/partner_sso_config.html).\
\ Some client account features will be supported in future releases. \n\n\
For more use case information, see [Create a new Partner Client Account](/api_guide/partners_accts_create.html)\
\ in the API guide."
operationId: "provision"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "provision"
description: "Create a new Constant Contact client account under your partner\
\ account. All required properties must be included in the JSON payload\
\ request."
required: true
schema:
$ref: "#/definitions/Provision"
responses:
"201":
description: "Request successful."
schema:
$ref: "#/definitions/ProvisionResponse"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
"503":
description: "Our internal service is temporarily unavailable."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "createAccount"
/partner/accounts/{encoded_account_id}/plan:
get:
tags:
- "Technology Partners"
summary: "GET Billing Plan Details for a Client Account"
description: "Use this GET method to return billing plan details for a client's\
\ Constant Contact account.\nIf you are not on the latest billing plan, contact\
\ the Constant Contact Partner Team. However, older billing plans and `plan_type`\
\ enum values will continue to be supported. Only technology partners can\
\ access partner endpoints and partner endpoints cannot be tested using the\
\ API reference tester.\nFor more use case information, see [Get Billing Plan\
\ Details for a Client Account](/api_guide/partners_plans_get.html) in the\
\ API guide."
operationId: "getPlan"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "Specify the client's unique `encoded_account_id`."
required: true
type: "string"
x-example: "a07e1lxqqqo0"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/PlanTiersObject"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"405":
description: "Unsupported method used."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "getAccountBillingPlan"
put:
tags:
- "Technology Partners"
summary: "PUT (update) Billing Plan Details for a Client Account"
description: "Use this PUT method to update the type of billing plan to assign\
\ to the Constant Contact client account. The type of billing plan determines\
\ which Constant Contact product features that the client account can access.\
\ The billing plan that you specify in the request body (`plan_type`) must\
\ already exist in the plan group. Attempting to change to a plan that is\
\ currently not available within your partner plan group results in a 400\
\ error response code.\n\nWhen you create a new client account, the `plan_type`\
\ defaults to `TRIAL` and the `billing_day_of_month` defaults to `null`. The\
\ `billing_day_of_month` property is required if a client account is not set\
\ up to use single billing. You can change the day of month (`billing_day_of_month`)\
\ in which to bill a client account only when changing the `plan_type` value\
\ from `TRIAL` to a different `plan_type`, otherwise the `billing_day_of_month`\
\ value you enter is ignored. You can choose to enter a specific day of the\
\ month or accept the default value, which is the day on which the `plan_type`\
\ value changes from a `TRIAL` plan to a different `plan_type`. Changing the\
\ `plan_type` from `TRIAL` to another `plan_type` automatically changes the\
\ `billing_status` from `Trial` to `Open`.\n\nOnly technology partners can\
\ access partner endpoints and partner endpoints cannot be tested using the\
\ API reference tester. If you are not on the latest billing plan, contact\
\ the Constant Contact Partner Team. However, older billing plans and `plan_type`\
\ enum values will continue to be supported.\n\nFor more use case information,\
\ see [PUT Billing Plan Details for a Client Account](/api_guide/partners_plans_update.html)\
\ in the API guide."
operationId: "setPlan"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "Specify the client's unique `encoded_account_id`."
required: true
type: "string"
x-example: "a07e1lxqqqo0"
- in: "body"
name: "body"
description: "`plan_type`: Updates the billing plan assigned to a client account\
\ to a different `plan_type`. \n\n`plan_group_id`: To update an older\
\ `plan_type` to a current a `plan_type`, use the `plan_group_id` parameter\
\ to specify the older billing `plan_type` number. \n\n- If the specified\
\ `plan_group_id` does not exist under the account's current plan group,\
\ the default partner plan group is used.\n- If the specified `plan_group_id`\
\ exists but does not match the account's current plan group, an error is\
\ returned.\n- If the `plan_group_id` parameter is not included in the request,\
\ the accounts current plan group is used.\n\n`billing_day_of _month`: \
\ Updates the day of month in which to bill the client account. This property\
\ is required if a client account is not set up to use single billing. \
\ "
required: false
schema:
$ref: "#/definitions/PlanInfo"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/PlanTiersObject"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"405":
description: "Unsupported method used."
"415":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "updateAccountBillingPlan"
/partner/accounts/{encoded_account_id}/status/cancel:
put:
tags:
- "Technology Partners"
summary: "PUT Cancel the Billing Plan for a Client Account"
description: "Use this PUT method to cancel a client's Constant Contact account.\
\ If the specified client account or technology partner account does not exist,\
\ the system returns a 404 error response. If the client account exists under\
\ a different technology partner account, the system returns a 400 error response.\n\
\n\n To get a list of all canceled client accounts (`\"billing_status\":\
\ \"Canceled\"`), make a `GET` call to the `/partner/accounts` endpoint.\n\
\n Only technology partners can access partner endpoints and partner endpoints\
\ cannot be tested using the API reference tester.\n\n For more use case\
\ information, see [Cancel the Billing Plan for a Client Account](/api_guide/partners_plans_cancel.html)\
\ in the API guide.\""
operationId: "cancelAccount"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "The system generated ID that uniquely identifies the client\
\ account."
required: true
type: "string"
x-example: "a07e1lxqqqo0"
- in: "body"
name: "body"
description: "By default, the current date and time is automatically used\
\ as the cancellation date. However, you can specify a future date and time\
\ to cancel the account (`effective_date`) in the request body in ISO format.\
\ You can also enter the client's cancellation reason (`reason_id`)."
required: false
schema:
$ref: "#/definitions/AccountCancellation"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/AccountCancellation"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "cancelAccountBillingPlan"
/partner/accounts/{encoded_account_id}/account_operations/sync:
post:
tags:
- "Technology Partners"
summary: "POST Send an API request on Behalf of a Client Account"
description: "Use this API method to send an API request on behalf of a managed\
\ client account in your partnership.\n\nThe request body properties you use\
\ in this partner API call determine the structure of the API request that\
\ Constant Contact sends on behalf of the managed client account. This includes\
\ the HTTP url, HTTP method type, request body, request url parameters, request\
\ query parameters, and headers that for the request. You can use this `/partner/accounts/{encoded_account_id}/account_operations/sync`\
\ API method to send a request using non-partner v3 API methods."
operationId: "partnerAccountOperationsPostSync"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "An encoded account id for a managed account in your partnership."
required: true
type: "string"
x-example: "a07e1lxqqqo0"
- in: "body"
name: "body"
description: "A JSON request body that contains the structure of the HTTP\
\ request you are instructing Constant Contact to send on behalf of specific\
\ managed account in your partnership."
required: false
schema:
$ref: "#/definitions/PartnerAccountOperationsRequest"
responses:
"200":
description: "Request successful. The response body schema returned by this\
\ method corresponds to the specific API request you provided in the request\
\ body."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "Not found. This may indicate that the encoded_account_id you\
\ provided is invalid, or the API request you are sending on behalf of\
\ an account returned a 404."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "sendRequestUsingManagedAccount"
/partner/accounts/{encoded_account_id}/users/sso:
post:
tags:
- "Technology Partners"
summary: "POST a User Under a Partner's SSO-Enabled Client Account"
description: "Use this endpoint to create a new user under a partner client\
\ account that has the Single Sign On (SSO) for all users feature enabled."
operationId: "createSSOUser"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "The encoded account ID that identifies the partner's client\
\ account to which to add the new user. "
required: true
type: "string"
x-example: "a07e1lxqqqo0"
- in: "body"
name: "SSO User"
description: "The JSON payload used to create a new user under the specified\
\ partner's client account. All request body properties are required (`first_name`,\
\ `last_name`, `role_name`, `contact_email`, `login_name`, `external_id`,\
\ `external_provider`)."
required: true
schema:
$ref: "#/definitions/SSOUser"
responses:
"201":
description: "Request successful."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"409":
description: "Conflict. The resource you are creating or updating conflicts\
\ with an existing resource."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
/partner/accounts/{encoded_account_id}/contacts/unsubscribe:
post:
tags:
- "Technology Partners"
summary: "POST Unsubscribe Contacts"
description: "Use to unsubscribe contacts from partner client accounts. Identify\
\ the contacts to unsubscribe using the `email_address` parameter. To unsubscribe\
\ a single contact from all partner client accounts, specify the contacts\
\ `email_address` and set the `global_unsubscribe` parameter to `true`."
operationId: "partnerUnsubscribeContacts"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "encoded_account_id"
in: "path"
description: "The encoded account ID that uniquely identifies the partner's\
\ client account."
required: true
type: "string"
x-example: "a07e1lxqqqo0"
- in: "body"
name: "body"
description: "The JSON payload."
required: true
schema:
type: "object"
required:
- "update_source"
properties:
email_addresses:
type: "array"
description: "Array of email addresses to unsubscribe."
items:
type: "string"
maxItems: 500
x-example: "lang.carry@anymail.com"
update_source:
type: "string"
description: "Required parameter to specify the update source performing\
\ the unsubscribe."
enum:
- "Account"
- "Contact"
- "System"
x-example: "Account"
opt_out_reason:
type: "string"
description: "Optional parameter to specify the reason for the unsubscribe."
maxLength: 255
x-example: "No longer interested."
delete_contacts:
type: "boolean"
description: "Optional parameter to specify if the contact(s) should\
\ be soft-deleted as part of the unsubscribe."
default: false
x-example: "false"
global_unsubscribe:
type: "boolean"
description: "Optional parameter to specify if the contact's email address\
\ should be unsubscribed from all partner child accounts. When specified\
\ only a single email address in the `email_addresses` array can be\
\ specified."
default: false
x-example: "true"
responses:
"200":
description: "Contacts were successfully unsubscribed"
schema:
$ref: "#/definitions/PartnerUnsubscribeResponse"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"406":
description: "Unsupported Media Type."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
/partner/webhooks/subscriptions:
get:
tags:
- "Technology Partners Webhooks"
summary: "GET a Collection of Webhook Topic Subscriptions"
description: "Use this GET method to return a collection containing your application's\
\ webhook subscriptions."
operationId: "getWebhooksCollection"
consumes:
- "application/json"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/WebhooksSubscriptionCollection"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "getAllWebhooks"
/partner/webhooks/subscriptions/{topic_id}:
get:
tags:
- "Technology Partners Webhooks"
summary: "GET Webhook Topic Subscription"
description: "Use this GET method to return subscription information for a certain\
\ `topic_id`. Possible `topic_id` values include:\n\n * `1` - Billing tier\
\ upgrade.\n * `2` - Billing tier downgrade.\n * `3` - Account cancelled.\n\
\ * `4` - Account disabled."
operationId: "getWebhooksTopic"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "topic_id"
in: "path"
description: "Identifies a webhook topic."
required: true
type: "string"
x-example: "1"
responses:
"200":
description: "Request successful"
schema:
$ref: "#/definitions/WebhooksSubscriptionResponse"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "getWebhooksTopicById"
put:
tags:
- "Technology Partners Webhooks"
summary: "PUT Webhook Topic Subscription"
description: "Use this PUT method to subscribe your application to a `topic_id`\
\ or to update the callback URI for an existing subscription. Possible `topic_id`\
\ values include:\n\n * `1` - Billing tier upgrade.\n * `2` - Billing tier\
\ downgrade.\n * `3` - Account cancelled.\n * `4` - Account disabled.\n\n\
After you subscribe your application, Constant Contact will automatically\
\ start sending POST notifications for your chosen topic to your application's\
\ callback URI. This is an example of the POST notification request body:\n\
\n ```\n {\"url\":\"https://api.cc.email/v3/partner/accounts/a07e1my9tbw0/plan\"\
,\n \"api_key\":\"90ed8738-5190-44a3-bc12-c172930db12c\",\n \"event_type\"\
:\"tier.increase\"}\n ```\n\nIf your application does not return a success\
\ response after receiving a notification, Constant Contact will retry sending\
\ the POST notification at 1 minute intervals for up to an hour."
operationId: "putWebhooksTopic"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "topic_id"
in: "path"
description: "Identifies a webhook topic."
required: true
type: "string"
x-example: "1"
- in: "body"
name: "body"
description: "A JSON payload containing a callback URI. Constant Contact uses\
\ this callback URI to notify you about your chosen topic."
required: true
schema:
$ref: "#/definitions/WebhooksSubscriptionBody"
responses:
"200":
description: "Request successful."
schema:
$ref: "#/definitions/WebhooksSubscriptionPutResp"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
x-sdk-methodName: "updateWebhooksTopic"
delete:
tags:
- "Technology Partners Webhooks"
summary: "DELETE Webhook Topic Subscriptions"
description: "Use this DELETE method to unsubscribe your application from notifications\
\ on a certain `topic_id`. Possible `topic_id` values include:\n\n * `1` -\
\ Billing tier upgrade.\n * `2` - Billing tier downgrade.\n * `3` - Account\
\ cancelled.\n * `4` - Account disabled."
operationId: "deleteWebhooksSubscriptions"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "topic_id"
in: "path"
description: "Identifies a webhook topic."
required: true
type: "string"
x-example: "1"
responses:
"204":
description: "Webhooks subscription successfully deleted."
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
/partner/webhooks/subscriptions/{topic_id}/tests:
post:
tags:
- "Technology Partners Webhooks"
summary: "POST Test Send Webhook Notification"
description: "Use this POST method to validate a webhook subscription by triggering\
\ a test notification for your chosen webhook `topic_id`. Possible `topic_id`\
\ values include:\n\n * `1` - Billing tier upgrade.\n * `2` - Billing tier\
\ downgrade.\n * `3` - Account cancelled.\n * `4` - Account disabled.\n\n\
After you successfully send this request, Constant Contact will automatically\
\ send a POST notification to your chosen topic's callback URI with example\
\ data."
operationId: "testSendWebhooksTopic"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "topic_id"
in: "path"
description: "Identifies a webhook topic."
required: true
type: "string"
x-example: "1"
responses:
"201":
description: "Test notification successfully sent to your callback URI."
schema:
$ref: "#/definitions/WebhooksTestSend"
"400":
description: "Bad request. Either the JSON was malformed or there was a\
\ data validation error."
"401":
description: "The Access Token used is invalid."
"403":
description: "Forbidden request. You lack the necessary scopes, you lack\
\ the necessary user privileges, or the application is deactivated."
"404":
description: "The requested resource was not found."
"500":
description: "There was a problem with our internal service."
security:
- ctctPartnerAuthorizer: []
api_key: []
securityDefinitions:
oauth2_implicit:
type: "oauth2"
authorizationUrl: "https://authz.constantcontact.com/oauth2/default/v1/authorize"
flow: "implicit"
scopes:
contact_data: "Read or modify contact data."
campaign_data: "Read or modify email campaign data."
account_read: "Read account data."
account_update: "Modify account data."
oauth2_access_code:
type: "oauth2"
authorizationUrl: "https://authz.constantcontact.com/oauth2/default/v1/authorize"
tokenUrl: "https://authz.constantcontact.com/oauth2/default/v1/token"
flow: "accessCode"
scopes:
contact_data: "Read or modify contact data."
campaign_data: "Read or modify email campaign data."
account_read: "Read account data."
account_update: "Modify account data."
ctctPartnerAuthorizer:
description: "Partner Authentication"
type: "oauth2"
authorizationUrl: "https://v3api-partner.auth.us-east-1.amazoncognito.com/oauth2/token"
flow: "implicit"
scopes:
v3api/general.partner: "Access to general partner API methods"
api_key:
type: "apiKey"
name: "x-api-key"
in: "header"
definitions:
UserPrivilegesResource:
type: "array"
items:
type: "object"
properties:
privilege_id:
type: "integer"
example: 30
description: "Identifies a user privilege in Constant Contact."
privilege_name:
type: "string"
example: "campaign:create"
description: "The name of the Constant Contact user privilege."
AuthorizationErrorSchema:
type: "object"
properties:
error_key:
type: "string"
example: "unauthorized"
description: "Identifies the type of error."
error_message:
type: "string"
example: "Unauthorized"
description: "Description of the error."
APIErrorSchema:
type: "array"
items:
type: "object"
properties:
error_key:
type: "string"
example: "contacts.api.validation.error"
description: "Identifies the type of error."
error_message:
type: "string"
example: "include_membership_count does not have a valid value"
description: "Description of the error."
CompanyLogo:
type: "object"
properties:
url:
type: "string"
example: "https://files.constantcontact.com/3a20c2f5701/780c1ff3-7fc6-4712-a862-ad5b6af57d38.jpg."
description: "The internal URL used to get the company logo image file hosted\
\ locally in your account's MyLibrary."
external_url:
type: "string"
example: "https://www.google.com/images/logos/google_logo_41.png."
description: "The external URL used to get the company logo image file that\
\ is hosted on an external website."
internal_id:
type: "string"
example: "ACCOUNT.IMAGE.5"
description: "The internal ID used to identify the image hosted in your account's\
\ MyLibrary."
Customer:
type: "object"
properties:
contact_email:
type: "string"
example: "InstaPrinz@gmail.com"
description: "Email addresses that are associated with the Constant Contact\
\ account owner."
contact_phone:
type: "string"
example: "5081111212"
description: "The account owner's contact phone number (up to 25 characters\
\ in length)."
maxLength: 25
country_code:
type: "string"
example: "US"
description: "The uppercase two-letter ISO 3166-1 code representing the organization's country."
encoded_account_id:
type: "string"
example: "p07e1l8cdif9dl"
description: "The readOnly encoded account ID that uniquely identifies the\
\ account."
readOnly: true
encoded_partner_id:
type: "string"
example: "a37cranviy95el"
description: "The encoded partner id that identifies which Constant Contact\
\ partner provisioned the account."
readOnly: true
first_name:
type: "string"
example: "Lola"
description: "The account owner's first name."
last_name:
type: "string"
example: "Zang"
description: "The account owner's last name."
organization_name:
type: "string"
example: "InstaPrinz"
description: "The name of the organization that is associated with this account."
organization_phone:
type: "string"
example: "333-333-3335"
description: "The phone number of the organization that is associated with\
\ this account."
state_code:
type: "string"
example: "MA"
description: "The uppercase two letter ISO 3166-1 code for the organization's state. This\
\ property is required if the country_code is US (United States)."
time_zone_id:
type: "string"
example: "US/Eastern"
description: "The time zone that is automatically set based on the state_code\
\ setting; as defined in the IANA time-zone database (see http://www.iana.org/time-zones)."
website:
type: "string"
example: "http://InstaPriz4me.com"
description: "The organization's website URL."
physical_address:
type: "object"
properties:
address_line1:
type: "string"
example: "123 Maple Street"
description: "Line 1 of the organization's street address."
minLength: 1
maxLength: 80
address_line2:
type: "string"
example: "Unit 1"
description: "Line 2 of the organization's street address."
minLength: 1
maxLength: 80
address_line3:
type: "string"
example: "Apartment 234"
description: "Line 3 of the organization's street address."
minLength: 1
maxLength: 80
city:
type: "string"
example: "Boston"
description: "The city where the organization is located."
state_code:
type: "string"
example: "MA"
description: "The two letter ISO 3166-1 code for the organization's state\
\ and only used if the country_code is US\
\ or CA. If not, exclude this property from the request\
\ body."
maxLength: 2
state_name:
type: "string"
example: "EXCLUDE if country_code is US."
description: "Use if the state where the organization is physically located\
\ is not in the United States or Canada. If country_code\
\ is US or CA, exclude this property from\
\ the request body."
postal_code:
type: "string"
example: "02451"
description: "The postal code address (ZIP code) of the organization.\
\ This property is required if the state_code is US\
\ or CA, otherwise exclude this property from the request\
\ body."
country_code:
type: "string"
example: "US"
description: "The two letter ISO 3166-1 code for the organization's country."
required:
- "address_line1"
- "city"
- "country_code"
company_logo:
description: "Used to include an existing company logo in the response body.\
\ If a company logo does not exist, nothing is returned in the response\
\ body. This property is optional."
$ref: "#/definitions/CompanyLogo"
CustomerPut:
type: "object"
properties:
contact_email:
type: "string"
example: "InstaPrinz@gmail.com"
description: "The confirmed email address that is associated with the account\
\ owner."
contact_phone:
type: "string"
example: "5081111212"
description: "The account owner's contact phone number (up to 25 characters\
\ in length)."
maxLength: 25
country_code:
type: "string"
example: "US"
description: "The two-letter ISO 3166-1 code representing the organization's country."
encoded_account_id:
type: "string"
example: "p07e1l8cdif9dl"
description: "The read only encoded account ID that uniquely identifies the\
\ account."
readOnly: true
first_name:
type: "string"
example: "Lola"
description: "The account owner's first name."
last_name:
type: "string"
example: "Zang"
description: "The account owner's last name."
organization_name:
type: "string"
example: "InstaPrinz"
description: "The name of the organization that is associated with this account."
organization_phone:
type: "string"
example: "333-333-3335"
description: "The phone number of the organization that is associated with\
\ this account."
state_code:
type: "string"
example: "MA"
description: "The two letter ISO 3166-1 code used to specify the state to associate\
\ with the account. This property is required if the country_code\
\ is US (United States)."
time_zone_id:
type: "string"
example: "US/Eastern"
description: "The time zone to use for the account; as defined in the IANA\
\ time-zone database (see http://www.iana.org/time-zones)."
website:
type: "string"
example: "http://InstaPriz4me.com"
description: "The organization's website URL."
AccountPhysicalAddress:
type: "object"
required:
- "address_line1"
- "city"
- "country_code"
properties:
address_line1:
type: "string"
example: "123 Maple Street"
description: "Line 1 of the organization's street address."
minLength: 1
maxLength: 80
address_line2:
type: "string"
example: "Unit 1"
description: "Line 2 of the organization's street address."
minLength: 1
maxLength: 80
address_line3:
type: "string"
example: "Apartment 234"
description: "Line 3 of the organization's street address."
minLength: 1
maxLength: 80
city:
type: "string"
example: "Boston"
description: "The city where the organization is located."
state_code:
type: "string"
example: "MA"
description: "The two letter ISO 3166-1 code for the organization's state\
\ and only used if the country_code is US or CA.\
\ If not, exclude this property from the request body."
maxLength: 2
state_name:
type: "string"
example: "EXCLUDE if country_code is US."
description: "Use if the state where the organization is physically located\
\ is not in the United States or Canada. If country_code is\
\ US or CA, exclude this property from the request\
\ body."
postal_code:
type: "string"
example: "02451"
description: "The postal code address (ZIP code) of the organization. This\
\ property is required if the state_code is US\
\ or CA, otherwise exclude this property from the request body."
country_code:
type: "string"
example: "US"
description: "The two letter ISO 3166-1 code for the organization's country."
AccountEmails:
type: "array"
items:
type: "object"
properties:
email_address:
type: "string"
description: "An email address associated with a Constant Contact account\
\ owner."
maxLength: 80
email_id:
type: "integer"
format: "int64"
description: "The unique ID for an email address in a Constant Contact account."
minimum: 1
confirm_status:
type: "string"
description: "The confirmation status of the account email address. When\
\ you add a new email address to an account, Constant Contact automatically\
\ sends an email to that address with a link to confirm it. You can use\
\ any account email address with a CONFIRMED status to create\
\ an email campaign.\n"
confirm_time:
type: "string"
format: "date-time"
description: "The date that the email address changed to CONFIRMED\
\ status in ISO-8601 format."
confirm_source_type:
type: "string"
description: "Describes who confirmed the email address. Valid values are:\n\
\ CONTACT\
\ role email.BILLING\
\ role email.REPLY_TO\
\ role email.from_email and reply_to_email\
\ headers.\n"
items:
type: "string"
pending_roles:
type: "array"
description: "The planned role for an unconfirmed email address. Possible\
\ role values are: CONTACT\
\ role email.BILLING\
\ role email.REPLY_TO\
\ role email. CONFIRMED status to create\
\ an email campaign.\n"
TierObject:
type: "object"
properties:
usage_type:
type: "string"
example: "CONTACTS"
description: "Identifies the tier usage type that is associated with the billing\
\ plan."
readOnly: true
default: "CONTACTS"
current_usage:
type: "number"
format: "float"
example: 10.0
description: "The number of active contacts (default) used within the current\
\ tier."
readOnly: true
tier:
type: "integer"
format: "int32"
example: 1
description: "The billing tier level that is associated with a client account.\
\ By default, the system determines the tier level to use based on the number\
\ of active contacts currently in the client account at the time of billing.\
\ Billing tiers may differ. The following shows an example billing tier:\
\ 1 = 0 - 500 contacts2 = 501 - 1000 contacts3\
\ = 1001 - ...plan_type enum values will continue to\
\ be supported. TRIAL: Provides limited product\
\ features for a non-billed account and the account has an expiration date.BRONZE: Billable plan that provides basic email and\
\ marketing tools.SILVER: Billable plan that\
\ provides all features available in the BRONZE plan, and adds\
\ some additional email campaign to features, such as contact segmentation\
\ and social media ads integration.GOLD: Billable\
\ plan that provides all available product features.billing_status defaults to Trial.\
\ Billing status values include:\n Trial - A\
\ non-paying trial client account (default value).Open\
\ - An active and paying client account.Canceled\
\ - A canceled client account.Trial End - The\
\ trial period has ended for this client account.null.\
\ The value can only be changed when changing the plan_type\
\ from a trial account to a different type of plan, otherwise the value\
\ you enter is ignored. You can choose to enter a specific day of month\
\ or except the default value, which is the day that the plan_type\
\ value changes from a trial account plan to a different plan. Valid billing_day_of_month\
\ values include 1 through and including 31."
description: "Specifies client billing plan details including the type of plan,\
\ the plan tiers used, the current billing status, and the day of the month\
\ that the client is billed. When a client account is first provisioned, the\
\ `plan_type` defaults to a `Trial` account. After you change an account `billing_status`\
\ from `Trial` to any other `billing_status`, you cannot change it back to a\
\ `Trial` account."
ActivityStatus:
type: "object"
properties:
items_total_count:
type: "integer"
example: 2200
description: "The total number of items to be processed."
readOnly: true
items_completed_count:
type: "integer"
example: 2100
description: "The number of items processed in the activity request."
readOnly: true
person_count:
type: "integer"
example: 8750
description: "The total number of contacts in an import contacts request."
readOnly: true
error_count:
type: "integer"
example: 1
description: "The number of non-correctable errors encountered during an import\
\ contacts request."
readOnly: true
correctable_count:
type: "integer"
example: 1
description: "The number of correctable errors. Correctable errors include\
\ invalid email address format, birthday or anniversary format error, or\
\ does not have minimal contact information (no name or email address).\
\ Correctable errors are available in the product UI to correct."
cannot_add_to_list_count:
type: "integer"
example: 1
description: "The number of contacts that cannot be added to a list because\
\ they were previously unsubscribed, valid for contacts_file_ or json_import\
\ requests."
list_count:
type: "integer"
example: 3
description: "The number of lists processed in an add or remove list membership\
\ activity request."
readOnly: true
ActivityStatusExportLink:
type: "object"
properties:
self:
type: "object"
description: "HATEOS-style link to the activity status (this object)."
properties:
href:
type: "string"
example: "/v3/activities/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
results:
type: "object"
description: "Link to an activity result resource; as an example, for file_export,\
\ the link to the exported contacts file."
properties:
href:
type: "string"
example: "/v3/contacts_exports/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
Link:
type: "object"
properties:
href:
type: "string"
example: "/v3/activities/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
PagingLinks:
type: "object"
properties:
next:
$ref: "#/definitions/Link"
Activities:
type: "object"
properties:
activities:
type: "array"
description: "A list of bulk activity jobs and status submitted by the account\
\ over the past 10 days."
items:
type: "object"
description: "Generic bulk activity status response object"
properties:
activity_id:
type: "string"
format: "uuid"
example: "86b90820-cc52-11ea-9dad-fa163e3d9194"
description: "Unique ID for the activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The state of the request: status."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 500
list_ids:
type: "array"
description: "Exports all of the contacts inside of up to 50 contact lists.\
\ This property is mutually exclusive with all other filtering criteria\
\ except with either status or exclude."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 50
tag_ids:
type: "array"
description: "Exports contacts assigned one or more of the tags (tag_id)\
\ specified. This property is mutually exclusive with all other filtering\
\ criteria."
items:
type: "string"
format: "uuid"
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
maxItems: 50
new_subscriber:
type: "boolean"
example: true
description: "Set to true to only export contacts that subscribed\
\ within the last 30 days. Default setting is false. This property\
\ is mutually exclusive with all other filtering criteria except with either\
\ list_ids or exclude. "
segment_id:
type: "integer"
example: 12
description: "Specify the segment_id from which you want to export\
\ all contacts that meet the specified segment_criteria. You\
\ can only specify one segment_id. This property is mutually\
\ exclusive with all other filtering criteria."
fields:
type: "array"
description: "By default , all fields are returned. Use this array to only\
\ export specific contact fields. You must export email_address\
\ to successfully export email_optin_source, email_optin_date,\
\ email_optout_source, email_optout_date, or email_optout_reason."
items:
type: "string"
example: "email_address"
status:
type: "string"
example: "unsubscribed"
description: "Allows you to export only contacts that have a specific status\
\ value. This property is mutually exclusive with all other filtering criteria\
\ except with either contact_ids or list_ids."
exclude:
type: "object"
properties:
contact_ids:
type: "array"
description: "Excludes up to 50 specified contacts (contact_id)\
\ from being exported. This property is mutually exclusive with all\
\ other filtering criteria except with either list_ids\
\ or new_subscriber ."
items:
type: "string"
format: "uuid"
example: "4d88f172-21d1-11ea-b5ae-fa163e56c9b0"
description: "An array of contact_ids to exclude."
description: "Export contact objects to a CSV file. By default, all contacts in\
\ the user's account are exported unless a filtering parameter is specified."
ActivityExportStatus:
type: "object"
properties:
activity_id:
type: "string"
format: "uuid"
example: "86b90820-cc52-11ea-9dad-fa163e3d9194"
description: "Unique ID for the activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The state of the request:
contact_id to delete;\
\ mutually exclusive with list_ids."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
description: ""
maxItems: 500
list_ids:
type: "array"
description: "The contacts on the lists (up to 50) specified will be deleted;\
\ mutually exclusive with contact_ids."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
description: ""
maxItems: 50
ActivityDeleteStatus:
type: "object"
properties:
activity_id:
type: "string"
format: "uuid"
example: "86b90820-cc52-11ea-9dad-fa163e3d9194"
description: "Unique ID for the activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The state of the request: birthday_month property is required\
\ if you use birthday_day."
birthday_day:
type: "integer"
example: 24
description: "The day value for the contact's birthday. Valid values are from\
\ 1 through 31. The birthday_day property is required if you\
\ use birthday_month."
anniversary:
type: "string"
example: "2006-11-15"
description: "The anniversary date for the contact. For example, this value\
\ could be the date when the contact first became a customer of an organization\
\ in Constant Contact. Valid date formats are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD,\
\ YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY, or M-DD-YYYY."
phone:
type: "string"
example: "555-555-5555"
description: "The primary phone number for the contact. Use this field to\
\ add the default kind of phone number to the imported contact's phone number.\
\ Default kind is other."
maxLength: 50
home_phone:
type: "string"
example: "555-555-5555"
description: "The home phone number for the contact."
maxLength: 50
work_phone:
type: "string"
example: "555-555-4444"
description: "The work phone number for the contact."
maxLength: 50
mobile_phone:
type: "string"
example: "555-555-3333"
description: "The mobile phone number for the contact."
maxLength: 50
other_phone:
type: "string"
example: "555-555-2222"
description: "A phone number for the contact."
maxLength: 50
street:
type: "string"
example: "123 Maple Lane"
description: "Line one of the primary street address for the contact. Use\
\ this field to add the default kind of street to the imported contact's\
\ street address. The default kind is home. which\
\ maps to the street_addresses array` in the response."
maxLength: 255
street2:
type: "string"
example: "Apt. 337"
description: "Line two of the primary street address for the contact. This\
\ value is automatically appended to the street value. Use\
\ this field to add the default kind for line two of the street address\
\ to the imported contact's address. The default kind is other."
maxLength: 255
city:
type: "string"
example: "Chicago"
description: "The name of the primary city for the contact. Use this field\
\ to add the default kind of city to the imported contact's home address.\
\ The default kind is home."
maxLength: 50
state:
type: "string"
example: "Illinois"
description: "The name of the primary state or province for the contact. Use\
\ this field to add the default kind of state to the imported contact's\
\ home address. The default kind is home."
maxLength: 50
zip:
type: "string"
example: "60609"
description: "The zip or postal code associated with the contact's primary\
\ address. Use this field to add the default kind of zip to the imported\
\ contact's street address. The default kind is home."
maxLength: 50
country:
type: "string"
example: "United States"
description: "The name of the primary country where the contact is located.\
\ Use this field to add the default kind of country to the imported contact's\
\ street address. The default kind is home."
maxLength: 50
home_street:
type: "string"
example: "123 Maple Lane"
description: "Line one of the home street address for the contact."
maxLength: 255
home_street2:
type: "string"
example: "Apt. 337"
description: "Line two of the home street address for the contact. This value\
\ is automatically appended to the home_street value."
maxLength: 255
home_city:
type: "string"
example: "Chicago"
description: "The name of the city where the contact lives."
maxLength: 50
home_state:
type: "string"
example: "Illinois"
description: "The name of the home state or province where the contact lives."
maxLength: 50
home_zip:
type: "string"
example: "60609"
description: "The zip or postal code associated with the contact's home address."
maxLength: 50
home country:
type: "string"
example: "United States"
description: "The name of the country where the contact lives."
maxLength: 50
work_street:
type: "string"
example: "123 Maple Lane"
description: "Line one of the work street address for the contact."
maxLength: 255
work_street2:
type: "string"
example: "Apt. 337"
description: "Line two of the work street address for the contact. This value\
\ is automatically appended to the work_street value."
maxLength: 255
work_city:
type: "string"
example: "Chicago"
description: "The name of the city where the contact works."
maxLength: 50
work_state:
type: "string"
example: "Illinois"
description: "The name of the state or province where the contact works."
maxLength: 50
work_zip:
type: "string"
example: "60609"
description: "The zip or postal code associated with the contact's work address."
maxLength: 50
work_country:
type: "string"
example: "United States"
description: "The name of the country where the contact works."
maxLength: 50
other_street:
type: "string"
example: "123 Maple Lane"
description: "Line one of the other street address for the contact."
maxLength: 255
other_street2:
type: "string"
example: "Apt. 337"
description: "Line two of the other street address for the contact. This value\
\ is automatically appended to the other_street value."
maxLength: 255
other_city:
type: "string"
example: "Chicago"
description: "The name of another city where the contact is located."
maxLength: 50
other_state:
type: "string"
example: "Illinois"
description: "The name of another state or province where the contact is located."
maxLength: 50
other_zip:
type: "string"
example: "60609"
description: "The zip or postal code associated with the contact's other address."
maxLength: 50
other_country:
type: "string"
example: "Canada"
description: "The name of another country where the contact is located."
maxLength: 50
cf:custom_field_name:
type: "string"
example: "Tesla S 2017"
description: "The name of this property is dynamic based on the custom fields\
\ you want to import. Use a key-value pair where the key is an existing\
\ custom field name prefixed with cf:, and the value is a custom\
\ field string value. For example, if you have a custom field named first_name\
\ you can use \"cf:first_name\":\"Joe\". Each contact can contain\
\ up to 25 different custom fields."
maxLength: 255
sms_number:
type: "string"
example: "5081231235"
description: "The US phone number to associate with the contact's SMS-enabled\
\ phone. The country code must be valid. Valid formats are 1231231234\
\ or 123-123-1234. Required if `email` is not specified."
maxLength: 16
sms_consent_date:
type: "string"
example: "07-03-2024"
description: "Required if the SMS permission is set to `explicit`. The date\
\ that the contact consented to receiving SMS messages. Valid date formats\
\ are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD, YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY,\
\ or M-DD-YYYY."
maxLength: 16
ContactsJsonImport:
type: "object"
required:
- "import_data"
- "list_ids"
properties:
import_data:
type: "array"
description: "An array containing the contacts to import."
items:
$ref: "#/definitions/JsonImportContact"
list_ids:
type: "array"
description: "Specify which contact lists you are adding all imported contacts\
\ to as an array of up to 50 contact list_id string values."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 50
minItems: 1
sms_permission_to_send:
type: "string"
example: "explicit"
description: "Specifies if the contact gave explicit SMS permission\
\ or if the SMS permission was not set (not_set). If `explicit,\
\ the sms_consent_date must be provided."
ListActivityRemoveContacts:
type: "object"
required:
- "list_ids"
- "source"
properties:
source:
type: "object"
description: "Specifies the contacts to remove from your target list(s) using\
\ one of several mutually exclusive properties."
properties:
list_ids:
type: "array"
description: "Include up to 50 list_id values to remove all\
\ contact list members from your target list(s). This property is mutually\
\ exclusive with all other source properties."
items:
type: "string"
format: "uuid"
example: "5bbf758c-d8ce-11e9-8d3a-fa163e56c9b0"
maxItems: 0
contact_ids:
type: "array"
description: "Include up to 500 contact_id values to remove\
\ the contacts from your target lists. This property is mutually exclusive\
\ with all other source properties."
items:
type: "string"
format: "uuid"
example: "4d88f172-21d1-11ea-b5ae-fa163e56c9b0"
maxItems: 0
all_active_contacts:
type: "boolean"
example: true
description: "Removes all active (billable) contacts from your targeted\
\ lists. This property is mutually exclusive with all other source\
\ properties."
default: false
engagement_level:
type: "string"
example: "high"
description: "Removes all contacts that meet the selected engagement_level\
\ to your target lists. This property is mutually exclusive\
\ with all other source properties."
tag_ids:
type: "array"
description: "Removes all contacts assigned with the specified tag_ids\
\ from your target lists. This property is mutually exclusive with all\
\ other source properties."
items:
type: "string"
format: "uuid"
example: "5e88f172-21d1-11ea-b5ae-fa163e56c9b9"
maxItems: 0
exclude:
type: "object"
properties:
contact_ids:
type: "array"
description: "Excludes specified contacts (contact_id) from\
\ being deleted from the target list and only applicable if using either\
\ the all_active_contacts (billable) or list_ids\
\ as the source."
items:
type: "string"
format: "uuid"
example: "4d88f172-21d1-11ea-b5ae-fa163e56c9b0"
description: "An array of contact_ids to exclude."
list_ids:
type: "array"
description: "Specify up to 50 target list_ids from which to\
\ remove contacts."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
description: "Target list from which to remove contacts."
maxItems: 0
ActivityListsMembership:
type: "object"
properties:
activity_id:
type: "string"
format: "uuid"
example: "86b90820-cc52-11ea-9dad-fa163e3d9194"
description: "Unique ID for the activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The state of the request: source object specifies which contacts you\
\ are adding to your targeted lists using one of four mutually exclusive\
\ properties."
properties:
list_ids:
type: "array"
description: "Specifies which contacts you are adding to lists as an array\
\ of up to 50 contact list_id values. This property is\
\ mutually exclusive with contact_ids, all_active_contacts\
\ (billable), and segment_id."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 50
all_active_contacts:
type: "boolean"
example: true
description: "Adds all active (billable) contacts to your targeted lists.\
\ This property is mutually exclusive with contact_ids,\
\ list_ids, and segment_id."
default: false
contact_ids:
type: "array"
description: "Specifies which contacts (up to 500) you are adding to lists\
\ as an array of contact_id values. This property is mutually\
\ exclusive with list_ids, all_active_contacts\
\ (billable), and segment_id."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 500
tag_ids:
type: "array"
description: "Adds all contacts assigned with the specified tag_ids\
\ to your target lists. This property is mutually exclusive with all\
\ other source properties."
items:
type: "string"
format: "uuid"
example: "5e88f172-21d1-11ea-b5ae-fa163e56c9b9"
maxItems: 0
engagement_level:
type: "string"
example: "high"
description: "Adds all contacts that meet the selected engagement_level\
\ to your target lists. This property is mutually exclusive\
\ with all other source properties."
segment_id:
type: "integer"
example: 12
description: "Specifies which contacts you are adding to lists as a single\
\ segment_id value. This property is mutually exclusive\
\ with list_ids, all_active_contacts (billable),\
\ and contact_ids."
exclude:
type: "object"
properties:
contact_ids:
type: "array"
description: "Excludes specified contacts (contact_id) from\
\ being added to the target list. Applicable if using either the all_active_contacts\
\ (billable) or list_ids as the source."
items:
type: "string"
format: "uuid"
example: "4d88f172-21d1-11ea-b5ae-fa163e56c9b0"
description: "An array of contact_ids to exclude."
list_ids:
type: "array"
description: "Specifies which lists (up to 50) you are adding your source\
\ contacts to."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 50
ListIdList100:
type: "object"
required:
- "list_ids"
properties:
list_ids:
type: "array"
description: "The array of contact lists list_id to delete."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 100
ActivityDeleteListsResponse:
type: "object"
properties:
activity_id:
type: "string"
example: "af86135c-8740-11eb-8abf-fa163ef30864"
description: "The system assigned UUID that uniquely identifies an activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The activity processing state."
readOnly: true
started_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when processing started for the activity,\
\ in ISO-8601 format."
readOnly: true
completed_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when processing completed for the activity,\
\ in ISO-8601 format."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when the activity was first requested, in\
\ ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when the activity was last updated, in ISO-8601\
\ format."
readOnly: true
percent_done:
type: "integer"
example: 25
description: "The processing percent complete for the activity."
readOnly: true
activity_errors:
type: "array"
description: "An array of error message strings describing the errors that\
\ occurred."
readOnly: true
items:
type: "string"
example: "Message describing the error condition."
description: "Message describing the error condition."
readOnly: true
status:
type: "object"
properties:
list_count:
type: "integer"
example: 5
description: "The number of lists deleted."
_links:
type: "object"
properties:
self:
type: "object"
description: "Link to the activity status to use in tracking the request\
\ status."
properties:
href:
type: "string"
example: "/v3/activities/04fa57a7-cf55-4185-cc1a-58ed29bf0a6a"
TagAddRemoveContacts:
type: "object"
required:
- "source"
- "tag_ids"
properties:
source:
type: "object"
description: "Select the source used to identify contacts to which a tag is\
\ added or removed. Source types are mutually exclusive."
properties:
contact_ids:
type: "array"
description: "An array of contacts IDs."
items:
type: "string"
format: "uuid"
example: "358f6a5e-21f6-11ea-a1cb-fa163e56c9b0"
maxItems: 500
list_ids:
type: "array"
description: "An array of list IDs ( list_id )."
items:
type: "string"
format: "uuid"
example: "6eeb4756-1cf5-11ea-859f-fa163e56c9b0"
maxItems: 50
tag_ids:
type: "array"
description: "An array of tags ( tag_id )."
items:
type: "string"
format: "uuid"
example: "c6915956-fde3-4081-977e-c3b8d1b068a7"
maxItems: 50
all_active_contacts:
type: "boolean"
example: false
description: "Use to identify contacts with an active (billable) status."
new_subscriber:
type: "boolean"
example: true
description: "Use to identify newly subscribed contacts."
exclude:
type: "object"
description: "Use to exclude specified contacts from being added or removed\
\ from a tag. Only applicable if the specified source is either all_active_contacts\
\ (billable) or list_ids."
properties:
contact_ids:
type: "array"
description: "Identifies the contacts, by contact_id, to\
\ exclude from the add or remove tags activity."
items:
type: "string"
format: "uuid"
example: "c7172ca0-f353-11e8-aff2-fa163e56c9b0"
tag_ids:
type: "array"
description: "An array of tags (tag_id) to add to all contacts\
\ meeting the specified source criteria."
items:
type: "string"
format: "uuid"
example: "5bbf758c-d8ce-11e9-8d3a-fa163e56c9b0"
description: "A list of tags to which contacts are added or removed."
maxItems: 50
ActivityTaggingStatus:
type: "object"
properties:
items_total_count:
type: "integer"
example: 100
description: "The total number of items processed for the requested activity."
items_completed_count:
type: "integer"
example: 25
description: "The total number of items for which processing completed for\
\ the requested activity."
description: "Provides the status for the requested activity."
ActivityLinks:
type: "object"
properties:
self:
type: "object"
properties:
href:
type: "string"
results:
type: "object"
properties:
href:
type: "string"
description: "Use this link to view activity results."
ActivityTagging:
type: "object"
required:
- "activity_id"
- "state"
properties:
activity_id:
type: "string"
example: "af86135c-8740-11eb-8abf-fa163ef30864"
description: "The system assigned UUID that uniquely identifies an activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The activity processing state."
readOnly: true
started_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when processing started for the activity,\
\ in ISO-8601 format."
readOnly: true
completed_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when processing completed for the activity,\
\ in ISO-8601 format."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when the activity was first requested, in\
\ ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2019-12-12T15:38:24Z"
description: "Timestamp showing when the activity was last updated, in ISO-8601\
\ format."
readOnly: true
percent_done:
type: "integer"
example: 25
description: "The processing percent complete for the activity."
readOnly: true
activity_errors:
type: "array"
description: "An array of error message strings describing the errors that\
\ occurred."
readOnly: true
items:
type: "string"
example: "Message describing the error condition."
description: "Message describing the error condition."
readOnly: true
status:
$ref: "#/definitions/ActivityTaggingStatus"
_links:
$ref: "#/definitions/ActivityLinks"
TagIdList500Limit:
type: "object"
required:
- "tag_ids"
properties:
tag_ids:
type: "array"
description: "The tag IDs (tag_ids) to delete."
items:
type: "string"
format: "uuid"
example: "00e4429c-3beb-11eb-9f34-fa163e56c9b9"
description: "A list of tag_ids. Mutually exclusive with other filters and\
\ criteria."
maxItems: 500
CustomFieldId100:
type: "object"
required:
- "custom_field_ids"
properties:
custom_field_ids:
type: "array"
description: "The array of custom field IDs to delete."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
maxItems: 0
ActivityDeleteCustomFields:
type: "object"
properties:
activity_id:
type: "string"
format: "uuid"
example: "86b90820-cc52-11ea-9dad-fa163e3d9194"
description: "Unique ID for the activity."
readOnly: true
state:
type: "string"
example: "initialized"
description: "The state of the request: promo_codes configured for the event."
items:
$ref: "#/definitions/PromoCodeDto"
reg_manually_closed_flag:
type: "boolean"
example: true
description: "Closes registration to prevent further registrations."
registration_end_time:
type: "string"
example: "2024-01-01T20:30:00Z"
description: "The date and time when registration should end. ISO format."
registration_type:
type: "string"
example: "TICKET"
description: "The registration type for the event."
restrict_to_single_ticket_flag:
type: "boolean"
example: true
description: "Restricts selection to a single ticket."
tickets_header:
type: "string"
example: "Tickets"
description: "The header to use for tickets."
track_id:
type: "string"
example: "s8zabc"
description: "The ticket track id."
readOnly: true
items:
type: "array"
readOnly: true
items:
$ref: "#/definitions/ItemDto"
title: "TrackDto"
EventMetaDataDto:
type: "object"
properties:
items_enabled:
type: "boolean"
example: true
description: "Specifies if the items are enabled for the event."
paid_event:
type: "boolean"
example: true
description: "Specifies if the event requires payment."
promo_codes_enabled:
type: "boolean"
example: true
description: "Specifies if promotion codes are enabled for the event."
title: "EventMetaDataDto"
description: "Additional information related to event"
EventPromotionDto:
type: "object"
properties:
assoc_activity_sub_type:
type: "string"
example: "EMAIL_INVITATION"
description: "The type of associated activity"
campaign_activity_id:
type: "string"
format: "uuid"
example: "123e4567-e89b-12d3-a456-426614174000"
description: "The unique identifier for the campaign activity."
document_id:
type: "string"
format: "uuid"
example: "123e4567-e89b-12d3-a456-426614174000"
description: "The unique identifier for the document."
ext_id:
type: "string"
format: "uuid"
example: "123e4567-e89b-12d3-a456-426614174000"
description: "The external identifier."
default:
type: "boolean"
example: false
description: "Whether this is the default promotion."
description: "Represents a promotion associated with an event."
EventSettingsDto:
type: "object"
properties:
event_requires_payments:
type: "boolean"
example: true
description: "Specifies if the event is configured to require payment."
item_configured:
type: "boolean"
example: false
description: "Specifies if items exist for the event."
online_payment_configured:
type: "boolean"
example: false
description: "Specifies if online payment is configured for the event."
payment_configured:
type: "boolean"
example: false
description: "Specifies if payment is configured for the event."
promo_code_configured:
type: "boolean"
example: false
description: "Specifies if promo code is configured for the event."
ticket_configured:
type: "boolean"
example: true
description: "Specifies if ticketing is configured for the event"
OnlineMeetingDto:
type: "object"
properties:
create_time:
type: "string"
example: "2023-11-17T17:33:21.652Z"
description: "Create time of the event. ISO format."
enabled_flag:
type: "boolean"
example: false
instructions:
type: "string"
label:
type: "string"
last_update_time:
type: "string"
example: "2023-12-07T13:18:39.681Z"
description: "Last modification time of the event. ISO format."
provider_type:
type: "string"
example: "ZOOM"
description: "The type of online meeting provider for the event"
url:
type: "string"
example: "https://meet.google.com/abc-defg-hij"
description: "The URL to use for the online meeting."
title: "OnlineMeetingDto"
EventDto:
type: "object"
required:
- "campaign_id"
- "default_track"
- "description"
- "event_end"
- "event_start"
- "event_type"
- "location_type"
- "name"
- "time_zone"
- "title"
properties:
description:
type: "string"
example: "It's time for the High-Class Reunion. A night of reminiscing, networking,\
\ and celebrating shared success amongst old friends."
description: "Provides the event description."
minLength: 0
maxLength: 600
title:
type: "string"
example: "Riverdale High - Class of 2015 Reunion"
description: "The title for the event. The title does not have to be unique\
\ for an account."
maxLength: 100
name:
type: "string"
example: "Class of 2015 Reunion"
description: "The name of the event, has to be unique for the account."
minLength: 1
maxLength: 100
event_id:
type: "string"
format: "uuid"
example: "05cf4d60-56ea-4023-bf49-b35e56a9c7b5"
description: "The ID that uniquely identifies the event."
campaign_id:
type: "string"
format: "uuid"
example: "05cf4d60-56ea-4023-bf49-b35e56a9c7b5"
description: "The system assigned ID that uniquely identifies the event and\
\ is identical to the `event_id`."
event_start:
type: "string"
example: "2023-12-01T20:30:00Z"
description: "The date the event starts."
event_end:
type: "string"
example: "2023-12-01T21:30:00Z"
description: "The date the event ends."
event_type:
type: "string"
example: "PERFORMING_ARTS"
description: "Identifies the event type."
eso:
type: "string"
example: "001wQREZJ98vGM_rGt-fbtpGw=="
description: "The encrypted SOId."
readOnly: true
contact:
description: "The contact information associated with the event."
$ref: "#/definitions/ContactDto"
create_time:
type: "string"
example: "2023-11-17T17:33:21.652Z"
description: "The time the event was created, in ISO format. Read-only."
active_time:
type: "string"
example: "2023-11-17T17:33:21.655Z"
description: "The time the event was published, in ISO format."
readOnly: true
cancelled_time:
type: "string"
example: "2023-11-17T17:33:21.655Z"
description: "The time the event was cancelled, in ISO format. Read-only."
readOnly: true
deleted_time:
type: "string"
example: "2023-11-17T17:33:21.655Z"
description: "The time the event was deleted, in ISO format. Read-only."
readOnly: true
last_update_time:
type: "string"
example: "2023-12-07T13:18:39.681Z"
description: "The date and time the event was last modified."
address:
$ref: "#/definitions/AddressDto"
currency_type:
type: "string"
example: "USD"
description: "The accepted currency for payments. Required for events collecting\
\ payments ['AUD','BRL','CAD','CHF','CZK','DKK','EUR','GBP','HKD','HUF','ILS','JPY','MXN','MYR','NOK','NZD','PHP','PLN','RUB','SEK','SGD','THB','TRY','TWD','USD']"
default_track:
$ref: "#/definitions/TrackDto"
display_contact_flag:
type: "boolean"
example: true
description: "Display or hide event contact information on the registration\
\ form and registration confirmation message."
display_end_time_flag:
type: "boolean"
example: true
description: "Display or hide the event end time on the registration form\
\ and registration confirmation message."
display_on_calendar_flag:
type: "boolean"
example: true
description: "Display the event on the Event Calendar."
display_time_zone_flag:
type: "boolean"
example: true
description: "Display the time zone on the registration form and registration\
\ confirmation message."
event_calendar_url:
type: "string"
example: "https://lp.constantcontactpages.com/ev/calendar/001wZREXJ98vGM_rGt-fbtpGw=="
description: "The event calendar URL."
readOnly: true
event_metadata:
description: "Includes additional event information."
$ref: "#/definitions/EventMetaDataDto"
event_code:
type: "string"
example: "EVENT124"
description: "The short code to use for the event."
event_promotions:
type: "array"
description: "List of event promotions."
readOnly: true
items:
$ref: "#/definitions/EventPromotionDto"
event_settings:
$ref: "#/definitions/EventSettingsDto"
event_widget_url:
type: "string"
example: "https://eventsfeed.constantcontact.com/widget/myevents.js?eso=001wZREXJ98vGM_rGt-fbtpGw=="
description: "The event widget URL."
readOnly: true
failed_campaign_activities:
type: "array"
description: "List of failed campaign activities."
readOnly: true
items:
type: "string"
format: "uuid"
description: "Lists the campaign activity ID for any failed campaign activities."
location_type:
type: "string"
example: "PHYSICAL"
description: "Specifies if the event is physical and/or virtual, or to be\
\ determined."
notify_owner_on_reg:
type: "boolean"
example: true
description: "If `true`, sends an email to the event owner when a registration\
\ is made."
online_meeting:
description: "The online meeting information for a virtual event."
$ref: "#/definitions/OnlineMeetingDto"
registration_url:
type: "string"
example: "https://l1.constantcontactpages.com/ev/reg/scrk2u2"
description: "The event registration URL."
readOnly: true
status:
type: "string"
example: "ACTIVE"
description: "Specifies the event's current status."
time_zone:
type: "string"
example: "US/Eastern"
description: "The time zone where the event takes place."
time_zone_abbreviation:
type: "string"
example: "EST"
description: "The abbreviation to use to indicate the time zone where the\
\ event takes place."
readOnly: true
EventCopyRequestDto:
type: "object"
required:
- "target_event_name"
properties:
target_event_name:
type: "string"
example: "My Copied Event"
description: "Name for the copied event. Must be unique for the account."
source_campaign_activities:
type: "array"
example:
- "550e8400-e29b-41d4-a716-446655440000"
- "304de5ff-6d25-4395-87db-45d10e144659"
description: "Optional array of campaign activity UUIDs to copy. If not provided,\
\ all activities are copied."
items:
type: "string"
format: "uuid"
description: "Request payload for copying an event."
OrderTicketKeysRequestDto:
type: "object"
required:
- "order_ticket_keys"
properties:
order_ticket_keys:
type: "array"
example:
- "a1b2c3"
- "d4e5f6"
description: "Array of order ticket keys to process."
items:
type: "string"
description: "Request payload for ticket check-in operations."
SimpleFieldDto:
type: "object"
properties:
display_order:
type: "integer"
format: "int32"
example: 1
description: "If specified, determines the order in which to return a subset\
\ of contact's details. For example, if you want a contact's email address\
\ to display first, set the display_order to 1\
\ within the field_label: CONTACT_EMAIL_ADDRESS\
\ details section."
field_label:
type: "string"
example: "Email Address"
description: "The label used to identify a field within each contact details\
\ section."
field_name:
type: "string"
example: "CONTACT_EMAIL_ADDRESS"
description: "The formatted name used to identify a field within each contact\
\ details section."
field_type:
type: "string"
example: "TEXT"
description: "Identifies the type of field. Acceptable values include; TEXT_AREA,\
\ DATE, SINGLE_SELECT,MULTI_SELECT, INFORMATIONAL, TERMS_CONDITIONS, ADDRESS,\
\ HEADER, DIVIDER, STATIC_TEXT."
label_key:
type: "string"
example: "registration.field.label.contact_email_address"
description: "The label used to identify a contact's registration details."
field_value:
type: "string"
example: "john.doe@example.com"
description: "The value of the field for this contact. For example, if the\
\ field is an email address, the field_value would contain the actual email\
\ address."
choices:
type: "array"
example:
- "Option 1"
- "Option 2"
- "Option 3"
description: "For SINGLE_SELECT and MULTI_SELECT field types, this array contains\
\ the available options the registrant can choose from."
items:
type: "string"
description: "An array of contact details."
RegistrationTicketDto:
type: "object"
properties:
checked_in_time:
type: "string"
format: "date-time"
example: "2025-11-20T16:13:02.072Z"
description: "The event check in time date, in ISO format."
editable:
type: "boolean"
example: false
description: "Set to true to allow or false to not\
\ allow registrations to be modified."
order_ticket_key:
type: "string"
example: "a1b2c3"
description: "The system generated number used to identify a ticket order."
price:
type: "number"
example: 25.0
description: "The price for a ticket."
ticket_name:
type: "string"
example: "General Admission"
description: "The name used to identify the ticket."
fields:
type: "array"
items:
$ref: "#/definitions/SimpleFieldDto"
LineItemDetailsDto:
type: "object"
properties:
amount:
type: "string"
example: "$25.00"
description: "The formatted amount of the line item."
amount_unformatted:
type: "number"
example: 25.0
description: "The unformatted amount of the line item."
line_item_type:
type: "string"
example: "TICKET"
description: "Type of line item."
name:
type: "string"
example: "General Admission"
description: "The name of the line item."
OrderDetailsDto:
type: "object"
properties:
details:
type: "array"
items:
$ref: "#/definitions/LineItemDetailsDto"
number:
type: "string"
example: "ZWbsLNGrHT"
description: "The system assigned string value used to identify the event\
\ order."
payment_method:
type: "string"
example: "STRIPE"
description: "The payment method used when the order was placed. Acceptable\
\ payment methods include; `STRIPE` and `PAYPAL`."
payment_status:
type: "string"
example: "PENDING"
description: "The event registration payment status. Acceptable values include;\
\ PENDING, PAID, REFUNDED, CANCELLED,\
\ FAILED, CHARGED_BACK, PENDING,\
\ UNKNOWNregistration_id."
checkin_status:
type: "string"
example: "NOT_CHECKED_IN"
description: "Provides the status of eligible checkin tickets."
eligible_checkin_tickets:
type: "integer"
format: "int32"
example: 1
description: "The total number of tickets eligible for checkin."
registration_date:
type: "string"
format: "date-time"
example: "2025-11-20T16:13:02.072Z"
description: "The event registration date, in ISO format."
registration_status:
type: "string"
example: "REGISTERED"
description: "Provides the current registration status; REGISTERED,\
\ PENDING, CANCELED, EXPIRED, IN_PROGRESS,\
\ FAILED."
display_physical_tickets:
type: "boolean"
example: true
description: "Determines if the physical tickets should display or not display."
contact:
type: "array"
items:
$ref: "#/definitions/SimpleFieldDto"
tickets:
type: "array"
items:
$ref: "#/definitions/RegistrationTicketDto"
order_summary:
$ref: "#/definitions/OrderDetailsDto"
Links-2:
type: "object"
properties:
next:
$ref: "#/definitions/Href"
prev:
$ref: "#/definitions/Href"
self:
$ref: "#/definitions/Href"
RegistrantInformationLiteDto:
type: "object"
properties:
checkedIn_tickets:
type: "integer"
format: "int32"
example: 1
description: "The total number of tickets processed to check in for the event."
checkin_status:
type: "string"
example: "CHECKED_IN"
description: "The status of the check-in."
eligible_checkin_tickets:
type: "integer"
format: "int32"
example: 2
description: "The current checkin status."
email_address:
type: "string"
example: "sarah_lang@mymail.com"
description: "The email address associated with the registered event user."
first_name:
type: "string"
example: "sarah"
description: "The first name of the person that registered for the event."
last_name:
type: "string"
example: "lang"
description: "The last name of the person that registered for the event."
new_contact:
type: "boolean"
example: true
description: "Set to true to indicate that the contact is new,\
\ otherwise set to false."
payment_status:
type: "string"
example: "PAID"
description: "The current payment status for a registration."
registration_id:
type: "string"
example: "3f1ceb43-f858-432e-b287-30a6d20d1250"
description: "The ID that uniquely identifies a registration."
registration_status:
type: "string"
example: "REGISTERED"
description: "The status of a registration. Acceptable values include: PENDING,\
\ REGISTERED, CANCELED, EXPIRED,\
\ IN_PROGRESS, FAILED."
registration_time:
type: "string"
format: "date-time"
example: "2025-11-20T16:13:02.072Z"
description: "The time of event registration, in ISO format."
tickets:
type: "integer"
format: "int32"
example: 5
description: "Total number of tickets associated with a registration."
total:
type: "number"
example: 100.0
description: "The total amount paid for a registration."
track_key:
type: "string"
example: "wfhmkz"
description: "System generated string used to track a registration."
PaginatedRegistrations:
type: "object"
properties:
_links:
$ref: "#/definitions/Links-2"
next_cursor:
type: "string"
description: "Use to get the next page of results."
prev_cursor:
type: "string"
description: "Use to get the previous page of results."
records:
type: "array"
items:
$ref: "#/definitions/RegistrantInformationLiteDto"
total_records:
type: "integer"
format: "int32"
example: 563
description: "The total number of resulting records."
RegistrationStatusUpdateRequestDto:
type: "object"
required:
- "registration_ids"
- "registration_status"
properties:
registration_ids:
type: "array"
example:
- "0c6a6ce8-e620-4ffc-92e6-6ffb689eb9d2"
- "15cdb4d3-86b9-4b9d-9431-4a5a0de53c4f"
description: "List of registration IDs to update."
items:
type: "string"
registration_status:
type: "string"
example: "CANCELED"
description: "New registration status to set."
description: "Request payload to update registration status."
RegistrationStatusUpdateResponseDto:
type: "object"
properties:
failed_registration_ids:
type: "array"
example:
- "278f74c7-0765-4086-a644-f99fec6817e8"
description: "List of registration IDs that failed to update. Empty or omitted\
\ means all updates succeeded."
items:
type: "string"
description: "Response payload for bulk status update operations. Contains list\
\ of registration IDs that failed to update."
PaymentStatusUpdateRequestDto:
type: "object"
required:
- "payment_status"
- "registration_ids"
properties:
registration_ids:
type: "array"
example:
- "4460bdcd-1a8a-434a-a7bf-c72a500743b2"
- "2ed7e310-ab71-4e8f-8863-8784e7ee4183"
description: "List of registration IDs to update."
items:
type: "string"
payment_status:
type: "string"
example: "Paid"
description: "New payment status to set."
description: "Request payload to update payment status."
AccountInfoDto:
type: "object"
properties:
account_url:
type: "string"
description: "The account URL of the connected user's profile. Note: Facebook\
\ & Instagram do not support this."
readOnly: true
display_name:
type: "string"
example: "John Doe"
description: "Display name of the connected user"
readOnly: true
image_url:
type: "string"
example: "https://example.com/avatar.jpg"
description: "URL of the connected user's avatar or image"
readOnly: true
network:
type: "string"
example: "facebook"
description: "The social network this account belongs to"
readOnly: true
network_account_id:
type: "string"
description: "The user identifier on the given network. Note: this is the\
\ network _account_ id not the _profile_ id."
readOnly: true
username:
type: "string"
example: "johndoe"
description: "Username of the connected user on the social network"
readOnly: true
ProfileDto:
type: "object"
required:
- "connected"
properties:
accessible:
type: "boolean"
example: false
description: "Whether the profile is currently accessible for posting. Publishing\
\ a post will fail if its profile is not currently accessible. Only populated\
\ when the request includes the query parameter include=accessible."
readOnly: true
account_info:
readOnly: true
$ref: "#/definitions/AccountInfoDto"
connected:
type: "boolean"
example: true
description: "Whether this profile is currently connected. You can only create\
\ and publish posts with connected profiles."
image_url:
type: "string"
example: "https://example.com/profile-image.jpg"
description: "URL of the profile's image or avatar"
readOnly: true
name:
type: "string"
example: "My Business Page"
description: "Display name or handle of the profile"
readOnly: true
network:
type: "string"
example: "facebook"
description: "The social network this profile belongs to"
readOnly: true
network_profile_id:
type: "string"
description: "The social network-specific identifier for this profile."
readOnly: true
network_user_id:
type: "string"
description: "The social network-specific identifier for the user who owns\
\ this profile."
readOnly: true
profile_id:
type: "string"
description: "Unique identifier for this profile"
readOnly: true
settings:
type: "object"
description: "Network-specific settings for the profile. Only populated\ \ when request specifies accessible and settings are available for network.\ \ Currently only TikTok has the following available settings:
\"\
content\": {\n\t\"comment_disabled\": Boolean,\n\t\"duet_disabled\": Boolean,\n\
\t\"stitch_disabled\": Boolean,\n\t\"max_video_post_duration_sec\": Integer\n\
}"
readOnly: true
additionalProperties:
type: "object"
properties: {}
url:
type: "string"
example: "https://www.facebook.com/mybusinesspage"
description: "URL to the profile on the social network"
readOnly: true
description: "Describes a social network profile (Business Page, Company Page/Organization,\
\ etc.)This should always\
\ be null when creating a new hashtag group. When updating\
\ a hashtag group, this should either be set to null, or be\
\ the same value as when the group was retrieved.
This name will be\
\ sanitized before saving, which may include trimming whitespace, truncation,\
\ and/or removing invalid characters. If the sanitized name results in a\
\ blank string, it will not be able to be saved, and any create or update\
\ operation will fail.
The name is currently limited to a maximum of\
\ 150 \"characters\", but the effective length may be shorter, depending\
\ on whether some special characters, such as emoji, are used.
Hashtag names\
\ do not include any leading '#' character. They cannot consist of any characters\
\ other than alphanumeric characters and '_' (underscore). The hashtag name\
\ cannot begin or end with an underscore. Hashtag names may begin with a\
\ letter or a number, and may consist of only numbers. Hashtag names are\
\ currently limited to a maximum of 30 characters.
The list will maintain\
\ its order when persisted and retrieved. If duplicates exist in the list,\
\ they will be removed when saving, and the first of the duplicates will\
\ retain its position.
This link does not include the\ \ scheme or origin of the full URL.
" readOnly: true description: "Represents a link to a page of results." ResourcePageLinks: type: "object" properties: next: description: "The URI for the next page of results. If the current page is\ \ the last page, this link may not be present." readOnly: true $ref: "#/definitions/ResourcePageLink" previous: description: "The URI for the previous page of results. If the current page\ \ is the first page, this link may not be present." readOnly: true $ref: "#/definitions/ResourcePageLink" description: "Pagination links for navigating through pages of results." ResourcePageMetadata: type: "object" required: - "number" - "size" - "totalElements" - "totalPages" properties: number: type: "integer" format: "int32" description: "The number of items included in this response (in_embedded.hashtag_groups).The\
\ maximum items that can be returned in a single call is currently limited\
\ to the lesser of the limit argument and 5.
limit\
\ argument or the default of 5."
readOnly: true
totalElements:
type: "integer"
format: "int32"
description: "The total number of results available.If the totalElements\
\ is greater than size, then it is necessary to make multiple\
\ requests for all of the available pages of results.
The pages can be iterated\
\ through using the next and prev links, or by\
\ manually calling the endpoint and iterating through the pages using the\
\ page argument.
This may be more useful\ \ for some user experience implementations. This is not necessarily a standard\ \ HAL element, but it is included in the response by default.
" PagedResourcesResourceHashtagGroupDto: type: "object" required: - "_embedded" - "_links" - "page" properties: _embedded: description: "The embedded resource(s)." readOnly: true $ref: "#/definitions/EmbeddedResources" _links: description: "The pageable links." readOnly: true $ref: "#/definitions/ResourcePageLinks" page: description: "The page metadata." readOnly: true $ref: "#/definitions/ResourcePageMetadata" description: "A paged response containing a page of HashtagGroupDto objects." ImageDto: type: "object" required: - "url" properties: image_id: type: "string" readOnly: true url: type: "string" description: "The url of the image. Each component of the image url must be\ \ appropriately encoded such that it does not include any illegal characters.\ \ Example: https://www.host.com/path+with%20space?q=query%20with+space#fragment+with%20space" LinkMetadata: type: "object" properties: createdAt: type: "string" format: "date-time" description: type: "string" description: "Description or summary of the linked page" image: type: "string" description: "URL of the preview image for the link" linkId: type: "string" description: "Identifier of the parent link this metadata belongs to" readOnly: true linkMetaDataId: type: "string" description: "Unique identifier for this link metadata record" readOnly: true network: type: "string" description: "The social network this link metadata is associated with" title: type: "string" description: "Title of the linked page" updatedAt: type: "string" format: "date-time" description: "Metadata for a link preview associated with a post" LinkDto: type: "object" required: - "url" properties: is_preview: type: "boolean" example: false description: "Whether or not the linkMetadata has to be fetched for this particular\ \ link " link_id: type: "string" readOnly: true link_metadata: type: "array" description: "Metadata like text, description, image associated with the link.\ \ Writing to this stores a placeholder value for link metadata. Supporting\ \ networks will store their own link metadata upon publishing the link. " items: $ref: "#/definitions/LinkMetadata" linked_activity_id: type: "string" description: "If the link url is related to another activity (i.e. URL of\ \ a sign up landing page, shoppable landing page, email permalink, etc)\ \ this is the activity id of the related activity." long_url: type: "string" description: "the long version of the url by the UrlShortener service. Each\ \ component of the long link url must be appropriately encoded such that\ \ it does not include any illegal characters. Example: https://www.host.com/path+with%20space?q=query%20with+space#fragment+with%20space" short_url: type: "string" description: "the shortened url by the UrlShortener service. Each component\ \ of the shortened link url must be appropriately encoded such that it does\ \ not include any illegal characters. Example: https://www.host.com/path+with%20space?q=query%20with+space#fragment+with%20space" url: type: "string" description: "The url as entered by the user. May or may not include the protocol:\ \ 'google.com', 'www.google.com', 'http://google.com', 'http://google.com/'.\ \ Each component of the link url must be appropriately encoded such that\ \ it does not include any illegal characters. Example: https://www.host.com/path+with%20space?q=query%20with+space#fragment+with%20space" ProfilePostProfileDto: type: "object" required: - "profile_id" properties: account_username: type: "string" description: "The human-readable name of the account-owner of this profile" readOnly: true campaign_activity_id: type: "string" description: "the post's campaign activity id. This maps both to the activity\ \ in campaign-api and the post entity in the social-reach-svc database.\ \ Although it is optional, it should be included when updating\ \ a post" readOnly: true campaign_activity_status: type: "string" description: "the status of the post activity" readOnly: true campaign_activity_status_date: type: "string" format: "date-time" description: "The activity's date. If the activity isSCHEDULED,\
\ this will typically be the same as the scheduled date, if set. Otherwise,\
\ it is the last-modified timestamp"
readOnly: true
campaign_activity_status_message:
type: "string"
description: "A human-readable message related to the current status of the\
\ post activity. This could be a generic message set by social-reach-svc\
\ or a specific, detailed message reported by the social network"
readOnly: true
image_url:
type: "string"
description: "the url for the profile's image. This image can sometimes become\
\ stale, and is only refreshed when getting profiles with include=accessible"
readOnly: true
network:
type: "string"
example: "facebook"
description: "The social network this profile belongs to"
readOnly: true
network_post_id:
type: "string"
description: "the social network's reference for this post. Only set/valid\
\ if the status is DONE."
readOnly: true
post_url:
type: "string"
description: "the permalink url to the post on the social network. This is\
\ only set/valid if the status is DONE."
readOnly: true
profile_id:
type: "string"
profile_name:
type: "string"
readOnly: true
description: "Describes the details of a post to a particular profile"
MapOfstringAndstring:
type: "object"
additionalProperties:
type: "string"
VideoSourceDto:
type: "object"
required:
- "source"
properties:
profile_id:
type: "string"
description: "The profile id this source is associated with. This may be null\
\ if this source has not been published yet."
readOnly: true
profile_post_id:
type: "string"
description: "The profile post id this source is associated with. This may\
\ be null if this source has not been published yet."
readOnly: true
source:
type: "string"
description: "The source type indicating where the video is hosted. Values\
\ include the social network name (e.g. facebook, instagram,\
\ linkedin, tiktok) for published videos, s3\
\ for pending uploads, or public for publicly accessible URLs."
thumbnail_url:
type: "string"
description: "The URL of a thumbnail image for the video, if available."
video_source_id:
type: "string"
description: "The unique (database) id for this object. It should only ever\
\ be null for an un-saved object. It is automatically generated\
\ by the database, and should be considered read-only. When re-saving a\
\ video post, any VideoSourceDto objects should include their\
\ original videoSourceId."
readOnly: true
video_url:
type: "string"
description: "The URL of the video source. Unless the source\
\ is public, this should only be set by the back-end."
description: "Describes where the source for a video is located. A single video\
\ can eventually have multiple sources. While a post is in its DRAFT\
\ or SCHEDULED phases, there will be a single source, which will\
\ typically be either \"local\" (it is still in the browser, and the video is\
\ being rendered from a local File object), or \"s3\" (the file\
\ has been uploaded to S3, and if not set, the URL for that video can be automatically\
\ generated). As the video is uploaded and posted to each social profile, a\
\ new source object will be created that includes the appropriate references\
\ to the uploaded media and the related post."
VideoDto:
type: "object"
required:
- "duration_seconds"
- "file_name"
- "file_size_bytes"
- "object_id"
- "upload_elapsed_ms"
- "video_sources"
properties:
duration_seconds:
type: "number"
format: "double"
description: "The duration (or play time) of the video (in seconds). This\
\ should be set once by the client, and never change."
file_name:
type: "string"
description: "The original file name of the video file. This should be set\
\ once by the client, and never change."
file_size_bytes:
type: "integer"
format: "int64"
description: "The original file size of the video file in bytes. This should\
\ be set once by the client, and never change."
object_id:
type: "string"
description: "The id of the video \"object\". This should be unique for each\
\ video that is uploaded to S3, and should be the same as the object_id\
\ returned from the endpoint to retrieve the upload URL. Typically, the\
\ URL of the video, when its source is \"s3\"\
\ will be a combination of an AWS base URL, the S3 bucket name, and this\
\ id. It should only ever be null for an uninitialized VideoDto.\
\ Once set, it should never change for a given VideoDto."
upload_elapsed_ms:
type: "integer"
format: "int64"
description: "The amount of time it took to upload the video from the front-end\
\ app to S3 (in milliseconds). This is included for potential diagnostic\
\ and/or analytics purposes. This should be set once by the client, and\
\ never change. If {@code source} is set to {@code public}, this should\
\ be set to 0."
video_id:
type: "string"
description: "The unique id for this video entry. This is generated automatically\
\ by the database and should be considered read-only. It should only ever\
\ be null for an un-saved VideoDto."
readOnly: true
video_sources:
type: "array"
description: "Data indicating location(s) of the \"source\" of the video,\
\ and its \"status\". Initially, there should be a single entry, with the\
\ source set to s3. The URL will be generated\
\ based on the known bucket name and the S3 object id before persisting.\
\ As this video is posted to the target profile(s), additional metadata\
\ items will be added, indicating the \"source\" as the target network,\
\ and the URLs for the video and thumbnail as the uploaded resource, and\
\ then populating the profile id and profile post id. Once all posts have\
\ been complete, the \"original\" source: \"s3\" data will\
\ be removed, since the S3 object may no longer be available. The\
\ client should initially only set a single source of type \"s3\"\
before saving, and this field should be considered read-only after\
\ that."
items:
$ref: "#/definitions/VideoSourceDto"
description: "Represents a video file that has been uploaded for posting as part\
\ of a PostContent entity (text, images, links, videos). Contains information\
\ about the original file and its identity in S3, as well as links to video\
\ source information that indicate the potential various locations of the video,\
\ its thumbnail image, and potential post-related information after upload."
ProfilePostDto:
type: "object"
required:
- "profiles"
properties:
images:
type: "array"
items:
$ref: "#/definitions/ImageDto"
links:
type: "array"
items:
$ref: "#/definitions/LinkDto"
post_content_id:
type: "string"
description: "Although this is optional, it should be included when\
\ updating a post."
readOnly: true
profiles:
type: "array"
description: "This can be an empty list, as long as the post is in DRAFT status."
items:
$ref: "#/definitions/ProfilePostProfileDto"
settings:
type: "object"
description: "Network-specific post settings. If no settings are provided,\
\ this field will be omitted in the JSON response.\n\nAll values will be\
\ persisted as strings.\n\nCurrently, only TikTok has the following\
\ available settings:\nExample:\n{\n\t\"settings\": {\n\t\t\"tiktok\"\
: {\n\t\t\t\"disable_comment\": \"true\",\n\t\t\t\"disable_duet\": \"false\"\
,\n\t\t\t\"disable_stitch\": \"true\",\n\t\t\t\"auto_add_music\": \"false\"\
\n\t\t}\n\t}\n}"
additionalProperties:
$ref: "#/definitions/MapOfstringAndstring"
text:
type: "string"
description: "The requirement of text content depends on the network being\
\ posted to. In DRAFT status, this is always optional."
videos:
type: "array"
description: "videos to be included in the post. Note that the presence of\
\ images, videos, and link previews in a post are mutually exclusive. Also\
\ note that currently, only a single video is supported."
items:
$ref: "#/definitions/VideoDto"
PostDto:
type: "object"
required:
- "profile_posts"
properties:
campaign_id:
type: "string"
description: "The campaign Id for this post. When creating a post, if this\
\ is not specified, a new campaign object will be created. If campaign_id\
\ is specified, then it must be the id of an existing campaign for the specified\
\ accountId, and that campaign must be in PLACEHOLDER\
\ status, and must be of SOCIAL_POSTS type, otherwise\
\ the request will fail"
campaign_properties:
type: "object"
description: "Additional campaign properties associated to a social post.This\
\ is only honored at post create time and not available to be updated."
additionalProperties:
type: "string"
marketing_plan_id:
type: "string"
description: "The UUID of the marketing plan that this post is associated\
\ with.This is only honored at post create time and not available to be\
\ updated."
name:
type: "string"
example: "My Social Post"
description: "The name of the post campaign. If not provided during creation,\
\ a default campaign name will be used. When creating or updating the post,\
\ this value will be sanitized to be appropriate for campaign-api, and the\
\ value returned may not match what was sent."
profile_posts:
type: "array"
items:
$ref: "#/definitions/ProfilePostDto"
scheduled_time:
type: "string"
example: "2026-03-15T14:30:00.000Z"
description: "The date and time to publish the post in ISO-8601 format. For\
\ example, 2026-03-15T14:30:00.000Z. If not specified, the publish job is\
\ scheduled to execute immediately."
shared_campaign_ids:
type: "array"
description: "The ids of campaigns which this social post is shared from.\
\ Expected at this time to be null or list of one. Only honored at post\
\ create time and not available to be updated."
readOnly: true
items:
type: "string"
status:
type: "string"
example: "SCHEDULED"
description: "The status of the post. For create requests, only DRAFT and\
\ SCHEDULED are valid."
description: "Represents a social media post campaign, which can include multiple\
\ posts to multiple social profiles, with either identical or network-specific\
\ content."
SegmentMaster:
type: "object"
properties:
name:
type: "string"
example: "Re-engage contacts who did not open the last 5 campaigns."
description: "The segment's unique descriptive name."
segment_id:
type: "integer"
format: "int32"
example: 14
description: "The system generated number that uniquely identifies the segment."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The system generated date and time that the segment was created\
\ (ISO-8601 format)."
readOnly: true
edited_at:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The system generated date and time that the segment's name\
\ or segment_criteria was last updated (ISO-8601 format)."
readOnly: true
Next:
type: "object"
required:
- "href"
properties:
href:
type: "string"
description: "The next link in the page, or null if there are no additional\
\ pages."
Links-3:
type: "object"
required:
- "next"
properties:
next:
description: "HAL property that contains next link if applicable."
$ref: "#/definitions/Next"
SegmentsDTO:
type: "object"
required:
- "segments"
properties:
segments:
type: "array"
description: "Lists all segments for the account."
items:
$ref: "#/definitions/SegmentMaster"
_links:
description: "HAL property that contains next link if applicable."
$ref: "#/definitions/Links-3"
SegmentData:
type: "object"
required:
- "name"
- "segment_criteria"
properties:
name:
type: "string"
example: "Re-engage contacts who did not open the last 5 email campaign activities."
description: "The segment's unique descriptive name."
segment_criteria:
type: "string"
example: "{\"version\":\"1.0.0\",\"criteria\":{\"type\":\"and\",\"group\"\
:[{\"source\":\"tracking\",\"field\":\"not_opened\",\"op\":\"contains-any\"\
,\"const_value\":\"last-n-campaigns\",\"param\":\"5\"}]}}"
description: "The segment_criteria specifies the contact data\
\ that Constant Contact uses to evaluate and identify contacts that meet\
\ your criteria. The segment_criteria must be formatted as\
\ single-string escaped JSON. The top-level group type\
\ must be add."
maxLength: 20000
SegmentDetail:
type: "object"
properties:
name:
type: "string"
example: "Re-engage contacts who did not open the last 5 email campaign activities."
description: "The segment's unique descriptive name."
segment_criteria:
type: "string"
example: "{\"version\":\"1.0.0\",\"criteria\":{\"type\":\"and\",\"group\"\
:[{\"source\":\"tracking\",\"field\":\"not_opened\",\"op\":\"contains-any\"\
,\"const_value\":\"last-n-campaigns\",\"param\":\"5\"}]}}"
description: "The segment's contact selection criteria formatted as single-string\
\ escaped JSON."
maxLength: 20000
segment_id:
type: "integer"
format: "int32"
example: 14
description: "The system generated number that uniquely identifies the segment."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The system generated date and time (ISO-8601) that the segment\
\ was created."
readOnly: true
edited_at:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The system generated date and time (ISO-8601) that the segment's\
\ name or segment_criteria was last updated."
readOnly: true
SegmentName:
type: "object"
required:
- "name"
properties:
name:
type: "string"
example: "Contacts who did not open any email campaign within the last 100\
\ days."
description: "The segment's unique descriptive name."
EmailAddress:
type: "object"
required:
- "address"
properties:
address:
type: "string"
example: "dlang@example.com"
description: "The email address of the contact. The email address must be\
\ unique for each contact."
maxLength: 80
permission_to_send:
type: "string"
example: "implicit"
description: "Identifies the type of permission that the Constant Contact\
\ account has to send email to the contact. Types of permission: explicit,\
\ implicit, not_set, pending_confirmation, temp_hold, unsubscribed."
created_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "Date and time that the email_address was created, in ISO-8601\
\ format. System generated."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the email_address was last updated, in ISO-8601\
\ format. System generated."
readOnly: true
opt_in_source:
type: "string"
example: "Contact"
description: "Describes who opted-in the email_address; valid values are Contact\
\ or Account. Your integration must accurately identify opt_in_source\
\ for compliance reasons; value is set on POST, and is read-only going forward."
opt_in_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the email_address was opted-in to receive\
\ email from the account, in ISO-8601 format. System generated."
readOnly: true
opt_out_source:
type: "string"
example: "Contact"
description: "Describes the source of the unsubscribed/opt-out action: either\
\ Account or Contact. If the Contact opted-out, then the account cannot\
\ send any campaigns to this contact until the contact opts back in. If\
\ the Account, then the account can add the contact back to any lists and\
\ send to them. Displayed only if contact has been unsubscribed/opt-out."
readOnly: true
opt_out_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the contact unsubscribed/opted-out of receiving\
\ email from the account, in ISO-8601 format. Displayed only if contact\
\ has been unsubscribed/opt-out. System generated."
readOnly: true
opt_out_reason:
type: "string"
example: "I am no longer interested in this service."
description: "The reason, as provided by the contact, that they unsubscribed/opted-out\
\ of receiving email campaigns."
maxLength: 255
confirm_status:
type: "string"
example: "confirmed"
description: "Indicates if the contact confirmed their email address after\
\ they subscribed to receive emails. Possible values: pending, confirmed,\
\ off."
readOnly: true
description: "A contact subresource describing the contact's email address."
ContactCustomField:
type: "object"
required:
- "custom_field_id"
properties:
custom_field_id:
type: "string"
format: "uuid"
example: "1618ae62-4752-11e9-9c8a-fa163e6b01c1"
description: "The custom field's unique ID"
value:
type: "string"
example: "Tesla S 2017"
description: "The custom field value."
maxLength: 255
choice_ids:
type: "array"
description: "For >multi_select and single_select\
\ data types, the ID that uniquely identifies the choice associated with\
\ a the custom field."
items:
type: "string"
example: "000001"
description: "Custom fields allow Constant Contact users to add custom content\
\ to a contact that can be used to personalize emails in addition to the standard\
\ set of variables available for email personalization."
PhoneNumber:
type: "object"
properties:
phone_number_id:
type: "string"
format: "uuid"
example: "6eec28a6-1cf5-11ea-859f-fa163e56c9b0"
description: "Unique ID for the phone number"
readOnly: true
phone_number:
type: "string"
example: "+1-555-555-5555"
description: "The contact's phone number."
maxLength: 25
kind:
type: "string"
example: "home"
description: "Identifies the type of phone number; valid values are home,\
\ work, mobile, or other."
created_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "Date and time that the street address was created, in ISO-8601\
\ format. System generated."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the phone number was last updated, in ISO-8601\
\ format. System generated."
readOnly: true
update_source:
type: "string"
example: "Account"
description: "Identifies who last updated the phone number; valid values are\
\ Contact or Account"
create_source:
type: "string"
example: "Account"
description: "Identifies who added the phone number; valid values are Contact\
\ or Account."
StreetAddress:
type: "object"
required:
- "kind"
properties:
street_address_id:
type: "string"
format: "uuid"
example: "977a9a2e-3e00-11ea-804b-fa163e56c9b0"
description: "Unique ID for the street address"
readOnly: true
kind:
type: "string"
example: "home"
description: "Describes the type of address; valid values are home, work,\
\ or other."
street:
type: "string"
example: "123 Kashmir Valley Road"
description: "Number and street of the address."
maxLength: 255
city:
type: "string"
example: "Chicago"
description: "The name of the city where the contact lives."
maxLength: 50
state:
type: "string"
example: "Illinois"
description: "The name of the state or province where the contact lives."
maxLength: 50
postal_code:
type: "string"
example: "60609"
description: "The zip or postal code of the contact."
maxLength: 50
country:
type: "string"
example: "United States"
description: "The name of the country where the contact lives."
maxLength: 50
created_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "Date and time that the street address was created, in ISO-8601\
\ format. System generated."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the street address was last updated, in ISO-8601\
\ format. System generated."
readOnly: true
Note:
type: "object"
properties:
note_id:
type: "string"
format: "uuid"
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
description: "The ID that uniquely identifies the note (UUID format)."
created_at:
type: "string"
format: "date-time"
example: "2021-05-12T13:48:44.108Z"
description: "The date that the note was created."
content:
type: "string"
example: "This contact resubscribed on 2021-05-12."
description: "The content for the note."
maxLength: 2000
description: "A note about the contact."
SmsChannelConsentDetails:
type: "object"
properties:
sms_consent_permission:
type: "string"
example: "explicit"
description: "Identifies the current permission status for the SMS channel."
consent_type:
type: "string"
example: "promotional_sms"
description: "Identifies the type of consent provided. Currently, only promotional_sms\
\ is supported."
opt_in_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time, in ISO-8601 format, that the contact subscribed/opted-in\
\ to receiving SMS from the account. Displays only if the contact subscribes/opts-in.\
\ System generated."
readOnly: true
opt_out_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time, in ISO-8601 format, that the contact unsubscribed/opted-out\
\ of receiving SMS from the account. Displays only if the contact unsubscribed/opted-out.\
\ System generated."
readOnly: true
advertised_frequency:
type: "string"
example: "1"
description: "The numeric used to set how often to send SMS advertisements\
\ during a specified time interval (advertised_interval). For\
\ example, if the advertised_frequency is set to 2\
\ and the advertised_interval is set to monthly,\
\ the contact can receive up to two advertisements per month."
advertised_interval:
type: "string"
example: "monthly"
description: "Identifies the unit of time used by Constant Contact to send\
\ SMS advertisements as a string enum. For example, if the advertised_frequency\
\ is set to 2 and the advertised_interval is set\
\ to monthly, the contact can receive up to two advertisements\
\ per month."
created_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the SMS stats were created, in ISO-8601 format.\
\ System generated."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the SMS stats were updated, in ISO-8601 format.\
\ System generated."
readOnly: true
description: "Provides SMS consent details."
ContactResource:
type: "object"
properties:
contact_id:
type: "string"
format: "uuid"
example: "1618ae62-4752-11e9-9c8a-fa163e6b01c1"
description: "Unique ID for each contact resource"
readOnly: true
email_address:
$ref: "#/definitions/EmailAddress"
first_name:
type: "string"
example: "Debora"
description: "The first name of the contact."
maxLength: 50
last_name:
type: "string"
example: "Lang"
description: "The last name of the contact."
maxLength: 50
job_title:
type: "string"
example: "Musician"
description: "The job title of the contact."
maxLength: 50
company_name:
type: "string"
example: "Acme Corp."
description: "The name of the company where the contact works."
maxLength: 50
birthday_month:
type: "integer"
example: 11
description: "The month value for the contact's birthday. Valid values are\
\ from 1 through 12. You must use this property with birthday_month."
birthday_day:
type: "integer"
example: 24
description: "The day value for the contact's birthday. Valid values are from\
\ 1 through 12. You must use this property with birthday_day."
anniversary:
type: "string"
example: "2006-11-15"
description: "The anniversary date for the contact. For example, this value\
\ could be the date when the contact first became a customer of an organization\
\ in Constant Contact. Valid date formats are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD,\
\ YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY, or M-DD-YYYY."
maxLength: 10
update_source:
type: "string"
example: "Contact"
description: "Identifies who last updated the contact; valid values are Contact\
\ or Account."
create_source:
type: "string"
example: "Account"
description: "Describes who added the contact; valid values are Contact\
\ or Account. Your integration must accurately identify create_source\
\ for compliance reasons; value is set when contact is created."
created_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "System generated date and time that the resource was created,\
\ in ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "System generated date and time that the contact was last updated,\
\ in ISO-8601 format."
readOnly: true
deleted_at:
type: "string"
format: "date"
example: "2016-07-08"
description: "For deleted contacts (email_address contains opt_out_source\
\ and opt_out_date), shows the date of deletion."
readOnly: true
custom_fields:
type: "array"
description: "Array of up to 25 custom_field subresources."
items:
$ref: "#/definitions/ContactCustomField"
maxItems: 25
phone_numbers:
type: "array"
description: "Array of up to 3 phone_numbers subresources."
items:
$ref: "#/definitions/PhoneNumber"
maxItems: 3
street_addresses:
type: "array"
description: "Array of up to 3 street_addresses subresources."
items:
$ref: "#/definitions/StreetAddress"
maxItems: 3
list_memberships:
type: "array"
description: "Array of up to 50 list_ids to which the contact\
\ is subscribed."
items:
type: "string"
format: "uuid"
example: "07936f78-662a-11eb-af0a-fa163e56c9b0"
description: "Unique list ID to which the contact is subscribed."
readOnly: true
maxItems: 50
taggings:
type: "array"
description: "Array of tags (tag_id) assigned to the contact,\
\ up to a maximum of 50."
items:
type: "string"
format: "uuid"
example: "e7ddac60-51da-11eb-b3a4-fa163e6b01c1"
description: "Unique ID of a tag assigned to the contact, up to a maximum\
\ of 50."
readOnly: true
maxItems: 50
notes:
type: "array"
description: "An array of notes about the contact listed by most recent note\
\ first."
items:
$ref: "#/definitions/Note"
maxItems: 150
sms_channel:
type: "object"
description: "Includes SMS channel and consent details."
properties:
sms_channel_id:
type: "string"
format: "uuid"
example: "3fa85f64-5712-6245-b3fc-2c963f66bfc6"
description: "The unique ID that identifies an SMS channel."
sms_address:
type: "string"
example: "7815551212"
description: "The phone number of the SMS-capable phone, which does not\
\ include the country code."
dial_code:
type: "string"
example: "1"
description: "The dial code used for the SMS-capable phone. For example,\
\ the dial code for the United States is 1."
country_code:
type: "string"
example: "US"
description: "The two character ISO country code used for the SMS-capable\
\ phone. For example, the country code for the United States is US."
update_source:
type: "string"
example: "Contact"
description: "Identifies who last updated SMS details for the contact.\
\ Valid values are Contact or Account"
create_source:
type: "string"
example: "Account"
description: "Identifies who added SMS details for the contact. The value\
\ is set when you create SMS details for the contact. Valid values are\
\ Contact or Account. "
sms_channel_consents:
type: "array"
description: "Identifies SMS channel consent details such as the current\
\ permission status for the SMS channel and opt-in date."
items:
$ref: "#/definitions/SmsChannelConsentDetails"
description: "Use this endpoint to retrieve (GET), update (PUT), or DELETE an\
\ existing contact resource specified using the contact_id path\
\ parameter."
EmailAddressPut:
type: "object"
required:
- "address"
properties:
address:
type: "string"
example: "dlang@example.com"
description: "The email address of the contact. The email address must be\
\ unique for each contact."
maxLength: 80
permission_to_send:
type: "string"
example: "implicit"
description: "Identifies the type of permission that the Constant Contact\
\ account has to send email to the contact. Types of permission: explicit,\
\ implicit, not_set, pending_confirmation, temp_hold, unsubscribed."
created_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "Date and time that the email_address was created, in ISO-8601\
\ format. System generated."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the email_address was last updated, in ISO-8601\
\ format. System generated."
readOnly: true
opt_in_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the email_address was opted-in to receive\
\ email from the account, in ISO-8601 format. System generated."
readOnly: true
opt_out_source:
type: "string"
example: "Contact"
description: "Describes the source of the unsubscribed/opt-out action: either\
\ Account or Contact. If the Contact opted-out, then the account cannot\
\ send any campaigns to this contact until the contact opts back in. If\
\ the Account, then the account can add the contact back to any lists and\
\ send to them. Displayed only if contact has been unsubscribed/opt-out."
readOnly: true
opt_out_date:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "Date and time that the contact unsubscribed/opted-out of receiving\
\ email from the account, in ISO-8601 format. Displayed only if contact\
\ has been unsubscribed/opt-out. System generated."
readOnly: true
opt_out_reason:
type: "string"
example: "I am no longer interested in this service."
description: "The reason, as provided by the contact, that they unsubscribed/opted-out\
\ of receiving email campaigns."
maxLength: 255
confirm_status:
type: "string"
example: "confirmed"
description: "Indicates if the contact confirmed their email address after\
\ they subscribed to receive emails. Possible values: pending, confirmed,\
\ off."
readOnly: true
description: "The contact's email address and related properties."
PhoneNumberPut:
type: "object"
properties:
phone_number:
type: "string"
example: "+1-555-555-5555"
description: "The contact's phone number."
maxLength: 25
kind:
type: "string"
example: "home"
description: "Identifies the type of phone number; valid values are home,\
\ work, mobile, or other."
StreetAddressPut:
type: "object"
required:
- "kind"
properties:
kind:
type: "string"
example: "home"
description: "Describes the type of address; valid values are home, work,\
\ or other."
street:
type: "string"
example: "123 Kashmir Valley Road"
description: "Number and street of the address."
maxLength: 255
city:
type: "string"
example: "Chicago"
description: "The name of the city where the contact lives."
maxLength: 50
state:
type: "string"
example: "Illinois"
description: "The name of the state or province where the contact lives."
maxLength: 50
postal_code:
type: "string"
example: "60609"
description: "The zip or postal code of the contact."
maxLength: 50
country:
type: "string"
example: "United States"
description: "The name of the country where the contact lives."
maxLength: 50
ContactSmsChannelConsents:
type: "object"
required:
- "consent_type"
- "sms_consent_permission"
properties:
sms_consent_permission:
type: "string"
example: "explicit"
description: "The current status of the SMS channel."
consent_type:
type: "string"
example: "promotional_sms"
description: "The type of consent provided."
consent_medium_details:
type: "string"
example: "IPhone 13 device used to provide consent."
description: "Additional information about the consent such as the type of\
\ device used."
ContactSmsChannel:
type: "object"
required:
- "full_sms_address"
- "sms_channel_consents"
properties:
full_sms_address:
type: "string"
example: "17815551212"
description: "The SMS-capable phone number for the Contact, including the\
\ dial code"
sms_channel_consents:
type: "array"
description: "The consents for the SMS Channel."
items:
$ref: "#/definitions/ContactSmsChannelConsents"
ContactPutRequest:
type: "object"
required:
- "update_source"
properties:
email_address:
$ref: "#/definitions/EmailAddressPut"
first_name:
type: "string"
example: "Debora"
description: "The contact's first name"
maxLength: 50
last_name:
type: "string"
example: "Lang"
description: "The contact's last name"
maxLength: 50
job_title:
type: "string"
example: "Musician"
description: "The contact's job title"
maxLength: 50
company_name:
type: "string"
example: "Acme Corp."
description: "Name of the company the contact works for."
maxLength: 50
birthday_month:
type: "integer"
example: 11
description: "Accepts values from 1-12; must be used with birthday_day"
birthday_day:
type: "integer"
example: 24
description: "Accepts values from 1-31; must be used with birthday_month"
anniversary:
type: "string"
example: "2006-11-15"
description: "The anniversary date; Accepted formats are MM/DD/YYYY, M/D/YYYY,\
\ YYYY/MM/DD, YYYY/M/D, YYYY-MM-DD, YYYY-M-D, MM-DD-YYYY, M-D-YYYY"
maxLength: 10
update_source:
type: "string"
example: "Account"
description: "Identifies who last updated the contact; valid values are Contact\
\ or Account."
custom_fields:
type: "array"
description: "Array of up to 25 custom_field subresources."
items:
$ref: "#/definitions/ContactCustomField"
maxItems: 25
phone_numbers:
type: "array"
description: "Array of up to 3 phone_numbers subresources."
items:
$ref: "#/definitions/PhoneNumberPut"
maxItems: 3
street_addresses:
type: "array"
description: "Array of up to 3 street_addresses subresources."
items:
$ref: "#/definitions/StreetAddressPut"
maxItems: 3
list_memberships:
type: "array"
description: "Array of up to 50 list_ids to which the contact\
\ is subscribed."
items:
type: "string"
format: "uuid"
example: "07936f78-662a-11eb-af0a-fa163e56c9b0"
description: "Unique list ID to which the contact is subscribed."
readOnly: true
maxItems: 50
taggings:
type: "array"
description: "Array of tags (tag_id) assigned to the contact,\
\ up to a maximum of 50."
items:
type: "string"
format: "uuid"
example: "e7ddac60-51da-11eb-b3a4-fa163e6b01c1"
description: "Unique ID of a tag assigned to the contact, up to a maximum\
\ of 50."
readOnly: true
maxItems: 50
notes:
type: "array"
description: "An array of notes about the contact listed by most recent note\
\ first."
items:
$ref: "#/definitions/Note"
maxItems: 150
sms_channel:
$ref: "#/definitions/ContactSmsChannel"
Contacts:
type: "object"
properties:
contacts:
type: "array"
items:
$ref: "#/definitions/ContactResource"
contacts_count:
type: "integer"
example: 3249
description: "Total number of contacts in the response."
_links:
$ref: "#/definitions/PagingLinks"
status:
type: "string"
description: "If you use the segment_id query parameter to filter\
\ results based on a segment, this property indicates that the V3 API accepted\
\ your request and is still processing it."
description: "Use this endpoint to retrieve (GET) a collection of existing contacts,\
\ or to create (POST) a new contact."
EmailAddressPost:
type: "object"
required:
- "address"
properties:
address:
type: "string"
example: "dlang@example.com"
description: "The contact's email address."
maxLength: 80
permission_to_send:
type: "string"
example: "implicit"
description: "Identifies the type of permission that the Constant Contact\
\ account has been granted to send email to the contact. Types of permission:\
\ explicit, implicit, not_set, pending_confirmation, temp_hold, unsubscribed."
description: "The contact's email address and related properties."
ContactPostRequest:
type: "object"
properties:
email_address:
$ref: "#/definitions/EmailAddressPost"
first_name:
type: "string"
example: "Debora"
description: "The first name of the contact."
maxLength: 50
last_name:
type: "string"
example: "Lang"
description: "The last name of the contact."
maxLength: 50
job_title:
type: "string"
example: "Musician"
description: "The job title of the contact."
maxLength: 50
company_name:
type: "string"
example: "Acme Corp."
description: "The name of the company where the contact works."
maxLength: 50
create_source:
type: "string"
example: "Account"
description: "Describes who added the contact; valid values are Contact\
\ or Account. Your integration must accurately identify create_source\
\ for compliance reasons; value is set on POST, and is read-only going forward."
birthday_month:
type: "integer"
example: 11
description: "The month value for the contact's birthday. Valid values are\
\ from 1 through 12. The birthday_month property is required\
\ if you use birthday_day."
birthday_day:
type: "integer"
example: 24
description: "The day value for the contact's birthday. Valid values are from\
\ 1 through 31. The birthday_day property is required if you\
\ use birthday_month."
anniversary:
type: "string"
example: "2006-11-15"
description: "The anniversary date for the contact. For example, this value\
\ could be the date when the contact first became a customer of an organization\
\ in Constant Contact. Valid date formats are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD,\
\ YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY, or M-DD-YYYY."
maxLength: 10
custom_fields:
type: "array"
description: "Array of up to 25 custom_field key value pairs."
items:
$ref: "#/definitions/ContactCustomField"
maxItems: 25
phone_numbers:
type: "array"
description: "Array of up to 3 phone numbers subresources."
items:
$ref: "#/definitions/PhoneNumberPut"
maxItems: 3
street_addresses:
type: "array"
description: "Array of up to 3 street address subresources."
items:
$ref: "#/definitions/StreetAddressPut"
maxItems: 3
list_memberships:
type: "array"
description: "Array of list_ids to which the contact is being\
\ subscribed, up to a maximum of 50."
items:
type: "string"
format: "uuid"
example: "07936f78-662a-11eb-af0a-fa163e56c9b0"
description: "Unique ID of a list to which the contact is subscribed, up\
\ to a maximum of 50."
readOnly: true
maxItems: 50
taggings:
type: "array"
description: "Array of tags (tag_id) assigned to the contact,\
\ up to a maximum of 50."
items:
type: "string"
format: "uuid"
example: "00e4429c-3beb-11eb-9f34-fa163e56c9b9"
description: "Unique ID of a tag assigned to the contact, up to a maximum\
\ of 50."
readOnly: true
maxItems: 50
notes:
type: "array"
description: "An array of notes about the contact."
items:
$ref: "#/definitions/Note"
maxItems: 150
sms_channel:
$ref: "#/definitions/ContactSmsChannel"
CreateOrUpdateContactCustomField:
type: "object"
properties:
custom_field_id:
type: "string"
format: "uuid"
example: "1618ae62-4752-11e9-9c8a-fa163e6b01c1"
description: "The unique ID for the custom_field."
value:
type: "string"
example: "Tesla S 2017"
description: "The value of the custom_field."
maxLength: 255
JmmlSmsChannelConsents:
type: "object"
required:
- "consent_medium_details"
- "consent_medium_type"
- "consent_medium_url"
- "consent_type"
- "sms_consent_permission"
properties:
sms_consent_permission:
type: "string"
example: "pending_confirmation"
description: "The current consent status of the SMS Channel."
consent_type:
type: "string"
example: "promotional_sms"
description: "The type of consent provided."
consent_medium_type:
type: "string"
example: "LF"
description: "A code representing where the consent was retrieved."
consent_medium_url:
type: "string"
example: "https://lp.constantcontactpages.com/su/iPtuMuh"
description: "The URL for which the consent was gathered, such as a landing\
\ page."
consent_medium_details:
type: "string"
example: "Contact used our landing page to consent to SMS."
description: "Additional information for the consent"
advertised_frequency:
type: "integer"
example: 1
description: "The numeric component used to indicate how often to send advertising.\
\ For example, 1 indicates once. Use with advertised_internal\
\ property to indicate when on the calender to send it. For example, to\
\ send once (1) daily, weekly, or monthly."
advertised_interval:
type: "string"
example: "weekly"
description: "The calender interval used to indicate when advertising is sent.\
\ For example weekly."
JmmlSmsChannel:
type: "object"
required:
- "country_code"
- "dial_code"
- "sms_address"
- "sms_channel_consents"
properties:
sms_address:
type: "string"
example: "7815551212"
description: "The contact's SMS-capable phone number, excluding the country\
\ code."
dial_code:
type: "string"
example: "1"
description: "The dial code the country uses. For example, use 1\
\ for the United States dial code."
country_code:
type: "string"
example: "US"
description: "The two-digit code that identifies the country."
sms_channel_consents:
type: "array"
description: "The consents provided for the SMS Channel."
items:
$ref: "#/definitions/JmmlSmsChannelConsents"
description: "The contact's SMS details."
ContactCreateOrUpdateInput:
type: "object"
required:
- "list_memberships"
properties:
email_address:
type: "string"
example: "jdodge@example.com"
description: "The email address for the contact. This method identifies each\
\ unique contact using their email address. If the email address exists\
\ in the account, this method updates the contact. If the email address\
\ is new, this method creates a new contact."
maxLength: 50
first_name:
type: "string"
example: "Jake"
description: "The first name of the contact."
maxLength: 50
last_name:
type: "string"
example: "Dodge"
description: "The last name of the contact."
maxLength: 50
job_title:
type: "string"
example: "Musician"
description: "The job title of the contact."
maxLength: 50
company_name:
type: "string"
example: "Acme Corp."
description: "The name of the company where the contact works."
maxLength: 50
phone_number:
type: "string"
example: "(555) 555-1212"
description: "The phone number for the contact."
maxLength: 25
list_memberships:
type: "array"
description: "The contact lists you want to add the contact to as an array\
\ of up to 50 contact list_id values. You must include at least\
\ one list_id."
items:
type: "string"
format: "uuid"
example: "07936f78-662a-11eb-af0a-fa163e56c9b0"
maxItems: 50
minItems: 1
custom_fields:
type: "array"
description: "The custom fields you want to add to the contact as an array\
\ of up to 50 custom field objects."
items:
$ref: "#/definitions/CreateOrUpdateContactCustomField"
maxItems: 50
anniversary:
type: "string"
example: "11-15-2006"
description: "The anniversary date for the contact. For example, this value\
\ could be the date when the contact first became a customer of an organization\
\ in Constant Contact. Valid date formats are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD,\
\ YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY, or M-DD-YYYY.\n"
birthday_month:
type: "integer"
example: 11
description: "The month value for the contact's birthday. Valid values are\
\ from 1 through 12. The birthday_month property is required\
\ if you use birthday_day."
birthday_day:
type: "integer"
example: 24
description: "The day value for the contact's birthday. Valid values are from\
\ 1 through 31. The birthday_day property is required if you\
\ use birthday_month."
street_address:
type: "object"
properties:
kind:
type: "string"
example: "home"
description: "The type of street address for the contact. Valid values\
\ are home, work, or other."
street:
type: "string"
example: "1601 Trapelo Rd"
description: "The number and street of the contact's address."
maxLength: 255
city:
type: "string"
example: "Waltham"
description: "The name of the city for the contact's address."
maxLength: 50
state:
type: "string"
example: "Massachusetts"
description: "The name of the state or province for the contact's address."
maxLength: 50
postal_code:
type: "string"
example: "02451"
description: "The zip or postal code for the contact's address."
maxLength: 50
country:
type: "string"
example: "United States"
description: "The name of the country for the contact's address."
maxLength: 50
required:
- "kind"
sms_channel:
$ref: "#/definitions/JmmlSmsChannel"
ContactCreateOrUpdateResponse:
type: "object"
properties:
contact_id:
type: "string"
format: "uuid"
example: "ab7ab702-b935-11e9-8a58-fa163e6b01c1"
description: "The unique identifier for the contact that the V3 API created\
\ or updated."
action:
type: "string"
description: "Identifies if the V3 API created a new contact or updated an\
\ existing contact."
ContactXref:
type: "object"
properties:
sequence_id:
type: "string"
example: "0016633325"
description: "The V2 API contact unique identifier"
contact_id:
type: "string"
format: "uuid"
example: "ab7ab702-b935-11e9-8a58-fa163e6b01c1"
description: "The V3 API contact unique identifier"
description: "The cross-referenced pair of V3 API list_id and V2\
\ API sequence_id for a list. Response is sorted ascending by sequence_id."
ContactXrefs:
type: "object"
properties:
xrefs:
type: "array"
description: "An array of cross-referenced V3 API contact_id\
\ and V2 API sequence_id values. Response is sorted ascending\
\ by sequence_id."
items:
$ref: "#/definitions/ContactXref"
maxItems: 500
CustomFieldMetadata:
type: "object"
properties:
display_type:
type: "string"
example: "radio"
description: "Determines how Constant Contact renders a single_select\
\ or multi_select field."
allow_negative:
type: "boolean"
example: false
description: "For type number, determines if a value can be negative.\
\ By default, this value is false for the type number."
decimal_places:
type: "integer"
example: 1
description: "For types number and currency, determines\
\ the number of decimal places possible in the value."
currency_code:
type: "string"
example: "USD"
description: "For type currency, specifies the three-letter currency\
\ code to assign."
integer:
type: "boolean"
example: true
description: "For types number and currency, determines\
\ whether the custom field should store only whole numbers (integers) without\
\ decimal values. If the integer is set to false,\
\ the decimal_places must be between 1 and 4."
display_format:
type: "string"
example: "MM/DD/YYYY"
description: "Specifies the display format for date fields in the user interface.\
\ If not specified for a date type field, defaults to YYYY-MM-DD\
\ format. Valid only for version 2 type dates (values are stored as actual\
\ dates to support date comparisons and validations)."
description: "Additional details about a custom field in JSON format."
CustomFieldChoice:
type: "object"
properties:
custom_field_id:
type: "string"
format: "uuid"
example: "d0737000-afbf-11ee-874a-eaf5d7a2e15d"
description: "The ID that uniquely identifies a custom field."
choice_id:
type: "integer"
example: "9A63BC"
description: "The ID that uniquely identifies the choice identifier."
choice_label:
type: "string"
example: "Apple"
description: "Label to display for the choice on the user interface."
maxLength: 255
display_order:
type: "integer"
example: 1
description: "Stores the order for displaying a list of choices."
created_at:
type: "string"
format: "date-time"
example: "2024-06-27T10:28:09.000Z"
description: "Date and time that the record was created, in ISO-8601 format.\
\ System generated."
updated_at:
type: "string"
format: "date-time"
example: "2024-06-27T10:28:09.000Z"
description: "Date and time that the record was updated, in ISO-8601 format.\
\ System generated."
deleted_at:
type: "string"
format: "date"
example: "2023-12-18"
description: "Date the choice was deleted, in ISO-8601 format. System generated."
readOnly: true
description: "Custom fields single_select and multi_select\
\ settings."
CustomField:
type: "object"
required:
- "label"
- "type"
properties:
custom_field_id:
type: "string"
format: "uuid"
example: "1618ae62-4752-11e9-9c8a-fa163e6b01c1"
description: "The system generated ID that uniquely identifies a custom_field."
readOnly: true
label:
type: "string"
example: "Vehicle make and model year"
description: "The custom field name to display in the UI (free-form text)."
maxLength: 50
name:
type: "string"
example: "Vehicle_make_and_model_year"
description: "The unique custom field name constructed from the label by replacing\
\ blanks with underscores."
readOnly: true
maxLength: 50
type:
type: "string"
example: "date"
description: "The data value type the custom field accepts."
maxLength: 20
metadata:
$ref: "#/definitions/CustomFieldMetadata"
version:
type: "integer"
example: 1
description: "For datetime data types, this is the version number\
\ associated with the custom field."
choices:
type: "array"
description: "Choices available for single_select and multi_select\
\ type custom fields. The maximum number of elements for radio\
\ or checkbox display types is 20. Maximum number of elements\
\ for a dropdown is 100."
items:
$ref: "#/definitions/CustomFieldChoice"
maxItems: 100
updated_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "System generated date and time that the resource was updated,\
\ in ISO-8601 format."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "Date and time that the resource was created, in ISO-8601 format.\
\ System generated."
readOnly: true
description: "Custom fields details."
CustomFieldChoicePutRequest:
type: "object"
properties:
choice_id:
type: "integer"
example: 111
description: "The ID that uniquely identifies the choice."
choice_label:
type: "string"
example: "Apple"
description: "Label to display for the choice on the user interface."
maxLength: 255
display_order:
type: "integer"
example: 1
description: "Stores the order for displaying a list of choices."
description: "The single_select and multi_select custom\
\ field options."
CustomFieldPutRequest:
type: "object"
properties:
label:
type: "string"
example: "Favorite color"
description: "The custom field name to display in the UI (free-form text)."
maxLength: 50
choices:
type: "array"
description: "Array of choices for custom fields of type: single_select\
\ or multi_select. Maximum number of elements for checkbox\
\ and radio display types is 20. Maximum number of elements\
\ for a dropdown is 100."
items:
$ref: "#/definitions/CustomFieldChoicePutRequest"
maxItems: 100
CustomFields:
type: "object"
properties:
custom_fields:
type: "array"
items:
$ref: "#/definitions/CustomField"
maxItems: 100
_links:
$ref: "#/definitions/PagingLinks"
CustomFieldChoiceRequest:
type: "object"
properties:
choice_label:
type: "string"
example: "Apple"
description: "Label to display for the choice on the user interface."
maxLength: 255
display_order:
type: "integer"
example: 1
description: "Stores the order for displaying a list of choices."
description: "The single_select and multi_select custom\
\ field options."
CustomFieldRequest:
type: "object"
properties:
label:
type: "string"
example: "Favorite Fruit"
description: "The custom field name to display in the UI (free-form text)."
maxLength: 50
type:
type: "string"
example: "string"
description: "The type of data to store in the custom field."
maxLength: 20
metadata:
$ref: "#/definitions/CustomFieldMetadata"
choices:
type: "array"
description: "Array of choices for custom fields of type: single_select\
\ or multi_select. Maximum number of elements for checkbox\
\ and radio display types is 20. Maximum number of elements\
\ for a dropdown is 100."
items:
$ref: "#/definitions/CustomFieldChoiceRequest"
maxItems: 100
version:
type: "integer"
example: 2
description: "Available if data type is data. Displays 1\
\ if using legacy date fields where values are stored as strings. Displays\
\ 2 if using new date fields where values are stored as actual\
\ dates to support date comparisons and validations."
ContactList:
type: "object"
required:
- "list_id"
- "name"
properties:
list_id:
type: "string"
format: "uuid"
example: "06526938-56dd-11e9-932a-fa163ea075fa"
description: "Unique ID for the contact list"
readOnly: true
name:
type: "string"
example: "Multiple purchases"
description: "The name given to the contact list"
description:
type: "string"
example: "List of repeat customers."
description: "Text describing the list."
favorite:
type: "boolean"
description: "Identifies whether or not the account has favorited the contact\
\ list."
default: false
created_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "System generated date and time that the resource was created,\
\ in ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the list was last updated, in ISO-8601 format.\
\ System generated."
readOnly: true
deleted_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "If the list was deleted, this property shows the date and time\
\ it was deleted, in ISO-8601 format. System generated."
readOnly: true
membership_count:
type: "integer"
example: 327
description: "The total number of contacts that are members in a list. Does\
\ not apply to segment type lists."
readOnly: true
ListInput:
type: "object"
required:
- "name"
properties:
name:
type: "string"
example: "Multiple purchases"
description: "The name given to the contact list"
maxLength: 255
favorite:
type: "boolean"
example: true
description: "Identifies whether or not the account has favorited the contact\
\ list."
default: false
description:
type: "string"
example: "List of repeat customers"
description: "Text describing the list."
ContactListPutPost:
type: "object"
required:
- "list_id"
- "name"
properties:
list_id:
type: "string"
format: "uuid"
example: "06526938-56dd-11e9-932a-fa163ea075fa"
description: "Unique ID for the contact list"
readOnly: true
name:
type: "string"
example: "Multiple purchases"
description: "The name given to the contact list"
description:
type: "string"
example: "List of repeat customers."
description: "Text describing the list."
favorite:
type: "boolean"
description: "Identifies whether or not the account has favorited the contact\
\ list."
default: false
created_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "System generated date and time that the resource was created,\
\ in ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "Date and time that the list was last updated, in ISO-8601 format.\
\ System generated."
readOnly: true
deleted_at:
type: "string"
format: "date-time"
example: "2016-03-03T10:56:29-05:00"
description: "If the list was deleted, this property shows the date and time\
\ it was deleted, in ISO-8601 format. System generated."
readOnly: true
ActivityDeleteListResponse:
type: "object"
properties:
activity_id:
type: "string"
format: "uuid"
description: "Unique ID for the delete list batch job."
state:
type: "string"
example: "initialized"
description: "The state of the request:\n list_id and V2\
\ API sequence_id for a list. Response is sorted ascending by sequence_id."
ListXrefs:
type: "object"
properties:
xrefs:
type: "array"
description: "An array of cross-referenced V3 API list_id and\
\ V2 API sequence_id properties. Response is sorted ascending\
\ by sequence_id."
items:
$ref: "#/definitions/ListXref"
maxItems: 500
HistoryDetails:
type: "object"
properties:
state:
type: "string"
example: "O"
description: "The code representing the consent state, including E\
\ for optin and O for Optin."
source:
type: "string"
example: "A"
description: "The code representing the consent source type, including A\
\ for Account, C for Contact, and S' for System."
consent_type:
type: "string"
example: "promotional_sms"
description: "The type of SMS consent used."
consent_action_time:
type: "string"
format: "date-time"
example: "2023-01-23 06:09:23 -0800"
description: "The date and time that SMS engagement data was last updated,\
\ in ISO-8601 format. System generated."
consent_action_type:
type: "string"
example: "opt_out"
description: "The type of consent action provided."
consent_medium_type:
type: "string"
example: "MD"
description: "The code representing the medium used to provide consent. Medium\
\ types include mobile device (MD). lead generation form(LF),\
\ deactivation by carrier(CD), import_file:(FI),\
\ and system (SY)."
source_consent_timestamp:
type: "string"
example: "2016-03-03T10:53:04-05:0"
description: "The time that SMS consent was last updated."
source_sms_number:
type: "string"
example: "6035550239"
description: "If applicable, the SMS consent number associated with the source."
advertised_frequency:
type: "integer"
example: 2
description: "If applicable, the advertising numeric component used to advertise\
\ to the contact.. For example, if advertised_frequency is\
\ set to 2 , and advertised_interval is set\
\ to M, the contact receives advertisements twice a month."
advertised_interval:
type: "string"
example: "W"
description: "If applicable, the interval component used to advertise to the\
\ contact. For example, if advertised_frequency is set to \
\ 2 , and advertised_interval is set to M,\
\ the contact receives advertisements twice a month."
description: "Additional details about the SMS consent actions (opt-in, opt-out)\
\ in JSON format. The consent_action_type and the method used\
\ to add or update a contacts SMS details determines which properties are returned\
\ in the results."
SmsEngagementHistory:
type: "array"
items:
type: "object"
description: "Provides a contact's SMS engagement history details. The properties\
\ returned depend on the type of SMS consent granted by the contact."
properties:
contact_id:
type: "string"
example: "7f7923da-ebf7-11ec-ae6e-3e22fbb230ec"
description: "The unique contact UUID."
sms_channel_id:
type: "string"
example: "3fa85f64-5712-6245-b3fc-2c963f66bfc6"
description: "The unique SMS channel UUID."
sms_channel_history_id:
type: "string"
example: "04515cb3-17be-41e4-823a-f71c3d381c7b"
description: "The unique SMS channel history UUID."
insert_time:
type: "string"
format: "date-time"
example: "2016-03-03T10:53:04-05:00"
description: "The date and time that the history record was created, in\
\ ISO-8601 format. System generated."
history_details:
$ref: "#/definitions/HistoryDetails"
ContactsCounts:
type: "object"
properties:
total:
type: "integer"
example: 72
description: "Total number of contacts for the account."
explicit:
type: "integer"
example: 10
description: "Total number of contacts explicitly confirmed. Consent is obtained\
\ when you explicitly ask your potential contacts for permission to send\
\ the email (for example, using a sign-up form) and they agree. After you\
\ obtain express consent, it is good forever or until the contact opts out."
implicit:
type: "integer"
example: 20
description: "Total number of contacts implicitly confirmed. Consent is inferred\
\ based on actions, such as having an existing business relationship (making\
\ a purchase or donation, for example). In order to maintain implied consent\
\ to comply with CASL a contact must take a business action with you at\
\ least once every two years. Under CAN-Spam there is no need to maintain\
\ implied consent, it is assumed until the receiver indicates they no longer\
\ wish to receive messages."
pending:
type: "integer"
example: 30
description: "Total number of contacts pending confirmation. Consent is requested\
\ and pending confirmation from the contact."
unsubscribed:
type: "integer"
example: 12
description: "Total number of unsubscribed contacts. Consent is revoked when\
\ a contact has unsubscribed."
new_subscriber:
type: "integer"
example: 1
description: "Total number of newly subscribed contacts."
ContactResubscribeRequest:
type: "object"
required:
- "list_ids"
properties:
list_ids:
type: "array"
description: "Array of list id values. Constant Contact adds the resubscribed\
\ contact to the contact lists you provide in the array."
items:
type: "string"
format: "uuid"
example: "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
description: "Contact list id value."
Tag:
type: "object"
properties:
tag_id:
type: "string"
format: "uuid"
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
description: "The ID that uniquely identifies a tag (UUID format)"
name:
type: "string"
example: "Gold card member"
description: "The unique tag name."
contacts_count:
type: "integer"
example: 325
description: "The total number of contacts who are assigned this tag."
readOnly: true
created_at:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The system generated date and time when the tag was created\
\ (ISO-8601 format)."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "The system generated date and time when the tag was last updated\
\ (ISO-8601 format)."
readOnly: true
tag_source:
type: "string"
example: "ESTY"
description: "The source used to tag contacts."
readOnly: true
TagPut:
type: "object"
required:
- "name"
properties:
name:
type: "string"
example: "Bronze card member"
description: "The new tag name to use. The tag name must be unique."
minLength: 1
maxLength: 255
ActivityErrors:
type: "object"
properties:
message:
type: "string"
description: "Message describing the error condition."
readOnly: true
ActivityGenericStatus:
type: "object"
properties:
items_total_count:
type: "integer"
example: 89
description: "The total number of tags that this activity will delete."
readOnly: true
items_completed_count:
type: "integer"
example: 89
description: "The number of tags that this activity has currently deleted."
readOnly: true
ActivityLinks-2:
type: "object"
properties:
self:
type: "object"
description: "The link returned in the response that you use to retrieve the\
\ status for the specified activity."
properties:
href:
type: "string"
example: "/v3/activities/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
ActivityGeneric:
type: "object"
required:
- "activity_id"
- "state"
properties:
activity_id:
type: "string"
example: "d44ac96c-24f3-11eb-8ae8-fa163e595123"
description: "The ID that uniquely identifies the activity."
state:
type: "string"
example: "completed"
description: "The processing state for the activity."
created_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "The system generated date and time that the resource was created,\
\ in ISO-8601 format."
readOnly: true
updated_at:
type: "string"
format: "date-time"
example: "2016-01-23T13:48:44.108Z"
description: "The system generated date and time that the resource was last\
\ updated, in ISO-8601 format."
readOnly: true
percent_done:
type: "integer"
example: 25
description: "The percentage complete for the specified activity."
readOnly: true
activity_errors:
type: "array"
description: "An array of error messages if errors occurred for a specified\
\ activity. The system returns an empty array if no errors occur."
readOnly: true
items:
$ref: "#/definitions/ActivityErrors"
status:
$ref: "#/definitions/ActivityGenericStatus"
_links:
$ref: "#/definitions/ActivityLinks-2"
Next-2:
type: "object"
properties:
href:
type: "string"
description: "The next link in the page or null if there are no additional\
\ pages."
Links-4:
type: "object"
properties:
href:
type: "string"
next:
description: "Contains the next page link, if applicable."
$ref: "#/definitions/Next-2"
PagingLinks-2:
type: "object"
properties:
next:
description: "The link to the next page of results."
$ref: "#/definitions/Links-4"
Tags:
type: "object"
properties:
tags:
type: "array"
description: "Lists all tags and provides tag details."
items:
$ref: "#/definitions/Tag"
_links:
description: "HAL property that contains next link if applicable."
$ref: "#/definitions/PagingLinks-2"
TagPost:
type: "object"
required:
- "name"
properties:
name:
type: "string"
example: "Silver card member"
description: "Specify a unique name to use to identify the tag. Tag names\
\ must be at least one character in length and not more than 255 characters."
minLength: 1
maxLength: 255
tag_source:
type: "string"
example: "ESTY"
description: "The source used to identify the contacts to tag."
Link-2:
type: "object"
properties:
href:
type: "string"
PagingLinks-3:
type: "object"
properties:
next:
$ref: "#/definitions/Link-2"
EmailCampaigns:
type: "object"
properties:
campaign_id:
type: "string"
example: "8987dc1a-48ef-433a-b836-7ca4f9aa3481"
description: "The unique ID used to identify the email campaign (UUID format)."
created_at:
type: "string"
format: "date-time"
example: "2018-02-06T22:09:15.000Z"
description: "The system generated date and time that this email campaign\
\ was created. This string is readonly and is in ISO-8601 format."
readOnly: true
current_status:
type: "string"
example: "Draft"
description: "The current status of the email campaign. Valid values are:\
\ format_type\
\ 3, 4, and 5 can use this property."
city:
type: "string"
example: "Boston"
description: "The city where the organization sending the email campaign is\
\ located."
country_code:
type: "string"
example: "US"
description: "The uppercase two letter ISO 3166-1 code for the organization's country."
country_name:
type: "string"
example: "United States"
description: "The full name of the country where the organization sending\
\ the email is located. Automatically generated using the country_code."
readOnly: true
organization_name:
type: "string"
example: "Jake Dodge's Pancakes"
description: "The name of the organization that is sending the email campaign."
postal_code:
type: "string"
example: "02451"
description: "The postal code address (ZIP code) of the organization."
state_code:
type: "string"
example: "MA"
description: "The uppercase two letter ISO 3166-1 code for the organization's state. This\
\ property is required if the country_code is US (United States)."
state_name:
type: "string"
description: "The full state name for a state_code that is inside\
\ the United States. Automatically generated using the state_code."
readOnly: true
state_non_us_name:
type: "string"
example: "Victoria"
description: "The full state name for a state_code that is outside\
\ the United States. This property is not read only."
EmailCampaignActivityInput:
type: "object"
required:
- "format_type"
- "from_email"
- "from_name"
- "html_content"
- "reply_to_email"
- "subject"
properties:
format_type:
type: "integer"
format: "int32"
example: 5
description: "The email format you are using to create the email campaign\
\ activity. The V3 API supports creating emails using format_type\
\ 5 (custom code emails).\n"
from_name:
type: "string"
example: "Jake Dodge"
description: "The email sender's name to display for the email campaign activity."
maxLength: 100
from_email:
type: "string"
example: "jdodge@constantcontact.com"
description: "The sender's email address to use for the email campaign activity.\
\ You must use a confirmed Constant Contact account email address. Make\
\ a GET call to /account/emails to return a collection of account\
\ emails and their confirmation status."
maxLength: 80
reply_to_email:
type: "string"
example: "jdodge@constantconatct.com"
description: "The sender's email address to use if the contact replies to\
\ the email campaign activity. You must use a confirmed Constant Contact\
\ account email address. Make a GET call to /account/emails\
\ to return a collection of account emails and their confirmation status."
maxLength: 80
subject:
type: "string"
example: "Informed Daily Digest"
description: "The text to display in the subject line that describes the email\
\ campaign activity."
preheader:
type: "string"
example: "You don't want to miss this."
description: "The email preheader for the email campaign activity. Contacts\
\ will view your preheader as a short summary that follows the subject line\
\ in their email client. Only format_type 3, 4, and 5 email\
\ campaign activities use the preheader property."
maxLength: 200
html_content:
type: "string"
example: "[[trackingImage]] Visit ConstantContact.com! "
description: "The HTML content for the email campaign activity. Only format_type\
\ 5 (custom code emails) can contain html_content. When creating\
\ a format_type 5 custom code email, make sure that you include\
\ [[trackingImage]] in the <body> element\
\ of your HTML.\n"
maxLength: 150000
physical_address_in_footer:
description: "The physical address for the organization that is sending the\
\ email campaign. Constant Contact displays this information to contacts\
\ in the email message footer. If you do not include a physical address\
\ in the email campaign activity, Constant Contact will use the physical\
\ address information saved for the Constant Contact user account."
$ref: "#/definitions/EmailPhysicalAddress"
EmailCampaignComplete:
type: "object"
required:
- "email_campaign_activities"
- "name"
properties:
name:
type: "string"
example: "December Newsletter for Dog Lovers"
description: "The unique and descriptive name that you specify for the email\
\ campaign."
maxLength: 80
email_campaign_activities:
type: "array"
description: "The content of the email campaign as an array that contains\
\ a single email campaign activity object."
items:
$ref: "#/definitions/EmailCampaignActivityInput"
ActivityReference:
type: "object"
properties:
campaign_activity_id:
type: "string"
example: "0e3feddd-c8da-4d53-a507-aae5082b8b75"
description: "The ID (UUID) that uniquely identifies a campaign activity."
role:
type: "string"
example: "primary_email"
description: "The purpose of the individual campaign activity in the larger\
\ email campaign effort. Valid values are: primary_email\
\ contains the complete email content.primary_email content\
\ without any personalized email information. For example, permalinks do\
\ not contain any of the contact details that you add to the primary_email\
\ email content. primary_email and a permalink\
\ role campaign activity when you create an email campaign.\n"
EmailCampaign:
type: "object"
properties:
campaign_activities:
type: "array"
description: "Lists the role and unique activity ID of each campaign activity\
\ that is associated with an Email Campaign."
items:
$ref: "#/definitions/ActivityReference"
campaign_id:
type: "string"
example: "8987dc1a-48ef-433a-b836-7ca4f9aa3481"
description: "The unique ID used to identify the email campaign (UUID format)."
created_at:
type: "string"
format: "date-time"
example: "2018-02-06T22:09:15.000Z"
description: "The system generated date and time that this email campaign\
\ was created. This string is readonly and is in ISO-8601 format."
readOnly: true
current_status:
type: "string"
example: "Draft"
description: "The current status of the email campaign. Valid values are:\
\ Identifies a campaign in the V3 API. In the V3 API, each\ \ campaign contains one or more activities. For more information, see V3 Email Campaign Resource Changes.
" campaign_activity_id: type: "string" format: "uuid" example: "4c08372c-957a-48b5-bc45-72c7f00796cd" description: "
Identifies a campaign activity in the V3 API. In the V3 API,\
\ each campaign contains one or more activities. Email type activities represent\
\ the detailed information in an email and contain properties like from_email\
\ and from_name. For more information, see V3 Campaign Resource Changes.
"
CrossReferenceResponse:
type: "object"
properties:
xrefs:
type: "array"
description: "An array of objects that contain a v2_email_campaign_id\
\ cross-referenced with a V3 campaign_id and a V3 campaign_activity_id\
\ value."
items:
$ref: "#/definitions/CrossReference"
EmailCampaignActivity:
type: "object"
required:
- "from_email"
- "from_name"
- "reply_to_email"
- "subject"
properties:
campaign_activity_id:
type: "string"
example: "4c08372c-957a-48b5-bc45-72c7f00796cd"
description: "Identifies a campaign activity in the V3 API."
readOnly: true
campaign_id:
type: "string"
example: "8987dc1a-48ef-433a-b836-7ca4f9aa3481"
description: "Identifies a campaign in the V3 API."
readOnly: true
role:
type: "string"
example: "primary_email"
description: "The purpose of the individual campaign activity in the larger\
\ email campaign effort. Valid values are:
primary_email\
\ contains the complete email content.primary_email content\
\ without any personalized email information. For example, permalinks do\
\ not contain any of the contact details that you add to the primary_email\
\ email content. primary_email and a permalink\
\ role campaign activity when you create an email campaign.\n"
readOnly: true
contact_list_ids:
type: "array"
description: "The contacts that Constant Contact sends the email campaign\
\ activity to as an array of contact list_id values. You cannot\
\ use contact lists and segments at the same time in an email campaign activity."
items:
type: "string"
example: "da10f460-3072-11e9-b282-fa163e6b01c1"
segment_ids:
type: "array"
description: "The contacts that Constant Contact sends the email campaign\
\ activity to as an array containing a single segment_id value.\
\ Only format_type 3, 4, and 5 email campaign activities support\
\ segments. You cannot use contact lists and segments at the same time in\
\ an email campaign activity."
items:
type: "integer"
example: 1
current_status:
type: "string"
example: "DRAFT"
description: "The current status of the email campaign activity. Valid values\
\ are: /account/emails to return a collection of account\
\ emails and their confirmation status."
from_name:
type: "string"
example: "Jake Dodge"
description: "The email \"From Name\" field for the email campaign activity."
reply_to_email:
type: "string"
example: "jdodge@constantcontact.com"
description: "The email \"Reply To Email\" field for the email campaign activity.\
\ You must use a confirmed Constant Contact account email address. Make\
\ a GET call to /account/emails to return a collection of account\
\ emails and their confirmation status."
subject:
type: "string"
example: "Holiday Special Newsletter"
description: "The email \"Subject\" field for the email campaign activity."
html_content:
type: "string"
example: "[[trackingImage]] Visit ConstantContact.com! "
description: "The HTML or XHTML content for the email campaign activity. Only\
\ format_type 1 and 5 (legacy custom code emails or modern\
\ custom code emails) can contain html_content."
template_id:
type: "string"
example: "1000755366001"
description: "Identifies the email layout and design template that the email\
\ campaign activity is using as a base."
readOnly: true
permalink_url:
type: "string"
example: "https://conta.cc/2GaQ8AY"
description: "The permanent link to a web accessible version of the email\
\ campaign content without any personalized email information. The permalink\
\ URL becomes accessible after you send an email campaign to contacts."
readOnly: true
preheader:
type: "string"
example: "You don't want to miss this."
description: "The email preheader for the email campaign activity. Only format_type\
\ 3, 4, and 5 email campaign activities use the preheader property."
physical_address_in_footer:
description: "The physical address of the organization that is sending the\
\ email campaign. Constant Contact displays this information to contacts\
\ in the email message footer."
$ref: "#/definitions/EmailPhysicalAddress"
document_properties:
type: "object"
description: "An object that contains optional properties for legacy format\
\ type emails (format_type 1 and 2). If you attempt to add\
\ a property that does apply to the email format_type, the\
\ API will ignore the property."
properties:
style_content:
type: "string"
example: ".white{color: #ffffff;}"
description: "Contains style sheet elements for XHTML letter format emails.\
\ This property applies only to format_type 1."
maxLength: 150000
letter_format:
type: "string"
example: "XHTML"
description: "Email message format. Valid values are HTML\
\ and XHTML. By default, the value is HTML.\
\ For more information, see the Advanced Editor User's Guide. This property\
\ applies only to format_type 1. You cannot change this\
\ property after you create an email.\n"
readOnly: true
default: "HTML"
greeting_salutation:
type: "string"
example: "Dear"
description: "The greeting used in the email message. This property applies\
\ only to format_type 1."
maxLength: 50
greeting_name_type:
type: "string"
example: "F"
description: "The type of name the campaign uses to greet the contact.\
\ Valid values are F (First Name), L (Last\
\ Name), B (First and Last Name), or N (No\
\ greeting). By default, the value is N. This property\
\ applies only to format_type 1."
default: "N"
greeting_secondary:
type: "string"
example: "Greetings!"
description: "A fallback text string the campaign uses to greet the contact\
\ when the greeting_name_type is not available or set to\
\ N. This property applies only to format_type\
\ 1."
maxLength: 1500
subscribe_link_enabled:
type: "string"
example: "false"
description: "If true, the email footer includes a link for\
\ subscribing to the list. If false, the message footer\
\ does not include a link for subscribing to the list. By default, the\
\ value is false. This property applies only to format_type\
\ 1.\n"
default: "false"
subscribe_link_name:
type: "string"
example: "Subscribe to my email list!"
description: "The text displayed as the name for the subscribe link in\
\ the email footer. This property applies only to format_type\
\ 1."
maxLength: 80
text_content:
type: "string"
example: "format_type\
\ 1.\n"
maxLength: 150000
permission_reminder_enabled:
type: "string"
example: "false"
description: "If true, Constant Contact displays your permission_reminder\
\ message to contacts at top of the email. If false, Constant\
\ Contact does not display the message. By default, the value is false.\
\ This property applies to format_type 1 and 2.\n"
default: "false"
permission_reminder:
type: "string"
example: "Hi, just a reminder that you're receiving this email because\
\ you have expressed an interest in our company."
description: "The message text Constant Contact displays at the top of\
\ the email message to remind users that they are subscribed to an email\
\ list. This property applies to format_type 1 and 2."
maxLength: 1500
view_as_webpage_enabled:
type: "string"
example: "false"
description: "If true, Constant Contact displays the view\
\ as web page email message. If false Constant Contact\
\ does not display the message. By default, the value is false.\
\ This property applies to format_type 1 and 2.\n"
default: "false"
view_as_webpage_text:
type: "string"
example: "Having trouble viewing this email?"
description: "The text Constant Contact displays before the view as web\
\ page link at the top of the email. This property applies to format_type\
\ 1 and 2."
maxLength: 50
view_as_webpage_link_name:
type: "string"
example: "Click here to view this email as a web page"
description: "The name of the link that users can click to view the email\
\ as a web page. This property applies to format_type 1\
\ and 2."
forward_email_link_enabled:
type: "string"
description: "If true, when the user forwards an email message\
\ the footer includes a link for subscribing to the list. If false,\
\ when a user forwards an email message the footer does not include\
\ a link for subscribing to the list. By default, the value is false.\
\ This property applies to format_type 1 and 2.\n"
default: "false"
forward_email_link_name:
type: "string"
example: "Forward email"
description: "The text displayed as the name for the forward email link\
\ in the footer when a user forwards an email. This property applies\
\ to format_type 1 and 2."
maxLength: 80
EmailScheduleResponse:
type: "array"
items:
type: "object"
properties:
scheduled_date:
type: "string"
format: "date-time"
description: "The date when Constant Contact will send the email campaign\
\ activity to contacts in ISO-8601 format. For example, 2022-05-17\
\ and 2022-05-17T16:37:59.091Z are valid dates."
EmailScheduleInput:
type: "object"
required:
- "scheduled_date"
properties:
scheduled_date:
type: "string"
format: "date-time"
description: "The date when Constant Contact will send the email campaign\
\ activity to contacts in ISO-8601 format. For example, 2022-05-17\
\ and 2022-05-17T16:37:59.091Z are valid dates. Use \"\
0\" as the date to have Constant Contact immediately send the email\
\ campaign activity to contacts."
EmailTestSendInput:
type: "object"
required:
- "email_addresses"
properties:
email_addresses:
type: "array"
description: "The recipients of the test email as an array of email address\
\ strings. You can send a test email to up to 5 different email addresses\
\ at a time."
items:
type: "string"
example: "dlang@example.com"
maxItems: 5
personal_message:
type: "string"
example: "This is a test send of the email campaign activity."
description: "A personal message for the recipients of the test email. Constant\
\ Contact displays this message before the email campaign activity content."
EmailCampaignActivityPreview:
type: "object"
properties:
campaign_activity_id:
type: "string"
example: "4c08372c-957a-48b5-bc45-72c7f00796cd"
description: "The unique ID for an email campaign activity."
from_email:
type: "string"
example: "jdodge@constantconatct.com"
description: "The \"from email\" email header for the email campaign activity."
from_name:
type: "string"
example: "Jake Dodge"
description: "The \"from name\" email header for the email campaign activity."
preheader:
type: "string"
example: "You don't want to miss this."
description: "The email preheader for the email campaign activity. Only format_type\
\ 3, 4, and 5 email campaign activities use the preheader property."
preview_html_content:
type: "string"
example: " Visit\
\ ConstantContact.com! "
description: "An HTML preview of the email campaign activity."
preview_text_content:
type: "string"
example: "Email Content"
description: "A plain text preview of the email campaign activity."
reply_to_email:
type: "string"
example: "jdodge@constantcontact.com"
description: "The email \"Reply To Email\" field for the email campaign activity."
subject:
type: "string"
example: "Informed Daily Digest"
description: "The email \"Subject\" field for the email campaign activity."
EmailSendHistory:
type: "array"
items:
type: "object"
properties:
send_id:
type: "integer"
format: "int32"
example: 1
description: "Uniquely identifies each send history object using the number\
\ of times that you sent the email campaign activity as a sequence starting\
\ at 1. For example, when you send a specific email campaign\
\ activity twice this method returns an object with a send_id\
\ of 1 for the first send and an object with a send_id of\
\ 2 for the second send.\n"
minimum: 1
contact_list_ids:
type: "array"
description: "The contacts lists that Constant Contact sent email campaign\
\ activity to as an array of contact list_id strings."
items:
type: "string"
example: "72876990-b664-11e5-844a-00163e0cb6a5"
segment_ids:
type: "array"
description: "The contact segments that Constant Contact sent the email\
\ campaign activity to as an array of segment_id integers."
items:
type: "integer"
format: "int64"
example: 57
count:
type: "integer"
format: "int64"
example: 200
description: "The number of contacts that Constant Contact sent this email\
\ campaign activity to. This property is specific to each send history\
\ object. When you resend an email campaign activity, Constant Contact\
\ only sends it to new contacts in the contact lists or segments you are\
\ using."
run_date:
type: "string"
format: "date-time"
example: "2018-06-27T10:28:09.000Z"
description: "The system generated date and time that Constant Contact sent\
\ the email campaign activity to contacts in ISO-8601 format."
send_status:
type: "string"
example: "COMPLETED"
description: "The send status for the email campaign activity. Valid values\
\ are: COMPLETED: Constant Contact successfully\
\ sent the email campaign activity.ERRORED:\
\ Constant Contact encountered an error when sending the email campaign\
\ activity.0 if Constant Contact successfully\
\ sent the email campaign activity to contacts. Possible reason_code\
\ values are: reason_code\
\ 12 as a send attempt with a send_status of COMPLETED and\
\ a count of 0.1 to 10 days.\
\ This value is only returned in the response results if the resend activity\
\ was created with delay_days or the delay_minutes\
\ equal to an exact day value. "
delay_minutes:
type: "integer"
format: "int32"
example: 1000
description: "The number of minutes to wait before Constant Contact resends\
\ the email. There are 1,440 minutes in a day. Valid values includes a\
\ minimum of 720 (12 hours) and a maximum of 14,400\
\ minutes (10 days). This property is mutually exclusive with delay_days."
resend_date:
type: "string"
format: "date-time"
description: "The system generated date and time (in ISO-8601 format) that\
\ the email campaign activity was resent to non-openers (only included\
\ in the response results for sent resend activities)."
readOnly: true
resend_request_id:
type: "string"
example: "DRAFT"
description: "For scheduled or sent resend to non-opener emails, the system\
\ generates an ID that identifies the resend to non-openers activity.\
\ For draft email campaign resend activities, the system returns DRAFT."
resend_status:
type: "string"
example: "DRAFT"
description: "The status of the resend to non-openers campaign activity.\
\ The resend_status is only returned in the response results\
\ if the campaign activity is either scheduled to be sent or was already\
\ sent.\n"
ResendToNonOpenersInput:
required:
- "resend_subject"
properties:
resend_subject:
type: "string"
example: "Our Big Sale is Coming Soon!"
description: "The subject line used when resending the email campaign activity."
delay_days:
type: "integer"
format: "int32"
example: 3
description: "The number of days to wait before Constant Contact resends the\
\ email. Valid values include 1 to 10 days. This\
\ property is mutually exclusive with delay_minutes. This value\
\ is only returned in the response results if the resend activity was created\
\ with delay_days or the delay_minutes equal to\
\ an exact day value."
delay_minutes:
type: "integer"
format: "int32"
example: 1000
description: "The number of minutes to wait before Constant Contact resends\
\ the email campaign activity. There are 1,440 minutes in a day. Valid values\
\ includes a minimum of 720 (12 hours) and a maximum of 14,400\
\ minutes (10 days). This property is mutually exclusive with delay_days"
ResendToNonOpenersObject:
type: "object"
properties:
resend_subject:
type: "string"
example: "Our Big Sale is Coming Soon!"
description: "The subject line for the resend email."
delay_days:
type: "integer"
format: "int32"
example: 7
description: "The number of days to wait before Constant Contact resends the\
\ email. Valid values include 1 to 10 days. This\
\ property is mutually exclusive with delay_minutes. This value\
\ is only returned in the response results if the resend activity was created\
\ with delay_days or the delay_minutes equal to\
\ an exact day value."
delay_minutes:
type: "integer"
format: "int32"
example: "10,080"
description: "The number of minutes to wait before Constant Contact resends\
\ the email. There are 1,440 minutes in a day. Valid values includes a minimum\
\ of 720 (12 hours) and a maximum of 14,400 minutes\
\ (10 days). This property is mutually exclusive with delay_days."
resend_date:
type: "string"
format: "date-time"
description: "The system generated ISO-8601 format date and time that Constant\
\ Contact resent the email to non-openers."
readOnly: true
resend_request_id:
type: "string"
example: "DRAFT"
description: "For scheduled or sent resend to non-opener emails, this property\
\ is a unique identifier for the resend. For draft email campaign resend\
\ activities, the value of this property is DRAFT."
EmailCampaignAccountInformation:
type: "object"
properties:
first_name:
type: "string"
example: "John"
description: "Account owner's first name"
last_name:
type: "string"
example: "Smith"
description: "Account owner's last name"
physical_address:
type: "object"
description: "The physical address associated with the account"
properties:
org_name:
type: "string"
example: "InstaPrinz"
description: "Organization name"
address_line_1:
type: "string"
example: "123 Maple Street"
description: "Primary address line"
address_line_2:
type: "string"
description: "Secondary address line"
address_line_3:
type: "string"
description: "Tertiary address line"
city:
type: "string"
example: "Hagerstown"
description: "City name"
state_or_prov_code:
type: "string"
example: "MD"
description: "State or province code"
state_or_prov:
type: "string"
description: "State or province full name"
state_non_us:
type: "string"
description: "Non-US state designation"
postal_code:
type: "string"
example: "21740"
description: "Postal or ZIP code"
country_code:
type: "string"
example: "US"
description: "ISO country code"
country:
type: "string"
description: "Country full name"
address_optional:
type: "string"
description: "Optional address field"
place_holder:
type: "boolean"
example: false
description: "Indicates if this is a placeholder address"
website:
type: "string"
example: "www.constantcontact.com"
description: "Account website URL"
community_screen_name:
type: "string"
description: "Community screen name for the account"
logo_url:
type: "string"
description: "URL for the account logo"
contact_email:
type: "string"
format: "email"
example: "InstaPrinz@gmail.com"
description: "Primary contact email address"
contact_phone:
type: "string"
example: "5555555555"
description: "Primary contact phone number"
verified_emails:
type: "array"
example:
- "InstaPrinz@gmail.com"
description: "List of verified email addresses. You must verify an email address\
\ before you can use it as the from address in an email."
items:
type: "string"
all_emails:
type: "array"
example:
- "InstaPrinz@gmail.com"
description: "List of all email addresses associated with the account"
items:
type: "string"
message_settings:
type: "object"
description: "Default message settings for the account"
properties:
from_email:
type: "string"
format: "email"
example: "InstaPrinz@gmail.com"
description: "Default from email address"
from_name:
type: "string"
example: "John Smith"
description: "Default from name"
reply_email:
type: "string"
format: "email"
example: "deepika.aggarwal@constantcontact.com"
description: "Default reply-to email address"
subject:
type: "string"
description: "Default subject line"
preheader:
type: "string"
description: "Default preheader text"
timezone:
type: "string"
example: "US/Eastern"
description: "Account timezone"
phone_prefix:
type: "string"
example: "555"
description: "Phone number prefix"
phone_remainder:
type: "string"
example: "5555555"
description: "Phone number remainder"
organization_phone:
type: "string"
example: "123-333-3335"
description: "Organization phone number"
industry_type:
type: "string"
example: "education_services"
description: "Industry type classification"
locale:
type: "string"
example: "en"
description: "Account locale"
last_authenticated_email:
type: "string"
format: "email"
example: "InstaPrinz@gmail.com"
description: "Last email address used for authentication"
use_source_account_images:
type: "boolean"
example: false
description: "Indicates if source account images should be used"
default_from_email:
type: "string"
format: "email"
example: "InstaPrinz@gmail.com"
description: "Default from email address"
reply_to_email:
type: "string"
format: "email"
example: "InstaPrinz@gmail.com"
description: "Default reply-to email address"
AutomationStructuredTag:
type: "object"
properties:
key:
type: "string"
value:
type: "string"
display_value:
type: "string"
AutomationWorkflowDef:
type: "object"
properties:
tasks:
type: "array"
items:
type: "object"
properties: {}
status:
type: "string"
namespace:
type: "string"
metadata:
type: "object"
properties: {}
timeout:
type: "object"
properties: {}
upgradable:
type: "boolean"
description: "The workflow definition containing tasks, status, and metadata.\
\ Internal fields such as correlationMetadata and parameters are excluded to\
\ prevent leaking accountId."
AutomationFlow:
type: "object"
properties:
workflow_def:
$ref: "#/definitions/AutomationWorkflowDef"
description: "The workflow flow definition."
AutomationWorkflowDefinition:
type: "object"
properties:
state:
type: "string"
description: "The current state of the workflow definition (e.g. DRAFT, ACTIVE)."
trigger:
type: "object"
description: "The trigger configuration for the automation workflow."
properties: {}
workflow:
$ref: "#/definitions/AutomationFlow"
description: "A workflow definition containing state, trigger, and workflow details."
AutomationCampaign:
type: "object"
properties:
id:
type: "string"
description: "The unique identifier for the automation campaign workflow."
name:
type: "string"
description: "The name of the automation campaign."
description:
type: "string"
description: "The description of the automation campaign."
structured_tags:
type: "array"
items:
$ref: "#/definitions/AutomationStructuredTag"
active_definition:
$ref: "#/definitions/AutomationWorkflowDefinition"
draft_definition:
$ref: "#/definitions/AutomationWorkflowDefinition"
is_name_explicitly_set:
type: "boolean"
description: "Indicates whether the automation campaign name was explicitly\
\ set."
ABTestData:
type: "object"
required:
- "alternative_subject"
- "test_size"
- "winner_wait_duration"
properties:
alternative_subject:
type: "string"
example: "Reminder: Our Biggest Sale of the Year is Coming Soon!"
description: "The alternate email subject line to use for A/B testing."
test_size:
type: "integer"
format: "int32"
example: 30
description: "The percentage of contact recipients to participate in the A/B\
\ Test. For example, if the value is 30, then 30% of contacts will receive\
\ the email campaign with subject line A, and 30% of contacts will receive\
\ the email campaign with subject line B. Valid values include 5\
\ to 50 percent. Currently, A/B tests support subject line\
\ only."
winner_wait_duration:
type: "integer"
format: "int32"
example: 24
description: "The number of hours Constant Contact waits after the A/B test\
\ is sent before determining the winning subject line. The winner is the\
\ subject line with the highest number of contact opens. Valid values include\
\ 6, 12, 24, and 48.\
\ After the winner is determined, Constant Contact automatically sends the\
\ email campaign with the winning subject line to all the remaining contacts,\
\ which did not participate in the A/B test."
ContactTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
properties:
contact_id:
type: "string"
format: "uuid"
example: "71600990-908b-11e6-907f-00166bff25"
description: "The contact ID."
campaign_activity_id:
type: "string"
format: "uuid"
example: "010a0-1234-5678-9012-1100a0c1ab2a"
description: "The unique ID of the activity for an e-mail campaign."
created_time:
type: "string"
format: "date-time"
example: "2017-04-02T04:08:00.000Z"
description: "The time the tracking activity occurred"
tracking_activity_type:
type: "string"
example: "em_sends"
description: "The types of the tracking activities included in the request.\
\ For example, sends, opens, clicks, bounces, opt-outs, or forwards."
campaign_activity_name:
type: "string"
example: "April DLCV Newsletter"
description: "The campaign activity name."
description: "The base contact tracking activity representing sends, opt-outs\
\ and forwards to a friend. The basic information provided includes the campaign\
\ activity ID, tracking activity type, and time the tracking activity occurred."
Links-5:
type: "object"
properties:
next:
description: "Contains the next page link if it is available."
$ref: "#/definitions/Next-2"
ContactTrackingActivitiesPage:
type: "object"
properties:
tracking_activities:
type: "array"
description: "The list of contact tracking activities in descending date order."
items:
$ref: "#/definitions/ContactTrackingActivity"
_links:
description: "The next link if more contact tracking activities are available."
$ref: "#/definitions/Links-5"
description: "A page of tracking activities for a contact that can include sends,\
\ opens, clicks, bounces, opt-outs and forwards to a friend. If it exists, a\
\ link to the next page of tracking activities is provided."
ContactOpenAndClickRates:
type: "object"
required:
- "average_click_rate"
- "average_open_rate"
- "contact_id"
- "included_activities_count"
properties:
contact_id:
type: "string"
format: "uuid"
example: "71600990-908b-11e6-907f-00166bff25"
description: "The unique ID of the contact for which the report is being generated."
included_activities_count:
type: "integer"
format: "int32"
example: 10
description: "The number of activities included in the calculation."
average_open_rate:
type: "number"
format: "double"
example: 0.6
description: "The average rate the contact opened emails sent to them."
average_click_rate:
type: "number"
format: "double"
example: 0.6
description: "The average rate the contact clicked on links in emails sent\
\ to them."
description: "The average click and open rates for a provided contact. The basic\
\ information provided is contact id, open rate, click rate, and emails included\
\ in the calculation."
CampaignActivitySummary:
type: "object"
required:
- "campaign_activity_id"
- "em_bounces"
- "em_clicks"
- "em_forwards"
- "em_opens"
- "em_sends"
- "em_unsubscribes"
- "start_on"
properties:
campaign_activity_id:
type: "string"
format: "uuid"
description: "The unique id of the activity for an e-mail campaign."
start_on:
type: "string"
format: "date-time"
description: "The last date at which the email was sent to this contact."
em_bounces:
type: "integer"
format: "int32"
description: "The number of times the email has bounced for this contact."
em_clicks:
type: "integer"
format: "int32"
description: "The number of times this contact has clicked a link in this\
\ email."
em_forwards:
type: "integer"
format: "int32"
description: "The number of times this contact has forwarded this email."
em_opens:
type: "integer"
format: "int32"
description: "The number of times this contact has opened this email."
em_sends:
type: "integer"
format: "int32"
description: "The number of times the email was sent to this contact."
em_unsubscribes:
type: "integer"
format: "int32"
description: "The number of times this contact has opted out."
ContactCampaignActivitiesSummary:
type: "object"
required:
- "campaign_activities"
- "contact_id"
properties:
contact_id:
type: "string"
format: "uuid"
example: "71600990-908b-11e6-907f-00166bff25"
description: "Unique id of the contact that will have their activity summarized."
campaign_activities:
type: "array"
description: "A summary of all the actions for a contact."
items:
$ref: "#/definitions/CampaignActivitySummary"
_links:
description: "The next link if more summaries of activities are available."
$ref: "#/definitions/Links-5"
EmailLinkClickCount:
type: "object"
properties:
link_url:
type: "string"
example: "https://www.constantcontact.com/"
description: "The URL of a link in an email campaign activity. This URL is\
\ not normalized and appears the same as the URL in the email campaign activity."
url_id:
type: "string"
example: "1100577727321"
description: "The ID for a unique link URL in an email campaign activity."
unique_clicks:
type: "integer"
format: "int32"
example: 99
description: "The number of unique contacts that clicked the link."
list_action:
type: "string"
example: "add"
description: "If the link uses the click segmentation feature, this property\
\ contains the action that contacts trigger when they click the link. Currently\
\ the only available action is add, which adds contacts that\
\ click the link to a contact list."
list_id:
type: "string"
format: "uuid"
example: "3377aefd-970a-4de6-8400-ab4ec491624c"
description: "If the link uses the click segmentation feature, this property\
\ contains the contact list linked with the list_action property."
link_tag:
type: "string"
example: "google-link-1"
description: "Link tags are not currently available in email campaigns. By\
\ default, this method combines results for duplicate link URLs. Link tags\
\ will allow users to get a separate link click report for each unique link_tag\
\ value they use, even if URLs are not unique."
EmailLinks:
type: "object"
properties:
campaign_activity_id:
type: "string"
format: "uuid"
example: "8892baf9-970a-4de6-8400-fa4ec461987c"
description: "The unique ID for an email campaign activity."
link_click_counts:
type: "array"
description: "An array of objects that contain the contact click count and\
\ link metadata for each unique link URL in an email campaign activity.\
\ By default, this method combines results for duplicate link URLs."
items:
$ref: "#/definitions/EmailLinkClickCount"
SendsTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies an email campaign activity."
tracking_activity_type:
type: "string"
example: "em_sends"
description: "The type of tracking activity that is associated with this campaign_activity_id\
\ and used for reporting purposes."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address used to send the email campaign activity to\
\ a contact."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that you sent the email campaign to the contact."
deleted_at:
type: "string"
format: "date"
example: "2019-04-10"
description: "If applicable, displays the date that the contact was deleted."
SendsTrackingActivitiesPage:
type: "object"
required:
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "Lists the contacts to which the email campaign activity (campaign_activity_id)\
\ was sent."
items:
$ref: "#/definitions/SendsTrackingActivity"
_links:
description: "HAL property that contains the next link, if applicable."
$ref: "#/definitions/Links-5"
OpensTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies an email campaign activity."
tracking_activity_type:
type: "string"
example: "em_opens"
description: "The type of tracking activity that is associated with this campaign_activity_id\
\ and used for reporting purposes."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address used to send the email campaign activity to\
\ a contact."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
device_type:
type: "string"
example: "computer"
description: "The type of device that the contact used to open the email campaign\
\ activity."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that the contact opened the email campaign\
\ activity."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, displays the date that the contact was deleted."
OpensTrackingActivitiesPage:
type: "object"
required:
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "Lists contacts that opened the specified campaign_activity_id."
items:
$ref: "#/definitions/OpensTrackingActivity"
_links:
description: "HAL property that contains the next link, if applicable."
$ref: "#/definitions/Links-5"
DidNotOpensTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies an email campaign activity."
tracking_activity_type:
type: "string"
example: "em_didnotopens"
description: "The type of tracking activity that is associated with this campaign_activity_id\
\ and used for reporting purposes."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address used to send the email campaign activity to\
\ a contact."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that the contact was sent the email campaign\
\ activity."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, displays the date that the contact was deleted."
DidNotOpensTrackingActivitiesPage:
type: "object"
required:
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "Lists contacts that did not open the specified campaign_activity_id."
items:
$ref: "#/definitions/DidNotOpensTrackingActivity"
_links:
description: "HAL property that contains the next link, if applicable."
$ref: "#/definitions/Links-5"
ClicksTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "link_url"
- "tracking_activity_type"
- "url_id"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies the email campaign activity."
tracking_activity_type:
type: "string"
example: "em_clicks"
description: "The type of report tracking activity that is associated with\
\ the specified campaign_activity_id."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address used to send the email campaign activity to\
\ a contact."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
device_type:
type: "string"
example: "computer"
description: "The type of device that the contact was using when they clicked\
\ the URL link for the email campaign activity."
url_id:
type: "string"
example: "1100407204171"
description: "The ID used to uniquely identify the URL link."
link_url:
type: "string"
example: "http://www.yoursite.com"
description: "The text used for the URL link."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that the contact clicked the specified URL\
\ link for the email campaign activity."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, displays the date that the contact was deleted."
ClicksTrackingActivitiesPage:
type: "object"
required:
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of click tracking activities"
items:
$ref: "#/definitions/ClicksTrackingActivity"
_links:
description: "HAL property that contains next link if applicable."
$ref: "#/definitions/Links-5"
ForwardsTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies the email campaign activity."
tracking_activity_type:
type: "string"
example: "em_forwards"
description: "The type of report tracking activity that is associated with\
\ the specified campaign_activity_id."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The contact's email address."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time that the contact forwarded the email campaign activity."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, displays the date that the contact was deleted."
ForwardsTrackingActivitiesPage:
type: "object"
required:
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of contacts that forwarded the specified email campaign\
\ activity. "
items:
$ref: "#/definitions/ForwardsTrackingActivity"
_links:
description: "HAL property that contains the next link, if applicable."
$ref: "#/definitions/Links-5"
OptoutsTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies the email campaign activity."
tracking_activity_type:
type: "string"
example: "em_optouts"
description: "The type of report tracking activity that is associated with\
\ the specified campaign_activity_id."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The contact's email address."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
opt_out_reason:
type: "string"
example: "The content is not what I expected"
description: "The opt-out reason, if the contact entered a reason."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time that the contact chose to opt-out from receiving future\
\ email campaign activities."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, displays the date that the contact was deleted."
OptoutsTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of opt-out tracking activities"
items:
$ref: "#/definitions/OptoutsTrackingActivity"
_links:
description: "HAL property that contains the next link, if applicable."
$ref: "#/definitions/Links-5"
BouncesTrackingActivity:
type: "object"
required:
- "bounce_code"
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies a contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The ID that uniquely identifies the email campaign activity."
tracking_activity_type:
type: "string"
example: "em_bounces"
description: "The type of email tracking activity, em_bounces,\
\ that this report includes."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The contact's email address that was used when the email campaign\
\ activity bounced."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
bounce_code:
type: "string"
example: "B"
description: "The one-character string used to specify the reason for the\
\ email bounce. Valid codes include:\n\nB - Non-existent\
\ address; the contact's Internet Service Provider (ISP) indicates that\
\ the email address doesn't exist.D - Undeliverable;\
\ after repeated delivery attempts, no response was received from the contact's\
\ ISP.F - Full; the contact's mailbox is full.S - Suspended; the contact's address was reported as\
\ non-existent by the ISP and is suspended from delivery.V\
\ - Vacation/autoreply; the contact set an autoreply, but the message was\
\ delivered.X - Other; the contact's ISP specified\
\ another reason that the message cannot be delivered.Z\
\ - Blocked; the recipient's ISP chose not to deliver the email. For example,\
\ the ISP may have flagged the email as spam.email_address\
\ was updated after the email bounce activity occurred, current_ email_address\
\ displays the updated address. If updates were not made to email_address,\
\ the email_address and current_email_address\
\ are the same."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that the email bounce tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "If applicable, the date when the contact was deleted."
BouncesTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of email bounce tracking activities associated with\
\ a given `campaign_activity_id'."
items:
$ref: "#/definitions/BouncesTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-5"
UniqueEmailCounts:
type: "object"
properties:
sends:
type: "integer"
format: "int32"
example: 3129
description: "The total number of unique sends."
opens:
type: "integer"
format: "int32"
example: 1672
description: "The total number of unique opens."
clicks:
type: "integer"
format: "int32"
example: 256
description: "The total number of unique clicks."
forwards:
type: "integer"
format: "int32"
example: 21
description: "The total number of unique forwards."
optouts:
type: "integer"
format: "int32"
example: 3
description: "The total number of unique optouts (unsubscribes)."
abuse:
type: "integer"
format: "int32"
example: 1
description: "The total number of unique abuse count (spam)."
bounces:
type: "integer"
format: "int32"
example: 210
description: "The total number of unique bounce count."
not_opened:
type: "integer"
format: "int32"
example: 1211
description: "The total number of unique non-opens"
BulkEmailCampaignSummary:
type: "object"
required:
- "campaign_id"
properties:
campaign_id:
type: "string"
example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
description: "The ID that uniquely identifies an email campaign."
campaign_type:
type: "string"
example: "Newsletter"
description: "Identifies the email campaign type."
last_sent_date:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date and time that the email campaign was last sent."
unique_counts:
description: "The total number of times each unique contact interacted with\
\ a tracked email campaign activity."
$ref: "#/definitions/UniqueEmailCounts"
BulkEmailCampaignSummariesPercents:
type: "object"
properties:
click:
type: "number"
example: 43.0
description: "Aggregated click rate for campaigns on the current page."
open:
type: "number"
example: 12.0
description: "Aggregated open rate for campaigns on the current page."
did_not_open:
type: "number"
example: 23.0
description: "Aggregated did-not-open rate for campaigns on the current page."
bounce:
type: "number"
example: 21.0
description: "Aggregated bounce rate for campaigns on the current page."
unsubscribe:
type: "number"
example: 2.0
description: "Aggregated unsubscribe (optout) rate for campaigns on the current\
\ page."
BulkEmailCampaignSummariesPage:
type: "object"
properties:
bulk_email_campaign_summaries:
type: "array"
description: "Lists and provides details about each bulk email campaign activity\
\ including total unique counts for tracked activities."
items:
$ref: "#/definitions/BulkEmailCampaignSummary"
aggregate_percents:
description: "Lists aggregate percents for `click`, `open`, `did_not_open`,\
\ `bounce`, and `unsubscribe` activities for all campaigns included on\
\ a page of results."
$ref: "#/definitions/BulkEmailCampaignSummariesPercents"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-5"
StatsError:
type: "object"
properties:
error_key:
type: "string"
example: "reportingsvc.not_found.invalid_path_param.campaign_ids."
description: "The unique error key."
error_message:
type: "string"
example: "Could not find any campaign stats for all requested campaigns."
description: "A error description."
StatsEmail:
type: "object"
properties:
em_bounces:
type: "integer"
format: "int32"
example: 10
description: "Number of unique email bounces."
em_clicks:
type: "integer"
format: "int32"
example: 280
description: "Number of unique recipients who clicked any link in the email."
em_clicks_all:
type: "integer"
format: "int32"
example: 387
description: "Total number of non-unique email clicks."
em_clicks_all_computer:
type: "integer"
format: "int32"
example: 123
description: "Number of non-unique email clicks on a standard desktop or laptop\
\ computer."
em_clicks_all_mobile:
type: "integer"
format: "int32"
example: 211
description: "Number of non-unique email clicks on a mobile phone or similar\
\ small mobile device (e.g. iPhone)."
em_clicks_all_tablet:
type: "integer"
format: "int32"
example: 85
description: "Number of non-unique email clicks on a small tablet type computer\
\ (e.g. iPad)."
em_clicks_all_other:
type: "integer"
format: "int32"
example: 4
description: "Number of non-unique email clicks on an unknown device (e.g.\
\ Game Console or Wearable)."
em_clicks_all_none:
type: "integer"
format: "int32"
example: 2
description: "Number of non-unique email clicks for which the device type\
\ was not captured. This will account for any clicks prior to when device\
\ type was collected and stored."
em_forwards:
type: "integer"
format: "int32"
example: 39
description: "Number of unique recipients who forwarded the email using the\
\ forward to a friend feature (not available for all types of emails)."
em_not_opened:
type: "integer"
format: "int32"
example: 25
description: "Number of unique recipients who did not open the email. This\
\ is calculated as follows: em_not_opened is equal to em_sends\
\ - em_opens - em_bounces. This value is reported as zero if the\
\ calculation results in a negative value."
em_opens:
type: "integer"
format: "int32"
example: 220
description: "Number of unique recipients who opened the email."
em_opens_all:
type: "integer"
format: "int32"
example: 399
description: "Total number of non-unique email opens."
em_opens_all_computer:
type: "integer"
format: "int32"
example: 65
description: "Number of non-unique email opens on a standard desktop or laptop\
\ computer."
em_opens_all_mobile:
type: "integer"
format: "int32"
example: 270
description: "Number of non-unique email opens on a mobile phone or similar\
\ small mobile device (e.g. iPhone)."
em_opens_all_tablet:
type: "integer"
format: "int32"
example: 199
description: "Number of non-unique email opens on a small tablet type computer\
\ (e.g. iPad)."
em_opens_all_other:
type: "integer"
format: "int32"
example: 10
description: "Number of non-unique email opens on an unknown device (e.g.\
\ Game Console or Wearable)."
em_opens_all_none:
type: "integer"
format: "int32"
example: 2
description: "Number of non-unique email opens for which the device type was\
\ not captured. This will account for any opens prior to when device type\
\ was collected and stored."
em_optouts:
type: "integer"
format: "int32"
example: 2
description: "Number of unique recipients who unsubscribed due to this email."
em_sends:
type: "integer"
format: "int32"
example: 308
description: "Number of unique email sends."
PercentsEmail:
type: "object"
properties:
bounce:
type: "number"
example: 0.0
description: "Percentage of emails sent to unique recipients that bounced."
click:
type: "number"
example: 40.0
description: "Percentage of recipients who opened the email who also clicked\
\ one or more links in it."
desktop_click:
type: "number"
example: 10.0
description: "Percentage of clicks that came from a standard desktop or laptop\
\ computer."
desktop_open:
type: "number"
example: 20.0
description: "Percentage of opens that came from a standard desktop or laptop\
\ computer."
did_not_open:
type: "number"
example: 30.0
description: "Percentage of recipients that received the email (did not bounce)\
\ but did not open it."
mobile_click:
type: "number"
example: 40.0
description: "Percentage of clicks that came from a mobile phone, tablet computer,\
\ or similar small mobile device (e.g. iPhone or iPad)."
mobile_open:
type: "number"
example: 10.0
description: "Percentage of opens that came from a mobile phone, tablet computer,\
\ or similar small mobile device (e.g. iPhone or iPad)."
open:
type: "number"
example: 70.0
description: "Percentage of recipients that received the email (did not bounce)\
\ and opened it."
unsubscribe:
type: "number"
example: 0.0
description: "Percentage of recipients that received the email (did not bounce)\
\ and chose to unsubscribe."
CampaignStatsResultGenericStatsEmailPercentsEmail:
type: "object"
properties:
campaign_id:
type: "string"
example: "82ee2c37-c8f8-4974-9560-ef93ad51d58z"
description: "The ID that uniquely identifies the campaign (UUID)."
stats:
description: "Key-value pairs of campaign related statistics."
$ref: "#/definitions/StatsEmail"
percents:
description: "Key-value pairs of campaign related percentages."
$ref: "#/definitions/PercentsEmail"
last_refresh_time:
type: "string"
format: "date-time"
example: "2015-08-25T22:00:09.908Z"
description: "The date and time that the campaign stats were last refreshed."
CampaignStatsQueryResultEmail:
type: "object"
properties:
errors:
type: "array"
description: "An array of errors indicating any partial failures in the query."
items:
$ref: "#/definitions/StatsError"
results:
type: "array"
description: "An array of results listing statistics for each requested campaign_id."
items:
$ref: "#/definitions/CampaignStatsResultGenericStatsEmailPercentsEmail"
StatsEmailActivity:
type: "object"
properties:
em_bounces:
type: "integer"
format: "int32"
example: 10
description: "Number of unique email bounces."
em_clicks:
type: "integer"
format: "int32"
example: 280
description: "Number of unique recipients who clicked any link in the email."
em_clicks_all:
type: "integer"
format: "int32"
example: 387
description: "Total number of non-unique email clicks."
em_clicks_all_computer:
type: "integer"
format: "int32"
example: 123
description: "Number of non-unique email clicks on a standard desktop or laptop\
\ computer."
em_clicks_all_mobile:
type: "integer"
format: "int32"
example: 211
description: "Number of non-unique email clicks on a mobile phone or similar\
\ small mobile device (e.g. iPhone)."
em_clicks_all_tablet:
type: "integer"
format: "int32"
example: 85
description: "Number of non-unique email clicks on a small tablet type computer\
\ (e.g. iPad)."
em_clicks_all_other:
type: "integer"
format: "int32"
example: 4
description: "Number of non-unique email clicks on an unknown device (e.g.\
\ Game Console or Wearable)."
em_clicks_all_none:
type: "integer"
format: "int32"
example: 2
description: "Number of non-unique email clicks for which the device type\
\ was not captured. This will account for any clicks prior to when device\
\ type was collected and stored."
em_forwards:
type: "integer"
format: "int32"
example: 39
description: "Number of unique recipients who forwarded the email using the\
\ forward to a friend feature (not available for all types of emails)."
em_not_opened:
type: "integer"
format: "int32"
example: 25
description: "Number of unique recipients who did not open the email. This\
\ is calculated as follows: em_not_opened is equal to em_sends\
\ - em_opens - em_bounces. This value is reported as zero if the\
\ calculation results in a negative value."
em_opens:
type: "integer"
format: "int32"
example: 220
description: "Number of unique recipients who opened the email."
em_opens_all:
type: "integer"
format: "int32"
example: 399
description: "Total number of non-unique email opens."
em_opens_all_computer:
type: "integer"
format: "int32"
example: 65
description: "Number of non-unique email opens on a standard desktop or laptop\
\ computer."
em_opens_all_mobile:
type: "integer"
format: "int32"
example: 270
description: "Number of non-unique email opens on a mobile phone or similar\
\ small mobile device (e.g. iPhone)."
em_opens_all_tablet:
type: "integer"
format: "int32"
example: 199
description: "Number of non-unique email opens on a small tablet type computer\
\ (e.g. iPad)."
em_opens_all_other:
type: "integer"
format: "int32"
example: 10
description: "Number of non-unique email opens on an unknown device (e.g.\
\ Game Console or Wearable)."
em_opens_all_none:
type: "integer"
format: "int32"
example: 2
description: "Number of non-unique email opens for which the device type was\
\ not captured. This will account for any opens prior to when device type\
\ was collected and stored."
em_optouts:
type: "integer"
format: "int32"
example: 2
description: "Number of unique recipients who unsubscribed due to this email."
em_sends:
type: "integer"
format: "int32"
example: 308
description: "Number of unique email sends."
em_abuse:
type: "integer"
format: "int32"
example: 1
description: "Number of abuse (spam) complaints received."
em_bounces_blocked:
type: "integer"
format: "int32"
example: 1
description: "Unique number bounced because as blocked by the receiving system."
em_bounces_mailbox_full:
type: "integer"
format: "int32"
example: 2
description: "Unique number that bounced back with a mailbox full message."
em_bounces_nonexistent_address:
type: "integer"
format: "int32"
example: 3
description: "Unique number that bounced as a non-existent address."
em_bounces_other:
type: "integer"
format: "int32"
example: 2
description: "Unique number that bounced without an identifiable cause."
em_bounces_suspended:
type: "integer"
format: "int32"
example: 1
description: "Unique number that bounced as suspended. Email address bounces\
\ as suspended when multiple non-existent bounces have been received for\
\ the same address."
em_bounces_undeliverable:
type: "integer"
format: "int32"
example: 19
description: "Unique number that bounced as undeliverable."
em_bounces_vacation:
type: "integer"
format: "int32"
example: 2
description: "Unique number that bounced back with a vacation or out of office\
\ autoreply."
CampaignActivityStatsResultGenericStatsEmailActivity:
type: "object"
properties:
campaign_id:
type: "string"
description: "The unique ID used to identify the campaign (UUID)."
campaign_activity_id:
type: "string"
description: "The unique ID used to identify the campaign activity (UUID)."
stats:
description: "Key-value pairs of campaign activity statistics."
$ref: "#/definitions/StatsEmailActivity"
last_refresh_time:
type: "string"
description: "The time at which the campaign activity stats were last refreshed\
\ in ISO 8601 format (e.g. '2015-08-25T22:00:09.908Z')."
CampaignActivityStatsQueryResultEmail:
type: "object"
properties:
errors:
type: "array"
description: "Array of errors indicating any partial failures in the query"
items:
$ref: "#/definitions/StatsError"
results:
type: "array"
description: "An array of results containing statistics for each requested\
\ campaign activity"
items:
$ref: "#/definitions/CampaignActivityStatsResultGenericStatsEmailActivity"
TrackingActivitySmsChannelDTO:
type: "object"
properties:
country_code:
type: "string"
example: "US"
description: "The ISO country code that is associated with SMS address."
state:
type: "string"
description: "The SMS channel status:\n N: not_setT: temp_holdP: pending_confirmationI: implicitE: explicitO: unsubscribedD:deprecatedcountry_code\
\ does not match the contacts country_code. "
formatted_national:
type: "string"
example: "(234) 555-6789"
description: "The formatted SMS number returned if the SMS country_code\
\ matches the contacts country_code. "
PContactClickTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "link_url"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The unique ID that identifies the contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The unique ID that identifies of the campaign activity to use."
tracking_activity_type:
type: "string"
example: "p_contact_click"
description: "The tracked activity event type."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address for the contact and tracking activity."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
device_type:
type: "string"
example: "tablet"
description: "The type of device that was used to click the link."
url_id:
type: "string"
example: "1100407204171"
description: "The ID used to uniquely identify the link."
link_url:
type: "string"
example: "http://www.amazon.com"
description: "The URL link text."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time the tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "The time the Contact was deleted"
sms_channel:
description: "Sms channel info for this contact"
$ref: "#/definitions/TrackingActivitySmsChannelDTO"
Next-3:
type: "object"
required:
- "href"
properties:
href:
type: "string"
description: "The next link in the page or null if there are no additional\
\ pages"
Links-6:
type: "object"
required:
- "next"
properties:
next:
description: "Contains the next link if it is available."
$ref: "#/definitions/Next-3"
PContactClickTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of landing page contact click tracking activities."
items:
$ref: "#/definitions/PContactClickTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-6"
PContactOpenTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The unique ID that identifies the contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The unique ID that identifies of the campaign activity to use."
tracking_activity_type:
type: "string"
example: "p_contact_opens"
description: "The tracked activity event type."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address for the contact and tracking activity."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
device_type:
type: "string"
example: "tablet"
description: "The type of device that was used to open the link."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time the tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "The time the Contact was deleted"
sms_channel:
description: "Sms channel info for this contact"
$ref: "#/definitions/TrackingActivitySmsChannelDTO"
PContactOpensTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of landing page contact opens tracking activities."
items:
$ref: "#/definitions/PContactOpenTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-6"
PContactUpdateTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The unique ID that identifies the contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The unique ID that identifies of the campaign activity to use."
tracking_activity_type:
type: "string"
example: "p_contact_updates"
description: "The tracked activity event type."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address for the contact and tracking activity."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time the tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "The time the Contact was deleted"
sms_channel:
description: "Sms channel info for this contact"
$ref: "#/definitions/TrackingActivitySmsChannelDTO"
PContactUpdateTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of landing page contact update tracking activities."
items:
$ref: "#/definitions/PContactUpdateTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-6"
PContactAddTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The unique ID that identifies the contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The unique ID that identifies of the campaign activity to use."
tracking_activity_type:
type: "string"
example: "p_contact_adds"
description: "The tracked activity event type."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address for the contact and tracking activity."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time the tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "The time the Contact was deleted"
sms_channel:
description: "Sms channel info for this contact"
$ref: "#/definitions/TrackingActivitySmsChannelDTO"
PContactAddTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of landing page contact adds tracking activities."
items:
$ref: "#/definitions/PContactAddTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-6"
PContactSMSOptInTrackingActivity:
type: "object"
required:
- "campaign_activity_id"
- "contact_id"
- "created_time"
- "email_address"
- "tracking_activity_type"
properties:
contact_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The unique ID that identifies the contact."
campaign_activity_id:
type: "string"
format: "uuid"
example: "98edac88-f4bc-408c-9e64-acd890384231"
description: "The unique ID that identifies of the campaign activity to use."
tracking_activity_type:
type: "string"
example: "p_contact_sms_optins"
description: "The tracked activity event type."
email_address:
type: "string"
example: "maddieb@gmail.com"
description: "The email address for the contact and tracking activity."
first_name:
type: "string"
example: "Maddie"
description: "The first name of the contact."
last_name:
type: "string"
example: "Brown"
description: "The last name of the contact."
created_time:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The time the tracking activity occurred."
deleted_at:
type: "string"
format: "date"
example: "2015-08-10"
description: "The time the Contact was deleted"
sms_channel:
description: "Sms channel info for this contact"
$ref: "#/definitions/TrackingActivitySmsChannelDTO"
PContactSMSOptInTrackingActivitiesPage:
type: "object"
required:
- "_links"
- "tracking_activities"
properties:
tracking_activities:
type: "array"
description: "The list of landing page contact opt in tracking activities."
items:
$ref: "#/definitions/PContactSMSOptInTrackingActivity"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-6"
UniqueSmsCounts:
type: "object"
required:
- "clicks"
- "delivers"
- "optouts"
- "sends"
properties:
sends:
type: "integer"
format: "int32"
example: 100
description: "The total number of unique sends."
delivers:
type: "integer"
format: "int32"
example: 100
description: "The total number of SMS delivered."
opens:
type: "integer"
format: "int32"
example: 75
description: "The total number of unique opens."
clicks:
type: "integer"
format: "int32"
example: 294
description: "The total number of unique clicks."
optouts:
type: "integer"
format: "int32"
example: 0
description: "The total number of unique opt-outs (unsubscribes)."
BulkCampaignSummary:
type: "object"
required:
- "campaign_id"
- "campaign_name"
- "campaign_type"
- "last_sent_date"
- "unique_counts"
properties:
campaign_id:
type: "string"
format: "uuid"
example: "a2fdc285-f4bc-408c-9e64-f3f89038ec82"
description: "The ID that uniquely identifies the campaign."
campaign_name:
type: "string"
example: "Spring Clearance Sale"
description: "The name to associate with this campaign."
last_sent_date:
type: "string"
format: "date-time"
example: "2019-04-25T11:08:00.000Z"
description: "The date that the campaign was last sent."
unique_counts:
description: "The total number of times each unique contact interacted with\
\ a tracked SMS campaign activity."
$ref: "#/definitions/UniqueSmsCounts"
campaign_type:
type: "string"
example: "SMS"
description: "The campaign type."
BulkSmsCampaignSummariesPercents:
type: "object"
properties:
deliver:
type: "number"
example: 23.0
description: "The aggregated SMS delivery rate for all campaigns on the current\
\ results page."
click:
type: "number"
example: 43.0
description: "The aggregated click rate for all campaigns on the current results\
\ page."
bounce:
type: "number"
example: 0.0
description: "The aggregated bounce rate for all campaigns on the current\
\ results page."
unsubscribe:
type: "number"
example: 0.0
description: "The aggregated unsubscribe (opt-out) rate for all campaigns\
\ on the current results page."
Next-4:
type: "object"
required:
- "href"
properties:
href:
type: "string"
description: "The next link in the page or null if there are no additional\
\ pages."
Links-7:
type: "object"
properties:
next:
description: "Contains the next link if it is available."
$ref: "#/definitions/Next-4"
SmsCampaignSummariesPage:
type: "object"
properties:
bulk_sms_campaign_summaries:
type: "array"
description: "Provides details about each SMS campaign, including the total\
\ unique counts for each tracked campaign activity."
items:
$ref: "#/definitions/BulkCampaignSummary"
aggregate_percents:
description: "Campaign activity aggregate percents, including click,\
\ deliver, bounce, and unsubscribe,\
\ for all SMS campaigns returned on a page of results."
$ref: "#/definitions/BulkSmsCampaignSummariesPercents"
_links:
description: "HAL property that contains next link if applicable"
$ref: "#/definitions/Links-7"
PaginationLinks:
type: "object"
properties:
next:
description: "Contains the next page link, if applicable."
$ref: "#/definitions/Link-2"
PartnerAccount:
type: "object"
required:
- "site_owner_list"
properties:
site_owner_list:
type: "array"
description: "Lists all Constant Contact client accounts that are managed\
\ under a partner account."
items:
type: "object"
properties:
encoded_account_id:
type: "string"
example: "a08e1izvh8t9"
description: "The obfuscated ID used to uniquely identify a client account."
readOnly: true
subscriber_count:
type: "integer"
format: "int64"
example: 65
description: "The total number of subscriber contacts that are associated\
\ with a client account."
readOnly: true
organization_name:
type: "string"
example: "Zenomatic"
description: "The name of the organization associated with this client\
\ account."
readOnly: true
site_owner_name:
type: "string"
example: "Zen1016153"
description: "The user name that identifies a client account."
readOnly: true
billing_status:
type: "string"
example: "Open"
description: "The client's account billing status. When you first create\
\ a client account the `billing status` defaults to `Trial`. Billing\
\ status values include: Trial - A non-paying\
\ trial client account (default value).Open\
\ - An active and paying client account.Canceled\
\ - A canceled client account.Trial End\
\ - The trial period has ended for this client account.country_code\
\ is US ) or Canadian province (country_code is\
\ CA) where the client's organization is physically located.\
\ Leave the state_code blank for non-US states and Canadian\
\ provinces."
time_zone_id:
type: "string"
example: "US/Eastern"
description: "The offical time zone to use to represent the physical location\
\ associated with the client account."
website:
type: "string"
example: "http://your.company.website"
description: "The client's website URL. Specifying the website URL eliminates\
\ the need for clients to provide that information. Requires a valid URL\
\ starting with http:// or https://."
login_name:
type: "string"
example: "hank_smith"
description: "A unique login name to associate with the client account. The\
\ name must only contain alphanumeric characters and '-', '_', '@','.','+'. "
minLength: 6
maxLength: 50
password:
type: "string"
example: "123456789"
description: "Required if not using Single Sign On (SSO) or external authenticator.\
\ The password to associate with the client account. Passwords must be at\
\ least 8 characters and no more than 80 characters in length. Passwords\
\ can contain alphabetical letters (A-Z) and (a-z), numbers (0-9), special\
\ characters (! @ # $ etc.) and spaces. Passwords should not contain any\
\ part of your username and cannot be the same as your last password, or\
\ be listed on an industry database; we check for easily guessed or compromised\
\ passwords. Your new password is not returned in the response payload for\
\ security reasons. If using SSO authentication, use idp_provider\
\ and idp_provider_id instead of password."
minLength: 8
maxLength: 80
first_name:
type: "string"
example: "Hank"
description: "The client account owner's first name."
minLength: 2
maxLength: 80
last_name:
type: "string"
example: "Smith"
description: "The client account owner's last name."
minLength: 2
maxLength: 80
partner_account_id:
type: "string"
example: "partner1234"
description: "The unique client account identifier that partners define and\
\ use for billing and reporting purposes."
maxLength: 80
billing_locale:
type: "string"
example: "en_US."
description: "The currency to use when billing the client account. Valid values\
\ are: en_US (default, US Dollars) or en_GB (British\
\ Pounds)."
managed_site_owner:
type: "boolean"
example: true
description: "By default, if the client account is setup as a managed account\
\ managed_site_owner is automatically set to true\
\ and attempting to override the setting with false is ignored.\
\ This helps to avoid getting an account into an unknown state."
enable_single_billing:
type: "boolean"
example: true
description: "If a partner account is setup to allow for single billing and\
\ the managed_site_owner property is set to true,\
\ use this property to enable the single billing feature for the client\
\ account. See your account manager for more information."
gdpr_opt_out:
type: "boolean"
example: true
description: "When creating accounts for users who have opted-out of any marketing\
\ communications, set the gdpr_opt_out to true\
\ so that Constant Contact does not send any marketing communications to\
\ the account."
external_id:
type: "string"
example: "123456789123456789"
description: "The ID used to uniquely identify the client account for the\
\ external authenticator. Do not use the password property\
\ when using an external authenticator."
maxLength: 255
external_provider:
type: "string"
example: "Yahoo"
description: "The name of the provider who externally authenticates this customer.\
\ For example, PayPal or Yahoo. Do not use the password property\
\ when using an external authenticator."
maxLength: 80
ProvisionResponse:
type: "object"
properties:
encoded_account_id:
type: "string"
example: "a08e1izzh8t9"
description: "The system generated ID used to uniquely identify a client account."
provision_uuid:
type: "string"
example: "x9xx2ede-5a58-4e23-8168-25930c5x7bxb"
description: "The system generated ID used to uniquely identify the provisioning\
\ of a client account."
PlanInfo:
type: "object"
properties:
plan_type:
type: "string"
example: "GOLD"
description: "Use this property to update the client account billing plan\
\ to a different billing plan. After changing the plan_type\
\ from TRIAL to any other billing plan type, you cannot change\
\ it back to TRIAL.\n TRIAL: A\
\ non-billable account with an expiration date that allows clients to try\
\ Constant Contact product features.GOLD: A\
\ billable client account plan.SILVER: A billable\
\ client account plan.BRONZE: A billable client\
\ account plan.plan_type\
\ value changes from a TRIAL plan to a different plan_type.\
\ For trial accounts, the value defaults to null. You can only change the\
\ billing_day_of_month when changing the plan_type\
\ value from TRIAL to a different plan_type, otherwise\
\ the value you enter is ignored."
description: "Specifies the type of billing plan and the billing date to use for\
\ a client account."
AccountCancellation:
type: "object"
properties:
reason_id:
type: "integer"
format: "int32"
example: 1
description: "Specifies the reason that the client is canceling their Constant\
\ Contact account as follows:\n 1 Cost Too\
\ High2 Using A Competitive Service3 Not Doing Email Marketing11\
\ Something Missing Or Not Working 12 Doing\
\ It In-House14 Poor Results21\
\ Too Difficult To Use27 Canceled Online by\
\ Customer30 Dissatisfied With Billing Policies/emails/activities/{campaign_activity_id}."
account_operation_method:
type: "string"
example: "GET"
description: "The http method for the request you are sending on behalf of\
\ a managed child account."
account_operation_payload:
type: "string"
example: ""
description: "The request payload for the request you are sending on behalf\
\ of a managed child account. If you provide a JSON payload using this parameter,\
\ make sure that the JSON is string escaped."
account_operation_query_parameters:
type: "array"
description: "An array containing the query parameters for the request you\
\ are sending on behalf of a managed child account."
items:
$ref: "#/definitions/QueryParamObject"
account_operation_path_parameters:
type: "array"
description: "An array containing the path parameters for the request you\
\ are sending on behalf of a managed child account."
items:
$ref: "#/definitions/PathParamObject"
account_operation_headers:
type: "array"
description: "An array containing the headers for the request you are sending\
\ on behalf of a managed child account."
items:
$ref: "#/definitions/HeadersObject"
description: "JSON object that contains the fields Constant Contact uses to construct\
\ the HTTP request you are sending on behalf of a managed account."
SSOUser:
type: "object"
required:
- "contact_email"
- "external_id"
- "external_provider"
- "first_name"
- "last_name"
- "login_name"
- "role_name"
properties:
first_name:
type: "string"
example: "Josie"
description: "The client account user's first name."
maxLength: 80
last_name:
type: "string"
example: "Lang"
description: "The client account user's last name."
maxLength: 80
role_name:
type: "string"
example: "campaign_creator"
description: "The role (account_manager or campaign_creator)\
\ to assign the client account user."
contact_email:
type: "string"
example: "josie.lang@gmail.com"
description: "The unique email address to associate with the new client account\
\ user."
maxLength: 80
login_name:
type: "string"
example: "josie.lang"
description: "The login name to associate with the new client account user."
maxLength: 50
external_id:
type: "string"
example: "23378234122161121"
description: "The unique ID used to identify the client account user to the\
\ external authenticator."
maxLength: 255
external_provider:
type: "string"
example: "Yahoo"
description: "The unique name used to identify the external provider used\
\ to authenticate the client account user. For a list of external providers,\
\ contact the Constant Contact Partner Team."
maxLength: 80
description: "Specify client account user's details. All fields are required."
PartnerUnsubscribeResponse:
type: "object"
properties:
unsubscribed_count:
type: "integer"
example: 5
description: "The number of contacts that were successfully unsubscribed."
description: "Response indicating the number of contacts that were successfully\
\ unsubscribed."
AccountSuspension:
type: "object"
required:
- "suspend_plan_group_id"
- "suspend_plan_id"
properties:
suspend_plan_id:
type: "integer"
description: "Suspended plan group id."
suspend_plan_group_id:
type: "integer"
description: "The suspended plan group id."
suspend_date:
type: "string"
format: "date-time"
description: "The date when the customer will start being suspended. If omitted\
\ defaults to the current date and time and suspends the account at the\
\ next billing cycle."
suspend_reason_id:
type: "integer"
description: "The reason the customer is suspended."
suspend_subreason_id:
type: "integer"
description: "The subreason why the customer is suspended."
suspend_comment:
type: "string"
description: "Comment field for user suspension."
suspend_estimated_reactivation_date:
type: "string"
format: "date-time"
description: "Estimated date when the customer will be reactivated."
WebhooksSubscriptionCollection:
type: "array"
description: "An array of webhook subscriptions."
items:
type: "object"
properties:
topic_id:
type: "integer"
example: 2
description: "Identifies the topic using an integer to indicate the type\
\ of topic."
hook_uri:
type: "string"
example: "https://www.examplename.com/webhooks/billingTier"
description: "Your webhook callback URI. Constant Contact automatically\
\ sends POST requests to this URI to notify you about the topic."
topic_name:
type: "string"
example: "Billing Tier Downgrade"
description: "The name of the topic."
topic_description:
type: "string"
example: "Executes when an account's billing tier is downgraded."
description: "A description of what the topic is and when Constant Contact\
\ notifies you concerning it."
WebhooksSubscriptionResponse:
type: "object"
properties:
topic_id:
type: "integer"
example: 2
description: "Identifies the topic using an integer to indicate the type of\
\ topic."
hook_uri:
type: "string"
example: "https://www.examplename.com/webhooks/billingTier"
description: "Your webhook callback URI. Constant Contact automatically sends\
\ POST requests to this URI to notify you about the topic."
topic_name:
type: "string"
example: "Billing Tier Downgrade"
description: "The name of the topic."
topic_description:
type: "string"
example: "Executes when an account's billing tier is downgraded."
description: "A description of what the topic is and when Constant Contact\
\ notifies you concerning it."
WebhooksSubscriptionBody:
type: "object"
properties:
hook_uri:
type: "string"
example: "https://www.examplename.com/webhooks/billingTier"
description: "The callback URI you would like to use to receive webhook notifications.\
\ Constant Contact will automatically send POST notifications about your\
\ chosen topic to this URI."
WebhooksSubscriptionPutResp:
type: "object"
properties:
topic_id:
type: "integer"
example: 1
description: "Identifies the topic using an integer to indicate the type of\
\ topic."
hook_uri:
type: "string"
example: "https://www.examplename.com/webhooks/billingTier"
description: "Your webhook callback URI. Constant Contact automatically sends\
\ POST requests to this URI to notify you about the topic."
WebhooksTestSend:
type: "object"
properties:
topic_id:
type: "integer"
example: 2
description: "Identifies the topic using an integer to indicate the type of\
\ topic."
hook_uri:
type: "string"
example: "https://www.examplename.com/webhooks/billingTier"
description: "The webhook callback URI. Constant Contact automatically sends\
\ POST requests to this URI to notify you about the topic."
topic_name:
type: "string"
example: "Billing Tier Downgrade"
description: "The name of the topic."
topic_description:
type: "string"
example: "Executes when an account's billing tier is downgraded."
description: "A description of what the topic is and when Constant Contact\
\ notifies you concerning it. When you use the test send API method, Constant\
\ Contact will immediately send a test event to you."
MyLibraryFileCollection:
type: "array"
items:
type: "object"
properties:
id:
type: "integer"
description: "Identifies the MyLibrary file."
name:
type: "string"
description: "The file name."
height:
type: "integer"
description: "The image height."
width:
type: "integer"
description: "The image width."
size:
type: "integer"
description: "The image size."
url:
type: "string"
description: "The image URL."
description:
type: "string"
description: "The image description."
folder:
type: "string"
description: "The image folder"
source:
type: "string"
description: "The application that uploaded this image."
type:
type: "string"
description: "The image format."
status:
type: "string"
description: "The image status."
thumbnail:
type: "object"
properties:
width:
type: "integer"
format: "int32"
description: "Thumbnail width."
height:
type: "integer"
format: "int32"
description: "Thumbnail height."
url:
type: "string"
description: "Thumbnail url."
image:
type: "boolean"
description: "Boolean indicating if this file is an image."
folder_id:
type: "integer"
format: "int32"
description: "Identifies a folder in MyLibrary."
external_url:
type: "string"
description: "The external url for the file."
modified_date:
type: "string"
description: "Identifies the time a user last modified the file."
added_date:
type: "string"
description: "Identifies the time a user originally added the file to MyLibrary."
external_file_id:
type: "string"
description: "External identifier for the file."
FileObject:
type: "object"
properties:
id:
type: "integer"
description: "Identifies the MyLibrary file."
name:
type: "string"
description: "The file name."
height:
type: "integer"
description: "The image height."
width:
type: "integer"
description: "The image width."
size:
type: "integer"
description: "The image size."
url:
type: "string"
description: "The image URL."
description:
type: "string"
description: "The image description."
folder:
type: "string"
description: "The image folder"
source:
type: "string"
description: "The application that uploaded this image."
type:
type: "string"
description: "The image format."
status:
type: "string"
description: "THe image status."
thumbnail:
type: "object"
properties:
width:
type: "integer"
format: "int32"
description: "Thumbnail width."
height:
type: "integer"
format: "int32"
description: "Thumbnail height."
url:
type: "string"
description: "Thumbnail url."
image:
type: "boolean"
description: "Boolean indicating if this file is an image."
folder_id:
type: "integer"
format: "int32"
description: "Identifies a folder in MyLibrary."
external_url:
type: "string"
description: "The external url for the file."
modified_date:
type: "string"
description: "Identifies the time a user last modified the file."
added_date:
type: "string"
description: "Identifies the time a user originally added the file to MyLibrary."
external_file_id:
type: "string"
description: "External identifier for the file."
FileStatusArray:
type: "array"
items:
type: "object"
properties:
status:
type: "string"
description: "The upload status."
description:
type: "string"
description: "File description."
file_id:
type: "integer"
description: "Identifies the file in MyLibrary."
responses:
Standard405ErrorResponse:
description: "Unsupported method used."
Standard415ErrorResponse:
description: "Unsupported Media Type."
Standard401ErrorResponse:
description: "The Access Token used is invalid."
EmailCampaigns429ErrorResponse:
description: "Too many requests. You exceeded the request rate limit."
Standard400ErrorResponse:
description: "Bad request. Either the JSON was malformed or there was a data validation\
\ error."
Standard503ErrorResponse:
description: "Our internal service is temporarily unavailable."
Standard409ErrorResponse:
description: "Conflict. The resource you are creating or updating conflicts with\
\ an existing resource."
AccountOperations404ErrorResponse:
description: "Not found. This may indicate that the encoded_account_id you provided\
\ is invalid, or the API request you are sending on behalf of an account returned\
\ a 404."
Standard429ErrorResponse:
description: "Too many requests. You exceeded the request rate limit."
Activities429ErrorResponse:
description: "Too many requests. You exceeded 1,000 queued activities for this\
\ user account."
PlanTiersObject:
description: "Specifies client billing plan details including the type of plan,\
\ the plan tiers used, the current billing status, and the day of the month\
\ that the client is billed. When a client account is first provisioned, the\
\ `plan_type` defaults to a `Trial` account. After you change an account `billing_status`\
\ from `Trial` to any other `billing_status`, you cannot change it back to a\
\ `Trial` account."
Standard500ErrorResponse:
description: "There was a problem with our internal service."
AccountCancellation:
description: "Specifies the date and time a client requests to cancel their Constant\
\ Contact account and changes the account `billing_status` to `Canceled`. By\
\ default, this is the current date and time in ISO format. In the request body,\
\ you can optionally specify a future cancellation date (in ISO format) and\
\ a reason (`reason_code`) that the client wants to cancel their account."
Standard403ErrorResponse:
description: "Forbidden request. You lack the necessary scopes, you lack the necessary\
\ user privileges, or the application is deactivated."
Standard404ErrorResponse:
description: "The requested resource was not found."