Skip to content
Cloud
Docs

Analytics API reference

Project-owned event collection and analytics reporting. Write-key analytics event ingestion.

Published contracts: @socra/analytics-api@0.0.1, @socra/analytics-api@0.0.1.

Base URL

https://analytics.socra.cloud

Datasets

An isolated collection of analytics events sharing retention and reporting settings.

Create dataset

POST/v1/projects/{project_id}/datasets

Path parameters

project_idcustomrequired

Request body

namestringrequired
min length: 1 · max length: 256
environmentstringoptional
default: "production" · min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegeroptional
default: 90 · min: 1 · max: 3650

Response

9 fields

idcustomrequired
project_idcustomrequired
namestringrequired
environmentstringrequired
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegerrequired
greater than: 0 · max: 9007199254740991
status"active" | "suspended"required
write_keystringrequired
created_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

List datasets

GET/v1/projects/{project_id}/datasets

Path parameters

project_idcustomrequired

Query parameters

limitintegeroptional
min: 1 · max: 100
afterstringoptional

Response

2 fields

dataobject[]required
idcustomrequired
project_idcustomrequired
namestringrequired
environmentstringrequired
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegerrequired
greater than: 0 · max: 9007199254740991
status"active" | "suspended"required
write_keystringrequired
created_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
has_morebooleanrequired

Get dataset

GET/v1/projects/{project_id}/datasets/{dataset_id}

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Query parameters

No query parameters

Response

9 fields

idcustomrequired
project_idcustomrequired
namestringrequired
environmentstringrequired
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegerrequired
greater than: 0 · max: 9007199254740991
status"active" | "suspended"required
write_keystringrequired
created_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

Update dataset

PATCH/v1/projects/{project_id}/datasets/{dataset_id}

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Request body

namestringoptional
min length: 1 · max length: 256
environmentstringoptional
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegeroptional
min: 1 · max: 3650
status"active" | "suspended"optional

Response

9 fields

idcustomrequired
project_idcustomrequired
namestringrequired
environmentstringrequired
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegerrequired
greater than: 0 · max: 9007199254740991
status"active" | "suspended"required
write_keystringrequired
created_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

Rotate dataset write key

POST/v1/projects/{project_id}/datasets/{dataset_id}/write-key/rotate

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Request body

Response

9 fields

idcustomrequired
project_idcustomrequired
namestringrequired
environmentstringrequired
min length: 1 · max length: 64 · pattern: ^[a-z0-9][a-z0-9._-]*$
retention_daysintegerrequired
greater than: 0 · max: 9007199254740991
status"active" | "suspended"required
write_keystringrequired
created_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

Delete dataset

DELETE/v1/projects/{project_id}/datasets/{dataset_id}

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Query parameters

No query parameters

Response

No response body

Events

An immutable analytics fact recorded in a dataset.

List events

GET/v1/projects/{project_id}/datasets/{dataset_id}/events

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Query parameters

limitintegeroptional
min: 1 · max: 100
afterstringoptional
namestringoptional
min length: 1 · max length: 256
start_timestringoptional
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
end_timestringoptional
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$

Response

2 fields

dataobject[]required
namestringrequired
min length: 1 · max length: 256 · pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]*$
occurred_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
distinct_idstringoptional
min length: 1 · max length: 256
session_idstringoptional
min length: 1 · max length: 256
sourcestringoptional
min length: 1 · max length: 128
propertiesobjectrequired
default: {}
idcustomrequired
project_idcustomrequired
dataset_idcustomrequired
received_atstringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
has_morebooleanrequired

Event reports

Time-bucketed event counts for one dataset.

Query event report

GET/v1/projects/{project_id}/datasets/{dataset_id}/reports/events

Path parameters

project_idcustomrequired
dataset_idcustomrequired

Query parameters

start_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
end_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
interval"hour" | "day"optional
default: "day"
namestringoptional
min length: 1 · max length: 256

Response

5 fields

start_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
end_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
interval"hour" | "day"required
totalintegerrequired
min: 0 · max: 9007199254740991
seriesobject[]required
namestringrequired
pointsobject[]required
start_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
end_timestringrequired
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
countintegerrequired
min: 0 · max: 9007199254740991

Base URL

https://analytics.socra.cloud

Event ingestion

Write-key event collection for browser, mobile, desktop, and server clients.

Ingest event batch

POST/v1/events:batch

Request body

write_keystringrequired
min length: 16 · max length: 256
eventsobject[]required
min items: 1 · max items: 100
namestringrequired
min length: 1 · max length: 256 · pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]*$
occurred_atstringoptional
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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
distinct_idstringoptional
min length: 1 · max length: 256
session_idstringoptional
min length: 1 · max length: 256
sourcestringoptional
min length: 1 · max length: 128
idempotency_keystringoptional
min length: 1 · max length: 128
propertiesobjectoptional
default: {}

Response

2 fields

acceptedintegerrequired
min: 0 · max: 9007199254740991
event_idscustom[]required