openapi: 3.0.0
info:
title: Insight data service
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
externalDocs:
description: Learn more about Dotdigital APIs
url: https://developer.dotdigital.com
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: []
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
/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!
/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!
/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
/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.
**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
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.
**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
/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
/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.
**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
/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
/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
/insightData/v3/account/{collectionName}:
get:
summary: Retrieves records from an accounts Insight data collection
description: 'Retrieve all records from an Insight data collection
*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.
***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
/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}'
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-4544-973b-e2da0c9136f9
requestBody:
description: Insight data record
content:
application/json:
schema:
type: string
example: '{"id":387,"name":"400 watt power supply","price":109,"pricelevel":"List Price","sku":"ACC00001","stock":22,"status":true,"image_path":"https://example.com/core/media/media.nl?id=292&c=TD2815248&h=3fvIALEwyWdcy9fWbbmpfS3LBSIos2tziU8i5Rj-Zp9piVEw","url":"https://exanmple.com/item/387","description":"400 Watt Power Supply","lastmodifiedutc":"2024-08-28T11:18:30Z","type":"Simple"}'
required: true
responses:
'201':
description: Record created
'204':
description: Record replaced
'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
delete:
summary: Delete record from an account Insight data collection
description: Deletes a single record from a specified Insight data collection
operationId: delAccountInsightDataRecord
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:
'204':
description: Insight data record deleted
'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
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}'
/insightData/v3/contacts/{collectionName}:
get:
summary: Retrieve data for contact-scoped Insight data collection
description: 'Retrieves records from across all contacts for a contacts scoped Insight data collection
***Note:** All data is returned in ascending order*'
operationId: getAllContactsInsightData
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.
***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_5'
'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
/insightData/v3/contacts/{identifier}/{value}:
get:
summary: List Insight data collections for a contact
description: Retrieves a list of Insight Data collections for a contact using a specific identifier
operationId: getContactInsightDataCollections
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
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: Successful operation
content:
application/json:
schema:
maxItems: 1000
type: array
description: The Insight data collections for the contact
items:
$ref: '#/components/schemas/collectionSummary'
'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: Contact not found
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
example:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
/insightData/v3/contacts/{identifier}/{value}/{collectionName}:
get:
summary: Retrieve records for a contact from Insight data collection
description: 'Retrieves records from a specified Insight data collection for a contact
*Note: All data is returned in ascending order*'
operationId: getContactInsightData
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- 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.
***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_6'
'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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
collectionNotFound:
summary: Collection not found
value:
errorCode: insightData:collectionNotFound
description: The collection could not be found
details:
- item: myOrders
description: Not found
/insightData/v3/contacts/{identifier}/{value}/{collectionName}/deleteRecords:
delete:
summary: Deletes multiple records from an contact scoped Insight Data collection.
description: 'Delete from 1 to 5000 records from a single contact 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: delContactInsightDataRecords
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- name: collectionName
in: path
description: The Insight data collection name.
required: true
schema:
$ref: '#/components/schemas/collectionName'
requestBody:
description: Record keys to delete
content:
application/json:
schema:
$ref: '#/components/schemas/collectionName_deleteRecords_body_1'
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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
collectionNotFound:
summary: Collection not found
value:
errorCode: insightData:collectionNotFound
description: The collection could not be found
details:
- item: myOrders
description: Not found
/insightData/v3/contacts/{identifier}/{value}/{collectionName}/empty:
delete:
summary: Empty Insight data collection for a contact
description: 'Deletes all records from a specified Insight data collection for a single contact. The collection itself is not deleted; this allows new data to be added without affecting data dependencies.
**Notes:**
* The deletion is asynchronous progress can be monitored by calling [getAsyncStatus](/reference/getasyncstatus)'
operationId: delEmptyContactInsightDataCollection
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- 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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
collectionNotFound:
summary: Collection not found
value:
errorCode: insightData:collectionNotFound
description: The collection could not be found
details:
- item: myOrders
description: Not found
/insightData/v3/contacts/{identifier}/{value}/{collectionName}/{recordId}:
get:
summary: Retrieve Insight data record for a contact
description: Retrieves a single record from a specified Insight data collection for a contact
operationId: getContactInsightDataRecord
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- 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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
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}'
put:
summary: Upsert record into Insight data collection for a contact
description: Updates or creates a record in a specified Insight data collection for a contact
operationId: putContactInsightDataRecord
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- 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
requestBody:
description: Insight data record
content:
application/json:
schema:
type: string
format: json
example: '{"PurchaseDate":"2020-01-01T09:40:18.527Z","TotalExTax":111.2,"TotalIncTax":133.44,"Product":[{"Name":"Long unlined leather gloves","Brand":"Dents","Department":"Womenswear","Category":"Gloves","PriceExTax":111.2,"ProductID":"24920"}],"SalesChannel":"In store","SalesSubChannel":"London - One New Change"}'
required: true
responses:
'201':
description: Record created
'204':
description: Record replaced
'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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
collectionNotFound:
summary: Collection not found
value:
errorCode: insightData:collectionNotFound
description: The collection could not be found
details:
- item: myOrders
description: Not found
delete:
summary: Delete record from Insight data collection for a contact
description: Deletes a single record from a specified Insight data collection for a contact
operationId: delContactInsightDataRecord
parameters:
- name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
- name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
- 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:
'204':
description: Insight data record deleted
'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:
contactNotFound:
summary: Contact cannot be found
value:
errorCode: insightData:contactNotFound
description: The following contacts could not be found
details:
- item: unknown@emailsim.io
description: Not found using the identifier 'email'
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}'
components:
schemas:
collectionName:
maxLength: 255
pattern: (^[-A-Za-z_][-A-Za-z0-9_]{1,255}$)
type: string
description: Name of the Insight data collection
example: Orders
insightRecord:
required:
- json
- key
type: object
properties:
key:
type: string
description: The unique key for the record
example: '24938'
json:
type: object
additionalProperties: true
format: json
example:
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'
description: An Insight data record
upsertInsightRecord:
description: An Insight data record to be upserted
allOf:
- type: object
properties:
contactIdentity:
allOf:
- description: If targeting a contact scoped collection you must specify the contact that owns this record
- $ref: '#/components/schemas/contactIdentifier'
additionalProperties: false
- $ref: '#/components/schemas/insightRecord'
returnedInsightRecord:
description: An Insight data record
allOf:
- $ref: '#/components/schemas/insightRecord'
- required:
- created
- updated
type: object
properties:
created:
type: string
description: ISO 8601 UTC timestamp for when the record was created
format: date-time
updated:
type: string
description: ISO 8601 UTC timestamp for when the record was last updated
format: date-time
ownerContactId:
$ref: '#/components/schemas/contactId'
additionalProperties: false
collectionSummary:
required:
- collectionName
- collectionType
- recordCount
type: object
properties:
collectionName:
$ref: '#/components/schemas/collectionName'
collectionType:
$ref: '#/components/schemas/collectionType'
collectionScope:
type: string
description: Scope the collection applies to; account level or contact level
example: contact
enum:
- account
- contact
recordCount:
type: integer
description: Number of records in the collection
format: int64
example: 100
description: An Insight data collection summary
asyncJobId:
required:
- jobId
type: object
properties:
jobId:
type: string
description: The unique asynchronous job id
example: e036d11f-15be-4497-8dee-5ca210abeca6
collectionScope:
type: string
description: The scope the collection applies to, either account level or contact level
enum:
- account
- contact
collectionType:
type: string
description: Type of data the collection holds; **custom** denotes your custom data.
enum:
- cartInsight
- catalog
- consentInsight
- custom
- easyEditorExtensions
- nostoEmailCampaigns
- orders
- productCategories
- webInsight
- wishList
collectionOwner:
required:
- ownerType
type: object
properties:
ownerType:
type: string
enum:
- account
- contact
contactIdentity:
$ref: '#/components/schemas/contactIdentifier'
errorResponse:
required:
- description
- errorCode
type: object
properties:
errorCode:
type: string
description: Unique error code
description:
type: string
description: Description of the issue
details:
type: array
items:
$ref: '#/components/schemas/errorResponse_details'
paginationLinks:
required:
- first
- self
type: object
properties:
self:
$ref: '#/components/schemas/paginationLinks_self'
first:
$ref: '#/components/schemas/paginationLinks_first'
prev:
$ref: '#/components/schemas/paginationLinks_prev'
next:
$ref: '#/components/schemas/paginationLinks_next'
last:
$ref: '#/components/schemas/paginationLinks_last'
description: Pagination links
contactIdentifier:
required:
- identifier
- value
type: object
properties:
identifier:
type: string
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of contactId, email or mobileNumber
example: contactId
value:
type: string
description: The unique value to identify the contact or the same type as the **identifier**
nullable: true
example: fred.bloggs@emailsim.io
contactId:
minimum: 0
type: integer
description: Immutable unique identifier for the contact
example: 35212311
v3_import_body:
required:
- collectionName
- collectionScope
- collectionType
- records
type: object
properties:
collectionName:
$ref: '#/components/schemas/collectionName'
collectionScope:
$ref: '#/components/schemas/collectionScope'
collectionType:
$ref: '#/components/schemas/collectionType'
records:
minItems: 1
type: array
description: The Insight data records for the collection
items:
$ref: '#/components/schemas/upsertInsightRecord'
inline_response_202:
type: object
properties:
importId:
type: string
description: The import id to use to retrieve the imports status using **getImportStatus**
example: d7de900d-d337-43f6-b1e1-c8ec73e1a434
inline_response_200:
required:
- importId
- status
type: object
properties:
importId:
type: string
description: The import request ID
example: d7de900d-d337-43f6-b1e1-c8ec73e1a434
status:
type: string
example: Finished
enum:
- NotStarted
- Processing
- Complete
- Failed
collectionName:
$ref: '#/components/schemas/collectionName'
summary:
$ref: '#/components/schemas/inline_response_200_summary'
failures:
minItems: 1
type: array
description: The failed to import Insight data records for the collection
items:
allOf:
- description: Details of the owner of the collection being targeted
- required:
- collectionOwner
type: object
properties:
collectionOwner:
$ref: '#/components/schemas/collectionOwner'
- required:
- failureReason
type: object
properties:
failureReason:
type: string
description: The reason the record could not be imported
enum:
- Unknown
- InvalidClientKey
- InvalidContactIdentifier
- InvalidJson
- DuplicateKey
- ContactIdDoesNotExist
- ContactEmailDoesNotExist
- JsonContainsNestedArray
- JsonKeyTooLong
- JsonKeyInvalidCharacters
- JsonValueTooLong
- JsonValueIncompatibleWithSchema
- JsonNumberValueTooLarge
details:
type: array
description: Any additional failure details
items:
type: string
description: A failure reason
- $ref: '#/components/schemas/insightRecord'
inline_response_200_1:
required:
- jobId
- status
type: object
properties:
jobId:
type: string
description: Asynchronous job id
example: d7de900d-d337-43f6-b1e1-c8ec73e1a434
status:
type: string
example: Finished
enum:
- NotStarted
- NotFinished
- Finished
- Failed
- NotAvailableInThisVersion
summary:
$ref: '#/components/schemas/inline_response_200_1_summary'
failures:
type: array
items:
$ref: '#/components/schemas/errorResponse'
collectionName_deleteRecords_body:
required:
- keys
type: object
properties:
keys:
maxItems: 5000
minItems: 1
type: array
description: The record keys to be deleted.
example:
- MKS-123
- ABS-9932-A
- XXX-unknown
items:
type: string
inline_response_200_2:
required:
- failures
- summary
type: object
properties:
summary:
$ref: '#/components/schemas/inline_response_200_2_summary'
notFound:
type: array
description: The record keys that could not be found in the collection for deletion.
items:
type: string
example: '["XXX-unknown"]'
description: The results of the deletion.
inline_response_200_3:
required:
- collectionName
- collectionType
- schema
type: object
properties:
collectionName:
$ref: '#/components/schemas/collectionName'
collectionType:
$ref: '#/components/schemas/collectionType'
schema:
type: object
additionalProperties: true
description: The JSON schema for the collection
example:
- name: key
mode: NULLABLE
type: STRING
fields: []
- name: contactIdentifier
mode: REQUIRED
type: INTEGER
fields: []
- name: dateModified
mode: REQUIRED
type: TIMESTAMP
fields: []
- name: deleted
mode: NULLABLE
type: BOOLEAN
fields: []
- name: rowId
mode: NULLABLE
type: STRING
fields: []
- name: json
mode: NULLABLE
type: RECORD
fields:
- name: currency
type: STRING
fields: []
- name: discount_amount
type: FLOAT
fields: []
- name: order_total
type: FLOAT
fields: []
- name: order_subtotal
type: FLOAT
fields: []
- name: products
mode: REPEATED
type: RECORD
fields:
- name: id
type: FLOAT
fields: []
- name: name
type: STRING
fields: []
- name: price
type: FLOAT
fields: []
- name: specialprice
type: FLOAT
fields: []
- name: qty
type: FLOAT
fields: []
- name: sku
type: STRING
fields: []
- name: purchase_date
type: TIMESTAMP
fields: []
- name: base_subtotal_incl_tax
type: FLOAT
fields: []
- name: billing_address
type: RECORD
fields:
- name: billing_address_1
type: STRING
fields: []
- name: billing_address_2
type: STRING
fields: []
- name: billing_city
type: STRING
fields: []
- name: billing_country
type: STRING
fields: []
- name: billing_postcode
type: STRING
fields: []
- name: delivery_method
type: STRING
fields: []
- name: delivery_total
type: FLOAT
fields: []
- name: order_status
type: STRING
fields: []
- name: id
type: STRING
fields: []
description: An Insight data collection summary
inline_response_200_4:
required:
- _items
- _links
type: object
properties:
_links:
$ref: '#/components/schemas/paginationLinks'
_items:
maxItems: 1000
type: array
description: The returned Insight data records
example:
- 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'
created: '2023-04-17T11:50:40.390Z'
updated: '2023-04-17T11:50:40.390Z'
items:
$ref: '#/components/schemas/returnedInsightRecord'
inline_response_200_5:
required:
- _items
- _links
type: object
properties:
_links:
$ref: '#/components/schemas/paginationLinks'
_items:
maxItems: 1000
type: array
description: The returned Insight data records
items:
$ref: '#/components/schemas/returnedInsightRecord'
inline_response_200_6:
required:
- _items
- _links
type: object
properties:
_links:
$ref: '#/components/schemas/paginationLinks'
_items:
type: array
description: The returned Insight data records
items:
$ref: '#/components/schemas/returnedInsightRecord'
collectionName_deleteRecords_body_1:
required:
- keys
type: object
properties:
keys:
maxItems: 5000
minItems: 1
type: array
description: The record keys to be deleted.
example:
- MKS-123
- ABS-9932-A
- XXX-unknown
items:
type: string
errorResponse_details:
required:
- description
- item
type: object
properties:
item:
type: string
description: Item the error is associated with, for example, field name, unique identifier for an entity or item in batch
description:
type: string
description: Description of the error
paginationLinks_self:
required:
- link
- marker
type: object
properties:
marker:
type: string
description: Pagination marker to be passed to API calls to retrieve this data page
link:
type: string
description: Link to retrieve the data page
description: Details for accessing this data page via pagination
paginationLinks_first:
required:
- link
- marker
type: object
properties:
marker:
type: string
description: Pagination marker to be passed to API calls to retrieve this data page
link:
type: string
description: Link to retrieve the data page
description: Details for accessing the first page worth of data
paginationLinks_prev:
required:
- link
- marker
type: object
properties:
marker:
type: string
description: Pagination marker to be passed to API calls to retrieve this data page
link:
type: string
description: Link to retrieve the data page
description: Details for accessing the previous pagea worth of data
paginationLinks_next:
required:
- link
- marker
type: object
properties:
marker:
type: string
description: Pagination marker to be passed to API calls to retrieve this data page
link:
type: string
description: Link to retrieve the data page
description: Details for accessing the next pages worth of data
paginationLinks_last:
required:
- link
- marker
type: object
properties:
marker:
type: string
description: Pagination marker to be passed to API calls to retrieve this data page
link:
type: string
description: Link to retrieve the data page
description: Details for accessing the last pages worth of data
inline_response_200_summary:
type: object
properties:
totalRecords:
type: integer
description: The number of records submitted for import
format: int32
example: 10
totalImported:
type: integer
description: The number of records successfully imported
format: int32
example: 9
totalRejected:
type: integer
description: The number of records that were rejected due to an issue
format: int32
example: 1
inline_response_200_1_summary:
type: object
properties:
totalRecords:
type: integer
description: The number of records submitted
format: int32
example: 10
totalProcessed:
type: integer
description: The number of records successfully processed
format: int32
example: 9
totalFailed:
type: integer
description: The number of records that failed to process
format: int32
example: 1
inline_response_200_2_summary:
type: object
properties:
totalRecords:
type: integer
description: The number of records submitted for deletion
format: int32
example: 3
totalDeleted:
type: integer
description: The number of records successfully deleted
format: int32
example: 2
totalNotFound:
type: integer
description: The number of records that were not found for deletion
format: int32
example: 1
parameters:
collectionNameParam:
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
recordIdParam:
name: recordId
in: path
description: Unique ID for the Insight data record
required: true
schema:
type: string
integrationTrackingToken:
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
modifiedFilter:
name: ~modified
in: query
description: 'Filter by last modified date.
***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
limit:
name: limit
in: query
description: Maximum number of records to retrieve per page
schema:
maximum: 5000
minimum: 1
type: integer
format: int32
example: 1000
marker:
name: marker
in: query
description: Pagination marker to retrieve the data from
schema:
type: string
example: RXhhbXBsZSBhbXJrZXIgdmFsdWU=
identifier:
name: identifier
in: path
description: The field to use to uniquely identify the contact. This can be a custom identifier or a contact identifer of **contactId**, **email** or **mobileNumber**
required: true
schema:
maxLength: 50
minLength: 1
pattern: (^[-A-Za-z0-9_]{1,50}$)
type: string
value:
name: value
in: path
description: The unique value to identify the contact.
***Note:** Must be the same type as the **identifier***
required: true
schema:
maxLength: 256
minLength: 1
type: string
securitySchemes:
basicAuth:
type: http
scheme: basic
x-samples-languages:
- curl
- csharp
- java
- javascript
- node
- python
- php
- ruby