OpenAPI Specification
openapi: 3.1.0
info:
title: OpenPanel Event Track API
version: 1.0.0
description: Legacy event ingestion (deprecated, use /track)
tags:
- name: Track
description: Track events and sessions
paths:
/track/:
post:
tags:
- Track
description: Ingest a tracking event (track, identify, group, increment, decrement, replay).
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
properties:
type:
type: string
enum:
- track
payload:
type: object
properties:
name:
type: string
minLength: 1
properties:
type: object
propertyNames:
type: string
additionalProperties: {}
profileId:
anyOf:
- type: string
minLength: 1
- type: number
groups:
type: array
items:
type: string
minLength: 1
required:
- name
required:
- type
- payload
title: Track
- type: object
properties:
type:
type: string
enum:
- identify
payload:
type: object
properties:
profileId:
anyOf:
- type: string
minLength: 1
- type: number
firstName:
type: string
lastName:
type: string
email:
type: string
format: email
pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
avatar:
type: string
format: uri
properties:
type: object
propertyNames:
type: string
additionalProperties: {}
required:
- profileId
required:
- type
- payload
title: Identify
- type: object
properties:
type:
type: string
enum:
- increment
payload:
type: object
properties:
profileId:
anyOf:
- type: string
minLength: 1
- type: number
property:
type: string
minLength: 1
value:
type: number
exclusiveMinimum: 0
required:
- profileId
- property
required:
- type
- payload
title: Increment
- type: object
properties:
type:
type: string
enum:
- decrement
payload:
type: object
properties:
profileId:
anyOf:
- type: string
minLength: 1
- type: number
property:
type: string
minLength: 1
value:
type: number
exclusiveMinimum: 0
required:
- profileId
- property
required:
- type
- payload
title: Decrement
- type: object
properties:
type:
type: string
enum:
- alias
payload:
type: object
properties:
profileId:
anyOf:
- type: string
minLength: 1
- type: number
alias:
type: string
minLength: 1
required:
- profileId
- alias
required:
- type
- payload
title: Alias
- type: object
properties:
type:
type: string
enum:
- replay
payload:
type: object
properties:
chunk_index:
type: integer
minimum: 0
maximum: 65535
events_count:
type: integer
minimum: 1
maximum: 9007199254740991
is_full_snapshot:
type: boolean
started_at:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
ended_at:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
payload:
type: string
maxLength: 2097152
required:
- chunk_index
- events_count
- is_full_snapshot
- started_at
- ended_at
- payload
required:
- type
- payload
title: Replay
- type: object
properties:
type:
type: string
enum:
- group
payload:
type: object
properties:
id:
type: string
minLength: 1
type:
type: string
minLength: 1
name:
type: string
minLength: 1
properties:
type: object
propertyNames:
type: string
additionalProperties: {}
required:
- id
- type
- name
required:
- type
- payload
title: Group
- type: object
properties:
type:
type: string
enum:
- assign_group
payload:
type: object
properties:
groupIds:
type: array
items:
type: string
minLength: 1
profileId:
anyOf:
- type: string
minLength: 1
- type: number
required:
- groupIds
required:
- type
- payload
title: Assign Group
type: object
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
sessionId:
type: string
required:
- deviceId
- sessionId
additionalProperties: false
/track/device-id:
get:
tags:
- Track
description: Get or generate a stable device ID and session ID for the current visitor.
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
sessionId:
type: string
message:
type: string
required:
- deviceId
- sessionId
additionalProperties: false