Files
zeekay bc4ddf332b chore: rebase the tree onto upstream master fa1a9a60
Mechanically re-derived: bin/debrand runs over a fresh import of
posthog/posthog@fa1a9a60d4 (2026-08-06).
The pipeline (.hanzo/workflows), the Dockerfiles and bin/docker*
entrypoints, compose files, LLM.md and the squashed initial migration
are restored from the shipped tree, same as the previous import.

The prune's import-closure guard kept 21 products the new core now
imports; dropping them is a refactor now, recorded rather than forced.
2026-08-06 01:25:36 -07:00

163 lines
5.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"allow_impersonation": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"allow_sidebar_suggestions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"anonymize_data": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether Insights should anonymize events captured for this user when identified."
},
"current_password": {
"description": "The user's current password. Required when changing `password` if the user already has a usable password set.",
"type": "string"
},
"email": {
"format": "email",
"maxLength": 254,
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"events_column_config": {},
"first_name": {
"maxLength": 150,
"type": "string"
},
"has_seen_product_intro_for": {},
"mascot_config": {},
"hide_mcp_hints": {
"description": "When true, the user has opted out of in-app hints promoting the Insights MCP integration after taking actions.",
"type": "boolean"
},
"last_name": {
"maxLength": 150,
"type": "string"
},
"notification_settings": {
"additionalProperties": {},
"description": "Map of notification preferences. Keys include `plugin_disabled`, `all_weekly_report_disabled`, `project_weekly_digest_disabled`, `error_tracking_weekly_digest_project_enabled`, `web_analytics_weekly_digest_project_enabled`, `organization_member_join_email_disabled`, `data_pipeline_error_threshold` (number between 0.0 and 1.0), and other per-topic switches. Values are either booleans, or (for per-project/per-resource keys) a map of IDs to booleans. Only the keys you send are updated — other preferences stay as-is.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"passkeys_enabled_for_2fa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether passkeys are enabled for 2FA authentication. Users can disable this to use only TOTP for 2FA while keeping passkeys for login."
},
"password": {
"maxLength": 128,
"type": "string"
},
"role_at_organization": {
"description": "* `engineering` - Engineering\n* `data` - Data\n* `product` - Product Management\n* `founder` - Founder\n* `leadership` - Leadership\n* `marketing` - Marketing\n* `sales` - Sales / Success\n* `student` - Student\n* `other` - Other",
"enum": [
"engineering",
"data",
"product",
"founder",
"leadership",
"marketing",
"sales",
"student",
"other"
],
"type": "string"
},
"set_current_organization": {
"type": "string"
},
"set_current_team": {
"type": "string"
},
"shortcut_position": {
"anyOf": [
{
"description": "* `above` - Above\n* `below` - Below\n* `hidden` - Hidden",
"enum": ["above", "below", "hidden"],
"type": "string"
},
{
"enum": [""],
"type": "string"
},
{
"type": "null"
}
]
},
"theme_mode": {
"anyOf": [
{
"description": "* `light` - Light\n* `dark` - Dark\n* `system` - System",
"enum": ["light", "dark", "system"],
"type": "string"
},
{
"enum": [""],
"type": "string"
},
{
"type": "null"
}
]
},
"toolbar_mode": {
"anyOf": [
{
"description": "* `disabled` - disabled\n* `toolbar` - toolbar",
"enum": ["disabled", "toolbar"],
"type": "string"
},
{
"enum": [""],
"type": "string"
},
{
"type": "null"
}
]
},
"ui_configuration": {
"description": "Per-user UI customization, validated against the `UserUIConfiguration` schema. Currently covers sidebar section and item visibility. Send the complete object: it replaces the stored value wholesale. Null means no customization; absent keys mean the element is shown."
},
"uuid": {
"description": "User UUID, or `@me` to target the authenticated user.",
"type": "string"
}
},
"required": ["uuid"],
"type": "object"
}