Intouch Insight Customer Platform API (1.0.0)

Download OpenAPI specification:Download

Overview

The Intouch Insight API is the primary means for developers to access a collection of growing resources available at Intouch Insight. Customer applications can read and write resources to help administrate various aspects of the Intouch Platform. Depending on your applications use case, you can choose from our various APIs currently implemented.

If you have a use case that it outside of our current available endpoints, please feel free to contact Client Services to help investigate your specific use case.

All of our APIs are based on REST architecture and are accessed via HTTPS. The base URL for all requests is

https://api.intouchinsight.com/public/v1/

The fully qualified URL varies depending on the endpoints of the resources being accessed. For instance, you query to retrieve a list of tags by using https://api.intouchinsight.com/public/v1/tags.

Authentication

The Intouch Insight API uses key based authentication to the API. These tokens are generated and managed within the platform and should be stored securely when being used. Only admin users within the platform can manage these keys. If you do not have access to create a key, you will need to reach out to someone who has admin level access on the platform to generate a key for you.

If your organization does not have access to the Intouch Insight API, you can contact sales@intouchinsight.com for additional information. Once you have an API Key generated, you can simply add the key to every requests as an HTTP header.

curl -H "x-api-key: ii_654GTHdzbURNO734jgdBpvSe0S6pXIgtX3ZLVxHLu" https://api.staging.intouchinsight.com/public/v1/hierarchies

The API Key must be provided on every request, otherwise a resulting error of Missing Authentication Token will be generated. New keys can be added or removed as needed.

API Key

An API key can be generated by logging into the Intouch Insight Access Portal as an administrator and navigating to Organization Settings > API Keys.

Securing your API Key

  • Do not embed API keys directly in code. API keys that are embedded in code can be accidentally exposed to the public. For example, you may forget to remove the keys from code that you share. Instead of embedding your API keys in your applications, store them in environment variables or in files outside of your application's source tree.

  • Do not store API keys in files inside your application's source tree. If you store API keys in files, keep the files outside your application's source tree to help ensure your keys do not end up in your source code control system.

Security Scheme Type: API Key
Header parameter name: X-API-KEY

Pagination

Endpoints that return multiple resources that can grow over time, and will have their results return page based properties that can be used to process of large result sets in batches.

Offset paged responses conform to the following format:

{
  "sort_by": "name",
  "order": "asc",
  "per_page": 25,
  "current_page": 1,
  "last_page": 1,
  "total": 3,
  "from": 1,
  "to": 3,
  "data": [...]
}
Names Description
sort_by The property that is currently being sorted by. Not all properties can be sorted by, so review each endpoint for the valid list of available sorting options
order The order in which sort_by is being performed; asc or desc
per_page How many results are returned in a single request (page). The default being 25. Each endpoint can have a hard limit, refer to individual endpoints for this.
current_page The current page for the results
last_page How many pages are available
total The total number of results ie. from 1 to 25 of 300
from The number of the first item on this page ie. from 1 to 25 of 300
to The number of the last item on this page ie. from 1 to 25 of 300
data Depending on the resources requested, the results in the data property will be different, but all non singular requests will follow the above paging format.

Error Definitions

On top of the above response body, HTTP status codes are also used to provide additional context.

Code Status Description
200 Ok The request succeeded
201 Created The request succeeded, and a new resource created as a result. This is typically the response sent after POST requests, or some PUT requests.
204 No Content There is no content to send for this request, but the headers may be useful.
400 Bad Request The server could not understand the request due to invalid syntax.
401 Unauthorized Although the HTTP standard specifies unauthorized, semantically this response means unauthenticated. That is, the client must authenticate itself to get the requested response.
403 Forbidden The client does not have access rights to the content, that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server.
404 Not Found The server can not find the requested resource. This can also mean that the endpoint is valid but the resource itself does not exist.
422 Unprocessable Entity The request was well-formed but was unable to be followed due to semantic errors.
429 Too Many Requests Too many requests in a given amount of time were sent (rate limiting).

Rate Limits

A rate limit is the number of API calls an application or user can make within a given time period. If this limit is exceeded, the application or user maybe be throttled. API requests made by a throttled user will fail.

All API requests offered as part of the Intouch Insight API are subject to rate limits. If your account has been rate limited, you will receive an HTTP response code of 429 - Too Many Requests and must wait for the rate limit to end.

Intouch Insight has worked across many different usage scenarios to set the default rate limits to be 2 requests per second for all customers. If you are hitting rate limits too often and wich to discuss additional quota scenarios, pleaes feel free to reach out to your Intouch Account Representative.

Date & Times

All platform Date Times in the Intouch Insight API are in ISO 8601 format.

Tags

Tags are essentially labels or keywords that can be applied to both data (questions, records, cases, follow-ups) and hierarchy nodes in the Intouch platform.

Tags can be used in a large variety of scenarios across the entire Intouch Insight Platform

  • Filter/Group data sets with a similar characteristic in Intelligence/IQ (Record Tagging, Case Tagging)
  • Filter/Group data sets with a similar characteristic in Check (Followup Tagging)
  • Create an alternate scoring model for a program by grouping questions (Question Tagging)
  • Control location listings in Survey (Hierarchy Tagging)
  • Control checklist access in Check (Hierarchy Tagging)
  • Control hide/show question logic in Check (Hierarchy Tagging)

Review our user guide to learn more about tags and their usage within the platform

Retrieve many Tags

This endpoint can be used to retrieve a collection of Tags that have been setup within the platform.

Supported sort_by values on this endpoints are the following:

  • name
  • created_at
  • updated_at
Authorizations:
API Key
query Parameters
sort_by
string

Can pass in a property to have the results sorted by the given property.

NOTE: Not all properties can be sorted, each endopint will define what type of sorting can be used on a case by case basis in the endpoints description

limit
integer [ 1 .. 25 ]
Default: 25

The number of items in the collection to return

page
integer >= 1
Default: 1

Which page of the collection to return

search
string

Can be used to filter result sets based an free text term

order
string
Default: "asc"
Enum: "asc" "desc"

The sorting order to be used based on the value given in the sort_by parameter

Responses

Response samples

Content type
application/json
{
  • "current_page": 1,
  • "last_page": 2,
  • "per_page": 25,
  • "from": 1,
  • "to": 25,
  • "total": 31,
  • "order": "desc",
  • "sort_by": "updated_at",
  • "data": [
    ]
}

Create a Tag

Will create a new tag that can be used within the platform

Authorizations:
API Key
Request Body schema: application/json
Any of
name
required
string <= 255 characters

The name for this tag

Responses

Request samples

Content type
application/json
{
  • "name": "Customer Satisfaction"
}

Response samples

Content type
application/json
{
  • "uuid": "11b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Customer Satisfaction",
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Retrieve a Tag

Returns a single tag

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "11b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Customer Satisfaction",
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Update a Tag

Update an existing single tag based with the given information

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Request Body schema: application/json
Any of
name
required
string <= 255 characters

The name for this tag

Responses

Request samples

Content type
application/json
{
  • "name": "Customer Satisfaction"
}

Response samples

Content type
application/json
{
  • "uuid": "11b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Customer Satisfaction",
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Delete a Tag

When deleting keep in mind that any existing items using this tag will not have this data or tag removed from it. This will simply make this tag no longer usable within the platform, but keep existing usage in place as well as all previously collected data

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Hierarchies

A hierarchy is a structure that defines how a client’s locations are organized. It is often similar to how a folder directory is set up on a computer, starting with the top/main folder, and within that folder there are sub-folders, and each of the sub-folders might also contain sub-folders.

Review our user guide to learn more about hierarchies and their usage within the platform

Retrieve many Hierarchies

This endpoint can be used to retrieve a collection of Hierarchy Nodes that have been setup within the platform.

Supported sort_by values on this endpoints are the following:

  • name
  • created_at
  • updated_at
  • client_code
Authorizations:
API Key
query Parameters
sort_by
string

Can pass in a property to have the results sorted by the given property.

NOTE: Not all properties can be sorted, each endopint will define what type of sorting can be used on a case by case basis in the endpoints description

limit
integer [ 1 .. 25 ]
Default: 25

The number of items in the collection to return

page
integer >= 1
Default: 1

Which page of the collection to return

search
string

Can be used to filter result sets based an free text term

order
string
Default: "asc"
Enum: "asc" "desc"

The sorting order to be used based on the value given in the sort_by parameter

Responses

Response samples

Content type
application/json
{
  • "current_page": 1,
  • "last_page": 2,
  • "per_page": 25,
  • "from": 1,
  • "to": 25,
  • "total": 31,
  • "order": "asc",
  • "sort_by": "name",
  • "data": [
    ]
}

Create a Hierarchy

POST Hierarchy Method

Authorizations:
API Key
Request Body schema: application/json
name
required
string <= 255 characters

The name displayed for this node

client_code
string or null <alpha_dash> <= 255 characters

A client code if not provided will be auto generated for you. These are more often used to link an Intouch hierarchy to an ID or unique identifier used in your own business systems.

Example: A unique ID for a location in your internal systems could be 145DR5. This ID can then be saved in the client_code property so that when a location is created or updated, you have a simple way of linking this back to your own systems as 145DR5 will be now be stored in this field

type
required
string
Enum: "location" "generic"

The type of node. Two types are supported currently:

  • Location - These types of nodes contain address information
  • Generic - These types of nodes are use for generic uses cases (i.e. Districts, People, Regions)
parent_uuid
required
string = 36 characters

Unique identifier of an hierarchy that is the parent of this one. All hierarchies follow a tree based structure, but can be moved by chanding their parent_uuid to another valid hierachy nodes uuid.

object or null

If the hierarchy node has a type of location, this proper will be present. It will contain all its location based information as well as any auto generated properties (lat/long)

Array of objects or null
Array of objects or null

Responses

Request samples

Content type
application/json
{
  • "name": "Intouch Insight Ottawa Office",
  • "client_code": "145DR5",
  • "type": "location",
  • "parent_uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "location": {
    },
  • "attributes": [
    ],
  • "tags": [
    ]
}

Response samples

Content type
application/json
{
  • "uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Intouch Insight Ottawa Office",
  • "client_code": "145DR5",
  • "type": "location",
  • "parent_uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "location": {
    },
  • "attributes": [
    ],
  • "tags": [
    ],
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Retrieve a Hierarchy

GET Hierarchy Method

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Intouch Insight Ottawa Office",
  • "client_code": "145DR5",
  • "type": "location",
  • "parent_uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "location": {
    },
  • "attributes": [
    ],
  • "tags": [
    ],
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Update a Hierarchy

PUT Hierarchy Method

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "name": "Intouch Insight Ottawa Office",
  • "client_code": "145DR5",
  • "type": "location",
  • "parent_uuid": "77b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "location": {
    },
  • "attributes": [
    ],
  • "tags": [
    ],
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-05-11T11:52:47+00:00"
}

Delete a Hierarchy

DELETE Hierarchy Method

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Contacts

Contacts and Contact Lists are added to facilitate Survey Distribution. That is, if you want a survey to be distributed by email to one or more specific individuals, you can accomplish that using our Contact Center. Access to the features described in these articles is restricted based on individual user settings. If you require access to IntouchSurvey or any of the features that are mentioned, contact your Program Administrator to change your permissions.

Retrieve many Contacts

This endpoint can be used to retrieve a collection of Contacts that have been setup within the platform.

Supported sort_by values on this endpoints are the following:

  • email
  • first_name
  • last_name
  • phone_number
  • language
  • status
  • created_at
  • updated_at
Authorizations:
API Key
query Parameters
sort_by
string

Can pass in a property to have the results sorted by the given property.

NOTE: Not all properties can be sorted, each endopint will define what type of sorting can be used on a case by case basis in the endpoints description

limit
integer [ 1 .. 25 ]
Default: 25

The number of items in the collection to return

page
integer >= 1
Default: 1

Which page of the collection to return

search
string

Can be used to filter result sets based an free text term

order
string
Default: "asc"
Enum: "asc" "desc"

The sorting order to be used based on the value given in the sort_by parameter

Responses

Response samples

Content type
application/json
{
  • "current_page": 1,
  • "last_page": 2,
  • "per_page": 25,
  • "from": 1,
  • "to": 25,
  • "total": 31,
  • "order": "desc",
  • "sort_by": "created_at",
  • "data": [
    ]
}

Create a Contact

Create a new Contact

Authorizations:
API Key
Request Body schema: application/json
first_name
string or null <= 100 characters

The contact's first name

last_name
string or null <= 100 characters

The contact's last name

email
required
string <= 255 characters

The contact's email, this field must be unique across all active contacts and is validated at time of save to be a "sendable" email address

phone_number
string or null = 10 characters

The contact's phone number that is validated to 10 digits

language
string or null <= 255 characters

A Intouch Survey supported language code, which must be one of the following"

['en','sq','eu_ES','bn_BD','bg','ca_ES','zh-Hant','zh-Hans','hr_HR','cs_CZ','da_DK',
'nl_NL','en_US','et_EE','fi_FI','fr_CA','fr_FR','de_DE','el_GR','hi_IN','hu_HU',
'is_IS','id_ID','it_IT','ja_JP','ko_KR','lv_LV','lt_LT','ms_MY','no_NO','pl_PL',
'pt','pt_BR','pt_PT','pa_IN','ro_RO','ru_RU','sr_RS','sk_SK','sl_SI','es','es_ES',
'es_US','sw','sv_SE','tl_PH','th_TH','tr_TR','uk_UA','vi_VN']
Array of objects or null

A contact list is used to group Contacts together into a shared list.

custom_fields
object or null

Custom Fields can be set specific to this contact. Custom Fields must first be created in the Intouch Insight Survey Admin intefrace. Once created, these fields can be associated to any contact and will be validated based on the following rules:

  • date -> YYYY-MM-DD date formatted values
  • number -> integer values
  • string -> string values

The key property in custom_fields corresponds to "Field Column Name" (key) that you used when creating the custom field in the Custom Fields interface.

More information on Custom Fields can be found in our help guide

Responses

Request samples

Content type
application/json
{
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

Response samples

Content type
application/json
{
  • "uuid": "56b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "status": "subscribed",
  • "deliverable": true,
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-08-11T11:52:47+00:00",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

Retrieve a Contact

Retrieve an existing Contact

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "56b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "status": "subscribed",
  • "deliverable": true,
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-08-11T11:52:47+00:00",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

Update a Contact

PUT Contact Method

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "56b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "status": "subscribed",
  • "deliverable": true,
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-08-11T11:52:47+00:00",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

Delete a Contact

DELETE Contact Method

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Unsubscribe a Contact

This endpoint will unsubscribe a given contact from any and all delivery methods in the Intouch Survey Platform.

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "56b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "status": "subscribed",
  • "deliverable": true,
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-08-11T11:52:47+00:00",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

Subscribe a Contact

This endpoint will subscribe a given contact if previousily marked as unsubscribed. This can be used if a contact has decided to opt back in to communication.

Authorizations:
API Key
path Parameters
uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the item. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Responses

Response samples

Content type
application/json
{
  • "uuid": "56b01b44-ba2e-11e5-875c-0a5a4bfb150c",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "johh.doe@example.com",
  • "phone_number": "5555555555",
  • "language": "en_US",
  • "status": "subscribed",
  • "deliverable": true,
  • "created_at": "2021-05-11T11:52:47+00:00",
  • "updated_at": "2021-08-11T11:52:47+00:00",
  • "contact_lists": [
    ],
  • "custom_fields": {
    }
}

External Programs

External Programs can be created within the Intouch Intelligence admin settings area to allow you to bring your own data, in any structure.

Unlike the other supported API endpoints, this requires a bit of a setup, in order to define your data properly -- as this is a dynamic API.

In order to use this endpoint, you will need to have created a new External Program in Intouch Intelligence or use an existing one already created.

Once this has been built, you will simply have to refer to the structure of that program to map it to the External Programs API endpoints.

As an example, you can use the admin interface and create the following External Program:

Name Label Type
book_category Book Category Text
book_name Book Name Text
book_sold_to_name Sold To Text
book_sold_to_id Sold To Id Numeric
book_sold_date Book Sold Date Date (YYYY-MM-DD)

To add data to this program, you would use the "Add new External Programs" endpoint using the following payload:

HTTP POST > /public/v1/external-programs/{program_uuid}/records

{ 
  "data":{
    "book_category": "Fiction",
    "book_name": "The Shining",
    "book_sold_to_name": "Jane Doe",
    "book_sold_to_id": 34532,
    "book_sold_date": "2021-09-22"
  }
}

The program_uuid can be recorded on the External Program edit screen via the UUID found in the URL

A successful request will result in the data being added to the given program and available for reporting, usage, etc. within Intouch Intelligence.

Add new Data

This will add new data to an existing program based on its structure. Refer to this sections top menu description for expanded details and examples as this endpoint is dynamic based on admin configuration

Authorizations:
API Key
path Parameters
program_uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the program we are adding data to. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Request Body schema: application/json
data
object

The data that matches our External Programs admin panel configured format

Responses

Request samples

Content type
application/json
{
  • "data": [
    ]
}

Response samples

Content type
application/json
{
  • "meta": [
    ],
  • "data": [
    ]
}

Update existing Data

This will add new data to an existing program based on its structure. Refer to this sections top menu description for expanded details and examples as this endpoint is dynamic based on admin configuration

Authorizations:
API Key
path Parameters
program_uuid
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the program we are adding data to. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

document_id
required
string
Example: 11b01b44-ba2e-11e5-875c-0a5a4bfb150c

The unique identifier of the program we are adding data to. This identifier is generated by Intouch Insight and follows the Version 4 UUID identifier pattern

Request Body schema: application/json
meta
object
data
object

The data that matches our External Programs admin panel configured format

Responses

Request samples

Content type
application/json
{
  • "meta": [
    ],
  • "data": [
    ]
}

Response samples

Content type
application/json
{
  • "meta": [
    ],
  • "data": [
    ]
}