Parameters
1 query · JSON body
Query parameters
· 1apiKeystringRequiredYour BizKitHub API key (passed as GET parameter).
Key format: A 32-character string matching: ^(PROD|DEV_|ROOT)[A-Za-z0-9]{28}$
Prefixes: PROD (production key), DEV_ (individual developer), ROOT (system key with no limits). Learn more
PRODPGrFxpGEtrOZfuWhnoJohUYBXuOERequest body
application/jsoneventTypestringRequiredStable machine-readable event identifier. Convention: {entity}.{verb} dot-notation, lowercase slug with letters, digits, dots, dashes, underscores. Max 64 chars. Examples: bandzone.band.created, gymroom.booking.cancelled, account.password_reset.
bandzone.band.createdmessagestringRequiredPre-rendered human-readable one-line summary shown in the admin activity grid. Format in the actor's locale on your side — the audit log does not re-render from a template.
Nová kapela "Solární sovy" byla vytvořena uživatelem [email protected].level"info" | "notice" | "warning"OptionalSeverity. info (default) for the vast majority of events, notice for the ones worth highlighting in admin, warning when an operator should look. error is intentionally not offered here — operational errors belong on core__system_log, not the audit feed.
customerEmailstringOptionalE-mail of the TARGET contact (whom the event concerns). Resolved against shop__contact in this organisation; a missing contact is created on-the-fly as a bare record (no welcome e-mail, no password). Leave empty when the event is not tied to a specific person (system-wide events) and set actor.kind = "api" | "system" | "cron".
[email protected]identityIdstringOptionalLogged user identity (from your frontend cookies). Learn more
Z9CPkS2o3UV163VQn5OUv0T8BQi8FvdgactorobjectOptionalkind"contact" | "system" | "cron" | "api" | "member"RequiredWho performed the action. Default api (= the external integration itself). contact requires email or identityId to resolve. member is NOT accepted on the public API — log member actions through BFF.
emailstringOptionalActor contact e-mail — used when kind = "contact" to resolve actor_contact_id.
identityIdstringOptionalActor identity id — preferred over email when both are provided. Used when kind = "contact" to resolve actor_contact_id.
correlationIdstringOptionalOpaque correlation token for grouping related events across multiple requests (e.g. a multi-step registration). Max 36 chars. Omit to let the server derive one from the request.
bnd-register-01HJ...metaobjectOptionalFree-form JSON payload stored verbatim on the audit row. Hard cap: 32 KB after serialization — larger payloads are rejected. BigInt values are coerced to Number (or string if out of safe range) because jsonb cannot encode BigInt. Keep the shape stable per eventType — the admin grid relies on it.
occurredAtstringOptionalACCEPTED FOR COMPATIBILITY BUT IGNORED. The audit row's timestamp is server-side (NOW()); client-reported timestamps cannot be trusted in an audit log. Put the original timestamp into meta.occurredAt if you need to preserve it.
customerRealIpstringOptionalUser IP address used for GEO/IP intelligence.
Accepted formats:
- IPv4 dot-decimal, e.g.
1.1.1.1(4 octets, 0–255, no leading zeros). - IPv6 as defined by RFC 4291 — full
2001:0db8:0000:0000:0000:0000:0000:0001, zero-compressed2001:db8::1, IPv4-mapped::ffff:1.2.3.4, or scoped literals. Both upper- and lower-case hex are accepted.
Server-side canonicalization (ipNormalize in core/src/lib/network/ipNormalize.ts):
- Valid IPv4 is passed through verbatim.
- Valid IPv6 is lowercased (RFC 5952 §4.3).
- IPv4-mapped IPv6
::ffff:X.X.X.Xis unwrapped to plain IPv4 (RFC 4291 §2.5.5.2) so1.2.3.4and::ffff:1.2.3.4share onebrj__geo_iprow. - Loopback aliases (
::1,0.0.0.0,localhost, empty string) collapse to127.0.0.1. - Junk values that fail both IPv4 and IPv6 validation are silently rejected and replaced with
127.0.0.1(loopback).
On the wire: every response returns the canonicalized form — clients can safely rely on lowercase IPv6 and the plain-IPv4 unwrap when de-duping or joining. Server-originated writers (activity log, session log, ban list) resolve the visitor IP via resolveClientIp / resolveClientIpOrNull — always native IPv6 on Vercel Edge (there is no auto-mapping to ::ffff:X.X.X.X).
Enrichment: the system resolves reverse DNS, geolocation, ASN, mobile/proxy/hosting/Tor flags via our VikiTron GEO/IP resolver for both address families. Learn more
1.1.1.12001:4860:4860::8888