--- 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.

\n\nIf `sms_channel` is specified:

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.

" operationId: "putContact" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "Unique ID of contact to update" required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" - in: "body" name: "body" description: "JSON payload defining the contact object, with updates. Any\ \ properties left blank or not included in the PUT payload are overwritten\ \ with null value - does not apply to contact subresources." required: true schema: $ref: "#/definitions/ContactPutRequest" responses: "200": description: "Contact resource has been updated" 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." "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." "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: "updateContact" delete: tags: - "Contacts" summary: "DELETE a Contact" description: "Deletes the contact identified by the contact_id path parameter.\ \ Deleted contacts won't receive email from you, and they don't count as active\ \ contacts. Unlike unsubscribed contacts, deleted contacts can be revived,\ \ or added back to an account. Learn how to [revive deleted contacts](/api_guide/contacts_delete.html#revive)." operationId: "deleteContact" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "Unique ID of contact to DELETE" required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" responses: "204": description: "Request successful; No content returned" "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." "503": description: "Our internal service is temporarily unavailable." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:write" /contacts: get: tags: - "Contacts" summary: "GET Contacts Collection" description: "Use this method to return a collection of contacts. Use the query\ \ parameters to search for contacts that match specific contact properties\ \ and sub-resource properties as criteria. For example, you can search using\ \ the contact's `email` address, `lists` memberships, and by the date range\ \ that a contact was created or updated. Use the `limit` query parameter to\ \ limit the number of results returned per page. Use the `include` query parameter\ \ to include contact sub-resources in the response and `include_count` to\ \ include the total number of contacts that meet your specified search criteria.\n\ \nBy default, this method returns all contacts that are not deleted. Use the\ \ `status` query parameter with the value `all` to return all contacts including\ \ deleted contacts." operationId: "getContacts" produces: - "application/json" parameters: - name: "status" in: "query" description: "Use the `status` query parameter to search for contacts by status.\ \ This parameter accepts one or more comma separated values: `all`, `active`,\ \ `deleted`, `not_set`, `pending_confirmation`, `temp_hold`, and `unsubscribed`." required: false type: "string" format: "csv" enum: - "all" - "active" - "deleted" - "not_set" - "pending_confirmation" - "temp_hold" - "unsubscribed" - name: "email" in: "query" description: "Use the `email` query parameter to search for a contact using\ \ a specific email address." required: false type: "string" x-example: "xyz@example.com" - name: "lists" in: "query" description: "Use the `lists` query parameter to search for contacts that\ \ are members of one or more specified lists. Use a comma to separate multiple\ \ `list_id` values, up to a maximum of 25." required: false type: "string" maximum: 25 x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a,04fe9a-a579-43c5-bb1a-58ed29bf0a6a,04fe9a-a579-43c5-bb1a-58ed29bf0a6a" - name: "segment_id" in: "query" description: "Use to get contacts that meet the segment criteria for a single\ \ specified `segment_id`. This query parameter can only be combined with\ \ the limit query parameter. When using the `segment_id` query parameter,\ \ the V3 API may return a 202 response code instead of a 200 response. The\ \ 202 response code indicates that your request has been accepted, but not\ \ fully completed. Retry sending your API request to return the completed\ \ results and a 200 response code." required: false type: "string" maximum: 1 x-example: "14" - name: "tags" in: "query" description: "Use to get contact details for up to 50 specified tags. Use\ \ a comma to separate each `tag_id`." required: false type: "string" maximum: 50 format: "uuid" x-example: "fa85f64-5717-4562-b3fc-2c963f66afa6" - name: "updated_after" in: "query" description: "Use `updated_after` to search for contacts that have been updated\ \ after the date you specify. To search for updated contacts within a date\ \ range, specify both `updated_after` and `updated_before` dates. Accepts\ \ ISO-8601 formatted dates." required: false type: "string" format: "date-time" x-example: "2022-01-01T16:37:59.091Z" - name: "updated_before" in: "query" description: "Use `updated_before` to search for contacts that have been updated\ \ before a specified date. To search for updated contacts within a date\ \ range, specify both `updated_after` and `updated_before` dates. Accepts\ \ ISO-8601 formatted dates." required: false type: "string" format: "date-time" x-example: "2022-07-16T16:37:59.091Z" - name: "created_after" in: "query" description: "Use `created_after` to search for contacts created after a specified\ \ date. To search for contacts created within a date range, specify both\ \ `created_after` and `created_before` dates. Accepts ISO-8601 formatted\ \ dates." required: false type: "string" format: "date-time" x-example: "2021-01-01T16:37:59.091Z" - name: "created_before" in: "query" description: "Use `created_before` to search for contacts created before a\ \ specified date. To search for contacts created within a date range, specify\ \ both `created_after` and `created_before` dates. Accepts ISO-8601 formatted\ \ dates." required: false type: "string" format: "date-time" x-example: "2022-07-16T16:37:59.091Z" - name: "optout_after" in: "query" description: "Use `optout_after` to search for contacts that unsubscribed\ \ after a specified date." required: false type: "string" format: "date-time" x-example: "2022-11-16T16:20:59.091Z" - name: "optout_before" in: "query" description: "Use `optout_before` to search for contacts that unsubscribed\ \ before a specified date." required: false type: "string" format: "date-time" x-example: "2022-11-16T16:20:59.091Z" - 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`, `taggings`, `notes`,`phone_numbers`,\ \ `street_addresses`." required: false type: "string" format: "csv" enum: - "custom_fields" - "list_memberships" - "phone_numbers" - "street_addresses" - "taggings" - "notes" x-example: "custom_fields,list_memberships" - name: "sms_status" in: "query" description: "Use to get contacts by their SMS status. This parameter accepts\ \ one or more comma separated values: `all`, `explicit`, `unsubscribed`,\ \ `pending_confirmation`, `not_set`." required: false type: "string" format: "csv" enum: - "all" - "explicit" - "unsubscribed" - "pending_confirmation" - "not_set" - name: "include_count" in: "query" description: "Set `include_count=true` to include the total number of contacts\ \ (`contacts_count`) that meet all search criteria in the response body." required: false type: "boolean" x-example: "true" - name: "limit" in: "query" description: "Specifies the number of results displayed per page of output\ \ in the response, from 1 - 500, default = 50." required: false type: "integer" default: 50 maximum: 500 minimum: 1 x-example: 25 responses: "200": description: "Request successful" schema: $ref: "#/definitions/Contacts" "202": description: "Accepted" schema: $ref: "#/definitions/Contacts" "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: "getAllContacts" post: tags: - "Contacts" summary: "POST (create) a Contact" description: "\nCreates a new contact resource. You must include the `create_source`\ \ property and at least one of the following properties: `first_name`, `last_name`,\ \ a unique `email_address` (specified using the `EmailAddress` object), or\ \ the `sms_channel` property (specified using the `ContactSmsChannel` object).\n\ \n

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.

\n\nIf `sms_channel` is specified:\ \

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.

" operationId: "createContact" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "The JSON payload defining the contact" required: true schema: $ref: "#/definitions/ContactPostRequest" responses: "201": description: "New contact successfully created" 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." "409": description: "Conflict. The resource you are creating or updating conflicts\ \ with an existing resource." "415": description: "Unsupported Media Type; the payload must be in JSON format,\ \ and Content-Type must be application/json" "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" /contacts/sign_up_form: post: tags: - "Contacts" summary: "Create or Update a Contact" description: "Use this method to create a new contact or update an existing\ \ contact. In the request body, this method requires including the `list_memberships`\ \ array as well as either the contact's `email_address` string or `sms_channel`\ \ object which includes the contact's SMS number. The information you specify\ \ determines if a new contact is either created (the email address or SMS\ \ number does not already exist in the account), or if an existing contact\ \ is updated (the email address or SMS number already exists). The SMS product\ \ feature does not need to be enabled to include a contacts SMS details.\n\ \nUpdates to existing contacts are partial updates. This method only updates\ \ the contact properties you include in the request body. Updates append new\ \ contact lists or custom fields to the existing `list_memberships` or `custom_fields`\ \ arrays.\n\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.

\n\nIf `sms_channel` is specified:\ \

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.

\n\ \nWhen this method creates a new contact, it returns a 201 response code.When\ \ this method updates an existing contact, it returns a 200 response code.\ \ Updating a deleted contact restores the contact.\n\nThe method automatically\ \ modifies the contact's `permission_to_send` and `opt_in_source` properties\ \ depending on the [Confirmed Opt-In](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/5533-obtain-permission-to-send-email-campaigns-to-your-contacts-by-using-confirmed-opt-in)\ \ Constant Contact account setting:\n\nIf Confirmed Opt-in is _enabled_, this\ \ method automatically sets the `permission_to_send` property as `pending_confirmation`\ \ for new contacts. If Confirmed Opt-in is _disabled_, this method automatically\ \ sets the `permission_to_send` property as explicit and the `opt_in_source`\ \ property as `Contact` for new contacts. Updated contacts have their `permission_to_send`\ \ property set as explicit.\n " operationId: "createOrUpdateContact" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "A JSON request body payload that contains the contact resource\ \ you are creating or updating. The request body must contain the `email_address`\ \ property and `list_memberships` array, or the `sms_channel` object." required: true schema: $ref: "#/definitions/ContactCreateOrUpdateInput" responses: "200": description: "Contact successfully updated." schema: $ref: "#/definitions/ContactCreateOrUpdateResponse" "201": description: "Contact successfully created." schema: $ref: "#/definitions/ContactCreateOrUpdateResponse" "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. You sent simultaneous requests that are attempting\ \ to modify the same contact." "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" /contacts/contact_id_xrefs: get: tags: - "Contacts" summary: "GET a collection of V2 and V3 API contact IDs" description: "

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.

\n\nThis GET call retrieves\ \ a collection of cross-referenced contact sequence IDs (`id` used in the\ \ V2 API) and UUIDs (`contact_id` used in the V3 API). This endpoint is intended\ \ for developers who have an existing V2 API integration, and are migrating\ \ their users to a new V3 API integration. The V2 and V3 APIs use different\ \ resource ID formats. Use the `sequence_ids` query parameter to specify a\ \ set of comma delimited V2 contacts ids to cross-referenced with their V3\ \ `contact_ids`. See [Migrating to V3](/api_guide/migration_overview.html)\ \ to learn more." operationId: "getContactIdXrefs" produces: - "application/json" parameters: - name: "sequence_ids" in: "query" description: "Comma delimited list of V2 API contact `ids` to cross-reference\ \ with the V3 API `contact_id` value. Endpoint accepts a maximum of 500\ \ ids at a time." required: true type: "string" maxItems: 500 format: "csv" x-example: "1995998026,1882999944,1775099999" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ContactXrefs" "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" /contact_custom_fields/{custom_field_id}: get: tags: - "Contacts Custom Fields" summary: "GET a custom_field" description: "Get details for a specified custom field." operationId: "getCustomField" produces: - "application/json" parameters: - name: "custom_field_id" in: "path" description: "The ID that uniquely identifies the custom field." required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" responses: "200": description: "Request successful" schema: $ref: "#/definitions/CustomField" "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" put: tags: - "Contacts Custom Fields" summary: "Update a custom field." description: "Update an existing custom field." operationId: "putCustomField" consumes: - "application/json" produces: - "application/json" parameters: - name: "custom_field_id" in: "path" description: "The ID that uniquely identifies the custom field to update." required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" - in: "body" name: "body" description: "The JSON payload used to update an existing custom field. Any\ \ properties omitted in the PUT request are overwritten with a null value." required: true schema: $ref: "#/definitions/CustomFieldPutRequest" responses: "200": description: "Success - custom_field updated" schema: $ref: "#/definitions/CustomField" "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: "updateCustomField" delete: tags: - "Contacts Custom Fields" summary: "DELETE a custom_field" description: "Delete a custom field from the user's account." operationId: "deleteCustomField" consumes: - "application/json" parameters: - name: "custom_field_id" in: "path" description: "The ID that uniquely identifies the custom field to delete." required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" responses: "204": description: "Request successful; No content returned" "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." "503": description: "Our internal service is temporarily unavailable." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:write" /contact_custom_fields: get: tags: - "Contacts Custom Fields" summary: "GET custom_fields Collection" description: "Get all custom fields defined in the user's account.\n

This method does not currently support filtering\ \ results using the custom field update date.

" operationId: "getCustomFields" produces: - "application/json" parameters: - name: "limit" in: "query" description: "Specifies the number of results displayed per page of output,\ \ from 1 - 100, default = 50." required: false type: "integer" default: 50 maximum: 100 minimum: 1 responses: "200": description: "Request successful" schema: $ref: "#/definitions/CustomFields" "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: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:read" x-sdk-methodName: "getAllCustomFields" post: tags: - "Contacts Custom Fields" summary: "POST (create) a custom_field" description: "Custom fields are extra data fields you create to store additional\ \ information about your contacts, such as preferences, membership levels,\ \ and interests. Use custom fields to organize contacts, send personalized\ \ email campaigns, and to identify a targeted audience for a specific campaign.\ \ Custom fields types include text, number, date, drop-down lists, radio buttons,\ \ and checkboxes. A user can configure up to 100 `custom_fields` in their\ \ account." operationId: "postCustomFields" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "The JSON payload required to create a new custom field." required: true schema: $ref: "#/definitions/CustomFieldRequest" responses: "201": description: "New custom field successfully created" schema: $ref: "#/definitions/CustomField" "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; the payload must be in JSON format,\ \ and Content-Type must be application/json." "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: "createCustomFields" /contact_lists/{list_id}: get: tags: - "Contact Lists" summary: "GET a List" description: "Use this method to get details about a specific contact list (`list_id`)." operationId: "getList" produces: - "application/json" parameters: - name: "list_id" in: "path" description: "The system generated ID that uniquely identifies a contact list." required: true type: "string" format: "uuid" x-example: "cbc05bac-6a41-46fa-a063-79961763bf4b" - name: "include_membership_count" in: "query" description: "Returns the total number of contacts per list that meet your\ \ selection criteria. Set the `include_membership_count` to `active`, to\ \ count only active contacts, or `all` to include all contacts in the count." required: false type: "string" enum: - "all" - "active" x-example: "all" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ContactList" "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:lists:read" put: tags: - "Contact Lists" summary: "PUT (update) a List" description: "Updates an existing contact list resource, specified by `list_id`" operationId: "putList" consumes: - "application/json" produces: - "application/json" parameters: - name: "list_id" in: "path" description: "Unique ID of the contact list to update" required: true type: "string" format: "uuid" x-example: "cbc05bac-6a41-46fa-a063-79961763bf4b" - in: "body" name: "JSON PUT body" description: "JSON payload containing updates to the specified contact list" required: true schema: $ref: "#/definitions/ListInput" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ContactListPutPost" "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:lists:write" x-ctctmcp-allow: true x-sdk-methodName: "updateList" delete: tags: - "Contact Lists" summary: "DELETE a List" description: "Deletes the specified contact list and its membership. DELETE\ \ List requests are processed asynchronously, and you can track the status\ \ of the request by making a GET call to the URI shown in the `_links` property\ \ in the response." operationId: "deleteListActivity" consumes: - "application/json" produces: - "application/json" parameters: - name: "list_id" in: "path" description: "Unique ID of the list to delete" required: true type: "string" format: "uuid" x-example: "cbc05bac-6a41-46fa-a063-79961763bf4b" responses: "202": description: "Accepted" headers: Location: type: "string" description: "URL to retrieve the delete activity status" schema: $ref: "#/definitions/ActivityDeleteListResponse" "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." "503": description: "Our internal service is temporarily unavailable." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:lists:write" x-sdk-methodName: "deleteList" /contact_lists: get: tags: - "Contact Lists" summary: "GET Lists Collection" description: "Use this method to return details about all contact lists for\ \ the account.\n

This method does\ \ not currently support filtering results using the contact list update date.

" operationId: "getLists" produces: - "application/json" parameters: - name: "limit" in: "query" description: "Use to specify the number of results displayed per page of output,\ \ from 1 - 500, default = 50." required: false type: "integer" default: 50 maximum: 1000 minimum: 1 - name: "include_count" in: "query" description: "Set `include_count` to `true` to return the total number of\ \ contact lists that meet your selection criteria." required: false type: "boolean" default: false x-example: true - name: "include_membership_count" in: "query" description: "Use to include the total number of contacts per list. Set to\ \ `active`, to count only active (mailable) contacts, or `all` to count\ \ all contacts." required: false type: "string" enum: - "all" - "active" x-example: "all" - name: "name" in: "query" description: "Use to get details for a single list by entering the full name\ \ of the list." required: false type: "string" x-example: "TopTier" - name: "status" in: "query" description: "Use to get lists by status. Accepts comma-separated status values." required: false type: "string" enum: - "all" - "active" - "deleted" x-example: "all" - name: "channel_type" in: "query" description: "Use to return lists by channel type. The default value is `email`." required: false type: "string" enum: - "email" - "sms" x-example: "all" - name: "include_sms_membership_count" in: "query" description: "Set to `true` to return the total number of SMS members in each\ \ list. Only applicable when `channel_type` is `sms`. Default is `false`." required: false type: "boolean" x-example: "false" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ContactListArray" "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: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:lists:read" x-sdk-methodName: "getAllLists" post: tags: - "Contact Lists" summary: "POST (create) a List" description: "Create a new contact list resource" operationId: "createList" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "JSON payload defining the new contact list" required: true schema: $ref: "#/definitions/ListInput" responses: "201": description: "New list successfully created" schema: $ref: "#/definitions/ContactListPutPost" "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." "503": description: "Our internal service is temporarily unavailable." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:lists:write" x-ctctmcp-allow: true /contact_lists/list_id_xrefs: get: tags: - "Contact Lists" summary: "GET a collection of V2 and V3 API List IDs" description: "

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.

\n\nThis GET call\ \ retrieves a collection of cross-referenced list sequence IDs (`id` used\ \ in the V2 API) and UUIDs (`list_id` used in the V3 API). This endpoint is\ \ intended for developers who have an existing V2 API integration, and are\ \ migrating their users to a new V3 API integration. The V2 and V3 APIs use\ \ different resource ID formats. Use the `sequence_ids` query parameter to\ \ specify a set of comma delimited V2 list ids to cross-reference. See [Migrating\ \ Apps and Data to V3](/api_guide/migration_overview.html) to learn more.\"" operationId: "getListIdXrefs" produces: - "application/json" parameters: - name: "sequence_ids" in: "query" description: "Comma delimited list of V2 API list `ids` to cross-reference\ \ with the V3 API `list_id` value. Endpoint accepts a maximum of 500 ids\ \ at a time." required: true type: "string" maxItems: 500 format: "csv" x-example: "1995998026,1882999944,1775099999" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ListXrefs" "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:lists:read" /contacts/sms_engagement_history/{contact_id}: get: tags: - "Contacts" summary: "GET SMS Engagement History for a Contact" description: "Use this method to return SMS engagement details for a contact,\ \ such as SMS consent and advertising frequency details." operationId: "getSmsEngagementHistory" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "The contact's unique ID." required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" responses: "200": description: "Request successful" schema: $ref: "#/definitions/SmsEngagementHistory" "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" /contacts/counts: get: tags: - "Contacts" summary: "GET Contact Consent Counts" description: "Use to get the total contacts count for the account and the total\ \ contact-consent counts for each consent state. Optionally, to include the\ \ total number of contacts that subscribed within the last 30 days in the\ \ results, use `new_subscribers` in the `include` query parameter. To optimize\ \ open rates, reduce spam reports, and help grow your business, you must\ \ value your contact's consent to receive or to not receive your emails." operationId: "countContact" consumes: - "application/json" produces: - "application/json" parameters: - name: "include" in: "query" description: "Use to return the total number of contacts that subscribed within\ \ the last 30 days in the results." required: false type: "string" enum: - "new_subscriber" x-example: "new_subscriber" responses: "200": description: "Request successful" schema: $ref: "#/definitions/ContactsCounts" "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: "getContactCounts" /contacts/resubscribe/{contact_id}: put: tags: - "Contacts" summary: "PUT Resubscribe a Contact" description: "Use this endpoint to send a confirmation resubscribe email to\ \ a contact in order to get their confirmation to resubscribe. This endpoint\ \ also adds the resubscribed contact to the contact lists you specify in the\ \ request body. You can only send a resubscribe email to the unsubscribed\ \ contact once. The contact is not resubscribed until after you receive their\ \ confirmation. " operationId: "resubscribeContact" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "The ID that uniquely identifies the contact to resubscribe." required: true type: "string" x-example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" - in: "body" name: "body" description: "The JSON payload used to specify one (or more) contact lists\ \ to which the contact requested to be resubscribed." required: true schema: $ref: "#/definitions/ContactResubscribeRequest" x-example: "50429486-338f-11ed-a355-fa163ef30863" responses: "200": description: "Contact resource has been updated." "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." "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" /contact_tags/{tag_id}: get: tags: - "Contact Tags" summary: "GET Tag Details" description: "Use this method to get tag details for a specified `tag_id`. Use\ \ the `include_count` query parameter to include or exclude the total number\ \ of contacts to which this tag is assigned. To learn more, see [Get a Tag's\ \ Details](/api_guide/tags_get_single.html)." operationId: "getTag" consumes: - "application/json" produces: - "application/json" parameters: - name: "tag_id" in: "path" description: "The ID that uniquely identifies a tag (UUID format)." required: true type: "string" format: "uuid" x-example: "d938260a-af1e-11e9-a540-fa163e595123" - name: "include_count" in: "query" description: "Use to include (`true`) or exclude (`false`) the total number\ \ of tagged contacts (`contacts_count`) from the results." required: false type: "boolean" default: false x-example: true responses: "200": description: "Request Successful" schema: $ref: "#/definitions/Tag" "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: - "contact_data" oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:read" put: tags: - "Contact Tags" summary: "PUT (Update) a Tag" description: "Use this method to rename an existing tag to a new unique tag\ \ name (`name`). The maximum length is 255 characters. The `tag_source` value\ \ cannot be updated using this method. You can set the `tag_source` value\ \ using the `POST contact_tags method`. [Learn more](/api_guide/tags_update.html)" operationId: "putTag" consumes: - "application/json" produces: - "application/json" parameters: - name: "tag_id" in: "path" description: "The system generated ID used to uniquely identify the tag that\ \ you want to rename (UUID format)." required: true type: "string" format: "uuid" x-example: "30c97dd0-332e-11eb-923c-fa163e595327" - in: "body" name: "body" description: "The JSON payload used to update the tag name (`name`)." required: true schema: $ref: "#/definitions/TagPut" responses: "200": description: "Request Successful" schema: $ref: "#/definitions/Tag" "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." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:write" delete: tags: - "Contact Tags" summary: "DELETE a Tag" description: "Use this method to create an activity used to un-assign a tag\ \ from all assigned contacts and delete the tag. This is an asynchronous activity.\ \ To view activity details for the delete request, use the href link returned\ \ in the response. [Learn more](/api_guide/tags_delete.html)." operationId: "deleteTag" consumes: - "application/json" produces: - "application/json" parameters: - name: "tag_id" in: "path" description: "The ID that uniquely identifies a tag in UUID format." required: true type: "string" format: "uuid" x-example: "30c97dd0-332e-11eb-923c-fa163e595327" responses: "202": description: "The asynchronous request was successfully accepted. To view\ \ the results of the activity request, use the href link returned in the\ \ response." schema: $ref: "#/definitions/ActivityGeneric" "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: "The requested resource was not found." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "contact_data" oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:write" /contact_tags: get: tags: - "Contact Tags" summary: "GET Details for All Tags" description: "Use this endpoint to get details for all tags in your account.\ \ Use the 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=

\n\ To learn more, see [Get Tags](/api_guide/tags_get.html)." operationId: "getTags" consumes: - "application/json" produces: - "application/json" parameters: - name: "limit" in: "query" description: "Use to specify the number of tag results (up to `500`) to display\ \ per page of output. The default is `50`." required: false type: "integer" default: 50 maxLength: 500 minLength: 1 x-example: 25 - name: "include_count" in: "query" description: "Returns the total number of contacts (`contacts_count`) to which\ \ a tag applies." required: false type: "boolean" default: false x-example: true responses: "200": description: "Request Successful" schema: $ref: "#/definitions/Tags" "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: - "contact_data" oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:read" x-sdk-methodName: "getAllTags" post: tags: - "Contact Tags" summary: "POST (Create) a Tag" description: "Use this method to create a new tag. The tag `name` is required\ \ and must be unique and can include most common keyboard symbols. Optionally,\ \ when creating a new tag you can specify the source (`tag_source`) used to\ \ identify the contacts to tag in the request body. [Learn more](/api_guide/tags_create.html)." operationId: "postTag" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "The JSON payload to use to create a new tag." required: true schema: $ref: "#/definitions/TagPost" responses: "201": description: "Request Successful" schema: $ref: "#/definitions/Tag" "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." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "contact_data" - oauth2_access_code: - "contact_data" x-authorization-privileges: - "contacts:write" /emails: get: tags: - "Email Campaigns" summary: "GET a Collection of Email Campaigns" description: "Use this method to list and get details about your email campaigns.\ \ By default, this method returns all email campaigns for the user account\ \ including deleted email campaigns. To get email campaigns within a date-range,\ \ use the `after_date` and `before_date` query parameters.\n\nThis endpoint\ \ does not return campaign activity details for each email campaign in the\ \ collection. To get email campaign activity details for a single email campaign,\ \ use the GET `/emails/{campaign_id}` endpoint.\"\n

This method does not currently support filtering results using\ \ the email campaign creation date.

\n" operationId: "retrieveEmailCampaignsUsingGET" consumes: - "application/json" produces: - "application/json" parameters: - name: "limit" in: "query" description: "Specifies the number of campaigns to display on each page of\ \ output that is returned (from return 1 - 500). The default returns 50\ \ campaigns per page." required: false type: "integer" default: 50 format: "int32" - name: "before_date" in: "query" description: "Use to return email campaigns with `updated_at` timestamps that\ \ are before a specific date and time (in ISO-8601 format). Use with the\ \ `after_date` query parameter to get email campaigns sent within a specific\ \ date range." required: false type: "string" format: "date-time" x-example: "2021-01-10T11:42:57.000Z" - name: "after_date" in: "query" description: "Use to return email campaigns with last `updated_at` timestamps\ \ that are after a specific date and time (in ISO-8601 format). Use with\ \ the `before_date` query parameter to get email campaigns sent within a\ \ specific date range." required: false type: "string" format: "date-time" x-example: "2021-03-10T11:42:57.000Z" responses: "200": description: "Request successful." schema: $ref: "#/definitions/PagedEmailCampaignResponse" "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 the request rate limit." "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" x-sdk-methodName: "getAllEmailCampaigns" post: tags: - "Email Campaigns" summary: "POST (Create) a New Email Campaign" description: "Use this method to create a new email campaign. You must include\ \ a tracking image (`[[trackingImage]]`) in the email body in order for Constant\ \ Contact to report on the email performance. This method also creates new\ \ `primary_email` and `permalink` email campaign activities and associates\ \ them with the new email campaign.\nThe request body must contain the `name`\ \ property and the `email_campaign_activities` array. The `name` must be unique.\ \ The `email_campaign_activities` array contains the main content of your\ \ email campaign and must include `format_type`, `from_name`, `from_email`,\ \ `reply_to_email`, `subject`, and `html_content` properties. The `from_email`\ \ address you use must use a verified email address for your account.\nNOTE:\ \ If you create an email campaign using a legacy (V7) format, Constant Contact\ \ automatically converts it to the newer custom code format.\n" operationId: "createEmailCampaignUsingPOST" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "A JSON request body that contains the email content." required: true schema: $ref: "#/definitions/EmailCampaignComplete" responses: "200": description: "Request successful. NOTE: If you created an email campaign\ \ using a legacy (V7) format, Constant Contact successfully converted\ \ it to the newer custom code format." schema: $ref: "#/definitions/EmailCampaign" "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." "429": description: "Too many requests. You exceeded the request rate limit." "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: "createEmailCampaign" x-ctctmcp-tool-desc: "Use this tool to create a new email campaign. You must\ \ include a tracking image (`[[trackingImage]]`) in the email body in order\ \ for Constant Contact to report on the email performance. The request body\ \ must contain the `name` property and the `email_campaign_activities` array.\ \ The `name` must be unique. The `email_campaign_activities` array contains\ \ the main content of your email campaign and must include `format_type`,\ \ `from_name`, `from_email`, `reply_to_email`, `subject`, and `html_content`\ \ properties. The `from_email` address you use must use a verified email address\ \ for the account.\nBefore creating an email campaign, first retrieve the\ \ current account physical mailing address using the getPhysicalAddress tool.\ \ If the address is missing or incomplete, do not assume values; ask the user\ \ for the missing fields or update the address only with user-provided information.\n\ Compliance and sender preflight requirements:\n Before creating an email\ \ campaign, the assistant must verify two separate account requirements:\n\ \n 1. Physical mailing address requirement\n - First retrieve the current\ \ account physical mailing address using the `getPhysicalAddress` tool.\n\ \ - A physical mailing address is required to send emails and displays in\ \ the footer of every email sent from the account.\n - If the address is\ \ missing or incomplete, do not assume values.\n - Ask the user for the missing\ \ fields, or update the address only with user-provided information.\n\n \ \ 2. Sender email requirement\n - Then retrieve account email addresses using\ \ `retrieveEmailAddresses`.\n - Do not assume that a confirmed email alone\ \ is the best choice for sender headers.\n - The assistant must verify which\ \ confirmed account emails are eligible for campaign headers and should inspect\ \ returned email roles.\n - `from_email` must be a confirmed account email\ \ and should prefer an email with the `DEFAULT_FROM` role when available.\n\ \ - `reply_to_email` must be a confirmed account email and should prefer\ \ an email with the `REPLY_TO` role when available.\n - If the same confirmed\ \ account email has both roles, it is the preferred default for both fields.\n\ \ - If no role-qualified email exists, the assistant must clearly say so\ \ and either ask the user which confirmed account email to use or use a confirmed\ \ fallback only if the API allows it and the user accepts.\n - The assistant\ \ must not present sender details as validated until it has actually checked\ \ confirmed account emails.\n\nQuality requirement for default output: when\ \ the user asks to create an email campaign and does not explicitly request\ \ a plain or minimal draft, default to a polished, production-ready HTML marketing\ \ email, not a schema-valid stub. Treat any included HTML example as the minimum\ \ visual quality bar, not just a valid payload sample.\nStrong preference:\ \ generate professionally styled HTML with substantial inline CSS and a clear\ \ design system. Prefer: a background color and constrained content container,\ \ strong heading hierarchy and readable body typography, intentional spacing\ \ and section padding, card or panel structure where appropriate, styled CTA\ \ buttons and links, polished image treatment, responsive-friendly table or\ \ hybrid email-safe layout patterns, and a coherent visual layout that looks\ \ intentionally designed.\nAvoid as the default: barebones bodies with only\ \ one or two inline styles, placeholder-looking copy, or a simple heading-plus-paragraph\ \ structure when richer HTML is feasible from the information already available.\n\ User-discovery requirement: before creating the campaign, strongly prefer\ \ gathering enough context to make the email effective. Ask about the users\ \ business goal/campaign objective, audience, brand style, and desired call\ \ to action when that information is missing and asking is practical. Frame\ \ this as improving performance and relevance, not as a blocker. Examples:\ \ What is the business goal of this email? Who is the audience? What action\ \ do you want readers to take? Do you want it to feel promotional, editorial,\ \ or transactional? Are there brand colors, logo, product images, or offers\ \ to include? It is very important to personalize the email. If a business\ \ website is provided, use it to infer brand style, tone, colors, and destination\ \ links. If a logo or image is provided, incorporate it into the email. If\ \ neither is provided, clearly label the output as a best-effort draft. If\ \ the user has not supplied this context and immediate creation is still necessary,\ \ create the best possible polished draft using reasonable assumptions, but\ \ optimize for a credible business-ready layout rather than a minimal example.\n\ Behavioral rule: The assistant should assume the user wants a visually designed\ \ email that supports a real business objective. Visual polish does not satisfy\ \ this requirement on its own. Unless the user explicitly requests a placeholder,\ \ starter draft, mockup, or “just make something,” the assistant must collect\ \ the minimum campaign brief — goal, audience, CTA — before creating the campaign.\ \ If any of these are missing, ask first. Do not use generic filler strategy\ \ or copy as a substitute for the brief.\nTool Requirement: After creating\ \ an email campaign, always use the html preview tool get_campaign_html_preview\ \ inspect the rendered result. Example HTML below is illustrative, but the\ \ assistant should generally produce HTML that is at least as polished as\ \ this example unless the user requests otherwise: This is an example of the\ \ html content `[[trackingImage]]
The crumb report

Big\ \ bread news

A very important update from the world of bread, delivered fresh to the bread\ \ enjoyer list.
Today’s loaf highlight
This edition celebrates one excellent loaf and the simple joy of admiring\ \ good bread. Crispy crust, strong crumb, no notes.
View the\ \ bread
`\n" x-ctctmcp-allow: true /emails/{campaign_id}: get: tags: - "Email Campaigns" summary: "GET Details About a Single Email Campaign" description: "Use this method to get details about a single email campaign and\ \ campaign related activities. Details include the email campaign name, current\ \ status, create date, last update date, and a list of campaign activities;\ \ including the `campaign_activity_id` and `role`." operationId: "retrieveEmailCampaignUsingGET" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_id" in: "path" description: "The ID (UUID format) that uniquely identifies this email campaign." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailCampaign" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignById" delete: tags: - "Email Campaigns" summary: "DELETE an Email Campaign" description: "Use this method to delete an email campaign and the email campaign\ \ activities associated with the email campaign. You cannot delete an email\ \ campaign when it has a `Scheduled` status.\n\nConstant Contact users can\ \ restore deleted email campaigns using the UI.\n" operationId: "removeEmailCampaignUsingDELETE" produces: - "application/json" parameters: - name: "campaign_id" in: "path" description: "The unique ID for the email campaign you are deleting." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "204": description: "Email campaign successfully deleted. No response body returned." "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 the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:delete" x-sdk-methodName: "deleteEmailCampaign" patch: tags: - "Email Campaigns" summary: "PATCH (Update) an Email Campaign Name" description: "Use this method to rename an email campaign. The name is not visible\ \ to contacts. The name must be unique and cannot exceed 80 characters. You\ \ cannot rename email campaigns that have a `Removed` status." operationId: "renameEmailCampaignUsingPATCH" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_id" in: "path" description: "The unique identifier for an email campaign." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "body" description: "A JSON payload that contains the new email campaign name." required: true schema: $ref: "#/definitions/EmailCampaignName" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailCampaign" "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." "429": description: "Too many requests. You exceeded the request rate limit." "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-ctctmcp-allow: true x-sdk-methodName: "patchEmailCampaignName" /emails/campaign_id_xrefs: get: tags: - "Email Campaigns" summary: "GET a Collection of V2 and V3 API Email Campaign Identifiers" description: "

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.

\n\nUse this method\ \ to migrate your local V2 API email data to the V3 API format. For each value\ \ that you provide in the `v2_email_campaign_ids` query parameter, this method\ \ returns the corresponding V3 `campaign_id` and V3 `campaign_activity_id`\ \ UUID value. For more information on the changes to the email campaign resource\ \ model, see [V3 Email Campaign Resource Changes](/api_guide/v3_v2_email_campaign_deltas.html)\ \ in the API guide.\n" operationId: "retrieveXrefMappingsUsingGET" consumes: - "application/json" produces: - "application/json" parameters: - name: "v2_email_campaign_ids" in: "query" description: "Comma separated list of V2 API `campaignId` values. You can\ \ enter up to 50 V2 `campaignId` values in each request." required: true type: "string" maxItems: 50 format: "csv" x-example: "1100567546598,1604567396117,12002485195578" responses: "200": description: "Request successful." schema: $ref: "#/definitions/CrossReferenceResponse" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignXrefs" /emails/activities/{campaign_activity_id}: get: tags: - "Email Campaigns" summary: "GET a Single Email Campaign Activity" description: "Use this method to return a specific email campaign activity.\ \ Each email campaign activity contains the email content, metadata, and styling\ \ information of an email. Email campaign activities can also contain either\ \ contact lists or segments. Constant Contact uses this information to determine\ \ who to send the email campaign activity to when you schedule it. You cannot\ \ get email campaign activities that have a `REMOVED` status.\n" operationId: "retrieveEmailCampaignActivityUsingGET" 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" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - name: "include" in: "query" description: "Use the `include` query parameter to enter a comma separated\ \ list of additional email campaign activity properties for the V3 API to\ \ return. Valid values are `physical_address_in_footer`, `permalink_url`,\ \ `html_content`, and `document_properties`." required: false type: "string" format: "csv" enum: - "physical_address_in_footer" - "permalink_url" - "html_content" - "document_properties" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailCampaignActivity" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignActivity" put: tags: - "Email Campaigns" summary: "PUT (Update) An Email Campaign Activity" description: "Use this method to update an email campaign activity by including\ \ the complete email campaign activity with your changes in the request body.\ \ The request body requires the `from_name`, `from_email`, `reply_to_email`,\ \ and `subject` properties.\n\nYou can only update email campaign activities\ \ that have the `primary_email` role and that are in `DRAFT` or `Done` status.\n\ When you use a PUT method to update a resource, the V3 API overwrites any\ \ properties that are missing in the request body. However, the V3 API does\ \ not overwrite subresources that you omit in the request body or missing\ \ properties in subresources. This method considers `physical_address_in_footer`,\ \ `document_properties`, `html_content`, and `permalink_url` subresources\ \ of the email campaign activity.\n" operationId: "updateEmailCampaignActivityUsingPUT" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the email campaign activity you are updating." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "body" description: "A request body payload that contains the complete email campaign\ \ activity with your changes." required: true schema: $ref: "#/definitions/EmailCampaignActivity" responses: "200": description: "Email campaign activity successfully updated." schema: $ref: "#/definitions/EmailCampaignActivity" "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: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:write" x-sdk-methodName: "updateEmailCampaignActivity" x-ctctmcp-allow: true /emails/activities/{campaign_activity_id}/schedules: get: tags: - "Email Scheduling" summary: "GET an Email Campaign Activity Schedule" description: "Use this method to return the current schedule for an email campaign\ \ activity. This schedule contains the date that Constant Contact will send\ \ the email campaign activity to contacts. If the email campaign activity\ \ is not in `SCHEDULED` status, this method returns an empty array and a 200\ \ response code." operationId: "retrieveEmailSchedulesUsingGET" 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: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailScheduleResponse" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignActivitySchedule" post: tags: - "Email Scheduling" summary: "POST (Create) an Email Campaign Activity Schedule" description: "Use this method to send an email campaign activity to contacts\ \ either immediately or on a specific date. To send the email campaign activity\ \ immediately, specify `0` for the `scheduled_date` request property (results\ \ return an empty array). To send the email campaign activity on a specific\ \ date, specify the date using the `scheduled_date` request property (results\ \ return the scheduled date in an array). \n\nBefore you schedule an email\ \ campaign activity, you must update the email campaign activity and specify\ \ which contacts you want Constant Contact to send the email to. When you\ \ make a PUT call to update an email campaign activity, use the `contact_list_ids`\ \ or `segment_ids` array to add contacts.\n\nYou can only schedule email campaign\ \ activities that have the `primary_email` role and are in `DRAFT`, `DONE`,\ \ or `ERROR` status. When you schedule an email campaign activity in `DONE`\ \ status, Constant Contact does not send the email campaign activity to contacts\ \ that already received it. Constant Contact only sends the email campaign\ \ activity to any new contacts in the contact lists or segment you use.\n" operationId: "scheduleEmailCampaignActivityUsingPOST" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity. You can only schedule\ \ email campaign activities that have the `primary_email` role." required: true type: "string" format: "uuid" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "body" description: "A request body payload that contains the date that you want\ \ Constant Contact to send your email campaign activity on. Use `\"0\"`\ \ as the date to have Constant Contact immediately send the email campaign\ \ activity." required: true schema: $ref: "#/definitions/EmailScheduleInput" responses: "201": description: "Request successful." schema: $ref: "#/definitions/EmailScheduleResponse" "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 the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:send" x-sdk-methodName: "scheduleEmailCampaignActivity" delete: tags: - "Email Scheduling" summary: "DELETE an Email Campaign Activity Schedule" description: "Use this method to unschedule an email campaign activity by deleting\ \ the schedule. You can only unschedule email campaign activities that are\ \ in `SCHEDULED` status. Unscheduling reverts the email campaign activity\ \ to the status prior to `SCHEDULED`." operationId: "unscheduleEmailCampaignActivityUsingDELETE" 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: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "204": description: "Email campaign activity schedule successfully deleted. No\ \ response body returned." "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 the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:send" x-sdk-methodName: "unscheduleEmailCampaignActivity" /emails/activities/{campaign_activity_id}/tests: post: tags: - "Email Scheduling" summary: "POST Test Send an Email Campaign Activity" description: "Use this method to send a test email to specific email addresses.\ \ Test emails allow you to verify how the email campaign activity will look\ \ before you send it to contacts. This method uses the `email_addresses` array\ \ in the request body to determine the recipients of the test email. The test\ \ email does not process any dynamic content in the email campaign activity.\ \ Dynamic content includes contact and custom field variables.\n\nYou can\ \ send up to 50 test emails each day. Each recipient you add to the `email_addresses`\ \ array in the request body counts towards this limit. Successfully sending\ \ a test email returns a 204 response code without a response body.\n" operationId: "testSendCampaignActivityUsingPOST" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity. You can only test\ \ send email campaign activities that have the `primary_email` role." required: true type: "string" format: "uuid" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "email_test_send_input" description: "A JSON request body that contains the recipients of the test\ \ email and an optional personal message." required: true schema: $ref: "#/definitions/EmailTestSendInput" responses: "204": description: "Test email campaign activity successfully sent. No response\ \ body returned." "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 the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:send" x-sdk-methodName: "testSendEmailCampaignActivity" /emails/activities/{campaign_activity_id}/previews: get: tags: - "Email Scheduling" summary: "GET the HTML Preview of an Email Campaign Activity" description: "Use this method to get the HTML preview of an email campaign activity.\ \ The HTML preview allows you to verify how the email campaign activity will\ \ look before you send it to contacts.\n\nCustom code emails (`format_type`\ \ 5) use the Constant Contact account owner's contact information to process\ \ contact, custom field, and account variables in the preview.\n\nThis method\ \ returns the HTML preview encoded as a JSON string. You will need to decode\ \ the string before you can use it as valid HTML.\n" operationId: "retrieveEmailCampaignActivityPreviewUsingGET" 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: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailCampaignActivityPreview" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignActivityPreview" /emails/activities/{campaign_activity_id}/send_history: get: tags: - "Email Scheduling" summary: "GET the Send History of an Email Campaign Activity" description: "Use this method to return the send history of an email campaign\ \ activity. This method returns the send history as an array containing an\ \ object for each time you sent a specific email campaign activity to contacts.\ \ \n\nEach send history object contains the email campaign activity send date,\ \ the number of contacts it was sent to, and the contact lists or segments\ \ used to send it. Each send history object also includes if the send attempt\ \ completed or encountered an error, and the reason why each error occurred.\ \ This method returns results in ascending order starting with the first send\ \ attempt. \n\nIf the email campaign activity has not been sent to contacts,\ \ this method returns a 200 response and an empty array.\n" operationId: "retrieveEmailSendHistoryUsingGET" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for an email campaign activity. You can return\ \ the send history for `primary_email` and `resend` role email campaign\ \ activities." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/EmailSendHistory" "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 the request rate limit." "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" x-sdk-methodName: "getEmailCampaignActivitySendHistory" /emails/activities/{campaign_activity_id}/non_opener_resends: get: tags: - "Email Campaigns" summary: "GET Details for a Resend to Non-openers Campaign Activity" description: "Get details about a resend to non-openers campaign activity. If\ \ resend activity does not exist for the specified `campaign_activity_id`,\ \ an empty list is returned in the results. You can only create one resend\ \ activity per email campaign." operationId: "retrieveResendToNonOpenersUsingGET" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/ResendToNonOpeners" "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 the request rate limit." "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" x-sdk-methodName: "getResendEmailCampaign" post: tags: - "Email Campaigns" summary: "POST a Resend to Non-openers Campaign Activity" description: "Use this POST method to resend a primary campaign activity to\ \ contacts that did not open a campaign activity that has a current `status`\ \ of `Draft`, `Scheduled`, or `Done`. You can only create one resend activity\ \ per email campaign.\n \n After an email campaign activity is sent to contacts,\ \ Constant Contact waits the specified number of `delay_days` or `delay_minutes`\ \ (properties are mutually exclusive) before resending to non-openers. If\ \ you set both `delay_days` or `delay_minutes`, `delay_minutes` is ignored\ \ in the request. You can resend to non-openers a minimum of twelve hours\ \ (720 minutes) and a maximum of up to 10 days (or 10 x 1440 minutes) after\ \ the initial send date.\n \n " operationId: "createResendToNonOpenersUsingPOST" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "resend_schedule" description: "A JSON request body that specifies when to resend the campaign\ \ activity to non-openers." required: true schema: $ref: "#/definitions/ResendToNonOpenersInput" responses: "201": description: "Request successful." schema: $ref: "#/definitions/ResendToNonOpenersObject" "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." "429": description: "Too many requests. You exceeded the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:send" x-sdk-methodName: "createResendEmailCampaign" /emails/activities/{campaign_activity_id}/non_opener_resends/{resend_request_id}: delete: tags: - "Email Campaigns" summary: "DELETE a Resend to Non Openers Activity" description: "Use this `DELETE` method to delete (unschedule) a resend to non\ \ openers activity." operationId: "deleteResendToNonOpenersUsingDELETE" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - name: "resend_request_id" in: "path" description: "The unique ID associated with the resend for the email campaign\ \ activity (for example: `389093`). If the email campaign activity is currently\ \ in draft status, specify `DRAFT` as the ID." required: true type: "string" x-example: "389093" responses: "204": 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." "404": description: "The requested resource was not found." "409": description: "Conflict. The resource you are creating or updating conflicts\ \ with an existing resource." "429": description: "Too many requests. You exceeded the request rate limit." "500": description: "There was a problem with our internal service." security: - oauth2_implicit: - "campaign_data" - oauth2_access_code: - "campaign_data" x-authorization-privileges: - "campaign:send" x-sdk-methodName: "deleteResendEmailCampaign" /emails/activities/{campaign_activity_id}/abtest: get: tags: - "Email Campaigns AB Tests" summary: "GET A/B Test Details for an Email Campaign Activity" description: "Use this method to get A/B test details for a primary email campaign\ \ activity, such as the alternate email subject line, the contact test percentage\ \ size, and the number of hours to wait to determine the winning subject line\ \ to use. Currently, A/B tests support subject line only." operationId: "retrieveEmailCampaignABTestUsingGET" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "200": description: "Request successful." schema: $ref: "#/definitions/ABTestData" "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." "429": description: "Too many requests. You exceeded the request rate limit." "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" x-sdk-methodName: "getABTestEmailCampaign" post: tags: - "Email Campaigns AB Tests" summary: "POST (Create) an A/B Test for an Email Campaign Activity" description: "Use this method to create a new A/B test for a primary email campaign\ \ activity. You must specify an alternative subject line, the percentage of\ \ contact to use for the A/B test, and the number of hours to wait after the\ \ A/B test is sent before determining the winning subject line. To create\ \ an A/B test, the campaign must have a `current_status` of `DRAFT`. When\ \ you create an A/B test, the `type` changes from Newsletter (code= `10`)\ \ to A/B Test (code= `57`)." operationId: "createEmailCampaignABTestUsingPOST" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" - in: "body" name: "abtest" description: "Specify the `alternative_subject` line, `test_size` percentage\ \ of contacts (value must from `5` to `50` inclusively), and the `winner_wait_duration`\ \ (value must be `6`, `12`, `24`, or `48` hours)." required: true schema: $ref: "#/definitions/ABTestData" responses: "201": description: "Request successful." schema: $ref: "#/definitions/ABTestData" "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." "429": description: "Too many requests. You exceeded the request rate limit." "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: "createABTestEmailCampaign" delete: tags: - "Email Campaigns AB Tests" summary: "DELETE an A/B Test for an Email Campaign Activity" description: "Deletes an A/B Test on an primary email campaign activity. You\ \ can only delete A/B tests that have a `current_status` of `Draft`. Deleting\ \ an A/B tests reverts the email campaign activity `type` from A/B Test (code=\ \ `57`) back to NewsLetter (code= `10`). Constant Contact uses the original\ \ subject line, rather than the alternate A/B test subject line, when an A/B\ \ test is deleted." operationId: "deleteEmailCampaignABTestUsingDELETE" consumes: - "application/json" produces: - "application/json" parameters: - name: "campaign_activity_id" in: "path" description: "The unique ID for the primary email campaign activity." required: true type: "string" x-example: "91569d46-00e4-4a4d-9a4c-d17d98740d04" responses: "204": description: "A/B test 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." "409": description: "Conflict. The resource you are creating or updating conflicts\ \ with an existing resource." "429": description: "Too many requests. You exceeded the request rate limit." "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: "deleteABTestEmailCampaign" /reports/contact_reports/{contact_id}/activity_details: get: tags: - "Contacts Reporting" summary: "GET Contact Activity Details" description: "

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\ \ \n\ \ \n \ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \ \n\ \
Valid tracking activity types
em_sendsSend activities
em_opensEmail open tracking activities
em_clicksLink click-through tracking activities
em_bouncesBounce tracking activities
em_optoutsOpt-out tracking activities
em_forwardsForward to a friend tracking activities
p_contact_openLanding page opens
p_contact_clickLanding page clicks
p_contact_addLanding page adds
p_contact_update Landing page updates
" operationId: "getContactTracking" consumes: - "application/json" produces: - "application/json" parameters: - name: "contact_id" in: "path" description: "The contact's ID for which tracking activity data is requested." required: true type: "string" x-example: "aa9ff7b0-478d-11e6-8059-00163e3c8e19" - name: "tracking_activities_list" in: "query" description: "Specify one or more tracking activity types to include as a\ \ comma-delimited string. The `tracking_activities_list` and `tracking_activities_type`\ \ query parameters are mutually exclusive." required: false type: "string" items: type: "string" enum: - "em_sends" - "em_opens" - "em_clicks" - "em_bounces" - "em_optouts" - "em_forwards" - "p_contact_open" - "p_contact_click" - "p_contact_add" - "p_contact_update" collectionFormat: "multi" format: "csv" x-example: "em_clicks,em_opens" - name: "tracking_activity_type" in: "query" description: "Specify one or more tracking activity types to include as an\ \ array. The `tracking_activities_list` and `tracking_activities_type`\ \ query parameters are mutually exclusive." required: false type: "array" items: type: "string" x-example: "`tracking_activity_type=em_sends&tracking_activity_type=em_opens`" - name: "include_campaign_activity_names" in: "query" description: "Default (`true`) returns campaign activity names in the results.\ \ Not including campaign activity names in the results (`false`), is more\ \ efficient." required: false type: "boolean" default: true x-example: "true" - name: "limit" in: "query" description: "The number of tracking activities to return in a single page.\ \ Valid values are 1 to 100. Default is 100." required: false type: "string" default: "100" maximum: 100 minimum: 1 x-example: "20" responses: "200": description: "successful operation" schema: $ref: "#/definitions/ContactTrackingActivitiesPage" "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: "getContactTrackingReport" /reports/contact_reports/{contact_id}/open_and_click_rates: get: tags: - "Contacts Reporting" summary: "GET Average Open and Click Rates" description: "

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 the bounce_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\ \ \n" roles: type: "array" description: "Specifies the current role of a confirmed email address in\ \ an account. Each email address can have multiple roles or no role. Possible\ \ role values are: You can use any confirmed email address\ \ in the email campaign 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: \n" items: type: "string" AccountEmailInput: type: "object" properties: email_address: type: "string" example: "dlang@example.com" description: "The new email address you want to add to a Constant Contact\ \ account." maxLength: 80 AccountEmailCreateResponse: type: "object" properties: email_address: type: "string" example: "dlang@example.com" description: "An email address associated with a Constant Contact account\ \ owner." maxLength: 80 email_id: type: "integer" format: "int64" example: 2 description: "The unique ID for an email address in a Constant Contact account." minimum: 1 confirm_status: type: "string" example: "UNCONFIRMED" 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" 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:\ \ " readOnly: true tier_min: type: "number" format: "float" example: 0.0 description: "The minimum number of active contacts for the tier level." readOnly: true tier_max: type: "number" format: "float" example: 500.0 description: "The maximum number of active contacts for the tier level." readOnly: true price: type: "number" format: "float" example: 20.0 description: "The billing price set for the tier used to bill the client account\ \ each month." readOnly: true currency_code: type: "string" example: "USD" description: "The currency (ISO currency code) used to price the tier for\ \ a client account." readOnly: true description: "The usage tier that is associated with a client's Constant Contact\ \ account and is used to calculate the monthly billing price." PlanTiersObject: type: "object" properties: plan_type: type: "string" example: "GOLD" description: "The billing plan that is associated with a client's Constant\ \ Contact account. The billing plan determines which Constant Contact product\ \ features that the client account can access. 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. " current_tiers: type: "array" description: "Lists the billing plan tiers that are currently associated with\ \ a client account." items: $ref: "#/definitions/TierObject" 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:\n " billing_day_of_month: type: "integer" format: "int32" example: 15 description: "This property is required when an account is not set up to use\ \ single billing. For trial accounts, the value is initially set to 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity\ \ request, in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in\ \ ISO-8601 format." readOnly: true source_file_name: type: "string" example: "2016-21-04-contact_import.xls" description: "Name of the file used for an add_contacts activity." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still\ \ processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true status: $ref: "#/definitions/ActivityStatus" _links: $ref: "#/definitions/ActivityStatusExportLink" _links: $ref: "#/definitions/PagingLinks" Activity: 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true source_file_name: type: "string" example: "2016-21-04-contact_import.xls" description: "Name of the file used for an add_contacts activity." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true status: $ref: "#/definitions/ActivityStatus" _links: $ref: "#/definitions/ActivityStatusExportLink" description: "Generic bulk activity status response object" ContactsExport: type: "object" properties: contact_ids: type: "array" description: "Exports up to 500 specific contacts. This property is mutually\ \ exclusive with all other filtering criteria except withstatus." 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true status: type: "object" properties: items_total_count: type: "integer" example: 8751 description: "The total number of contacts to export." readOnly: true items_completed_count: type: "integer" example: 351 description: "The number of contacts processed for export." readOnly: true _links: $ref: "#/definitions/ActivityStatusExportLink" description: "Activity status for contact_exports activity" ActivityGetExport: type: "string" description: "CSV file containing exported contacts" ContactDelete: type: "object" properties: contact_ids: type: "array" description: "Specify up to 500 contacts by 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." 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: 4 description: "The number of lists if request specifies contacts to delete\ \ by list_ids." items_total_count: type: "integer" example: 375 description: "The total number of contacts to delete." readOnly: true items_completed_count: type: "integer" example: 351 description: "The number of contacts deleted." readOnly: true _links: type: "object" properties: self: type: "object" description: "Link to the activity status (this object) to retrieve the\ \ activity status." properties: href: type: "string" example: "/v3/activities/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a" description: "Activity status for contact_delete activity" ActivityStatusLink: 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" ActivityImport: 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:\n

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:40.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true source_file_name: type: "string" example: "2016-21-04-contact_import.xls" description: "Name of the file used for an file_import activity." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." readOnly: true items: type: "string" example: "Message describing the error condition." status: type: "object" properties: items_total_count: type: "integer" example: 87 description: "The total number of rows, including the header row, in the\ \ import file." readOnly: true person_count: type: "integer" example: 20 description: "The total number of contacts in the import file." readOnly: true error_count: type: "integer" example: 1 description: "The number of non-correctable errors encountered during\ \ the file import." readOnly: true correctable_count: type: "integer" example: 1 description: "The number of correctable errors. Correctable errors are:\ \ 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." readOnly: true cannot_add_to_list_count: type: "integer" example: 1 description: "The number of previously unsubscribed contacts in the import\ \ - they cannot be added to a list." readOnly: true _links: $ref: "#/definitions/ActivityStatusLink" description: "Activity status for contacts_json_import and contacts_file_import\ \ activities" JsonImportContact: type: "object" properties: email: type: "string" example: "joe.jones@example.com" description: "The email address of the contact. This method identifies each\ \ unique contact using their email address. Required if `sms_number` is\ \ not specified." maxLength: 50 first_name: type: "string" example: "Joe" description: "The first name of the contact." maxLength: 50 last_name: type: "string" example: "Jones" description: "The last name of the contact." maxLength: 50 job_title: type: "string" example: "Chief Innovation Officer" description: "The job title of the contact." maxLength: 50 company_name: type: "string" example: "RelativeGravity, Inc." 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. 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." 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true status: type: "object" properties: items_total_count: type: "integer" example: 2200 description: "Total number of contacts to add to or remove from lists." readOnly: true items_completed_count: type: "integer" example: 652 description: "The number of contacts processed." readOnly: true list_count: type: "integer" example: 3 description: "The number of lists specified in the request." readOnly: true _links: $ref: "#/definitions/ActivityStatusLink" ListActivityAddContacts: type: "object" required: - "list_ids" - "source" properties: source: type: "object" description: "The 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:

" started_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we began processing the activity request,\ \ in ISO-8601 format." readOnly: true completed_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we completed processing the activity,\ \ in ISO-8601 format." readOnly: true created_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we created the activity, in ISO-8601\ \ format." readOnly: true updated_at: type: "string" format: "date-time" example: "2016-01-23T13:48:44.108Z" description: "Timestamp showing when we last updated the activity, in ISO-8601\ \ format." readOnly: true percent_done: type: "integer" example: 75 description: "Shows the percent done for an activity that we are still processing." readOnly: true activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true _links: type: "object" properties: self: type: "object" description: "Link to the activity status (this object) to retrieve the\ \ activity status." properties: href: type: "string" example: "/v3/activities/04fe9a97-a579-43c5-bb1a-58ed29bf0a6a" description: "Activity status for contact_delete activity" AddressDto: type: "object" required: - "address_type" properties: address_type: type: "string" example: "EVENT" description: "The address type. Only `EVENT` is currently supported." line1: type: "string" example: "100 Seaport Blvd" description: "The first line of the address where the event takes place." minLength: 0 maxLength: 80 line2: type: "string" example: "100 Seaport Blvd" description: "The second line of the address where the event takes place." minLength: 0 maxLength: 80 city: type: "string" example: "Boston" description: "The city where the event takes place." minLength: 0 maxLength: 80 country: type: "string" example: "United States" description: "Name of the country where the event takes place." minLength: 0 maxLength: 128 country_code: type: "string" example: "US" description: "The country code associated with the country where the event\ \ takes place." minLength: 0 maxLength: 2 create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "The create time of the event." last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "The last modification time of the event." latitude: type: "number" format: "float" example: 42.629368 description: "The latitude number indicating where the event takes place." longitude: type: "number" format: "float" example: -71.27594 description: "The longitude number indicating where the event takes place." location_name: type: "string" example: "Holiday Market at Snowport" description: "The venue name where the event takes place." minLength: 0 maxLength: 100 postal_code: type: "string" example: "02451" description: "The address postal code." minLength: 0 maxLength: 25 state: type: "string" example: "Queensland" description: "The State/Province where the event takes place." minLength: 0 maxLength: 80 state_code: type: "string" example: "MA" description: "The state code where the event takes place." minLength: 0 maxLength: 2 title: "AddressDto" EventRegistrationSummaryMetricDto: type: "object" properties: registration_count: type: "integer" format: "int32" description: "The total number of registrants for the event." ticket_sold: type: "integer" format: "int32" description: "The total number of tickets sold for the event." item_sold: type: "integer" format: "int32" description: "The total number of items sold for the event." EventListingDto: type: "object" properties: event_id: type: "string" example: "05cf4d60-56ea-4023-bf49-b35e56a9c7b5" description: "The unique identifier for the event." title: type: "string" example: "Class of 2015 Reunion" description: "The title of the event." description: type: "string" example: "Join us for a night of reminiscing and celebration!" description: "The description of the event." start_time: type: "string" example: "2023-12-01T20:30:00Z" description: "The start time of the event in UTC format." end_time: type: "string" example: "2023-12-01T21:30:00Z" description: "The end time of the event in UTC format." status: type: "string" example: "ACTIVE" description: "The current status of the event." registration_url: type: "string" example: "https://sample_url.com/ev/reg/scrk2u2" description: "The URL for event registration" name: type: "string" example: "Holiday Market at Snowport" description: "The name of the event." event_type: type: "string" example: "PERFORMING_ARTS" description: "Use to specify the type of event." location_type: type: "string" example: "PHYSICAL" description: "Specifies if this is a physical or virtual event (of both),\ \ or if the location is to be specified in the future." time_zone_type: type: "string" example: "EST" description: "The type of time zone." address: $ref: "#/definitions/AddressDto" event_registration_summary_metrics: $ref: "#/definitions/EventRegistrationSummaryMetricDto" create_time: type: "string" example: "2023-09-01T20:30:00Z" description: "The create time of the event in UTC format." description: "Provides information about the event listing." Href: type: "object" properties: href: type: "string" Links: type: "object" properties: self: $ref: "#/definitions/Href" next: $ref: "#/definitions/Href" prev: $ref: "#/definitions/Href" description: "HATEOAS links for navigation. Is null if no additional navigation\ \ links are available." PaginationDtoEventListingDto: type: "object" properties: records: type: "array" description: "List of events for the current page." readOnly: true items: $ref: "#/definitions/EventListingDto" total_records: type: "integer" format: "int32" example: 26 description: "The total number of events across all pages." readOnly: true next_cursor: type: "string" example: "roBvv-Nidkuxg8gTAJ5joDU6yQufWMDdEHjRqzcTXnZ3qBZYR3jZChnZTC6McJ6j8M70fM4IFT8KNJvA076D0g" description: "Use to get the next page of results." readOnly: true prev_cursor: type: "string" example: "Z83W2HtZsQkzXXStyKDDKs5hkuPz7mQvqcg37Quq-Lb_BXnKqYmUf13Li6ZyeRCY8M70fM4IFT8KNJvA076D0g" description: "Use to get the previous page of results." readOnly: true _links: $ref: "#/definitions/Links" ContactDto: type: "object" required: - "name" - "organization_name" properties: create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "The create time of the event." email_address: type: "string" example: "john.doe@aol.com" description: "The email address to use to when replying to email, as well\ \ as the email that receives SO notifications." minLength: 0 maxLength: 128 from_email_address: type: "string" example: "john.doe@aol.com" description: "The email address to use for sending confirmation emails." minLength: 0 maxLength: 128 last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "The time the event was last modified. ISO format" name: type: "string" example: "John Doe" description: "The contact name to associate with the event." minLength: 0 maxLength: 100 organization_name: type: "string" example: "Doe Orchards" description: "The organization name to associate with the event." minLength: 0 maxLength: 255 phone_number: type: "string" example: "781 265 8956" description: "The phone number to associate with the event." minLength: 1 maxLength: 25 title: "ContactDto" EventMediaAssetDto: type: "object" properties: create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "Create time of the event media. ISO format." external_id: type: "string" example: "123456" description: "The external ID to associate with the event media." external_url: type: "string" description: "The event media URL." internal_id: type: "string" example: "123456" description: "The internal ID for the event media." last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "Last time the media was modified. ISO format." media_type: type: "string" example: "BNR" description: "Identifies the media type." title: "EventMediaAssetDto" ItemSummaryDto: type: "object" required: - "name" properties: associated: type: "boolean" example: true description: "Specifies if the item is associated with the promo code." display_item_on_promo_redemption: type: "boolean" example: true description: "Specifies if the item on promo code redemption displays." hidden_flag: type: "boolean" example: true description: "Specifies if the item is hidden." item_id: type: "string" example: "ITEM123" description: "The unique identifier for the item." name: type: "string" example: "T-shirt" description: "The name of the item." title: "ItemSummaryDto" description: "Summary information for an item." StatusDisplayLabelDto: type: "object" properties: label: type: "string" example: "Sold out" description: "The display text for the status. For example: Available, Sold\ \ out." readOnly: true label_key: type: "string" example: "status_label.available" description: "The translation key for the status. For example: status_label.available,\ \ status_label.sold_out." readOnly: true title: "StatusDisplayLabelDto" description: "Represents a display label for a status with the translation label\ \ key." TicketSummaryDto: type: "object" required: - "name" - "ticket_type" properties: name: type: "string" example: "VIP Ticket" description: "The name to associate with the ticket." ticket_id: type: "string" example: "TICKET123" description: "The unique identifier for the ticket." ticket_type: type: "string" example: "PAID" description: "The type of ticket." associated: type: "boolean" example: false description: "Specifies if the ticket is associated with the promo code." display_ticket_on_promo_redemption: type: "boolean" example: true description: "Specifies if the ticket on the promo code redemption displays." hidden_flag: type: "boolean" example: true description: "Specifies if the ticket is hidden." title: "TicketSummaryDto" PromoCodeDto: type: "object" required: - "name" properties: name: type: "string" example: "WIN95" description: "The name of the promotional code." end_time: type: "string" example: "2026-11-17T17:33:21.652Z" description: "The date to end the promotional code. ISO format" deleted_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "Delete time of the promo code. ISO format." description: type: "string" example: "JAN_PROMO" description: "Promotional code description." discount_amount: type: "number" example: 10.0 description: "The discount dollar amount date to apply to the promotional\ \ code." discount_code_scope: type: "string" example: "ORDER_TOTAL" description: "The scope that applies to the discount code." discount_code_type: type: "string" example: "PERCENT" description: "The type of discount code to use for the event." discount_percent: type: "integer" format: "int32" example: 20 description: "The promotional discount percentage to apply for the promotional\ \ code." id: type: "string" example: "123456" description: "The ID to use for the promotion code." items: type: "array" example: - item_id: "item123" name: "T-shirt" description: "List of items associated with this promo code." items: $ref: "#/definitions/ItemSummaryDto" paused_flag: type: "boolean" example: false description: "Pauses the promotional code." quantity_available: type: "integer" format: "int32" example: 500 description: "Total number of promotional codes available for use." quantity_total: type: "integer" format: "int32" example: 1000 description: "Total number of promotional codes to accept." quantity_used: type: "integer" format: "int32" description: "Total number of promotional codes used." start_time: type: "string" example: "2026-11-10T17:33:21.652Z" description: "The date the promotional code starts. ISO format" status: type: "string" description: "The status of the promo code." status_labels: type: "array" example: - label: "Available" label_key: "status_label.available" - label: "Sold out" label_key: "status_label.sold_out" description: "Status display labels with display text and translation key." readOnly: true items: $ref: "#/definitions/StatusDisplayLabelDto" tickets: type: "array" items: $ref: "#/definitions/TicketSummaryDto" time_limit_flag: type: "boolean" example: false description: "Indicates a time limit applies to the promotional code." title: "PromoCodeDto" description: "Specifies promotion code details." AttributeDto: type: "object" required: - "name" properties: create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "Create time of the event." last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "Last modification time of the event." attribute_id: type: "string" example: "attr123" description: "The unique identifier for the attribute." display_order: type: "integer" format: "int32" example: 1 description: "The order in which the attribute should display." name: type: "string" example: "Size" description: "The name of the attribute" quantity_total: type: "integer" format: "int32" example: 100 description: "The total quantity available for this attribute." quantity_remaining: type: "integer" format: "int32" example: 20 description: "The total quantity that remains available for this attribute." quantity_sold: type: "integer" format: "int32" example: 40 description: "The total quantity sold for this attribute." paused_flag: type: "boolean" example: false description: "Specifies if the attribute is currently paused from sales." deleted_time: type: "string" example: "2025-05-01T00:00:00.000Z" description: "The time when the attribute was deleted." status_labels: type: "array" items: $ref: "#/definitions/StatusDisplayLabelDto" title: "AttributeDto" ItemDto: type: "object" required: - "name" properties: create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "The create time of the event is ISO format." last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "Last modification time of the event." item_id: type: "string" example: "ITEM123" description: "The unique identifier for the item." display_order: type: "integer" format: "int32" example: 1 description: "The order in which to display an item." name: type: "string" example: "VIP Ticket" description: "The name of the item." description: type: "string" example: "Premium access to all event areas." description: "The description of the item." price: type: "number" example: 25.0 description: "The price per item." quantity_total: type: "integer" format: "int32" example: 100 description: "The total number of items available." quantity_remaining: type: "integer" format: "int32" example: 50 description: "The total number of items still available." quantity_sold: type: "integer" format: "int32" example: 50 description: "The total number of items sold." limit_per_order: type: "integer" format: "int32" example: 2 description: "Limits the number of items per order." show_remaining_flag: type: "boolean" example: false description: "Set to display or not to display the number of remaining items\ \ to customers." paused_flag: type: "boolean" example: true description: "Specifies if the item is currently paused from sales." deletable_flag: type: "boolean" example: true description: "Specifies if the item can be deleted." readOnly: true media_internal_id: type: "string" example: "rqla5y1" description: "The internal identifier for the item's image." media_url: type: "string" example: "https://example.com/media/image.jpg" description: "The URL to associate with the media." time_limit_flag: type: "boolean" example: false description: "Specifies if the item has time-based availability." start_time: type: "string" example: "2025-04-17T20:00:00.000Z" description: "The start time when the item becomes available." end_time: type: "string" example: "2025-05-17T20:00:00.000Z" description: "The time that the item become unavailable." hidden_flag: type: "boolean" example: false description: "Specifies if the item is hidden from customers." deleted_time: type: "string" example: "2024-05-17T20:00:00.000Z" description: "The time when the item was deleted." status_labels: type: "array" items: $ref: "#/definitions/StatusDisplayLabelDto" attributes: type: "array" items: $ref: "#/definitions/AttributeDto" title: "ItemDto" TrackDto: type: "object" required: - "campaign_activity_id" properties: campaign_activity_id: type: "string" format: "uuid" example: "31bb0c22-1c72-4841-9d2c-8bd41ed526bc" description: "The campaign activity ID associated with the registration form." readOnly: true conf_email_campaign_activity_id: type: "string" format: "uuid" example: "31bb0c22-1c72-4841-9d2c-8bd41ed526bc" description: "The confirmation email campaign activity ID." readOnly: true create_time: type: "string" example: "2023-11-17T17:33:21.652Z" description: "The event's create time." readOnly: true items_header: type: "string" example: "Items" description: "items header" last_update_time: type: "string" example: "2023-12-07T13:18:39.681Z" description: "The event's last modification time." readOnly: true media_assets: type: "array" description: "The list of media assets configured for the event." items: $ref: "#/definitions/EventMediaAssetDto" overall_ticket_capacity: type: "integer" format: "int32" example: 100 description: "The total overall ticket capacity." platform_fee_scope_type: type: "string" example: "OWNER" description: "Specifies if the platform fee is passed to registrant or absorbed\ \ by the event host." promo_codes: type: "array" description: "The list of 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.)
Note:Due to performance and/or rate-limit issues,\ \ some properties may be cached. Where possible, caching will be limited\ \ to 15 minutes" Profiles: type: "array" items: $ref: "#/definitions/ProfileDto" ConnectionStatusDto: type: "object" properties: error: type: "string" description: "There was an unexpected error accessing the account." has_token: type: "boolean" example: false description: "True if there is a token for this network type in the token-svc\ \ db" is_active_user: type: "boolean" example: false description: "At this time, a user is considered active if the user has any\ \ connected Profiles" rate_limited: type: "boolean" example: false description: "Whether this account or our app is currently rate-limited" status: type: "integer" format: "int32" description: "The status returned from the given network's API when retrieving\ \ the account. Can also beour own internal error" token_has_scopes: type: "boolean" example: false description: "Whether or not the token associated with this user has the scopes\ \ necessary to utilize social-reach-svc" token_is_valid: type: "boolean" example: false description: "True if the token marked valid in token-svc and can be successfully\ \ used to fetch basic user data from the network" description: "Data pertaining to the established social network connection" ConnectionV2Dto: type: "object" properties: account_info: description: "DTO containing account info for the connection" $ref: "#/definitions/AccountInfoDto" connection_status: description: "DTO containing connection information for the connection" $ref: "#/definitions/ConnectionStatusDto" description: "A combination of account information and connection information\ \ pertaining to the establishedsocial network connection." ConnectionResponseDto: type: "object" properties: connections: type: "array" items: $ref: "#/definitions/ConnectionV2Dto" description: "A wrapper to house the list of established social network connections\ \ for a given CTCT user." HashtagGroupDto: type: "object" required: - "hashtag_group_name" - "hashtag_names" properties: hashtag_group_id: type: "string" description: "The database id for this hashtag group.

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.

" readOnly: true hashtag_group_name: type: "string" description: "The human-readable name for this group.

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: type: "array" description: "The list of hashtag names for this group.

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.

" items: type: "string" description: "Represents a named collection of hashtags." EmbeddedResources: type: "object" required: - "hashtag_groups" properties: hashtag_groups: type: "array" readOnly: true items: $ref: "#/definitions/HashtagGroupDto" description: "Resources embedded in this response." ResourcePageLink: type: "object" required: - "href" properties: href: type: "string" description: "The URI of a page of results.

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.

" readOnly: true size: type: "integer" format: "int32" description: "The size of the page of results requested, either via the 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.

" readOnly: true totalPages: type: "integer" format: "int32" description: "The total number of pages available.

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.

" readOnly: true description: "Metadata describing the paging of results.

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 is SCHEDULED,\ \ 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

" created_at: type: "string" format: "date-time" example: "2016-03-03T10:53:04-05:00" description: "Date and time that the request was received, in ISO-8601 format." updated_at: type: "string" format: "date-time" example: "2016-03-03T10:56:29-05:00" description: "Date and time that the request status was updated, in ISO-8601\ \ format." percent_done: type: "integer" example: 1 description: "Job completion percentage" activity_errors: type: "array" description: "Array of messages describing the errors that occurred." items: type: "string" example: "Message describing the error condition." description: "Message describing the error condition." readOnly: true _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" ContactListArray: type: "object" properties: lists: type: "array" items: $ref: "#/definitions/ContactList" lists_count: type: "integer" example: 249 description: "The total number of contact lists." _links: $ref: "#/definitions/PagingLinks" ListXref: type: "object" properties: sequence_id: type: "string" example: "0016633325" description: "The V2 API list unique identifier" list_id: type: "string" format: "uuid" example: "71600990-908b-11e6-907f-1200166bff25" description: "The V3 API list 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." 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:\ \ \n" name: type: "string" example: "December Newsletter for Dog Lovers" description: "The descriptive name the user provides to identify this campaign.\ \ Campaign names must be unique for each account ID." maxLength: 80 type: type: "string" example: "NEWSLETTER" description: "Identifies the type of campaign that you select when creating\ \ the campaign. Newsletter and Custom Code email campaigns are the primary\ \ types." type_code: type: "integer" example: 10 description: "The code used to identify the email campaign `type`. \n" updated_at: type: "string" format: "date-time" example: "2018-06-27T10:28:09.000Z" description: "The system generated date and time showing when the campaign\ \ was last updated. This string is read only and is in ISO-8601 format." readOnly: true PagedEmailCampaignResponse: type: "object" properties: _links: $ref: "#/definitions/PagingLinks-3" campaigns: type: "array" items: $ref: "#/definitions/EmailCampaigns" EmailPhysicalAddress: type: "object" required: - "address_line1" - "country_code" - "organization_name" properties: address_line1: type: "string" example: "123 Maple Street" description: "Line 1 of the organization's street address." address_line2: type: "string" example: "Unit 1" description: "Line 2 of the organization's street address." address_line3: type: "string" description: "Line 3 of the organization's street address." address_optional: type: "string" example: "Near Boston Fire Station" description: "An optional address field for the organization. Only 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: Constant\ \ Contact creates a 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:\ \ \n" name: type: "string" example: "December Newsletter for Dog Lovers" description: "The descriptive name the user provides to identify this campaign.\ \ Campaign names must be unique for each account ID." maxLength: 80 type: type: "string" example: "NEWSLETTER" description: "Identifies the type of campaign that you select when creating\ \ the campaign. Newsletter and Custom Code email campaigns are the primary\ \ types." type_code: type: "integer" example: 10 description: "The code used to identify the email campaign `type`. \n" updated_at: type: "string" format: "date-time" example: "2018-06-27T10:28:09.000Z" description: "The system generated date and time showing when the campaign\ \ was last updated. This string is read only and is in ISO-8601 format." readOnly: true EmailCampaignName: type: "object" required: - "name" properties: name: type: "string" example: "December Newsletter for Dog Lovers" description: "The updated email campaign name. The email campaign name must\ \ be unique." maxLength: 80 CrossReference: type: "object" properties: v2_email_campaign_id: type: "string" example: "1100567546598" description: "Identifies an email campaign in the V2 API." campaign_id: type: "string" format: "uuid" example: "e4cf53f0-e37f-11e8-9f32-f2801f1b9fd1" description: "

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:

Constant\ \ Contact creates a 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: \n" readOnly: true format_type: type: "integer" format: "int32" example: 5 description: "Identifies the type of email format. Valid values are: \n" readOnly: true from_email: type: "string" example: "jdodge@constantcontact.com" description: "The email \"From 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." 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: "" description: "Contains the text content that Constant Contact displays\ \ to contacts when their email client cannot display HTML email. If\ \ you do not specify text content, Constant Contact displays \"Greetings!\"\ \ as the text content. This property applies only to 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: \n" reason_code: type: "integer" format: "int32" example: 0 description: "The reason why the send attempt completed or encountered an\ \ error. This method returns 0 if Constant Contact successfully\ \ sent the email campaign activity to contacts. Possible reason_code\ \ values are: \n" ResendToNonOpeners: type: "array" items: type: "object" 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 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\n" current_email_address: type: "string" example: "maddie_brown@yahoo.com" description: "The contact's most current email address. If 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 " formatted_international: type: "string" example: "+1 234-555-6789" description: "The formatted SMS number returned if the SMS country_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: " readOnly: true last_login_date: type: "string" format: "date-time" example: "2019-04-25T11:08:00.000Z" description: "The system generated date and time (ISO-8601) showing\ \ when the client last logged into their Constant Contact account.\ \ If a client has not logged into their account, the value is `null`.\ \ This property does not display in the results." readOnly: true _links: description: "HAL property that contains the next link, if applicable." $ref: "#/definitions/PaginationLinks" Provision: type: "object" required: - "contact_email" - "country_code" - "login_name" - "state_code" properties: contact_email: type: "string" example: "clients_email@gmail.com" description: "A valid email address to associate with the client account." maxLength: 80 contact_phone: type: "string" example: "588-768-6868" description: "The contact phone number to associate with the client account." minLength: 5 maxLength: 25 country_code: type: "string" example: "US" description: "The two-letter country code (ISO 3166-1 code) that specifies\ \ the country in which the client resides." minLength: 2 maxLength: 3 organization_name: type: "string" example: "Hanks Fresh Fruit Delivery" description: "The name of organization that identifies the client account." minLength: 1 maxLength: 50 organization_phone: type: "string" example: "401-244-1000" description: "The organization phone number. To set the organization phone\ \ number using the user interface, select My Settings and in the\ \ Organization Information section, select Edit Organization Information." minLength: 5 maxLength: 25 state_code: type: "string" example: "MA" description: "The two-letter state code that represents the US state (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 " plan_group_id: type: "integer" format: "int32" example: 152 description: "Updates an existing client account billing plan group to a new\ \ billing plan group. If you don't know the `plan_group_id` to use, contact\ \ our API support team." billing_day_of_month: type: "integer" format: "int32" example: 15 description: "This property is required if a client account is not set up\ \ to use single billing. 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.\ \ 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 " effective_date: type: "string" format: "date-time" example: "2020-02-06T22:09:15.000Z" description: "The client account cancellation date and time in ISO-8601 format." 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." QueryParamObject: type: "object" properties: query_param_key: type: "string" example: "include" description: "The name of the query parameter." query_param_value: type: "string" example: "list_memberships" description: "The value of the query parameter." PathParamObject: type: "object" properties: path_param_key: type: "string" example: "contact_id" description: "The name of the path parameter." path_param_value: type: "string" example: "04fe9a-a579-43c5-bb1a-58ed29bf0a6a" description: "The value of the path parameter." HeadersObject: type: "object" properties: header_key: type: "string" example: "Accept" description: "The name of the header." header_value: type: "string" example: "application/json" description: "The value of the header." PartnerAccountOperationsRequest: type: "object" required: - "account_operation_method" - "account_operation_url" properties: account_operation_url: type: "string" example: "/contacts/{contact_id}" description: "The API method path for the request you are sending on behalf\ \ of a managed child account. This value should be a V3 API URL without\ \ the https://api.cc.email/v3 base url and with any path parameter names\ \ included. For example: /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."