Skip to content

Latest commit

 

History

History
213 lines (164 loc) · 4.21 KB

File metadata and controls

213 lines (164 loc) · 4.21 KB

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