Consent API
- Base URL:
https://consent.sls.epilot.io - Full API Docs: https://docs.epilot.io/api/consent
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
ConsentIdentifierConsentTopicConsentSourceConsentMetaConsentEventRequestBodyConsentEventOrganizationId
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