{"catalogVersion":4,"events":{"alias":{"versions":[{"note":"Bind an anonymous identifier to a user; top-level IDs must match. Works with SDK alias helpers.","properties":[{"description":"Anonymous identifier; must equal anonymousId.","minLength":1,"name":"previousId","required":true,"type":"string"},{"description":"User identifier; must equal userId.","minLength":1,"name":"newId","required":true,"type":"string"}],"version":1}]},"experiment_viewed":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Stable identifier of the experiment.","name":"experiment","pattern":"[a-z0-9_.:-]{1,128}","required":true,"type":"string"},{"description":"Variant shown to the user.","name":"variant","pattern":"[a-z0-9_.:-]{1,128}","required":true,"type":"string"}],"version":1}]},"feature_used":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Stable identifier of the feature used.","name":"feature","required":true,"type":"string"}],"version":1}]},"group":{"versions":[{"note":"Stamp organization context; requires a nonempty top-level organizationId.","properties":[],"version":1},{"note":"Set current organization traits; omitted traits remain unchanged.","properties":[{"description":"Current organization plan","name":"plan","required":false,"type":"string"},{"description":"Current organization industry","name":"industry","required":false,"type":"string"},{"description":"Current organization country","name":"country","required":false,"type":"string"},{"description":"Finite nonnegative integer seat count.","minimum":0,"multipleOf":1,"name":"seats","required":false,"type":"number"}],"version":2}]},"identify":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[],"version":1},{"note":"Set current governed user traits; requires a nonempty top-level userId. Omitted traits are unchanged; identify v1 remains identity-only.","properties":[{"description":"Current user trait plan; analytics observation, never an authorization fact.","name":"plan","required":false,"type":"string"},{"description":"Current user trait signup_source; analytics observation, never an authorization fact.","name":"signup_source","required":false,"type":"string"},{"description":"Current user trait initial_plan; analytics observation, never an authorization fact.","name":"initial_plan","required":false,"type":"string"},{"description":"Current user trait country; analytics observation, never an authorization fact.","name":"country","required":false,"type":"string"},{"description":"Current user trait role; analytics observation, never an authorization fact.","name":"role","required":false,"type":"string"},{"description":"Finite nonnegative integer company size; numeric comparisons use Float64.","minimum":0,"multipleOf":1,"name":"company_size","required":false,"type":"number"}],"version":2}]},"identify_once":{"versions":[{"note":"Initialize governed user traits only when no set exists; earliest set-once wins. Requires a nonempty top-level userId.","properties":[{"description":"Current user trait plan; analytics observation, never an authorization fact.","name":"plan","required":false,"type":"string"},{"description":"Current user trait signup_source; analytics observation, never an authorization fact.","name":"signup_source","required":false,"type":"string"},{"description":"Current user trait initial_plan; analytics observation, never an authorization fact.","name":"initial_plan","required":false,"type":"string"},{"description":"Current user trait country; analytics observation, never an authorization fact.","name":"country","required":false,"type":"string"},{"description":"Current user trait role; analytics observation, never an authorization fact.","name":"role","required":false,"type":"string"},{"description":"Finite nonnegative integer company size; numeric comparisons use Float64.","minimum":0,"multipleOf":1,"name":"company_size","required":false,"type":"number"}],"version":1}]},"page_leave":{"versions":[{"note":"Page lifecycle event; not engagement. Top-level URL identifies the page.","properties":[{"description":"Observed page duration in milliseconds.","minimum":0,"name":"durationMs","required":true,"type":"number"}],"version":1}]},"page_view":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Full URL of the viewed page.","name":"url","required":true,"type":"string"}],"version":1}]},"payment_completed":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Monetary amount of the completed payment, in the account's currency.","name":"amount","required":true,"type":"number"},{"description":"Plan associated with the completed payment.","name":"plan","required":false,"type":"string"}],"version":1}]},"session_start":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Client-generated session identifier.","name":"sessionId","required":true,"type":"string"}],"version":1}]},"subscription_started":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Plan identifier the subscription started on.","name":"plan","required":true,"type":"string"},{"description":"Monetary amount of the subscription, in the account's currency.","name":"amount","required":false,"type":"number"}],"version":1}]},"user_registered":{"versions":[{"note":"Initial schema (kansoku MVP).","properties":[{"description":"Identifier of the newly registered user.","name":"userId","required":true,"type":"string"}],"version":1}]}},"identifierKinds":["cookie","device","fingerprint","email_sha256","email_hmac"],"service":"kansoku"}