Dotdigital v2 API

The legacy v2 REST framework, still the only home for many capabilities — email and SMS campaigns, programs and enrolments, pages and forms, documents and images, segments, data fields, preferences and consent, ecommerce orders, product recommendations, scoring and transactional email. Contact and transactional-data operations here are marked deprecated in favour of the v3 services.

Documentation

Specifications

OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-v2-api-full-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-accounts-and-utilities-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-email-contacts-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-lists-address-books-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-segments-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-contact-data-fields-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-preferences-and-subscriptions-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-email-campaigns-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-sms-campaigns-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-campaign-templates-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-transactional-email-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-programs-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-pages-and-forms-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-documents-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-images-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-ecommerce-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-product-recommendations-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-scoring-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-insight-and-transactional-data-openapi.yml

Other Resources

OpenAPI Specification

dotdigital-v2-api-full-openapi.yml Raw ↑
x-generator: NSwag v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))
openapi: 3.0.0
info:
  title: apiconnector.com
  version: v2
servers:
- url: https://r1-api.dotdigital.com
paths:
  /v2/account-info:
    get:
      tags:
      - ApiAccount
      summary: Gets a summary of information about the current status of the account.
      operationId: ApiAccount_GetCurrentAccountInfo
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAccount'
  /v2/server-time:
    get:
      tags:
      - ApiAccount
      summary: Gets the UTC time as set on the server.
      operationId: ApiAccount_GetServerTime
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: string
                format: date-time
  /v2/accounts:
    post:
      tags:
      - ApiAccount
      summary: Creates an account. The ID of the newly returned account will be returned as the result of this call.
      description: "There are some mandatory, and some optional fields - missing mandatory fields will cause error code to be returned.\n            The following fields are mandatory: \"EMAIL\", \"FIRSTNAME\", \"LASTNAME\", \"USERIPADDRESS\".\n            The following fields are optional: \"COMPANY\", \"PHONENUMBER\", \"LCID\", \"TIMEZONEID\", \"ISEXPRESSACCOUNT\"."
      operationId: ApiAccount_CreateAccount
      requestBody:
        x-name: account
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiAccount'
        required: true
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAccount'
  /v2/accounts/{accountId}/managed-users:
    post:
      tags:
      - ApiAccount
      summary: Creates Managed user for a given account id.
      operationId: ApiAccount_CreateManagedUser
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiManagedUser
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiManagedUser'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiManagedUser'
  /v2/accounts/{accountId}/oauth-tokens:
    post:
      tags:
      - ApiAccount
      summary: Adds an OAuth token to an account.
      operationId: ApiAccount_CreateOAuthToken
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiOAuthToken
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiOAuthToken'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOAuthToken'
  /v2/accounts/{accountId}/theme:
    put:
      tags:
      - ApiAccount
      summary: Changes a theme for an account.
      operationId: ApiAccount_UpdateTheme
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiTheme
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiTheme'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
  /v2/accounts/{accountId}/api-users:
    post:
      tags:
      - ApiAccount
      summary: Creates an API user for a given account ID. The username of the created user will be returned as the result of this call.
      description: This method may only be called on an account with no existing API users configured using the rate limiting scheme referenced in the request indicated with IsTieredRateLimitedApiUser e.g. flat or tiered rate limiting.
      operationId: ApiAccount_CreateApiUser
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiUser
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUser'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUser'
  /v2/accounts/empty-recycle-bin:
    post:
      tags:
      - ApiAccount
      summary: Empties the account's recycle bin.
      operationId: ApiAccount_EmptyRecycleBin
      responses:
        '200':
          description: ''
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /v2/address-books/{id}:
    get:
      tags:
      - ApiAddressBook
      summary: Gets a list by ID.
      operationId: ApiAddressBook_GetAddressBookById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAddressBook'
    put:
      tags:
      - ApiAddressBook
      summary: Updates a list.
      operationId: ApiAddressBook_UpdateAddressBook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiAddressBook
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiAddressBook'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAddressBook'
    delete:
      tags:
      - ApiAddressBook
      summary: Deletes a list.
      operationId: ApiAddressBook_DeleteAddressBook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /v2/address-books:
    get:
      tags:
      - ApiAddressBook
      summary: Gets all lists.
      operationId: ApiAddressBook_GetAddressBooks
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiAddressBook'
    post:
      tags:
      - ApiAddressBook
      summary: Creates a list.
      operationId: ApiAddressBook_CreateAddressBook
      requestBody:
        x-name: apiAddressBook
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiAddressBook'
        required: true
        x-position: 1
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAddressBook'
  /v2/address-books/private:
    get:
      tags:
      - ApiAddressBook
      summary: Gets all private lists.
      operationId: ApiAddressBook_GetPrivateAddressBooks
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiAddressBook'
  /v2/address-books/public:
    get:
      tags:
      - ApiAddressBook
      summary: Gets all public lists.
      operationId: ApiAddressBook_GetPublicAddressBooks
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiAddressBook'
  /v2/contacts/{contactId}/address-books:
    get:
      tags:
      - ApiAddressBook
      summary: Gets any lists that a contact is in.
      operationId: ApiAddressBook_GetAddressBooksForContact
      parameters:
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiAddressBook'
  /v2/campaigns/{campaignId}/address-books:
    get:
      tags:
      - ApiAddressBook
      summary: Gets any lists that a campaign has ever been sent to.
      operationId: ApiAddressBook_GetAddressBooksForCampaign
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiAddressBook'
  /v2/campaigns/{id}:
    get:
      tags:
      - ApiCampaign
      summary: Gets a campaign by ID.
      operationId: ApiCampaign_GetCampaignById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaign'
    put:
      tags:
      - ApiCampaign
      summary: Updates a given campaign.
      operationId: ApiCampaign_UpdateCampaign
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      requestBody:
        x-name: apiCampaign
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCampaign'
        required: true
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaign'
  /v2/campaigns:
    get:
      tags:
      - ApiCampaign
      summary: Gets all campaigns.
      operationId: ApiCampaign_GetCampaigns
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaign'
    post:
      tags:
      - ApiCampaign
      summary: Creates a campaign.
      operationId: ApiCampaign_CreateCampaign
      requestBody:
        x-name: apiCampaign
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCampaignWithType'
        required: true
        x-position: 1
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaignWithType'
  /v2/campaigns/filtered:
    get:
      tags:
      - ApiCampaign
      summary: Gets all campaigns (with filters).
      operationId: ApiCampaign_GetCampaignsWithFilters
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      - name: ~type
        x-originalName: type
        in: query
        schema:
          type: string
          nullable: true
        x-position: 3
      - name: ~tags
        x-originalName: tags
        in: query
        style: form
        explode: true
        schema:
          type: array
          nullable: true
          items:
            type: string
        x-position: 4
      - name: ~sentDate
        x-originalName: sentDate
        in: query
        schema:
          type: string
          format: date-time
          nullable: true
        x-position: 5
      - name: ~statuses
        x-originalName: statuses
        in: query
        style: form
        explode: true
        schema:
          type: array
          nullable: true
          items:
            type: string
        x-position: 6
      - name: ~scheduledDateFrom
        x-originalName: scheduledDateFrom
        in: query
        schema:
          type: string
          format: date-time
          nullable: true
        x-position: 7
      - name: ~scheduledDateTo
        x-originalName: scheduledDateTo
        in: query
        schema:
          type: string
          format: date-time
          nullable: true
        x-position: 8
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignExtended'
  /v2/campaigns/with-details:
    get:
      tags:
      - ApiCampaign
      summary: Gets all campaigns with additional information like type.
      operationId: ApiCampaign_GetCampaignsWithDetails
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignDetails'
  /v2/address-books/{addressBookId}/campaigns:
    get:
      tags:
      - ApiCampaign
      summary: Gets any campaigns that have been sent to a list.
      operationId: ApiCampaign_GetCampaignsForAddressBook
      parameters:
      - name: addressBookId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaign'
  /v2/campaigns/with-activity-since/{date}:
    get:
      tags:
      - ApiCampaign
      summary: Gets all sent campaigns, which have had activity (e.g. clicks, opens) after a specified date.
      operationId: ApiCampaign_GetSentCampaignsWithActivitySinceDate
      parameters:
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date-time
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaign'
  /v2/campaigns/split-test:
    post:
      tags:
      - ApiCampaign
      summary: Creates a split test campaign.
      operationId: ApiCampaign_CreateSplitTestCampaign
      requestBody:
        x-name: apiCampaign
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiSplitTestCampaign'
        required: true
        x-position: 1
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSplitTestCampaign'
  /v2/campaigns/{campaignId}/copy:
    post:
      tags:
      - ApiCampaign
      summary: Copies a given campaign returning the new campaign.
      operationId: ApiCampaign_CopyCampaign
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaign'
  /v2/campaigns/{campaignId}:
    delete:
      tags:
      - ApiCampaign
      summary: Deletes a campaign, and any associated reporting data. If the campaign is currently in use, or being sent to, this call will not be permitted.
      operationId: ApiCampaign_DeleteCampaign
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '204':
          description: ''
  /v2/campaigns/{campaignId}/with-details:
    get:
      tags:
      - ApiCampaign
      summary: Gets a campaign by ID with additional information like type and assigned tags
      operationId: ApiCampaign_GetCampaignWithDetails
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaignDetails'
  /v2/campaigns/{campaignId}/split-test:
    get:
      tags:
      - ApiCampaign
      summary: Gets the split test results of a given campaign.
      operationId: ApiCampaign_GetCampaignSplitTestResults
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaignSplitTestResults'
  /v2/custom-from-addresses:
    get:
      tags:
      - ApiCampaignFromAddress
      summary: Gets all custom from addresses which can be used in a campaign.
      operationId: ApiCampaignFromAddress_GetCustomFromAddresses
      parameters:
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 1
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignFromAddress'
  /v2/campaigns/{campaignId}/summary:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a summary of reporting information for a specified campaign.
      operationId: ApiCampaignReporting_GetCampaignSummary
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaignSummary'
  /v2/campaigns/{campaignId}/activities:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of contacts who were sent a campaign, with their activity.
      operationId: ApiCampaignReporting_GetCampaignActivities
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactSummary'
  /v2/campaigns/{campaignId}/activities/since-date/{date}:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of contacts who were sent a campaign, and retrieves only those contacts who showed activity (e.g. they clicked, opened) after a specified date.
      operationId: ApiCampaignReporting_GetCampaignActivitiesSinceDate
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date-time
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 2000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 4
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactSummary'
  /v2/campaigns/{campaignId}/activities/{contactId}:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets activity for a given contact and campaign.
      operationId: ApiCampaignReporting_GetCampaignContactActivity
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 2
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCampaignContactSummary'
  /v2/campaigns/{campaignId}/clicks:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of campaign link clicks.
      operationId: ApiCampaignReporting_GetCampaignClicks
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactClick'
  /v2/campaigns/{campaignId}/clicks/since-date/{date}:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of link clicks for a campaign after a specified date
      operationId: ApiCampaignReporting_GetCampaignClicksSinceDate
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date-time
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 4
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactClick'
  /v2/campaigns/{campaignId}/activities/{contactId}/clicks:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of campaign link clicks for a contact.
      operationId: ApiCampaignReporting_GetCampaignContactClicks
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 4
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactClick'
  /v2/campaigns/{campaignId}/opens:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of campaign opens.
      operationId: ApiCampaignReporting_GetCampaignOpens
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 2
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactOpen'
  /v2/campaigns/{campaignId}/opens/since-date/{date}:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of opens for a campaign after a specified date
      operationId: ApiCampaignReporting_GetCampaignOpensSinceDate
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date-time
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 4
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactOpen'
  /v2/campaigns/{campaignId}/activities/{contactId}/opens:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of campaign opens for a contact.
      operationId: ApiCampaignReporting_GetCampaignContactOpens
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: contactId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 4
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCampaignContactOpen'
  /v2/campaigns/{campaignId}/page-views/since-date/{date}:
    get:
      tags:
      - ApiCampaignReporting
      summary: Gets a list of page views for a campaign after a specified date.
      operationId: ApiCampaignReporting_GetCampaignPageViewsSinceDate
      parameters:
      - name: campaignId
        in: path
        required: true
        schema:
          type: integer
          format: int32
        x-position: 1
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date-time
        x-position: 2
      - name: select
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
        x-position: 3
      - name: skip
        in: query
        schema:
          type: integer
          fo

# --- truncated at 32 KB (206 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dotdigital/refs/heads/main/openapi/dotdigital-v2-api-full-openapi.yml