openapi: 3.0.4
info:
title: Listrak Cross Channel REST app-push-mobile-client-device Events API
description: "# Introduction\n\nWelcome to the Listrak Cross Channel REST API!\n\nOur API allows developers to integrate with Listrak's application. It enables the seamless automation of a broad set of functionality, ranging from basic tasks to complex processes.\n\nWe aim to provide comprehensive documentation coverage of our API's capabilities. Each resource and method is described in detail with implementation notes, descriptions of parameters, headers, return values, and code samples to aid in development.\n\n# Versioning\n\nThe API version is denoted in the URI. This API's base URI is: v1\n\nThe API version will be incremented if breaking changes are introduced. Breaking changes may include:\n\n- Addition of required headers, parameters, or model fields to a current route\n- Alterations that would result in currently valid requests failing, or performing unexpectedly\n\nChanges that are not considered breaking may include:\n\n- Addition of new model fields\n- Addition of new routes\n- Addition of new response headers\n- Any alteration to a route that is marked as In Development\n\n# Feedback\n\nWe are actively seeking feedback in the following areas:\n- Code samples\n- Response examples\n- Resource and field descriptions\n\nPlease provide your feedback to us at restapifeedback@listrak.com.\n\n# Integration Setup\nTo enable API access, **you must create an _Integration_** on the _Integrations_ page. In the Listrak application left menu, go to: Integrations → Integration Management.\n\nPlease specify integration type `Cross Channel` for your integration.\n\nMake sure to securely store a copy of your _Client ID_ and _Client Secret_. These values will be needed to authenticate with the API. For your security, the _Client Secret_ cannot be retrieved if it is lost.\n\n# Status Codes\n\n| Status Code | Status | Description |\n| --- | --- | --- |\n| 200 | OK | The request succeeded. |\n| 201 | Created | A new resource has been created. |\n| 400 | Bad Request | Your request is malformed or invalid. |\n| 401 | Unauthorized | Authentication is required. |\n| 404 | Not Found | The resource does not exist. |\n| 405 | Method Not Allowed | The route does not support the requested method. |\n| 415 | Unsupported Media Type | Please use a `Content-Type` of `application/json`. |\n| 500 | Internal Server Error | An unexpected error occurred. Our development team has been notified. |\n\n# Parameters\n\n## Route Parameters\n\nResource identifiers are specified in the route. For example, in the route `/Resource/{resourceId}`, `resourceId` is a route parameter. In this example, if you wish to interact with Resource #123, its route would be `/Resource/123`.\n\n## Query Parameters\n\nSome routes support additional query parameters; for example, some resources support query parameters relating to paging. Supported query parameters are described in their respective documentation areas.\n\n## Request Body\n\nRequest bodies are required for most `POST` and `PUT` requests. Please use a `Content-Type` of `application/json` and provide a JSON object in your request body.\n\n# Authentication\nAuthentication is accomplished using OAuth 2.0. After successful authentication, your token should be included with every request using the Bearer scheme; specifically, you should set your Authorization header value to Bearer (Your token value) in each request.\n\nYou may request a token by making a POST request to our token endpoint at https://auth.listrak.com/OAuth2/Token. \n\nThe request should have a Content-Type of x-www-form-urlencoded, and the request body should include a grant_type of client_credentials, your client_id, and your client_secret. Here is an example of a valid request:\n\n**POST /OAuth2/Token**\n\n**Body**\n\nContent-Type: application/x-www-form-urlencoded\n\n| Key | Value |\n| --- | --- |\n| grant_type: | client_credentials |\n| client_id: | (Your client ID) |\n| client_secret: | (Your client secret) |\n\nFor your security and convenience, you may pause and unpause your API access on our Integrations page. All requests will be rejected while your API access is paused, including requests to issue tokens.\n"
version: v1
x-logo:
url: https://api.listrak.com/Email/Resources/Images/Logo.png
altText: Listrak
href: https://www.listrak.com
backgroundColor: '#fafafa'
servers:
- url: https://api.listrak.com/crosschannel/v1
tags:
- name: Events
description: REST endpoints to manage Custom Events.
paths:
/eventConfigurations/{eventUID}/events:
post:
tags:
- Events
summary: Route to post new Custom Events.
description: A route to post new Custom Events associated with the given Custom Event Configuration. The data payload for these events should match the schema defined through your Custom Events Integration.
operationId: postEvents
parameters:
- name: eventUID
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventList'
required: true
responses:
'404':
description: Entity Not Found
headers:
X-Frame-Options:
schema:
type: string
Strict-Transport-Security:
schema:
type: string
X-Content-Type-Options:
schema:
type: string
Content-Security-Policy:
schema:
type: string
'200':
description: Contains the response information for each submitted identifier, as well as metadata associated with the overall response status.
content:
application/json:
schema:
$ref: '#/components/schemas/CustomEventPostResponse'
'400':
description: Bad Request
headers:
X-Frame-Options:
schema:
type: string
Strict-Transport-Security:
schema:
type: string
X-Content-Type-Options:
schema:
type: string
Content-Security-Policy:
schema:
type: string
'500':
description: Internal Server Error
headers:
X-Frame-Options:
schema:
type: string
Strict-Transport-Security:
schema:
type: string
X-Content-Type-Options:
schema:
type: string
Content-Security-Policy:
schema:
type: string
x-codeSamples:
- lang: JSON
source: "{\n \"events\": [\n {\n \"identifiers\": [\n {\n \"identifierValue\": \"alice@listrak.com\",\n \"identifierType\": \"EmailAddress\"\n },\n {\n \"identifierValue\": \"5551234567\",\n \"identifierType\": \"PhoneNumber\"\n }\n ],\n \"dataFields\": {\n \"firstName\": \"Alice\",\n \"lastName\": \"Smith\"\n }\n },\n {\n \"identifiers\": [\n {\n \"identifierValue\": \"bob@listrak.com\",\n \"identifierType\": \"EmailAddress\"\n },\n {\n \"identifierValue\": \"5551234568\",\n \"identifierType\": \"PhoneNumber\"\n }\n ],\n \"dataFields\": {\n \"firstName\": \"Bob\",\n \"lastName\": \"Smith\"\n }\n }\n ]\n}"
components:
schemas:
Identifier:
type: object
properties:
identifierValue:
type: string
description: The value for the identifier.
identifierType:
enum:
- EmailAddress
- PhoneNumber
- MobileContactUid
type: string
description: The type of identifier, e.g. an email address.
description: The identifier information that can be used to contact the person associated with this event.
ResponseMetaData:
type: object
properties:
statusCode:
type: integer
description: Response Status Code
format: int32
message:
type: string
description: Explanation for the code
errors:
type: array
items:
$ref: '#/components/schemas/Error'
EventList:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/Event'
description: The list of events.
Event:
type: object
properties:
identifiers:
type: array
items:
$ref: '#/components/schemas/Identifier'
description: A list of identifiers for the person associated with this event. One or more must be included. Please note that consuming services may not be able to act on all identifiers of the same type on an event (e.g. multiple email addresses on a single event) - please consider this when creating events.
dataFields:
type: object
additionalProperties:
type: string
description: An object containing keys and values for user-defined data. This data should match the fields defined when creating the Custom Event Schema defined through your Cross Channel Integration. While the values may be passed as strings, it should be possible to parse these values into their defined types. Omitted values will not cause errors, but will lead to gaps in the available data for personalization. Additional fields beyond those defined in the schema will be discarded.
description: Custom Events Configuration
RecipientDetailResponse:
type: object
properties:
identifiers:
type: array
items:
$ref: '#/components/schemas/Identifier'
description: All recipient identifiers that received this included status code
statusCode:
type: integer
description: Response Status Code for the recipients in this JSON object
format: int32
errors:
type: array
items:
$ref: '#/components/schemas/RecipientDetailResponseError'
description: Errors, if any, that occured to cause a non-200 series status code
RecipientDetailResponseError:
type: object
properties:
errorType:
type: string
description: The type of error
format: string
errorMessage:
type: string
description: The error message
format: string
CustomEventPostResponse:
title: CustomEventPostResponse
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecipientDetailResponse'
meta:
$ref: '#/components/schemas/ResponseMetaData'
Error:
type: object
properties:
userMessage:
type: string
internalMessage:
type: string
description: Internal Message
securitySchemes:
Authorizer:
type: apiKey
name: Authorization
in: header
x-amazon-apigateway-authtype: custom
x-amazon-apigateway-security-policy: TLS_1_0
x-tagGroups:
- name: API Reference
tags:
- Events
- EventConfigurations