Skip to main content

Consent API

Usageโ€‹

import { epilot } from '@epilot/sdk'

epilot.authorize(() => '<token>')
const { data } = await epilot.consent.publishConsentEvent(...)

Tree-shakeable importโ€‹

import { getClient, authorize } from '@epilot/sdk/consent'

const consentClient = getClient()
authorize(consentClient, () => '<token>')
const { data } = await consentClient.publishConsentEvent(...)

Operationsโ€‹

consent

Schemas

publishConsentEventโ€‹

Publishes consent event on event bus, which appends to consent store

POST /v1/consent/publish

const { data } = await client.publishConsentEvent(
null,
{
type: 'OPT_IN',
topic: 'EMAIL_MARKETING',
source: 'www.frontend.epilot.cloud',
identifier: 'exampleuser@epilot.cloud',
meta: {
double_opt_in: true,
source_type: 'journey',
source_id: '0e4f2a26-14f0-4ada-9294-a7d7a0b9b214',
ip_address: '1.1.1.1',
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}
},
)
Response
{
"type": "OPT_IN",
"created_at": "1970-01-01T00:00:00.000Z",
"topic": "EMAIL_MARKETING",
"source": "www.frontend.epilot.cloud",
"organization_id": "123",
"identifier": "exampleuser@epilot.cloud",
"meta": {
"double_opt_in": true,
"source_type": "journey",
"source_id": "0e4f2a26-14f0-4ada-9294-a7d7a0b9b214",
"ip_address": "1.1.1.1",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
}
}

listConsentEventsโ€‹

List opt-ins and opt-outs by customer identifier

GET /v1/consent/{identifier}

const { data } = await client.listConsentEvents({
identifier: 'example',
topic: 'example',
limit: 1,
from: 1,
})
Response
{
"events": [
{
"type": "OPT_IN",
"created_at": "1970-01-01T00:00:00.000Z",
"topic": "EMAIL_MARKETING",
"source": "www.frontend.epilot.cloud",
"organization_id": "123",
"identifier": "exampleuser@epilot.cloud",
"meta": {
"double_opt_in": true,
"source_type": "journey",
"source_id": "0e4f2a26-14f0-4ada-9294-a7d7a0b9b214",
"ip_address": "1.1.1.1",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
}
}
],
"total": 1
}

handleOptInWithTokenโ€‹

Endpoint to handle opt-in links

GET /v1/opt-in/{token}

const { data } = await client.handleOptInWithToken({
token: 'example',
lang: 'example',
})

Schemasโ€‹

ConsentIdentifierโ€‹

Unique identifier for consent source (e.g. customer email or phone)

type ConsentIdentifier = string

ConsentTopicโ€‹

Consent Topic (what the person is opting into)

type ConsentTopic = string

ConsentSourceโ€‹

Consent Source (Origin of the Consent Event)

type ConsentSource = string

ConsentMetaโ€‹

type ConsentMeta = Record<string, unknown>

ConsentEventRequestBodyโ€‹

type ConsentEventRequestBody = {
type: "OPT_IN" | "OPT_OUT"
topic: string
source?: string
identifier: string
meta?: Record<string, unknown>
}

ConsentEventโ€‹

type ConsentEvent = {
type: "OPT_IN" | "OPT_OUT" | "DOUBLE_OPT_IN_REQUESTED" | "DOUBLE_OPT_IN"
created_at?: string // date-time
topic: string
source?: string
organization_id?: string
identifier: string
meta?: Record<string, unknown>
}

OrganizationIdโ€‹

type OrganizationId = string