Dotdigital Insight Data API

The InsightData API from Dotdigital — 17 operation(s) for insightdata.

Operations 22

PUT /insightData/v3/import Bulk imports Insight data #
GET /insightData/v3/import/{importId} Retrieve the status of a Insight data import request #
GET /insightData/v3/async/{jobId} Retrieve the status of an asynchronous request #
GET /insightData/v3/collections Lists all Insight data collections #
POST /insightData/v3/collections/{collectionName} Creates an Insight data collection #
DELETE /insightData/v3/collections/{collectionName} Deletes an Insight data collection #
DELETE /insightData/v3/accounts/{collectionName}/deleteRecords Deletes multiple records from an account scoped Insight Data collection. #
DELETE /insightData/v3/collections/{collectionName}/empty Empties an Insight data collection #
GET /insightData/v3/collections/{collectionName}/schema Gets the JSON schema for an Insight data collection #
GET /insightData/v3/account List account Insight data collections #
GET /insightData/v3/account/{collectionName} Retrieves records from an accounts Insight data collection #
GET /insightData/v3/account/{collectionName}/{recordId} Retrieve single record from an account Insight data collection #
PUT /insightData/v3/account/{collectionName}/{recordId} Upsert record into an account Insight data collection #
DELETE /insightData/v3/account/{collectionName}/{recordId} Delete record from an account Insight data collection #
GET /insightData/v3/contacts/{collectionName} Retrieve data for contact-scoped Insight data collection #
GET /insightData/v3/contacts/{identifier}/{value} List Insight data collections for a contact #
GET /insightData/v3/contacts/{identifier}/{value}/{collectionName} Retrieve records for a contact from Insight data collection #
DELETE /insightData/v3/contacts/{identifier}/{value}/{collectionName}/deleteRecords Deletes multiple records from an contact scoped Insight Data collection. #
DELETE /insightData/v3/contacts/{identifier}/{value}/{collectionName}/empty Empty Insight data collection for a contact #
GET /insightData/v3/contacts/{identifier}/{value}/{collectionName}/{recordId} Retrieve Insight data record for a contact #
PUT /insightData/v3/contacts/{identifier}/{value}/{collectionName}/{recordId} Upsert record into Insight data collection for a contact #
DELETE /insightData/v3/contacts/{identifier}/{value}/{collectionName}/{recordId} Delete record from Insight data collection for a contact #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dotdigital-insightdata-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dotdigital-insightdata-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: service Insight Data API
  description: 'Manage Insight data collections and records at both account and contact level. Use this API to bulk-import records via asynchronous upsert, retrieve and update individual records, create and delete collections, empty collections, and poll the status of import or asynchronous operations. Insight data makes structured behavioural and transactional data — such as orders, product catalogues, and web activity — available to drive personalisation, segmentation, and product recommendations across your campaigns.

    '
  version: 3.3.1
servers:
- url: https://{region}-api.dotdigital.com
  variables:
    region:
      description: The Dotdigital region id your account belongs to
      enum:
      - r1
      - r2
      - r3
      default: r1
security:
- basicAuth: []
tags:
- name: InsightData
paths:
  /insightData/v3/import:
    put:
      summary: Bulk imports Insight data
      description: 'Imports a batch of Insight data records into a collection and upserts them. This either creates new records or updates already existing records. This is an asynchronous operation and you need to check when it is complete by calling **getImportStatus**


        *Notes:*

        * *If the Insight data collection does not exist it will be created*

        * *If targeting a **contact** scoped Insight collection, then you **must** provide a **contactIdentity** on each record*'
      operationId: importInsightData
      parameters:
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      requestBody:
        description: Insight data data records to be imported
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3_import_body'
            examples:
              Account level Insight data:
                value:
                  collectionName: catalog_myStore
                  collectionScope: account
                  collectionType: catalog
                  records:
                  - key: '24938'
                    json:
                      name: Armani Jeans beanie hat
                      price: 56
                      url: https://mystore.fake.com/product/24938
                      sku: hat-24938-men
              Contact level Insight data:
                value:
                  collectionName: Orders
                  collectionScope: contact
                  collectionType: orders
                  records:
                  - contactIdentity:
                      identifier: email
                      value: joe.bloggs@emailsim.io
                    key: 24938
                    json:
                      PurchaseDate: '2020-01-01T09:40:18.527Z'
                      TotalExTax: 56
                      TotalIncTax: 67.2
                      SalesChannel: In store
                      SalesSubChannel: Manchester
                      Product:
                        Name: Armani Jeans beanie hat
                        Brand: Armani Jeans
                        Department: Menswear
                        Category: Hat
                        PriceExTax: 56
                        ProductID: '24938'
        required: true
      responses:
        '202':
          description: Import processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_202'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:badJson
                description: The request JSON is badly formed
        '401':
          description: Unauthorized
      tags:
      - InsightData
  /insightData/v3/import/{importId}:
    get:
      summary: Retrieve the status of a Insight data import request
      description: Retrieves the status of a Insight data import request and the results if available.
      operationId: getImportStatus
      parameters:
      - name: importId
        in: path
        description: The import id you want the status for
        required: true
        schema:
          type: string
          example: d7de900d-d337-43f6-b1e1-c8ec73e1a434
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200'
              examples:
                Import in progress:
                  value:
                    importId: d7de900d-d337-43f6-b1e1-c8ec73e1a434
                    status: NotStarted
                Import complete:
                  value:
                    importId: d7de900d-d337-43f6-b1e1-c8ec73e1a434
                    status: Finished
                    collectionName: Orders
                    summary:
                      totalRecords: 10
                      totalImported: 9
                      totalRejected: 1
                    failures:
                    - collectionOwner:
                        ownerType: contact
                        contactIdentity:
                          identifier: email
                          value: joe.bloggs@emailsim.io
                      failureReason: Unknown
                      details:
                      - Field 'name' is required but was missing
                      - Field 'price' is expected to be a number
                      key: '24938'
                      json:
                        PurchaseDate: '2020-01-01T09:40:18.527Z'
                        TotalExTax: 56
                        TotalIncTax: 67.2
                        SalesChannel: In store
                        SalesSubChannel: Manchester
                        Product:
                          Name: Armani Jeans beanie hat
                          Brand: Armani Jeans
                          Department: Menswear
                          Category: Hat
                          PriceExTax: 56
                          ProductID: '24938'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The id value '123646' is invalid for the identifier 'email'
        '401':
          description: Unauthorized
        '404':
          description: Import request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:importNotFound
                description: The import request 'd7de900d-d337-43f6-b1e1-c8ec73e1a434' could not be found!
      tags:
      - InsightData
  /insightData/v3/async/{jobId}:
    get:
      summary: Retrieve the status of an asynchronous request
      description: Retrieves the status of an asynchronous request and the results if available, such as emptying or deleting collections.
      operationId: getAsyncStatus
      parameters:
      - name: jobId
        in: path
        description: The async job id you want the status for
        required: true
        schema:
          type: string
          example: d7de900d-d337-43f6-b1e1-c8ec73e1a434
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_1'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The id value '123646' is invalid for the identifier 'email'
        '401':
          description: Unauthorized
        '404':
          description: Asynchronous job not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:asyncJobNotFound
                description: The job ID 'd7de900d-d337-43f6-b1e1-c8ec73e1a434' could not be found!
      tags:
      - InsightData
  /insightData/v3/collections:
    get:
      summary: Lists all Insight data collections
      description: Retrieves a list of Insight data collections used at both account and contact level
      operationId: getAllInsightDataCollections
      parameters:
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                description: The Insight data collections for the account
                items:
                  $ref: '#/components/schemas/collectionSummary'
        '401':
          description: Unauthorized
      tags:
      - InsightData
  /insightData/v3/collections/{collectionName}:
    post:
      summary: Creates an Insight data collection
      description: 'Creates an empty Insight data collection. If the collection already exists a successful result will be returned.<br/><br/>

        **Note:** You can create a maximum of 1000 Insight data collections.'
      operationId: postCreateInsightDataCollection
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      - name: collectionScope
        in: query
        description: The scope the collection applies to, either account level or contact level
        required: true
        schema:
          $ref: '#/components/schemas/collectionScope'
      - name: collectionType
        in: query
        description: Type of data the collection holds; **custom** must be used when adding custom data
        required: true
        schema:
          $ref: '#/components/schemas/collectionType'
      responses:
        '200':
          description: Insight data collection already exists
        '201':
          description: Insight data collection created
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The collectionName value 'my collection' is invalid
        '401':
          description: Unauthorized
        '412':
          description: Insight data collection limit exceeded
      tags:
      - InsightData
    delete:
      summary: Deletes an Insight data collection
      description: 'Requests a delete of a specified Insight data collection and all records for either an account scoped collection or for all contacts when referencing an contact scoped collection.<br/><br/>

        **Notes:**

        * The deletion is asynchronous progress can be monitored by calling [getAsyncStatus](/reference/getasyncstatus)

        * If you delete a contact scoped Insight data collection then it is deleted for all contacts!'
      operationId: delInsightDataCollection
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '202':
          description: Insight data collection delete request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/asyncJobId'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The collectionName value 'my collection' is invalid
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
      tags:
      - InsightData
  /insightData/v3/accounts/{collectionName}/deleteRecords:
    delete:
      summary: Deletes multiple records from an account scoped Insight Data collection.
      description: 'Delete from 1 to 5000 records from a single account scoped Insight Data collection in a single call. This call can be used when you need to remove many records from a collection but not all.

        '
      operationId: delAccountInsightDataRecords
      parameters:
      - name: collectionName
        in: path
        description: The Insight data collection name.
        required: true
        schema:
          $ref: '#/components/schemas/collectionName'
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      requestBody:
        description: Record keys to delete
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/collectionName_deleteRecords_body'
        required: true
      responses:
        '200':
          description: Insight data record deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_2'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:noRecordsSpecified
                description: You must speify the keys for the records to be deleted from the collection.
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
      tags:
      - InsightData
  /insightData/v3/collections/{collectionName}/empty:
    delete:
      summary: Empties an Insight data collection
      description: 'Deletes all records from the specified Insight data collection but not the collection itself, so further data can be added without removing dependencies to product recommendations, campaigns, or segments. <br/><br/>

        **Notes:**

        * The deletion is asynchronous progress can be monitored by calling [getAsyncStatus](/reference/getasyncstatus)

        * If you empty a contact scoped Insight data collection then all data for all contacts in that collection will be removed'
      operationId: delEmptyAnyInsightDataCollection
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '202':
          description: Empty request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/asyncJobId'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The collectionName value 'my collection' is invalid
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
      tags:
      - InsightData
  /insightData/v3/collections/{collectionName}/schema:
    get:
      summary: Gets the JSON schema for an Insight data collection
      description: 'Gets the schema for an Insight data collection.


        *Note: All records added to the collection must adhere to this schema, but are allowed to extend it.*'
      operationId: getInsightDataCollectionSchema
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Schema for the collection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_3'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The collectionName value 'my collection' is invalid
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
      tags:
      - InsightData
  /insightData/v3/account:
    get:
      summary: List account Insight data collections
      description: Retrieves a list of all Insight data collections for an account
      operationId: getAccountInsightDataCollections
      parameters:
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                description: The Insight data collections for the account
                items:
                  $ref: '#/components/schemas/collectionSummary'
        '401':
          description: Unauthorized
      tags:
      - InsightData
  /insightData/v3/account/{collectionName}:
    get:
      summary: Retrieves records from an accounts Insight data collection
      description: 'Retrieve all records from an Insight data collection<br><br>*Note: All data is returned in ascending order*'
      operationId: getAccountInsightData
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      - name: ~modified
        in: query
        description: 'Filter by last modified date.<br/>

          ***Note:***

          * The date must be in ([ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601))'
        schema:
          pattern: ^gte::\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$
          type: string
        examples:
          Greater than or equal to modified date:
            value: gte::2021-12-17T00:00:00Z
      - name: limit
        in: query
        description: Maximum number of records to retrieve per page
        schema:
          maximum: 5000
          minimum: 1
          type: integer
          format: int32
          example: 1000
      - name: marker
        in: query
        description: Pagination marker to retrieve the data from
        schema:
          type: string
          example: RXhhbXBsZSBhbXJrZXIgdmFsdWU=
      responses:
        '200':
          description: Insight data retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_4'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The collectionName value 'my collection' is invalid
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
      tags:
      - InsightData
  /insightData/v3/account/{collectionName}/{recordId}:
    get:
      summary: Retrieve single record from an account Insight data collection
      description: Retrieve single record from an account Insight data collection
      operationId: getAccountInsightDataRecord
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: recordId
        in: path
        description: Unique ID for the Insight data record
        required: true
        schema:
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7-4544-973b-e2da0c9136f9
      responses:
        '200':
          description: Insight data record retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/returnedInsightRecord'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              example:
                errorCode: insightData:invalidId
                description: The id value '123646' is invalid for the identifier 'email'
        '401':
          description: Unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
              examples:
                collectionNotFound:
                  summary: Collection not found
                  value:
                    errorCode: insightData:collectionNotFound
                    description: The collection could not be found
                    details:
                    - item: myOrders
                      description: Not found
                recordNotFound:
                  summary: Record not found
                  value:
                    errorCode: insightData:recordNotFound
                    description: The Insight data record could not be found
                    details:
                    - item: '24938'
                      description: Not found in the contacts collection '{collectionName}'
      tags:
      - InsightData
    put:
      summary: Upsert record into an account Insight data collection
      description: Updates or creates a record in a specified Insight data collection
      operationId: putAccountInsightDataRecord
      parameters:
      - name: collectionName
        in: path
        description: Insight data collection name
        required: true
        schema:
          maxLength: 255
          pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
          type: string
      - name: recordId
        in: path
        description: Unique ID for the Insight data record
        required: true
        schema:
          type: string
      - name: x-ddg-integration-token
        in: header
        description: If you are a partner of Dotdigital and have a [verified integration](https://developer.dotdigital.com/docs/partner-integration-verification) then include your [integration tracking token](https://developer.dotdigital.co/docs/verified-integration-tracking) here.
        required: false
        schema:
          pattern: /^(?:\{{0,1}(?:[0-9a-fA-F]){8}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){4}-(?:[0-9a-fA-F]){12}\}{0,1})$/
          type: string
          example: 5a96bc79-19a7

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